# FHIR vs HL7 v2: praktyczne różnice

> Wiadomości HL7 v2 i zasoby FHIR porównane dla deweloperów: format, transport, ten sam wynik laboratoryjny w obu, pułapki tłumaczenia i gdzie Anpheros akceptuje v2.

Source: https://developers.anpheros.com/pl/guides/fhir-vs-hl7-v2

**HL7 v2 to format wiadomości, którym systemy szpitalne wymieniają się od późnych lat 80. XX wieku — zdarzenia rozdzielane pionową kreską, takie jak „pacjent przyjęty” lub „wynik laboratoryjny gotowy”, przesyłane między systemami przez połączenie sieciowe — podczas gdy HL7 FHIR to standard API internetowego, w którym aplikacje odczytują i zapisują zasoby, takie jak Patient i Observation, przez HTTPS w formacie JSON.** Nie są to alternatywy, które wybiera się raz na zawsze: większość szpitali nadal wewnętrznie korzysta z v2, nowe aplikacje i API skierowane do pacjentów używają FHIR, a praca integracyjna często polega na tłumaczeniu jednego formatu na drugi. Ta strona porównuje je pod kątem punktów istotnych podczas pisania kodu, pokazuje te same dane w obu formatach i wyjaśnia, gdzie Anpheros akceptuje v2.

## Obok siebie

| | HL7 v2 | HL7 FHIR R4 |
|---|---|---|
| Styl | Komunikaty wyzwalane przez zdarzenia (przyjęcie, zlecenie, wynik) | Zasoby, które tworzysz, odczytujesz, aktualizujesz, wyszukujesz |
| Format | Segmenty tekstowe oddzielone znakami nowej linii, pola przez `\|`, komponenty przez `^` | JSON (lub XML) |
| Transport | Zazwyczaj MLLP przez TCP w sieci szpitalnej | HTTPS REST |
| Zapytania | Ograniczone; systemy głównie wysyłają dane | Parametry wyszukiwania, `_include`, historia |
| Bezpieczeństwo | Poziom sieci (VPN, prywatne połączenia) | OAuth 2.0 / SMART on FHIR, TLS, zakresy |
| Elastyczność | Wiele opcjonalnych pól i lokalnych segmentów Z; każdy interfejs jest negocjowany | Zasoby bazowe plus profile (US Core, IPS, European IGs) |
| Typowi użytkownicy | Systemy EHR, laboratoryjne, radiologiczne, rozliczeniowe w szpitalu | Aplikacje, API dostępu dla pacjentów, wymiana międzyorganizacyjna, AI |

Najczęstsze komunikaty v2:

| Komunikat | Znaczenie | Najbliższe zasoby FHIR |
|---|---|---|
| ADT^A01, A03, A08 | Przyjęcie, wypis, aktualizacja pacjenta | `Patient`, `Encounter` |
| ORM / OML | Zlecenie badania | `ServiceRequest` |
| ORU^R01 | Wynik gotowy | `Observation`, `DiagnosticReport` |
| SIU | Planowanie | `Appointment` |
| MDM | Dokument | `DocumentReference` |

## Ten sam wynik laboratoryjny w obu formatach

Wynik ORU^R01 (segment OBX):

```
OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
```

Ten sam wynik jako HL7 FHIR R4 Observation, tak jak Anpheros przechowuje go po zaimportowaniu wiadomości:

```json
{
  "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"},
  "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"}}]
}
```

Pole po polu: OBX-3 staje się `code`, OBX-5 i OBX-6 stają się `valueQuantity`, OBX-7 `referenceRange`, OBX-8 `interpretation`, OBX-11 `status`, OBX-14 `effectiveDateTime`. HL7 publikuje oficjalny [HL7 Version 2 to FHIR](https://build.fhir.org/ig/HL7/v2-to-fhir/) implementation guide z mapowaniami segmentów, typów danych i słowników.

## Gdzie tłumaczenia idą źle

- **Strefy czasowe.** Sygnatury czasowe v2, takie jak `20261002074500`, często nie zawierają przesunięcia; musisz znać strefę czasową nadawcy. FHIR wymaga strefy czasowej, gdy czas jest obecny. (Anpheros odczytuje czas v2 bez strefy czasowej jako UTC; wyślij przesunięcie, jeśli je masz.)
- **Kody lokalne.** Wiele laboratoriów umieszcza własne kody w OBX-3 zamiast LOINC. Dobre tłumaczenie zachowuje kod lokalny i mapuje go do LOINC, gdy jest to możliwe, zamiast go pomijać.
- **Powtarzające się wysyłki.** Nadawcy v2 retransmitują dane w przypadku przekroczenia limitu czasu. Bez stabilnego identyfikatora na wynik, magazyn FHIR zapełnia się duplikatami.
- **Wszystko opcjonalne.** To samo pole może być puste, powtórzone lub używane inaczej przez dwóch nadawców. Zweryfikuj stronę FHIR; [walidator FHIR R4](https://developers.anpheros.com/tools/fhir-validator) pokazuje, czego brakuje w przetłumaczonym zasobie.
- **Korekty.** Status wyniku v2 `C` (skorygowany) powinien zaktualizować istniejącą obserwację i zachować jej historię, a nie tworzyć drugą.

## Kiedy czego używać

- **Wewnątrz szpitala, pomiędzy istniejącymi systemami:** v2 jest zazwyczaj tym, czym posługują się systemy. Silnik integracyjny routuje i transformuje komunikaty.
- **Tworzenie aplikacji, API dostępu dla pacjentów lub czegokolwiek, co przekracza granice organizacji:** FHIR, z OAuth i zgodą.
- **Zasilanie AI lub analityki:** FHIR, ponieważ jest możliwy do zapytania, kodowany i wersjonowany.
- **Oba:** powszechny wzorzec w świecie rzeczywistym — odbieranie v2 z laboratorium lub EHR, przechowywanie FHIR, udostępnianie FHIR aplikacjom.

## Gdzie Anpheros pasuje

Anpheros przechowuje rekordy pacjentów jako FHIR R4 i akceptuje jeden typ wiadomości HL7 v2: **ORU^R01 wyniki laboratoryjne**, wysyłane przez HTTPS do [łącznika laboratorium](https://developers.anpheros.com/pl/guides/lab-connector) (`POST /v1/patients/{id}/labs/import` z `Content-Type: x-application/hl7-v2+er7`). Każdy OBX staje się obserwacją laboratoryjną z kodem LOINC, zakresem referencyjnym i interpretacją; identyfikator raportu jest przechowywany w pochodzeniu, a ponowne wysłane raporty są pomijane. Skorygowany wynik (OBX-11 = `C`) z nową wartością jest przechowywany jako nowa obserwacja ze statusem `amended`; oryginał pozostaje niezmieniony, więc jeśli Twoje źródło wysyła poprawki, oznacz wcześniejszą obserwację jako `entered-in-error` lub zaktualizuj ją za pomocą API FHIR. Działający przykład to [API wyników laboratoryjnych](https://developers.anpheros.com/pl/guides/lab-results-api).

Nie akceptuje innych wiadomości v2 (ADT, zamówienia, harmonogramy), nie nasłuchuje na MLLP i nie wysyła v2. W tych przypadkach silnik integracyjny przed Anpheros tłumaczy na FHIR i zapisuje przez API.

## Często zadawane pytania

### Czy FHIR zastępuje HL7 v2?
Nieprędko. v2 pozostaje kręgosłupem większości szpitali, ponieważ działa i jest wbudowany w istniejące systemy. FHIR rozwija się wokół niego — w aplikacjach, dostępie pacjentów i wymianie między organizacjami — a oba standardy współistnieją, często z tłumaczeniem między nimi.

### Co to jest MLLP?
Minimal Lower Layer Protocol: prosty sposób ramkowania komunikatów v2 przez połączenie TCP, ze znakami początku i końca wokół każdego komunikatu oraz potwierdzeniem (ACK) zwrotnym. FHIR używa zamiast tego HTTPS.

### Czy mogę automatycznie konwertować komunikaty HL7 v2 do FHIR?
W większości przypadków. Przewodnik implementacyjny HL7 v2-to-FHIR zawiera standardowe mapowania, a silniki integracyjne je implementują. Należy spodziewać się ręcznej pracy w przypadku kodów lokalnych, segmentów Z, stref czasowych i sposobu, w jaki każdy nadawca używa pól opcjonalnych.

### Czy Anpheros akceptuje HL7 v2?
Tak, w przypadku wyników laboratoryjnych: komunikaty ORU^R01 wysłane przez HTTPS do konektora laboratoryjnego stają się FHIR Observations. Inne typy komunikatów v2 i połączenia MLLP nie są obsługiwane.

## Powiązane

- [Mapowanie HL7 v2 na FHIR](https://developers.anpheros.com/pl/guides/hl7-v2-to-fhir-mapping): mapowanie segmentów i pól oraz konwerter
- [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)
- [Interoperacyjność danych w opiece zdrowotnej](https://developers.anpheros.com/pl/guides/interoperability)
- [DICOM vs FHIR: dane obrazowe i dane kliniczne](https://developers.anpheros.com/pl/guides/dicom-vs-fhir)
- [Platforma FHIR](https://developers.anpheros.com/pl/guides/fhir)
