AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

API лабораторных результатов: HL7 v2, FHIR и LOINC

Как лабораторные результаты передаются в виде данных HL7 v2 и FHIR R4, что должен содержать один результат, и как получать лабораторные отчеты в запись FHIR, с реальным примером.

API лабораторных результатов доставляет результаты анализов в виде структурированных данных — код теста, значение, единица измерения, референсный диапазон, статус и время — вместо PDF, чтобы программное обеспечение могло их хранить, сравнивать, отображать на графиках и передавать. Сегодня эти данные передаются в трех формах: сообщения HL7 v2 ORU^R01 (все еще основа взаимодействия между лабораториями и больницами), ресурсы HL7 FHIR R4 Observation и DiagnosticReport (формат современных API) и специфичные для лабораторий экспорты в форматах CSV, JSON или PDF. Эта страница объясняет, как все элементы сочетаются, что должен содержать хороший API лабораторных результатов и как получать лабораторные данные в запись FHIR пациента с помощью Anpheros.

Кто обменивается лабораторными результатами и в каком формате

От → Кому Обычный формат сегодня Примечания
Лаборатория → больничная или клиническая система HL7 v2 ORU^R01 (в США часто согласно руководству HL7 v2.5.1 Laboratory Results Interface) Заказы идут в обратном направлении как сообщения ORM/OML
Лаборатория → агентство общественного здравоохранения Электронная отчетность по лабораторным исследованиям HL7 v2, все чаще FHIR Только подлежащие отчетности состояния
Клиническая система → приложение для пациента FHIR R4 через API для доступа пациентов В США сертифицированные EHR предоставляют лабораторные результаты в формате FHIR (US Core); в ЕС European Health Data Space перечисляет лабораторные результаты среди своих приоритетных категорий данных
Лаборатория → пациент PDF-отчет, портал, иногда CSV Формат, который фактически получают большинство пациентов
Приложение → AI модель Структурированный контекст, построенный на основе Observations Требует кодов и единиц измерения для надежности

Направление имеет значение: лабораторная информационная система (LIS) является источником истины для результата, и каждая последующая система хранит его копию. Достоверность копий обеспечивается тем, что каждая из них сохраняет код, единицу измерения, диапазон и источник значения.

Что должен содержать один лабораторный результат

Результат, который гласит только "Глюкоза 126", не может быть безопасно интерпретирован. Полный результат содержит:

В FHIR R4 каждый результат — это один Observation с category = laboratory, а отчет, который их группирует, — это DiagnosticReport, перечисляющий Observations в result. Действительные примеры обоих, с ошибками, которые валидаторы сообщают чаще всего, находятся в Примерах FHIR R4 JSON — см. также Пример DiagnosticReport.

HL7 v2 и FHIR: параллельное сравнение

Тот же результат липидного профиля, как большинство лабораторий отправляют его сегодня и как API должен его хранить:

OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
Поле HL7 v2 Значение Элемент FHIR R4 Observation
OBX-3 2093-3^Cholesterol^LN Тест, закодированный в LOINC code.coding (система http://loinc.org)
OBX-5 212, OBX-2 NM Числовое значение valueQuantity.value
OBX-6 mg/dL Единица измерения valueQuantity.unit
OBX-7 <200 Референсный диапазон referenceRange.high
OBX-8 H Флаг аномалии interpretation
OBX-11 F Окончательный результат status = final
OBX-14 Время наблюдения effectiveDateTime

Конвертация между ними в основном сводится к сопоставлению полей. Сложности возникают в других местах: лаборатории, которые отправляют свои собственные коды вместо LOINC, числа, записанные в виде текста ("6,4", "<5"), диапазоны в различных обозначениях и отчеты, которые отправляются повторно после истечения времени ожидания. Как нормализовать медицинские данные подробно рассматривает эти вопросы.

Получение лабораторных результатов в запись FHIR с помощью Anpheros

Anpheros хранит запись каждого пациента в формате HL7 FHIR R4 и имеет коннектор для лабораторий: один запрос принимает полный отчет в формате HL7 v2, CSV или JSON и возвращает лабораторные наблюдения (Observations) с кодами LOINC, референсными диапазонами, интерпретацией и происхождением данных (provenance).

curl -s -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: x-application/hl7-v2+er7" \
  -H "X-Anpheros-Source-System: springfield-lis" \
  --data-binary @lipid-panel.hl7

Для трехкомпонентной липидной панели (холестерин, ЛПВП, триглицериды) ответ, полученный при локальном запуске платформы, выглядит следующим образом:

{
  "created": 3, "skipped": 0, "unmapped": [], "warnings": [],
  "observations": [
    {"id": "26ed9219-…", "marker": "Cholesterol", "code": "2093-3", "system": "http://loinc.org",
     "value": 212.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"},
    {"id": "2633d1d4-…", "marker": "HDL cholesterol", "code": "2085-9", "system": "http://loinc.org",
     "value": 48.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"},
    {"id": "a02520bb-…", "marker": "Triglyceride", "code": "2571-8", "system": "http://loinc.org",
     "value": 165.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"}
  ]
}

Каждый сохраненный результат представляет собой стандартное FHIR R4 Observation, доступное для чтения любым FHIR-клиентом:

{
  "resourceType": "Observation",
  "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
  "code": {"coding": [{"system": "http://loinc.org", "code": "2093-3",
                        "display": "Cholesterol [Mass/volume] in Serum or Plasma"}], "text": "Cholesterol"},
  "subject": {"reference": "Patient/4c3062d9-…"},
  "effectiveDateTime": "2026-10-02T07:45:00Z",
  "valueQuantity": {"value": 212.0, "unit": "mg/dL"},
  "interpretation": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation", "code": "H"}]}],
  "referenceRange": [{"high": {"value": 200.0, "unit": "mg/dL"}}]
}

Повторная отправка того же сообщения ничего нового не создает ("created": 0, "skipped": 3): каждая строка получает стабильный идентификатор из идентификатора отчета, кода, даты и значения. Маркеры, которые платформа не может сопоставить с LOINC, сохраняют код лаборатории и возвращаются в unmapped, чтобы вы могли исправить сопоставление в источнике.

Чтение результатов обратно выполняется стандартным поиском FHIR:

curl -s "https://platform.anpheros.com/fhir/R4/Observation?patient=$PID&category=laboratory&code=http://loinc.org|2093-3" \
  -H "Authorization: Bearer $KEY"

Другие способы ввода и вывода тех же данных:

Полное пошаговое руководство с отчетом в формате CSV, сообщением HL7 v2, несопоставленными маркерами и повторно отправленными отчетами для синтетического пациента содержится в учебном пособии Как импортировать лабораторные результаты в запись FHIR.

Проверка результатов перед отправкой

Бесплатный валидатор FHIR R4 проверяет структуру Observation и обязательные наборы значений. С профилем eu-lab он также проверяет, что лабораторный результат должен содержать: категорию laboratory, код LOINC, субъект, статус final-type, время, значение, единицу UCUM и диапазон значений. Те же проверки выполняются на платформе через POST /fhir/R4/Observation/$validate?profile=eu-lab.

Выбор API лабораторных результатов: контрольный список

Что Anpheros не делает

Anpheros не является лабораторной информационной системой и не подключен к коммерческим лабораторным сетям: отчет отправляет лаборатория, клиника или приложение пациента. Он не маршрутизирует лабораторные заказы, не читает PDF-отчеты через этот API (приложение Anpheros Daily извлекает результаты из фотографий и PDF на стороне пациента) и не интерпретирует результаты клинически. Единицы измерения хранятся так, как их отправляет лаборатория; их преобразование в коды UCUM лежит на отправителе, как описано в Как нормализовать медицинские данные.

Часто задаваемые вопросы

Что такое API лабораторных результатов?

Интерфейс, который позволяет программному обеспечению отправлять или получать лабораторные результаты в виде структурированных данных — закодированный тест, значение с единицей измерения, диапазон ссылок, статус и время — а не в виде документа. Современные API лабораторных результатов используют ресурсы HL7 FHIR R4 Observation и DiagnosticReport; большинство лабораторий по-прежнему выдают сообщения HL7 v2 ORU^R01.

Какая кодовая система идентифицирует лабораторные тесты?

LOINC. Каждый код LOINC называет аналит, образец и часто метод, поэтому 2345-7 (глюкоза в сыворотке или плазме) и 2339-0 (глюкоза в цельной крови) являются разными результатами. Единицы измерения лучше всего выражать в UCUM.

В чем разница между Observation и DiagnosticReport?

Observation — это один результат, например, холестерин 212 мг/дл. DiagnosticReport — это отчет в целом — панель, которая была заказана, кто ее выдал и когда — и перечисляет свои Observations в result.

Могу ли я импортировать сообщения HL7 v2 в FHIR-сервер?

Да. Каждый сегмент OBX отображается на один Observation (OBX-3 на code, OBX-5 и OBX-6 на valueQuantity, OBX-7 на referenceRange, OBX-8 на interpretation). Коннектор лаборатории Anpheros делает это за один запрос и сохраняет идентификатор отчета лаборатории в Provenance.

Как избежать дублирования лабораторных результатов при повторной отправке отчета?

Присвойте каждому результату стабильный идентификатор, полученный из отчета, теста, времени и значения, и пропускайте строки, идентификатор которых уже существует. Коннектор лаборатории Anpheros делает это автоматически и сообщает количество как skipped.

Связанные материалы

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy