AnpherosAnpheros PlatformDevelopers

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

API de résultats de laboratoire : HL7 v2, FHIR et LOINC

Comment les résultats de laboratoire circulent en données HL7 v2 et FHIR R4, ce qu'un résultat doit contenir, et comment recevoir des rapports de laboratoire dans un dossier FHIR, avec un exemple réel.

Une API de résultats de laboratoire délivre les résultats de laboratoire sous forme de données structurées — code de test, valeur, unité, intervalle de référence, statut et heure — au lieu d'un PDF, afin que les logiciels puissent les stocker, les comparer, les représenter graphiquement et les partager. Aujourd'hui, ces données circulent sous trois formes : messages HL7 v2 ORU^R01 (toujours l'épine dorsale entre les laboratoires et les hôpitaux), ressources HL7 FHIR R4 Observation et DiagnosticReport (le format des API modernes), et exportations CSV, JSON ou PDF spécifiques au laboratoire. Cette page explique comment les éléments s'assemblent, ce qu'une bonne API de résultats de laboratoire doit contenir, et comment recevoir des données de laboratoire dans l'enregistrement FHIR d'un patient avec Anpheros.

Qui échange les résultats de laboratoire, et dans quel format

De → à Format habituel aujourd'hui Notes
Laboratoire → système hospitalier ou clinique HL7 v2 ORU^R01 (aux États-Unis, souvent selon le guide HL7 v2.5.1 Laboratory Results Interface) Les commandes vont dans l'autre sens sous forme de messages ORM/OML
Laboratoire → agence de santé publique Rapports électroniques de laboratoire HL7 v2, de plus en plus FHIR Conditions signalables uniquement
Système clinique → application patient FHIR R4 via une API d'accès patient Aux États-Unis, les EHR certifiés exposent les résultats de laboratoire sous forme de FHIR (US Core) ; dans l'UE, l'Espace européen des données de santé liste les résultats de laboratoire parmi ses catégories de données prioritaires
Laboratoire → patient Rapport PDF, portail, parfois CSV Le format que la plupart des patients reçoivent réellement
Application → modèle IA Contexte structuré construit à partir d'Observations Nécessite des codes et des unités pour être fiable

La direction est importante : un système d'information de laboratoire (LIS) est la source de vérité pour un résultat, et chaque système en aval en conserve une copie. Ce qui rend les copies fiables, c'est que chacune conserve le code, l'unité, la plage et l'origine de la valeur.

Ce qu'un résultat de laboratoire doit contenir

Un résultat qui dit simplement "Glucose 126" ne peut pas être interprété en toute sécurité. Un résultat complet comprend :

Dans FHIR R4, chaque résultat est une Observation avec category = laboratory, et le rapport qui les regroupe est un DiagnosticReport qui liste les Observations dans result. Des exemples valides des deux, avec les erreurs que les validateurs signalent le plus souvent, se trouvent dans les exemples JSON FHIR R4 — voir aussi l' exemple DiagnosticReport.

HL7 v2 et FHIR côte à côte

Le même résultat d'analyse lipidique, tel que la plupart des laboratoires l'envoient aujourd'hui et tel qu'une API devrait le stocker :

OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
Champ HL7 v2 Signification Élément FHIR R4 Observation
OBX-3 2093-3^Cholesterol^LN Test, codé en LOINC code.coding (système http://loinc.org)
OBX-5 212, OBX-2 NM Valeur numérique valueQuantity.value
OBX-6 mg/dL Unité valueQuantity.unit
OBX-7 <200 Plage de référence referenceRange.high
OBX-8 H Indicateur d'anomalie interpretation
OBX-11 F Résultat final status = final
OBX-14 Heure de l'observation effectiveDateTime

La conversion entre les deux est principalement un mappage de champs. Les difficultés se situent ailleurs : les laboratoires qui envoient leurs propres codes au lieu de LOINC, les nombres écrits sous forme de texte ("6,4", "<5"), les plages dans plusieurs notations, et les rapports qui sont renvoyés après un délai d'attente. Comment normaliser les données médicales couvre ces aspects en détail.

Réception des résultats de laboratoire dans un enregistrement FHIR avec Anpheros

Anpheros stocke l'enregistrement de chaque patient au format HL7 FHIR R4 et dispose d'un connecteur de laboratoire : une requête prend un rapport complet en HL7 v2, CSV ou JSON et renvoie des Observations de laboratoire avec des codes LOINC, des plages de référence, une interprétation et une provenance.

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

Pour un panel lipidique à trois lignes (cholestérol, HDL, triglycérides), la réponse, issue d'une exécution locale de la plateforme, est :

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

Chaque résultat stocké est une Observation FHIR R4 standard, lisible par n'importe quel client 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"}}]
}

L'envoi du même message à nouveau ne crée rien de nouveau ("created": 0, "skipped": 3) : chaque ligne obtient un identifiant stable à partir de l'ID du rapport, du code, de la date et de la valeur. Les marqueurs que la plateforme ne peut pas mapper à LOINC conservent le code du laboratoire et reviennent dans unmapped, vous permettant de corriger le mappage à la source.

La lecture des résultats est une recherche FHIR standard :

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

Autres méthodes d'entrée et de sortie des mêmes données :

La présentation complète, avec un rapport CSV, un message HL7 v2, des marqueurs non mappés et des rapports renvoyés sur un patient synthétique, se trouve dans le tutoriel Comment importer des résultats de laboratoire dans un enregistrement FHIR.

Vérifier les résultats avant de les envoyer

Le valideur FHIR R4 gratuit vérifie la structure d'une Observation et les jeux de valeurs requis. Avec le profil eu-lab, il vérifie également ce qu'un résultat de laboratoire doit contenir : la catégorie laboratory, un code LOINC, un sujet, un statut final (final-type), une heure, une valeur, une unité UCUM et une plage de référence. Les mêmes vérifications sont effectuées sur la plateforme via POST /fhir/R4/Observation/$validate?profile=eu-lab.

Choisir une API de résultats de laboratoire : une liste de contrôle

Ce que Anpheros ne fait pas

Anpheros n'est pas un système d'information de laboratoire et n'est pas connecté aux réseaux de laboratoires commerciaux : le laboratoire, la clinique ou l'application du patient envoie le rapport. Il ne route pas les ordres de laboratoire, ne lit pas les rapports PDF via cette API (l'application Anpheros Daily extrait les résultats à partir de photos et de PDF côté patient), et n'interprète pas les résultats cliniquement. Les unités sont stockées telles que le laboratoire les envoie ; leur conversion en codes UCUM incombe à l'expéditeur, comme décrit dans Comment normaliser les données médicales.

Foire aux questions

Qu'est-ce qu'une API de résultats de laboratoire ?

Une interface qui permet aux logiciels d'envoyer ou de recevoir des résultats de laboratoire sous forme de données structurées — un test codé, une valeur avec une unité, une plage de référence, un statut et une heure — plutôt qu'un document. Les API modernes de résultats de laboratoire utilisent les ressources Observation et DiagnosticReport de HL7 FHIR R4 ; la plupart des laboratoires émettent encore des messages HL7 v2 ORU^R01.

Quel système de codage identifie les tests de laboratoire ?

LOINC. Chaque code LOINC nomme l'analyte, le spécimen et souvent la méthode, ainsi 2345-7 (glucose dans le sérum ou le plasma) et 2339-0 (glucose dans le sang total) sont des résultats différents. Les unités sont mieux exprimées en UCUM.

Quelle est la différence entre une Observation et un DiagnosticReport ?

Une Observation est un résultat, tel que le cholestérol 212 mg/dL. Un DiagnosticReport est le rapport dans son ensemble — le panel qui a été commandé, qui l'a émis et quand — et liste ses Observations dans result.

Puis-je importer des messages de laboratoire HL7 v2 dans un serveur FHIR ?

Oui. Chaque segment OBX est mappé à une Observation (OBX-3 à code, OBX-5 et OBX-6 à valueQuantity, OBX-7 à referenceRange, OBX-8 à interpretation). Le connecteur de laboratoire Anpheros fait cela en une seule requête et conserve l'identifiant du rapport du laboratoire dans Provenance.

Comment éviter les doublons de résultats de laboratoire lorsqu'un rapport est renvoyé ?

Donnez à chaque résultat un identifiant stable dérivé du rapport, du test, de l'heure et de la valeur, et ignorez les lignes dont l'identifiant existe déjà. Le connecteur de laboratoire Anpheros fait cela automatiquement et rapporte le nombre comme skipped.

Liens Utiles

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