Список того, что физически приносит юзер через /upload (или может принести в обозримом будущем). Классификация — не наш произвол, а стандарт LOINC’s «Document Ontology» (Type / Subject / Setting / Role / Subspecialty оси). Мы используем только ось Type of service для primary classification.

Важно отличать тип документа (этот lookup) от типа клинических данных внутри документа. Один эпикриз содержит narrative + список лекарств + лаб-результаты — это composite документ (см. ниже), но primary type у него один.

Где это моделируется в FHIR

МестоCardinalityНазначение
DocumentReference.type0..1 (singular)Primary тип документа — то что мы определяем при upload
DocumentReference.category0..*Широкие категории (lab / clinical / administrative)
Composition.type1..1Тип clinical document для compound (когда документ — это сам Composition, не просто attachment)
Composition.section[].code0..*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Что приходит
1Lab report (общий)11502-2 Laboratory reportINVITRO/Гемотест биохимия, кровь, моча — generic fallback
2CBC (clinical blood count)58410-2 Complete blood count panelотдельный CBC-бланк, leukocytes/erythrocytes блок
3Pathology / Histology11526-1 Pathology studyбиопсии, гистология, cytology
4Genetic test51969-4 Genetic analysis reportDNA-анализы, 23andMe-style, MTHFR/APOE/etc panels
5ECG / EKG11524-6 EKG studyкардиограмма (raw waves + interpretation)
6Imaging report18748-4 Diagnostic imaging studyУЗИ, КТ, МРТ, рентген — narrative + measurements (не сам DICOM-blob)
7Microbiology / culture11502-2 (sub-type)посевы, антибиотикограмма, чувствительность к антибиотикам

Tier 2 — клинический narrative

#ТипLOINCЧто приходит
8Discharge summary / эпикриз18842-5 Discharge summaryвыписка после стационара — diagnosis, course, meds, follow-up
9Consultation note / заключение специалиста11488-4 Consultation noteзаключение кардиолога, эндокринолога, гинеколога
10Surgical / Operative report11504-8 Surgical operation noteпротокол операции
11History & Physical (H&P) / анамнез34117-2 History and physical noteпервичный осмотр
12Progress note / дневник наблюдения11506-3 Progress noteамбулаторные записи врача

Tier 3 — административные / утилитарные

#ТипLOINCЧто приходит
13Prescription / рецепт57833-6 Prescription recordбумажный рецепт с препаратами и дозировками
14Referral / направление57133-1 Referral noteнаправление к специалисту
15Vaccination record11369-6 History of immunizationsпрививочный паспорт / сертификат
16Insurance / 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).

Связано

Источники

Источники: 1 2 3.

Сноски

  1. LOINC Document Ontology, accessed 2026-05-17, https://loinc.org/document-ontology/.

  2. FHIR R4 DocumentReference, accessed 2026-05-17, https://hl7.org/fhir/R4/documentreference.html.

  3. FHIR R4 Composition, accessed 2026-05-17, https://hl7.org/fhir/R4/composition.html.