# Mapowanie HL7 v2 na FHIR

> Mapowanie segmentów na zasoby i pól OBX po polu z HL7 v2 ORU^R01 na FHIR R4, pułapki, które psują integracje, i konwerter, który można wywołać przez HTTPS.

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

**Mapowanie HL7 v2 na FHIR oznacza przekształcenie każdego segmentu wiadomości v2 rozdzielanej pionową kreską w zasoby FHIR R4: PID na Patient, OBR na DiagnosticReport (lub ServiceRequest), każde OBX na Observation, z kodami, jednostkami, zakresami i czasami przenoszonymi pole po polu.** HL7 publikuje oficjalny [V2-to-FHIR implementation guide](https://hl7.org/fhir/uv/v2mappings/) z mapowaniami koncepcji dla wspólnych segmentów. Ta strona zawiera praktyczne mapowanie wyników laboratoryjnych (ORU^R01), pułapki, które psują rzeczywiste integracje, oraz konwerter, który można wywołać przez HTTPS: konektor laboratoryjny Anpheros.

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

## Segment do zasobu

| Segment HL7 v2 | Co zawiera | Zasób FHIR R4 | W konektorze laboratoryjnym Anpheros |
|---|---|---|---|
| MSH | Separatory, system wysyłający, typ wiadomości, identyfikator wiadomości | `MessageHeader` (lub provenance) | Separatory odczytywane z MSH; typ sprawdzany dla ORU^R01; identyfikator wiadomości zachowany dla identyfikowalności |
| PID | Identyfikatory pacjenta, imię, nazwisko, data urodzenia, płeć | `Patient` | Nie używany: pacjent to ten z adresu URL żądania, więc wiadomość nie może zapisać się do nieprawidłowego rekordu |
| PV1 | Wizyta | `Encounter` | Nie używany |
| ORC / OBR | Zamówienie i raport: identyfikator wypełniającego/zleceniodawcy, data | `ServiceRequest`, `DiagnosticReport` | OBR-3 (lub OBR-2) to identyfikator raportu, OBR-7 domyślna data |
| OBX | Jeden wynik | `Observation` | Jedna obserwacja laboratoryjna na OBX |
| NTE | Notatka tekstowa | `Observation.note` | Nie używany |

## Pole OBX po polu

| Pole OBX | Element FHIR Observation | Uwagi |
|---|---|---|
| OBX-2 typ wartości (NM, SN, ST, CWE) | wybór `value[x]` | NM i SN stają się `valueQuantity`; tekst pozostaje tekstem |
| OBX-3 identyfikator `code^text^system` | `code.coding` | `LN` w OBX-3.3 oznacza LOINC; inne systemy to lokalne kody laboratorium |
| OBX-5 wartość, OBX-6 jednostka | `valueQuantity.value`, `.unit` / `.code` (UCUM) | `<5` i `6,4` muszą być parsowane celowo |
| OBX-7 zakres referencyjny | `referenceRange.low` / `.high` | `3.5-5.1`, `<200`, `>40` |
| OBX-8 flaga nieprawidłowości | `interpretation` | H, L, HH, LL, A, N |
| OBX-11 status wyniku | `status` | F → ostateczny, C → poprawiony, P → wstępny, I → zarejestrowany |
| OBX-14 czas obserwacji | `effectiveDateTime` | czasy v2 często nie mają strefy czasowej; FHIR wymaga jednej |

## Konwersja wiadomości z jednym żądaniem

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

Odpowiedź zawiera listę liczby utworzonych Obserwacji, liczby pominiętych jako już zaimportowane, które znaczniki nie mogły zostać zmapowane, oraz nowe Obserwacje wraz z ich kodami. Każda z nich otrzymuje stabilny identyfikator pochodzący z raportu, testu, czasu i wartości, dzięki czemu laboratorium, które ponownie wysyła tę samą wiadomość, nie tworzy duplikatów.

## Pułapki utrudniające rzeczywiste integracje

1. **Strefy czasowe.** `20261002074500` nie zawiera przesunięcia; jasno określ strefę czasową nadawcy.
2. **Kody lokalne.** Zachowaj własny kod laboratorium, gdy nie ma LOINC; nigdy go nie usuwaj.
3. **Ponowne wysyłanie.** Bez stabilnego identyfikatora dla każdego wyniku, ponawiane próby stają się duplikatami.
4. **Korekty.** OBX-11 `C` jest korektą; zdecyduj, czy zastępuje, czy dodaje, i oznacz stary wynik.
5. **Wartości nienumeryczne.** `positive`, `<5`, `6,4` wymagają jasnych reguł, a nie domysłów.

## Czego konektor nie robi

Akceptuje wyniki badań laboratoryjnych w formacie ORU^R01 przez HTTPS. Nie odbiera wiadomości ADT ani zleceń, nie komunikuje się przez MLLP w protokole TCP (silnik interfejsu z przodu może przekierować), nie tworzy obiektu DiagnosticReport i nie dopasowuje pacjentów z PID.

## Często zadawane pytania

### Jak mapować HL7 v2 do FHIR?
Segment po segmencie: PID do Patient, PV1 do Encounter, ORC/OBR do ServiceRequest i DiagnosticReport, OBX do Observation, NTE do notes. Przewodnik implementacyjny HL7 V2-to-FHIR definiuje mapowania koncepcji na poziomie pól.

### Czy istnieje konwerter HL7 v2 do FHIR?
Tak. Silniki interfejsów i biblioteki open-source konwertują wiadomości; w przypadku wyników laboratoryjnych, konektor laboratoryjny Anpheros konwertuje wiadomość ORU^R01 na FHIR R4 Observations w jednym żądaniu HTTPS i przechowuje je w rekordzie pacjenta.

### Jakie typy wiadomości HL7 v2 akceptuje Anpheros?
ORU^R01 wyniki laboratoryjne. Wiadomość innego typu otrzymuje ostrzeżenie, a odczytywane są tylko jej segmenty OBX; ADT, wiadomości dotyczące zleceń i inne nie są obsługiwane.

### Jak są reprezentowane flagi nieprawidłowości HL7 v2 w FHIR?
OBX-8 staje się `Observation.interpretation` przy użyciu kodów HL7 ObservationInterpretation (H, L, HH, LL, A, N).

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

## Powiązane

- [API wyników laboratoryjnych: HL7 v2, FHIR i LOINC](https://developers.anpheros.com/pl/guides/lab-results-api)
- [FHIR vs HL7 v2: praktyczne różnice](https://developers.anpheros.com/pl/guides/fhir-vs-hl7-v2)
- [Jak zaimportować wyniki laboratoryjne do rekordu FHIR](https://developers.anpheros.com/pl/guides/import-lab-results-fhir)
- [HL7 v2 i FHIR dla pulpitów nawigacyjnych klinicznych](https://developers.anpheros.com/pl/guides/clinical-dashboard-hl7-fhir)
- [Konektor laboratoryjny](https://developers.anpheros.com/pl/guides/lab-connector)
