# HL7 v2 i FHIR dla pulpitów klinicznych

> Od wiadomości HL7 v2 ORU^R01 z laboratorium do kafelka na pulpicie: Obserwacje FHIR z zakresami i flagami, podpisane webhooki, brak duplikatów — i dlaczego nie jest to monitorowanie przyłóżkowe.

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

**Pulpit kliniczny potrzebuje wyników jako ustrukturyzowanych, zakodowanych danych w momencie ich zgłoszenia — test, wartość, jednostka, zakres referencyjny i flaga — a nie plików PDF, które musi odczytywać.** Laboratoria nadal wysyłają większość wyników jako wiadomości HL7 v2 ORU^R01, podczas gdy pulpity najłatwiej budować na Obserwacjach FHIR R4. Anpheros znajduje się pomiędzy tymi dwoma: system laboratoryjny publikuje wiadomość HL7 v2 (lub raport CSV lub JSON) przez HTTPS, każdy wynik staje się Obserwacją FHIR z jego kodem (LOINC, gdy laboratorium je wysyła), wartością i zakresem referencyjnym, a podpisany webhook informuje pulpit, że pojawiły się nowe wyniki.

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

## Co otrzymuje pulpit nawigacyjny

Każdy segment OBX wiadomości staje się jedną obserwacją laboratoryjną:

| Pole OBX HL7 v2 | Obserwacja FHIR R4 | Na pulpicie nawigacyjnym |
|---|---|---|
| Kod testu OBX-3 | `code` (LOINC, gdy laboratorium go wysyła; lokalny kod jest zachowywany jako kod laboratorium) | Nazwa testu; LOINC umożliwia porównywanie między laboratoriami |
| Wartość OBX-5, jednostka OBX-6 | `valueQuantity` (jednostka UCUM) | Liczba i jej jednostka |
| Zakres referencyjny OBX-7 | `referenceRange` | Normalny zakres |
| Flaga nieprawidłowości OBX-8 | `interpretation` (H, L, …) | Czerwona lub niebieska flaga |
| Czas OBX-14 | `effectiveDateTime` | Kiedy pobrano próbkę |

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

## Importuj wiadomość i reaguj na nią

Wyślij wiadomość dla pacjenta, którego utworzyłeś (lub dla którego posiadasz uprawnienia):

```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
```

Następnie pozwól platformie wywołać Twój backend pulpitu nawigacyjnego zamiast odpytywania go:

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

Każda dostawa jest podpisana (zweryfikuj ją za pomocą `verifyWebhookSignature` z SDK) i ponawiana, jeśli Twój serwer nie odpowie. Zdarzenie zawiera typ zasobu, identyfikator i pacjenta; odczytaj nowe Obserwacje i odśwież kafelek. Ponownie wysłane raporty są pomijane, więc laboratorium, które ponownie przesyła dane po upływie limitu czasu, nie tworzy duplikatów wierszy na ekranie.

## Wybór HL7 v2 lub FHIR dla każdego połączenia

| Połączenie | Zastosowanie | Dlaczego |
|---|---|---|
| Laboratorium → warstwa danych | HL7 v2 ORU^R01 (lub CSV/JSON) | To, co systemy laboratoryjne już emitują; brak zmian po ich stronie |
| Warstwa danych → pulpit nawigacyjny | FHIR R4 Observation + webhooks | Kodowane, wersjonowane JSON, które front-end może odczytać bezpośrednio |
| Pulpit nawigacyjny → inne aplikacje | FHIR R4, za zgodą pacjenta | Jeden standard dla każdego konsumenta |

## Czym to nie jest

- **Nie jest to strumień danych z monitora przyłóżkowego.** Anpheros akceptuje raporty laboratoryjne przez HTTPS. Nie odbiera ciągłych przebiegów ani strumieni danych z monitorów intensywnej terapii i nie jest systemem alarmowym: alerty wpływające na opiekę wymagają certyfikowanego systemu klinicznego.
- **Nie jest to silnik interfejsów MLLP.** Wiadomości przychodzą przez HTTPS; jeśli Twoje laboratorium obsługuje tylko MLLP przez TCP, silnik interfejsów znajdujący się z przodu przekazuje je dalej.
- **Jeden typ wiadomości HL7 v2.** Akceptowane są wyniki laboratoryjne ORU^R01; zamówienia (ORM/OML) i wiadomości ADT nie są obsługiwane.

## Często zadawane pytania

### Czy pulpit nawigacyjny może bezpośrednio odczytywać wyniki laboratoryjne HL7 v2?
Może, ale każdy pulpit nawigacyjny potrzebuje wtedy własnego parsera HL7 v2, mapowania kodów i deduplikacji. Konwersja raz do FHIR R4 Observations z kodami LOINC zapewnia każdemu ekranowi te same czyste dane.

### Jak szybko zaimportowane wyniki docierają do pulpitu nawigacyjnego?
Żądanie importu zwraca dane, gdy Observations zostaną zapisane, a jednocześnie kolejkowany jest `resource.created` webhook dla każdego z nich. Dostawa jest ponawiana, jeśli Twój punkt końcowy jest niedostępny.

### Jak oznaczane są nieprawidłowe wyniki?
OBX-8 staje się `interpretation` Observation (na przykład H lub L), a OBX-7 jego `referenceRange`, dzięki czemu pulpit nawigacyjny może wyświetlać zarówno flagę, jak i zakres normy.

### Czy Anpheros obsługuje monitorowanie intensywnej terapii?
Nie. Przechowuje wyniki laboratoryjne i kliniczne oraz powiadamia Twoje systemy o nowych danych; ciągłe monitorowanie przyłóżkowe i alarmy kliniczne pozostają przy certyfikowanych urządzeniach medycznych.

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

## Powiązane

- [API wyników laboratoryjnych: HL7 v2, FHIR i LOINC](https://developers.anpheros.com/pl/guides/lab-results-api)
- [Jak zaimportować wyniki laboratoryjne do rekordu FHIR](https://developers.anpheros.com/pl/guides/import-lab-results-fhir)
- [Łącznik laboratoryjny](https://developers.anpheros.com/pl/guides/lab-connector): odniesienie do punktu końcowego
- [FHIR vs HL7 v2: praktyczne różnice](https://developers.anpheros.com/pl/guides/fhir-vs-hl7-v2)
- [Zdalne monitorowanie pacjentów z użyciem FHIR](https://developers.anpheros.com/pl/guides/remote-patient-monitoring-fhir)
- [Webhooks](https://developers.anpheros.com/pl/guides/webhooks)
