HL7 и FHIR: как медицинские системы обмениваются данными
Продвинутое3 минРедакция Innovialabs
Коротко
HL7 v2 — это текстовые сообщения о событиях (поступление пациента, результат анализа), которыми системы обмениваются десятилетиями; FHIR — современный стандарт с ресурсами и REST API в JSON. В новых интеграциях обычно выбирают FHIR, но со старым оборудованием и лабораториями всё ещё нужен HL7 v2.
Коротко: в чём разница
HL7 (Health Level Seven) — семейство стандартов обмена медицинскими данными. На практике чаще всего встречаются два:
| HL7 v2 | FHIR | |
|---|---|---|
| Формат | Текст с разделителями | и ^ | JSON или XML |
| Модель | Сообщения о событиях | Ресурсы (Patient, Observation и др.) |
| Транспорт | Чаще всего MLLP поверх TCP, файлы | HTTP, REST API |
| Где встречается | Лабораторные анализаторы, старые МИС, больничные системы | Новые системы, мобильные приложения, порталы пациентов |
| Порог входа | Нужен опыт с диалектами конкретных систем | Привычен веб-разработчикам |
Стандарты не исключают друг друга: многие проекты принимают HL7 v2 от лаборатории и внутри работают с FHIR.
Как выглядит HL7 v2
Сообщение состоит из сегментов (строк), сегмент — из полей, разделённых |, поле — из компонентов через ^. Тип сообщения отражает событие: ADT^A01 — поступление пациента, ORM^O01 — заказ исследования, ORU^R01 — результат.
MSH|^~\&|LAB|CLINIC|MIS|CLINIC|202601151030||ORU^R01|MSG00001|P|2.5
PID|1||123456^^^CLINIC^MR||Karimov^Aziz||19850312|M
OBR|1||LAB7781|58410-2^CBC panel^LN
OBX|1|NM|718-7^Hemoglobin^LN||142|g/L|130-170|N|||F
MSH— заголовок: отправитель, получатель, тип и версия;PID— данные пациента;OBR— заказ исследования;OBX— конкретный показатель: код, значение, единицы, референс, флаг.
Получатель отвечает подтверждением ACK. Главная сложность HL7 v2 — диалекты: каждый производитель по-своему заполняет поля и добавляет Z-сегменты, поэтому спецификацию интеграции согласуют для каждой пары систем.
Как устроен FHIR
FHIR описывает данные как ресурсы с адресом и стандартными операциями REST. Основные ресурсы для клиники: Patient, Practitioner, Encounter, Appointment, ServiceRequest, Observation, DiagnosticReport, Coverage, Claim.
GET /fhir/Observation?patient=Patient/123&category=laboratory
{
"resourceType": "Observation",
"status": "final",
"code": {
"coding": [{ "system": "http://loinc.org", "code": "718-7", "display": "Hemoglobin" }]
},
"subject": { "reference": "Patient/123" },
"valueQuantity": { "value": 142, "unit": "g/L", "system": "http://unitsofmeasure.org", "code": "g/L" }
}
Сильные стороны FHIR: единые правила поиска, профили для национальных и проектных требований, подписки на изменения и связка с OAuth 2.0 через SMART on FHIR для приложений. Спецификация опубликована на сайте HL7: hl7.org/fhir.
Типичные интеграции клиники
- Лаборатория — заказ анализа из МИС уходит в лабораторную систему, результат возвращается и попадает в карту пациента. Часто это HL7 v2.
- Анализаторы и оборудование — результаты напрямую от приборов, обычно через промежуточное ПО.
- Медицинская информационная система (МИС) — обмен пациентами, расписанием и визитами с сайтом, колл-центром, мобильным приложением.
- Страховые компании — проверка полиса, согласование услуг, выставление счетов.
- Государственные системы — передача данных в национальные платформы по их требованиям; формат определяет оператор системы.
Что продумать перед подключением
- Инвентаризация систем: что умеет каждая сторона — HL7 v2, FHIR, собственный API, только файлы.
- Справочники и коды: как кодируются анализы, услуги, диагнозы (LOINC, МКБ-10 или внутренние коды) и кто ведёт таблицу соответствия.
- Идентификация пациента: по какому ключу сопоставлять записи, чтобы не создать дубли и не перепутать людей.
- Интеграционный слой: брокер или интеграционный движок, который принимает сообщения, преобразует форматы и складывает их в очередь, вместо прямых связей «каждый с каждым».
- Ошибки и повторы: что происходит, если получатель недоступен; журнал сообщений и ручная повторная отправка.
- Безопасность и закон: шифрование канала, аутентификация, журнал доступа и соответствие требованиям к персональным и медицинским данным.
- Тестирование: тестовый контур и набор реальных обезличенных сценариев, включая нестандартные случаи.
Частые ошибки
- Считать, что «поддерживает HL7» означает готовую совместимость — без согласования диалекта не обойтись.
- Хранить коды анализов в свободном тексте.
- Интегрировать системы напрямую без очереди и журнала — потерянное сообщение невозможно найти.
- Использовать реальные данные пациентов в тестовой среде.