# Зіставлення HL7 v2 до FHIR

> Зіставлення сегментів до ресурсів та полів OBX від HL7 v2 ORU^R01 до FHIR R4, пастки, що руйнують інтеграції, та конвертер, який ви можете викликати через HTTPS.

Source: https://developers.anpheros.com/uk/guides/hl7-v2-to-fhir-mapping

**Зіставлення HL7 v2 до FHIR означає перетворення кожного сегмента повідомлення v2, розділеного вертикальною рискою, на ресурси FHIR R4: PID на Patient, OBR на DiagnosticReport (або ServiceRequest), кожен OBX на Observation, з кодами, одиницями вимірювання, діапазонами та часом, перенесеними поле за полем.** HL7 публікує офіційний [посібник з реалізації V2-to-FHIR](https://hl7.org/fhir/uv/v2mappings/) з картами концепцій для загальних сегментів. Ця сторінка надає практичне зіставлення для лабораторних результатів (ORU^R01), пастки, що руйнують реальні інтеграції, та конвертер, який ви можете викликати через HTTPS: лабораторний конектор Anpheros.

<!-- visual:v2map-flow -->

## Сегмент до ресурсу

| Сегмент HL7 v2 | Що містить | Ресурс FHIR R4 | У конекторі Anpheros lab |
|---|---|---|---|
| MSH | Роздільники, відправник, тип повідомлення, ідентифікатор повідомлення | `MessageHeader` (або provenance) | Роздільники зчитуються з MSH; тип перевіряється на ORU^R01; ідентифікатор повідомлення зберігається для відстеження |
| PID | Ідентифікатори пацієнта, ім'я, дата народження, стать | `Patient` | Не використовується: пацієнт — це той, хто в URL запиту, тому повідомлення не може бути записане в неправильний запис |
| PV1 | Візит | `Encounter` | Не використовується |
| ORC / OBR | Замовлення та звіт: ідентифікатор виконавця/розміщувача, дата | `ServiceRequest`, `DiagnosticReport` | OBR-3 (або OBR-2) — це ідентифікатор звіту, OBR-7 — дата за замовчуванням |
| OBX | Один результат | `Observation` | Один лабораторний Observation на OBX |
| NTE | Примітка довільного тексту | `Observation.note` | Не використовується |

## Поле OBX по полю

| Поле OBX | Елемент FHIR Observation | Примітки |
|---|---|---|
| OBX-2 тип значення (NM, SN, ST, CWE) | choice of `value[x]` | NM та SN стають `valueQuantity`; текст залишається текстом |
| OBX-3 ідентифікатор `code^text^system` | `code.coding` | `LN` в OBX-3.3 означає LOINC; інші системи — це локальний код лабораторії |
| OBX-5 значення, OBX-6 одиниця вимірювання | `valueQuantity.value`, `.unit` / `.code` (UCUM) | `<5` та `6,4` повинні бути розібрані навмишне |
| OBX-7 референтний діапазон | `referenceRange.low` / `.high` | `3.5-5.1`, `<200`, `>40` |
| OBX-8 аномальний прапорець | `interpretation` | H, L, HH, LL, A, N |
| OBX-11 статус результату | `status` | F → остаточний, C → змінений, P → попередній, I → зареєстрований |
| OBX-14 час спостереження | `effectiveDateTime` | v2 часи часто не мають часового поясу; FHIR вимагає його |

## Конвертація повідомлення з одним запитом

```bash
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: x-application/hl7-v2+er7" \
  -H "Idempotency-Key: $(uuidgen)" \
  --data-binary @oru_r01.hl7
```

Відповідь містить інформацію про кількість створених спостережень (Observations), кількість пропущених як вже імпортовані, маркери, які не вдалося зіставити, а також нові спостереження з їхніми кодами. Кожне спостереження отримує стабільний ідентифікатор, похідний від звіту, тесту, часу та значення, тому лабораторія, яка повторно надсилає те саме повідомлення, не створює дублікатів.

## Пастки, що руйнують реальні інтеграції

1. **Часові пояси.** `20261002074500` не має зміщення; чітко визначте часовий пояс відправника.
2. **Локальні коди.** Зберігайте власний код лабораторії, коли немає LOINC; ніколи не видаляйте його.
3. **Повторні надсилання.** Без стабільного ідентифікатора для кожного результату повторні спроби стають дублікатами.
4. **Виправлення.** OBX-11 `C` є виправленням; вирішіть, чи замінює він старий результат, чи додає його, і позначте старий результат.
5. **Нечислові значення.** `positive`, `<5`, `6,4` потребують чітких правил, а не припущень.

## Чого не робить конектор

Він приймає лабораторні результати у форматі ORU^R01 через HTTPS. Він не приймає повідомлення ADT або замовлень, не працює з MLLP через TCP (інтерфейсний рушій попереду може перенаправляти), не створює DiagnosticReport і не зіставляє пацієнтів з PID.

## Часті запитання

### Як відобразити HL7 v2 на FHIR?
Сегмент за сегментом: PID до Patient, PV1 до Encounter, ORC/OBR до ServiceRequest та DiagnosticReport, OBX до Observation, NTE до notes. Посібник з реалізації HL7 V2-to-FHIR визначає відображення концепцій на рівні полів.

### Чи існує конвертер HL7 v2 на FHIR?
Так. Інтерфейсні рушії та бібліотеки з відкритим кодом конвертують повідомлення; для лабораторних результатів лабораторний конектор Anpheros конвертує повідомлення ORU^R01 у FHIR R4 Observations одним HTTPS-запитом і зберігає їх у записі пацієнта.

### Які типи повідомлень HL7 v2 приймає Anpheros?
ORU^R01 лабораторні результати. Повідомлення іншого типу отримує попередження, і читаються лише його сегменти OBX; ADT, order та інші повідомлення не підтримуються.

### Як відображаються прапорці аномалій HL7 v2 у FHIR?
OBX-8 стає `Observation.interpretation`, використовуючи коди HL7 ObservationInterpretation (H, L, HH, LL, A, N).

<!-- visual:cta-v2map -->

## Пов'язане

- [API лабораторних результатів: HL7 v2, FHIR та LOINC](https://developers.anpheros.com/uk/guides/lab-results-api)
- [FHIR проти HL7 v2: практичні відмінності](https://developers.anpheros.com/uk/guides/fhir-vs-hl7-v2)
- [Як імпортувати лабораторні результати до запису FHIR](https://developers.anpheros.com/uk/guides/import-lab-results-fhir)
- [HL7 v2 та FHIR для клінічних інформаційних панелей](https://developers.anpheros.com/uk/guides/clinical-dashboard-hl7-fhir)
- [Лабораторний конектор](https://developers.anpheros.com/uk/guides/lab-connector)
