AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

API wyników laboratoryjnych: HL7 v2, FHIR i LOINC

Jak wyniki laboratoryjne podróżują jako dane HL7 v2 i FHIR R4, co musi zawierać jeden wynik i jak odbierać wyniki laboratoryjne do repozytorium FHIR, z rzeczywistym przykładem.

API wyników laboratoryjnych dostarcza wyniki laboratoryjne jako ustrukturyzowane dane — kod testu, wartość, jednostkę, zakres referencyjny, status i czas — zamiast pliku PDF, dzięki czemu oprogramowanie może je przechowywać, porównywać, wizualizować i udostępniać. Obecnie dane te są przesyłane w trzech formach: wiadomości HL7 v2 ORU^R01 (nadal stanowiące kręgosłup komunikacji między laboratoriami a szpitalami), zasoby HL7 FHIR R4 Observation i DiagnosticReport (format nowoczesnych API) oraz specyficzne dla laboratorium eksporty CSV, JSON lub PDF. Ta strona wyjaśnia, jak poszczególne elementy pasują do siebie, co musi zawierać dobre API wyników laboratoryjnych i jak odbierać dane laboratoryjne do rekordu FHIR pacjenta za pomocą Anpheros.

Kto wymienia wyniki badań laboratoryjnych i w jakim formacie

Od → do Zwykły format dzisiaj Uwagi
Laboratorium → system szpitalny lub przychodni HL7 v2 ORU^R01 (w USA często zgodnie z przewodnikiem HL7 v2.5.1 Laboratory Results Interface) Zlecenia idą w przeciwnym kierunku jako komunikaty ORM/OML
Laboratorium → agencja zdrowia publicznego Elektroniczne raportowanie wyników laboratoryjnych HL7 v2, coraz częściej FHIR Tylko zgłaszalne schorzenia
System przychodni → aplikacja pacjenta FHIR R4 poprzez API dostępu dla pacjenta W USA certyfikowane EHR udostępniają wyniki laboratoryjne jako FHIR (US Core); w UE Europejska Przestrzeń Danych Zdrowotnych wymienia wyniki laboratoryjne wśród swoich priorytetowych kategorii danych
Laboratorium → pacjent Raport PDF, portal, czasami CSV Format, który większość pacjentów faktycznie otrzymuje
Aplikacja → model AI Strukturalny kontekst zbudowany z Observations Wymaga kodów i jednostek, aby był wiarygodny

Kierunek ma znaczenie: laboratoryjny system informatyczny (LIS) jest źródłem prawdy dla wyniku, a każdy system poniżej przechowuje jego kopię. To, co sprawia, że kopie są godne zaufania, to fakt, że każdy z nich przechowuje kod, jednostkę, zakres i pochodzenie wartości.

Co powinien zawierać jeden wynik laboratoryjny

Wynik mówiący jedynie „Glukoza 126” nie może być bezpiecznie zinterpretowany. Kompletny wynik zawiera:

W FHIR R4 każdy wynik to jedno Observation z category = laboratory, a raport grupujący je to DiagnosticReport, który wymienia Obserwacje w result. Prawidłowe przykłady obu, z błędami najczęściej zgłaszanymi przez walidatory, znajdują się w przykładach FHIR R4 JSON — zobacz także przykład DiagnosticReport.

HL7 v2 i FHIR obok siebie

Ten sam wynik panelu lipidowego, tak jak większość laboratoriów wysyła go dzisiaj i tak jak API powinno go przechowywać:

OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
Pole HL7 v2 Znaczenie Element FHIR R4 Observation
OBX-3 2093-3^Cholesterol^LN Test, zakodowany w LOINC code.coding (system http://loinc.org)
OBX-5 212, OBX-2 NM Wartość numeryczna valueQuantity.value
OBX-6 mg/dL Jednostka valueQuantity.unit
OBX-7 <200 Zakres referencyjny referenceRange.high
OBX-8 H Flaga nieprawidłowości interpretation
OBX-11 F Wynik końcowy status = final
OBX-14 Czas obserwacji effectiveDateTime

Konwersja między nimi to głównie mapowanie pól. Trudniejsze aspekty leżą gdzie indziej: laboratoria, które wysyłają własne kody zamiast LOINC, liczby zapisane jako tekst ("6,4", "<5"), zakresy w różnych notacjach oraz raporty wysyłane ponownie po upływie czasu. Jak normalizować dane medyczne omawia te kwestie szczegółowo.

Odbieranie wyników badań laboratoryjnych do rekordu FHIR z Anpheros

Anpheros przechowuje rekord każdego pacjenta jako HL7 FHIR R4 i posiada łącznik laboratoryjny: jedno żądanie przyjmuje cały raport w formacie HL7 v2, CSV lub JSON i zwraca obserwacje laboratoryjne z kodami LOINC, zakresami referencyjnymi, interpretacją i pochodzeniem danych.

curl -s -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: x-application/hl7-v2+er7" \
  -H "X-Anpheros-Source-System: springfield-lis" \
  --data-binary @lipid-panel.hl7

Dla trójliniowego panelu lipidowego (cholesterol, HDL, trójglicerydy) odpowiedź, z lokalnego uruchomienia platformy, wygląda następująco:

{
  "created": 3, "skipped": 0, "unmapped": [], "warnings": [],
  "observations": [
    {"id": "26ed9219-…", "marker": "Cholesterol", "code": "2093-3", "system": "http://loinc.org",
     "value": 212.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"},
    {"id": "2633d1d4-…", "marker": "HDL cholesterol", "code": "2085-9", "system": "http://loinc.org",
     "value": 48.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"},
    {"id": "a02520bb-…", "marker": "Triglyceride", "code": "2571-8", "system": "http://loinc.org",
     "value": 165.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"}
  ]
}

Każdy zapisany wynik to standardowa obserwacja FHIR R4, którą można odczytać za pomocą dowolnego klienta FHIR:

{
  "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"},
  "subject": {"reference": "Patient/4c3062d9-…"},
  "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"}}]
}

Ponowne wysłanie tej samej wiadomości niczego nowego nie tworzy ("created": 0, "skipped": 3): każdy wiersz otrzymuje stabilny identyfikator na podstawie identyfikatora raportu, kodu, daty i wartości. Znaczniki, których platforma nie może zmapować na LOINC, zachowują kod laboratorium i wracają w unmapped, dzięki czemu można poprawić mapowanie u źródła.

Odczytywanie wyników z powrotem to standardowe wyszukiwanie FHIR:

curl -s "https://platform.anpheros.com/fhir/R4/Observation?patient=$PID&category=laboratory&code=http://loinc.org|2093-3" \
  -H "Authorization: Bearer $KEY"

Inne sposoby wprowadzania i wyprowadzania tych samych danych:

Pełny opis krok po kroku, z raportem CSV, wiadomością HL7 v2, niezmapowanymi znacznikami i ponowionymi raportami dla syntetycznego pacjenta, znajduje się w tutorialu Jak zaimportować wyniki badań laboratoryjnych do rekordu FHIR.

Sprawdź wyniki przed wysłaniem

Bezpłatny walidator FHIR R4 sprawdza strukturę Obserwacji i wymagane zestawy wartości, a dzięki profilowi eu-lab sprawdza również, co powinien zawierać wynik laboratoryjny: kategorię laboratory, kod LOINC, temat, status typu końcowego, czas, wartość, jednostkę UCUM i zakres referencyjny. Te same kontrole są przeprowadzane na platformie za pośrednictwem POST /fhir/R4/Observation/$validate?profile=eu-lab.

Wybór API wyników laboratoryjnych: lista kontrolna

Czego Anpheros nie robi

Anpheros nie jest systemem informatycznym laboratorium i nie jest połączony z komercyjnymi sieciami laboratoryjnymi: raport wysyła laboratorium, klinika lub aplikacja pacjenta. Nie obsługuje zleceń laboratoryjnych, nie odczytuje raportów PDF za pośrednictwem tego API (aplikacja Anpheros Daily wyodrębnia wyniki ze zdjęć i plików PDF po stronie pacjenta) i nie interpretuje wyników klinicznie. Jednostki są przechowywane w takiej postaci, w jakiej wysyła je laboratorium; konwersja do kodów UCUM leży po stronie nadawcy, zgodnie z opisem w Jak normalizować dane medyczne.

Często zadawane pytania

Czym jest API wyników laboratoryjnych?

Interfejs, który pozwala oprogramowaniu wysyłać lub odbierać wyniki laboratoryjne jako ustrukturyzowane dane — zakodowany test, wartość z jednostką, zakres referencyjny, status i czas — zamiast jako dokument. Nowoczesne API wyników laboratoryjnych wykorzystują zasoby HL7 FHIR R4 Observation i DiagnosticReport; większość laboratoriów nadal emituje komunikaty HL7 v2 ORU^R01.

Który system kodowania identyfikuje testy laboratoryjne?

LOINC. Każdy kod LOINC nazywa analit, próbkę i często metodę, dlatego 2345-7 (glukoza w surowicy lub osoczu) i 2339-0 (glukoza w pełnej krwi) to różne wyniki. Jednostki najlepiej wyrażać w UCUM.

Jaka jest różnica między Observation a DiagnosticReport?

Observation to pojedynczy wynik, na przykład cholesterol 212 mg/dL. DiagnosticReport to raport jako całość — zlecony panel, kto go wydał i kiedy — i zawiera listę swoich Observation w result.

Czy mogę zaimportować komunikaty HL7 v2 dotyczące badań laboratoryjnych na serwer FHIR?

Tak. Każdy segment OBX jest mapowany na jedną Observation (OBX-3 do code, OBX-5 i OBX-6 do valueQuantity, OBX-7 do referenceRange, OBX-8 do interpretation). Łącznik laboratoryjny Anpheros wykonuje to w jednym żądaniu i przechowuje identyfikator raportu laboratorium w Provenance.

Jak uniknąć duplikatów wyników laboratoryjnych, gdy raport jest wysyłany ponownie?

Nadaj każdemu wynikowi stabilny identyfikator pochodzący z raportu, testu, czasu i wartości, a następnie pomiń wiersze, których identyfikator już istnieje. Łącznik laboratoryjny Anpheros robi to automatycznie i raportuje liczbę jako skipped.

Powiązane

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy