강박증 MRI 처리 파이프라인: 도메인 모델과 임상의 참여 루프
MRI 세컨드 오피니언 엔지니어링 루프는 DICOM 데이터를 수집해 복셀 기반 또는 메타데이터 대체 모드로 초안 분석을 생성하고, 안전 점검과 필수 임상의 검토를 거쳐 최종 확정합니다. TypeScript 오케스트레이터가 케이스 상태를 관리하며, Python 워커가 비동기 처리를 담당합니다. 오케스트레이션과 계산을 분리해 메모리 부족 오류와 타임아웃을 방지하며, 이벤트 소싱 + 아웃박스를 통해 로그를 기록합니다.
Jupyter 스크립트 대신 인프라
실제 병원에서 DICOM 아카이브는 확장자가 없는 파일, 사용자 정의 프라이빗 태그, JPEG 2000 무손실 압축 등으로 라이브러리를 세그폴트로 크래시시키는 경우가 많습니다. 수집 워커는 데이터를 결정적으로 압축 해제하고, PS3.5 §9.1에 따라 DICOM UID를 검증한 후 ImagingStudyRef를 생성합니다. 불완전 스캔의 경우 메타데이터 대체 모드로 전환: 메타데이터에서 임상 질문을 추출하거나 "일반 세컨드 오피니언 검토 요청"으로 기본 설정합니다.
수집 및 전달 워커는 DI 컨테이너에 등록되고 플래그로 활성화됩니다. 이는 CDS(임상 의사결정 지원)이지 SaMD가 아닙니다: DomainInvariantViolationError가 임상의 검토 없이 finalize()를 차단하며, FDA CDS 지침 520(o)(1)(E)에 따릅니다.
주요 파이프라인 단계:
- Python-수집: DICOM 메타데이터로 케이스 생성.
- TypeScript-오케스트레이터:
MriSecondOpinionCase초기화. - Python-프로세서: 두 가지 모드로 초안 생성.
- 안전 정책:
AwaitingReview로 전환. - 인간 검토: 의사 최종 확정.
- 전달: 구조화 보고서.
TypeScript의 엄격한 불변성
GenerateMriSecondOpinionUseCase는 낮은 신뢰도, 중대한 불일치, 데이터 부족 시 IClinicalSafetyPolicy를 적용합니다. ACR 실무 지침(Res. 11, 2020)을 기반으로 합니다. Neuroradiologist 또는 Attending Physician 역할의 의사가 초안을 업데이트하며, 애그리게이트는 AI 초안과 별도로 humanReview.modifications를 추적합니다.
상태 머신: 9개 상태(INGESTING → QC_REJECTED, SUBMITTED → AWAITING_REVIEW → REVIEWED → FINALIZED → DELIVERY_PENDING → DELIVERED / DELIVERY_FAILED). 도메인 애그리게이트가 4개를 관리하고, 수집/전달 루프가 5개를 처리합니다.
오케스트레이션과 계산 분리
TypeScript API는 HTTP 200을 즉시 반환하며, 비동기 Python 프로세서가 GPU 작업을 처리합니다. 계약(포트, DI 토큰, 안전 정책)으로 멀티모달 엔진 어댑터를 재빌드 없이 교체 가능합니다. 저장소: 로컬 SQLite, 프로덕션 PostgreSQL.
보고서는 ImagingStudyRef를 통해 HL7 FHIR R4 DiagnosticReport에 매핑되며, DICOM SR(SOP Class 1.2.840.10008.5.1.4.1.1.88.33)으로 내보내기 합니다. RadiologyReportSummary는 RadLex(RSNA)와 SNOMED CT를 사용합니다. 편집 캡처로 데이터셋 변화/모델 드리프트를 해결해 재학습에 활용합니다.
메트릭과 관찰 가능성
Prometheus 메트릭: 수집/처리/전달 카운터/히스토그램, mri_second_opinion_cases_awaiting_review(긴급도별) 및 mri_second_opinion_review_wait_started_at_unix 게이지. 뇌졸중 등 중증 케이스의 AwaitingReview 타임아웃에 알림.
오픈 리포: 테스트와 워크벤치
Dockerfile, docker-compose, SECURITY.md가 포함된 독립 리포. 176/177 테스트 통과(상태 머신, PostgreSQL, 인증). 임상의 참여 워크플로로 위치지음, 연구용만, 규제 승인 없음.
릴리스 기능:
- 재시도와 감사 포함 전체 케이스 라이프사이클.
- TypeScript(오케스트레이션, 검증, 리뷰어 UI)와 Python(디스패치, 대체) 분리.
- 검토 없이 전달 차단.
- 메트릭과 표준 내보내기.
주요 요약
- 파이프라인은 코드 수준에서 임상의 참여를 강제해 검토 없이 확정 차단.
- 메타데이터 대체로 손상 DICOM 크래시 방지.
- 계산과 오케스트레이션 분리로 AI 어댑터 교체 간소화.
- FHIR/DICOM SR + RadLex/SNOMED로 상호운용성 보장.
- 메트릭으로 검토 시간 관리해 임상 위험 제어.
— Editorial Team
아직 댓글이 없습니다.