Список того, что физически приносит юзер через /upload (или может принести в обозримом будущем). Классификация — не наш произвол, а стандарт LOINC’s «Document Ontology» (Type / Subject / Setting / Role / Subspecialty оси). Мы используем только ось Type of service для primary classification.
Важно отличать тип документа (этот lookup) от типа клинических данных внутри документа. Один эпикриз содержит narrative + список лекарств + лаб-результаты — это composite документ (см. ниже), но primary type у него один.
Где это моделируется в FHIR
| Место | Cardinality | Назначение |
|---|---|---|
DocumentReference.type | 0..1 (singular) | Primary тип документа — то что мы определяем при upload |
DocumentReference.category | 0..* | Широкие категории (lab / clinical / administrative) |
Composition.type | 1..1 | Тип clinical document для compound (когда документ — это сам Composition, не просто attachment) |
Composition.section[].code | 0..* | Subtype секций внутри composite документа |
Сейчас buildPreliminaryDocumentReference пишет type всегда захардкоженным LOINC 11502-2 «Laboratory report». TODO в коде явно: «requires recognition to emit a document_type». Пока recognition prompt не классифицирует документ, classification не работает.
Таксономия (4 tier)
Tier 1 — лаб-данные (структурированные значения биомаркеров)
| # | Тип | LOINC | Что приходит |
|---|---|---|---|
| 1 | Lab report (общий) | 11502-2 Laboratory report | INVITRO/Гемотест биохимия, кровь, моча — generic fallback |
| 2 | CBC (clinical blood count) | 58410-2 Complete blood count panel | отдельный CBC-бланк, leukocytes/erythrocytes блок |
| 3 | Pathology / Histology | 11526-1 Pathology study | биопсии, гистология, cytology |
| 4 | Genetic test | 51969-4 Genetic analysis report | DNA-анализы, 23andMe-style, MTHFR/APOE/etc panels |
| 5 | ECG / EKG | 11524-6 EKG study | кардиограмма (raw waves + interpretation) |
| 6 | Imaging report | 18748-4 Diagnostic imaging study | УЗИ, КТ, МРТ, рентген — narrative + measurements (не сам DICOM-blob) |
| 7 | Microbiology / culture | 11502-2 (sub-type) | посевы, антибиотикограмма, чувствительность к антибиотикам |
Tier 2 — клинический narrative
| # | Тип | LOINC | Что приходит |
|---|---|---|---|
| 8 | Discharge summary / эпикриз | 18842-5 Discharge summary | выписка после стационара — diagnosis, course, meds, follow-up |
| 9 | Consultation note / заключение специалиста | 11488-4 Consultation note | заключение кардиолога, эндокринолога, гинеколога |
| 10 | Surgical / Operative report | 11504-8 Surgical operation note | протокол операции |
| 11 | History & Physical (H&P) / анамнез | 34117-2 History and physical note | первичный осмотр |
| 12 | Progress note / дневник наблюдения | 11506-3 Progress note | амбулаторные записи врача |
Tier 3 — административные / утилитарные
| # | Тип | LOINC | Что приходит |
|---|---|---|---|
| 13 | Prescription / рецепт | 57833-6 Prescription record | бумажный рецепт с препаратами и дозировками |
| 14 | Referral / направление | 57133-1 Referral note | направление к специалисту |
| 15 | Vaccination record | 11369-6 History of immunizations | прививочный паспорт / сертификат |
| 16 | Insurance / billing docs | — | страховые формы, инвойсы (out-of-scope as clinical data) |
Tier 4 — composite документы (нюанс)
Иногда один файл = несколько типов одновременно:
- Эпикриз = discharge summary + лаб-результаты внутри + список медикаций
- Медкнига = multi-section: anamnesis + vaccinations + лаб-исследования
- Рукописная запись врача с consultation + назначениями + направлениями
FHIR-моделирование composite:
Composition.type= primary тип (например, Discharge summary)Composition.section[]per содержимое (по секции на каждый тип, code из той же LOINC Document Ontology)- ИЛИ
DocumentReference.category= массив с несколькими широкими категориями
Recognition должен уметь извлечь primary type из document-level signals (заголовок, штамп организации) и опционально пометить sections.
Сигналы для recognition при определении типа
LLM работает per-line/per-page, document_type выводится агрегацией:
- Page-level — заголовок документа, штамп организации, header/footer
- Block-level — структура содержимого:
- structured biomarker rows с numeric values + units → lab
- narrative paragraphs с “anamnesis / examination / diagnosis” → clinical narrative
- med list с dosages → prescription
- timeline of events → progress / discharge
- Top-level classification на DocumentReference — один primary code
Composite — multiple types на один файл, или один primary + sections (предпочтительнее).
Что у нас сейчас в коде
DocumentReference.type— захардкожено11502-2«Laboratory report» для всех upload’ов (см.buildPreliminaryDocumentReference)- Recognition prompt
recognize_image_to_fhirне классифицирует документ — выдаёт только структурированные параметры DocumentReference.category— не используетсяComposition.type— пишется только для AI-generated patient summary (не для user-uploaded composite доков, потому что мы их пока не моделируем как Composition)
Смотри uploaded-document-types-supported — какие из tier’ов мы фактически принимаем сейчас и что в backlog.
Связанные решения
- uploaded-document-types-supported — какие типы поддерживаем (active subset из этой таксономии) — status: draft
- fhir-resource-origin-and-lifecycle — origin tag для user-uploaded vs ai-generated; влияет на как помечаются derived ресурсы из document — status: draft
- health-report-versioning-model — наш AI-generated Composition (отдельная семантика от user-uploaded Composition’а)
Открытые вопросы
- Fallback для unknown — что если recognition не уверен.
unknown(LOINC 70004-7 “Notes”) vs error vs degrade to generic Lab report? - Subtype’ы внутри Lab report — нужно ли детально классифицировать (CBC vs biochemistry vs urinalysis) или достаточно generic
11502-2? - Composite recognition — как prompt маркирует sections внутри одного файла. Новая фича или skip пока не появится usecase.
DocumentReference.categoryмы не пишем сейчас — стоит ли добавить для широких категорий (laboratory / clinical-note / administrative).- Verify что multi-date документы (один file = несколько test_date) корректно укладываются в один DocumentReference + N DiagnosticReport (image-first уже умеет multi-DR).
Связано
- fhir-document-reference — entity-страница про сам ресурс
- fhir-composition — для composite документов
- loinc — Document Ontology subset
Источники
Сноски
-
LOINC Document Ontology, accessed 2026-05-17, https://loinc.org/document-ontology/. ↩
-
FHIR R4 DocumentReference, accessed 2026-05-17, https://hl7.org/fhir/R4/documentreference.html. ↩
-
FHIR R4 Composition, accessed 2026-05-17, https://hl7.org/fhir/R4/composition.html. ↩