# HL7 v2 та FHIR для клінічних інформаційних панелей

> Від лабораторного повідомлення HL7 v2 ORU^R01 до плитки інформаційної панелі: Спостереження FHIR з діапазонами та прапорами, підписані вебхуки, без дублікатів — і чому це не моніторинг біля ліжка пацієнта.

Source: https://developers.anpheros.com/uk/guides/clinical-dashboard-hl7-fhir

**Клінічна інформаційна панель потребує результатів у вигляді структурованих, кодованих даних в момент їх звітування — тест, значення, одиниця вимірювання, референтний діапазон та прапор — а не PDF-файлів, які їй потрібно читати.** Лабораторії досі надсилають більшість результатів як повідомлення HL7 v2 ORU^R01, тоді як інформаційні панелі найлегше будувати на основі Спостережень FHIR R4. Anpheros знаходиться між цими двома: лабораторна система надсилає повідомлення HL7 v2 (або звіт у форматі CSV чи JSON) через HTTPS, кожен результат стає Спостереженням FHIR з його кодом (LOINC, коли його надсилає лабораторія), значенням та референтним діапазоном, а підписаний вебхук повідомляє вашу інформаційну панель про надходження нових результатів.

<!-- visual:dashboard-pipeline -->

## Що отримує панель інструментів

Кожен сегмент OBX повідомлення стає одним лабораторним спостереженням (Observation):

| Поле HL7 v2 OBX | FHIR R4 Observation | На панелі інструментів |
|---|---|---|
| OBX-3 test code | `code` (LOINC, коли його надсилає лабораторія; локальний код зберігається як код лабораторії) | Назва тесту; LOINC робить його порівнянним між лабораторіями |
| OBX-5 value, OBX-6 unit | `valueQuantity` (одиниця UCUM) | Число та його одиниця вимірювання |
| OBX-7 reference range | `referenceRange` | Нормальний діапазон |
| OBX-8 abnormal flag | `interpretation` (H, L, …) | Червоний або синій прапорець |
| OBX-14 time | `effectiveDateTime` | Час взяття зразка |

<!-- visual:dashboard-mock -->

## Імпорт повідомлення та реакція на нього

Надішліть повідомлення для пацієнта, якого ви створили (або для якого маєте дозвіл):

```ts
import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });   // a sandbox key, sk_test_…
const message = await readFile('oru_r01.hl7', 'utf8');
const result = await anpheros.labs.importHl7(patientId, message, { sourceSystem: 'lab-lis' });
console.log(result);   // created, skipped and unmapped counts
```

Потім дозвольте платформі викликати ваш бекенд панелі інструментів замість опитування:

```ts
await anpheros.webhooks.create('https://dashboard.example.org/anpheros/hook', { events: ['resource.created'] });
```

Кожна доставка підписується (перевірте її за допомогою `verifyWebhookSignature` з SDK) і повторюється, якщо ваш сервер не відповідає. Подія містить тип ресурсу, ідентифікатор та пацієнта; прочитайте нові Спостереження (Observations) та оновіть плитку. Повторно надіслані звіти пропускаються, тому лабораторія, яка повторно надсилає дані при тайм-ауті, не створює дублікати рядків на екрані.

## Вибір HL7 v2 або FHIR для кожного зв'язку

| Зв'язок | Використання | Причина |
|---|---|---|
| Лабораторія → шар даних | HL7 v2 ORU^R01 (або CSV/JSON) | Те, що вже випускають лабораторні системи; жодних змін з їхнього боку |
| Шар даних → інформаційна панель | FHIR R4 Observation + вебхуки | Кодований JSON з версіями, який ваш фронтенд може читати безпосередньо |
| Інформаційна панель → інші додатки | FHIR R4, за згодою пацієнта | Один стандарт для кожного споживача |

## Чим це не є

- **Не потік з приліжкового монітора.** Anpheros приймає лабораторні звіти через HTTPS. Він не отримує безперервні сигнали або потоки даних з реанімаційних моніторів і не є системою оповіщення: сповіщення, що впливають на догляд, потребують сертифікованої клінічної системи.
- **Не інтерфейсний рушій MLLP.** Повідомлення надходять через HTTPS; якщо ваша лабораторія підтримує лише MLLP через TCP, інтерфейсний рушій попереду пересилає їх.
- **Один тип повідомлення HL7 v2.** Приймаються лабораторні результати ORU^R01; замовлення (ORM/OML) та повідомлення ADT не приймаються.

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

### Чи може панель інструментів безпосередньо читати лабораторні результати HL7 v2?
Може, але кожна панель інструментів тоді потребує власного парсера HL7 v2, зіставлення кодів та дедуплікації. Перетворення один раз у FHIR R4 Observations з кодами LOINC надає кожному екрану однакові чисті дані.

### Як швидко імпортовані результати досягають панелі інструментів?
Запит на імпорт повертається, коли Observations зберігаються, і одночасно ставиться в чергу `resource.created` webhook для кожного з них. Доставка повторюється, якщо ваш кінцевий пункт недоступний.

### Як позначаються аномальні результати?
OBX-8 стає `interpretation` Observation (наприклад, H або L), а OBX-7 — його `referenceRange`, тому панель інструментів може відображати як позначку, так і нормальний діапазон.

### Чи підтримує Anpheros моніторинг відділення інтенсивної терапії?
Ні. Він зберігає лабораторні та клінічні результати та сповіщає ваші системи про нові дані; безперервний моніторинг біля ліжка пацієнта та клінічні тривоги залишаються сертифікованим медичним пристроям.

<!-- visual:cta-dashboard -->

## Пов'язане

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