Ресурс для записи факта что пациент принимал/принимает/планирует принимать препарат. Отличается от MedicationRequest (рецепт от врача) и MedicationAdministration (зафиксированный приём, обычно в стационаре). MedicationStatement — это утверждение о приёме, без необходимости документировать каждое введение.

Использование в BloodGPT

  • Источник — narrative-to-FHIR pipeline. LLM extracted entities → ExtractedMedicationSchemabuildMedicationStatement() в narrative-to-fhir/fhir-builders/medication-statement.ts.
  • Данные у нас в основном patient-reported или из выписок («принимал ramipril 5mg в день»). MedicationStatement adequate для этого, MedicationRequest требует Practitioner reference которого у нас нет.
  • Resource не emit’ит category — gap для иконок Timeline.

Ключевые поля для нас

  • subjectPatient/{id}
  • medicationCodeableConcept — препарат (CodeableConcept). RxNorm coder когда нашёл, иначе только text.
  • status — enum ["active", "completed", "entered-in-error", "intended", "stopped", "on-hold", "unknown", "not-taken"]. У нас mapped из LLM enum MedicationStatusEnum ["active", "stopped", "intended", "unknown"] через toFhirMedicationStatus().
  • dosage[].text — concatenation dosage + frequency («5mg per day»)
  • reasonCode — почему принимает (если LLM extracted)
  • dateAsserted — наш ingest time
  • effectivePeriod / effectiveDateTime — необязательно. Можем выставить effectivePeriod.start если LLM extracted startDate (legacy buildMedicationStatement в lib/fhir/resource-builders.ts:51-73 это делает; narrative builder в narrative-to-fhir/ — нет).
  • category — НЕ выставляется (gap). Стандартные значения R4: inpatient / outpatient / community / patientspecified. Для нашего use case (со слов пациента или из выписки) подходит community (дома) или patientspecified (со слов).
  • informationSource — кто сообщил (Patient / Practitioner / RelatedPerson / Organization). У нас не выставляется. Отдельный axis source-attribution — см. [[../product/timeline-page-design]] обсуждение 5 осей.

Status mapping

LLM-схема даёт упрощённые 4 значения, мы маппим в R4 enum:

LLMFHIR R4
activeactive
stoppedstopped
intendedintended
unknownunknown

Мы не используем completed / entered-in-error / on-hold / not-taken — narrative обычно не даёт сигнала достаточного для этих более тонких различий.

Failure modes

  • Нет informationSource — теряем axis «откуда мы это знаем». При timeline’е system-axis это заметно: patientspecified без informationSource: Patient — semantically избыточно. Если добавим category, стоит добавить и informationSource.
  • Singular 0..1 category — нельзя отметить «outpatient + chronic» одновременно. Если хотим больше — расширяй coding[] внутри одной CodeableConcept.
  • Нет effective[X] в narrative builder — теряем когда пациент начал принимать. dateAssertedeffectiveDateTime. На clinical timeline это означает что MedicationStatement плавает по нашему ingest date, не по реальному началу приёма.

Открытые вопросы

  • Default categorycommunity или patientspecified? Зависит от того, считаем ли мы narrative «patient said» или «document recorded». Скорее всего ответ: patientspecified для self-reported разделов, community для extracted из выписок.
  • Добавлять ли effectivePeriod из LLM extracted startDate (как в legacy lib/fhir/resource-builders.ts)?
  • Добавлять ли informationSource для tracking «со слов пациента» vs «из документа»?

Связанные решения

  • [[../domain/category-coverage]] (TBD) — какие category набор пишем
  • [[../domain/fhir-resource-origin-and-lifecycle]] — origin tag (user-uploaded vs ai-generated) ОРТОГОНАЛЕН information source

Связано

  • [[fhir-resource-categories]] — общая концепция (включая текущий gap)
  • [[fhir-allergy-intolerance]] — соседний resource (drug allergies cross-reference)
  • [[fhir-condition]]reasonCode в MedicationStatement может ссылаться на Condition

Источники

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

Сноски

  1. HL7 R4 spec, accessed 2026-05-17, https://hl7.org/fhir/R4/medicationstatement.html.

  2. ValueSet medication-statement-category, accessed 2026-05-17, https://hl7.org/fhir/R4/valueset-medication-statement-category.html.

  3. ValueSet medication-statement-status, accessed 2026-05-17, https://hl7.org/fhir/R4/valueset-medication-statement-status.html.