Intégration des systèmes de santéMis à jour -12 minutes de lecture

HL7 ADT vers FHIR : mappage de Patient et Encounter à partir de A01, A04, A08 et A03

Un playbook pour projeter HL7 v2 ADT A01, A04, A08 et A03 sur FHIR Patient et Encounter — PID-3 par rapport à identifier.system, numéros de visite PV1-19 et jeux de données de test synthétiques.

Ala Ben Aicha

HL7 ADT vers FHIR : mappage de Patient et Encounter à partir de A01, A04, A08 et A03

Réponse directe

ADT A01, A04 et A08 projettent le PID sur Patient et PV1 sur Encounter. A03 termine la visite. Le PID-3 est Patient.identifier ; PV1-19 est le numéro de visite. Fixez les autorités d’attribution avant toute écriture.

Cartographie des messages et des ressources

Utilisez une version identifiée de la publication HL7 version 2 vers FHIR IG 1.0.0 (STU 1) (généré le 7 octobre 2025, package hl7.fhir.uv.v2mappings#1.0.0 sur FHIR R4). Le STU1 cartes de messages inclure ADT_A01 → Bundle. A04, A08 et A03 sont toujours des événements déclencheurs du Chapitre 3 Patient Administration ; ils réutilisent la même chose PID → Patient et PV1 → Encounter les segments sont mappés même lorsqu'un message dédié ConceptMap ne se trouve pas dans cette STU.

Déclencheur (MSH-9) événement v2 Effet FHIR Statut et classe
ADT^A01 Notification d'admission / de visite Insérez Patient à partir du PID ; upsert Encounter à partir de PV1 ; Encounter.subject → que Patient Encounter.class de PV1-2 (table 0004 → ActCode : I→IMP, O→AMB, E→EMER). Statut in-progress quand PV1-45 est vide
ADT^A04 Inscrire un patient Même paire Patient + Encounter Généralement ambulatoire (PV1-2 = O → AMB). Pas une assignation au lit
ADT^A08 Mettre à jour les informations du patient Correctif Patient ; mettre à jour Encounter uniquement lorsque PV1 est présent et que la visite est déjà connue Pas une nouvelle visite. Ne créez pas un deuxième Encounter.identifier
ADT^A03 Sortie / visite de fin Encounter.status → finished; Encounter.period.end du PV1-45 Ne supprimez pas Patient. Ne réutilisez pas le numéro de visite sur le prochain A01

Correspondances des segments dans le guide d’implémentation :

champ v2 Chemin FHIR Correspondance de types
Liste des identifiants PID-3 Patient Patient.identifier CX → Identifiant
PID-5 Patient Nom Patient.name XPN → HumanName
PID-7 Date/heure de naissance Patient.birthDate TS → date
Classe PV1-2 Patient Encounter.class CWE → Codage (ActCode)
PV1-19 Numéro de visite Encounter.identifier CX → Identifiant, type VN (http://terminology.hl7.org/CodeSystem/v2-0203)
PV1-44 Admettre date/heure Encounter.period.start
PV1-45 Date et heure de sortie Encounter.period.end

MSH devient toujours MessageHeader / Provenance. EVN-2 est l'heure de l'événement, pas une deuxième date de naissance. NK1 est RelatedPerson ou Patient.contact, pas un autre Patient. Cette page ne mappe pas les fusions A40 — il s'agit d'un problème MPI, abordé dans le article de l'index principal des patients.

Le modèle de moteur hybride (conserver la v2 comme système nerveux de l'hôpital, projeter FHIR pour les nouveaux consommateurs) est le Manuel de migration v2 vers FHIR. Cette page est le contrat de mappage ADT à l'intérieur de ce moteur.

Pièges d'identification

Le PID-3 est un CX répétitif. Chaque répétition est ID^^^AssigningAuthority^IdentifierType. Besoins du FHIR identifier.system (l'autorité d’attribution en tant qu'URI que vous possédez réellement) et identifier.value. Une simple chaîne MRN sans système entrera en collision la première fois que deux hôpitaux partageront un serveur FHIR.

Ne mettez pas PV1-19 sur Patient.identifier. L'IG saisit le numéro de visite comme VN. Le PID-18 (numéro de compte Patient) n'est pas le numéro de visite ; la carte PID avertit même que certains expéditeurs insèrent un identifiant de visite dans le PID-18 — si c'est le cas, traitez-le comme une exception documentée, et non comme la valeur par défaut.

Les identifiants nationaux (AVS, numéro NHS, KVNR, IHI) appartiennent au PID-3 avec leur numéro publié. system URI. Les MRN locaux restent locaux. L'article MPI contient les règles de correspondance ; le travail du mappeur ADT est de préserver le CX, pour ne pas inventer un dossier de référence.

Piège Symptôme Corriger
PID-3 sans attribution d'autorité Ressources Patient en double sur le premier A08 Exiger CX.4 (ou ID d'espace de noms CX.4.2) avant l'insertion ; rejeter ou mettre en quarantaine
PV1-19 copié sur Patient Deux patients partagent un numéro de visite après le transfert Visitez → Encounter.identifier uniquement
A08 créant Encounter Le recensement double grâce aux correctifs démographiques Faites correspondre Encounter par PV1-19 + Patient ; insérer uniquement sur A01/A04
A03 suppression de Patient Orphelins Observation en aval Patient reste ; Encounter.status = terminé
MSH-3 / MSH-4 comme identifiant.système Les systèmes entrent en collision lorsqu'un fournisseur réutilise le nom d'un établissement Épingler un URI par application émettrice × autorité d'attribution

Jeux de données de test

Exemples anonymisés uniquement. Ces valeurs correspondent à des spécifications et non à une personne.

MSH|^~\&|HIS|HOSP-A|FHIR-BRIDGE|HOSP-A|20260917103000||ADT^A01^ADT_A01|MSG0001|P|2.5
EVN|A01|20260917103000
PID|1||HOSP-MRN-0001^^^HOSP-A^MR||EXAMPLE^JANE^Q||19770412|F|||1 TEST STREET^^TESTVILLE^TN^10000
PV1|1|I|WARD-A^101^A||||ATTEND^SMITH^A|||SUR||||A0|||||VN-2026-00042^^^HOSP-A^VN|||||||||||||||||||||||||20260917103000

Patient projeté (tronqué) :

{
  "resourceType": "Patient",
  "identifier": [
    {
      "type": {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
            "code": "MR"
          }
        ]
      },
      "system": "https://hosp-a.example.org/mrn",
      "value": "HOSP-MRN-0001"
    }
  ],
  "name": [{ "family": "EXAMPLE", "given": ["JANE", "Q"] }],
  "birthDate": "1977-04-12",
  "gender": "female"
}

Encounter projeté (tronqué) :

{
  "resourceType": "Encounter",
  "status": "in-progress",
  "class": {
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
    "code": "IMP"
  },
  "identifier": [
    {
      "type": {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
            "code": "VN"
          }
        ]
      },
      "system": "https://hosp-a.example.org/visit",
      "value": "VN-2026-00042"
    }
  ],
  "subject": { "reference": "Patient?identifier=https://hosp-a.example.org/mrn|HOSP-MRN-0001" },
  "period": { "start": "2026-09-17T10:30:00+01:00" }
}

Luminaire minimum défini avant le basculement :

  1. A01 puis A08 (correction du nom) — un Patient, un Encounter, nom mis à jour.
  2. A01 puis A03 — Encounter.period.end défini, statut terminé, Patient toujours consultable.
  3. Registre des patients ambulatoires A04 — classe AMB, pas de lit Encounter.location sauf si PV1-3 est valorisé.
  4. Deux A01 avec le même PID-3 et un PV1-19 différent — deux ressources Encounter et une ressource Patient.
  5. A08 avec PV1-19 manquants — mises à jour Patient ; pas de nouveau Encounter.

Ne copiez jamais un PID en production dans un ticket, un dépôt git ou ce site.

Modes de défaillance et restauration

Échec Détection Restauration
Dupliquer Patient Deux ressources partagent la valeur PID-3 avec des systèmes différents, ou le même système après un bug du mappeur Arrêtez le composant d’écriture; fusionner uniquement avec une règle MPI convenue ; rejouer A08 depuis l’historique des messages v2
Dupliquer Encounter Deux Rencontres en cours pour un PV1-19 Traitez PV1-19 + autorité d'attribution comme la clé naturelle ; fermer l'extra comme entré en erreur
Fin A03 Le recensement est toujours en cours après la sortie Idempotent A03 : définir le statut et la période.end ; ne nécessite pas l'original A01 dans le même processus
A08 appliqué comme A01 Visites supplémentaires sur le bruit démographique Filtrer MSH-9.2 avant l'insertion ; A08 est un PATCH
Bouclez avec un abonnement FHIR qui réémet de l'ADT Hausse brutale du volume de messages Un chemin d'écriture faisant autorité ; provenance des ressources projetées ; supprimer l'écho par MSH-3

Conservez la v2 comme source de vérité jusqu'à ce que la paire FHIR Patient/Encounter ait un propriétaire nommé, une stratégie ACK et une rediffusion de la banque de messages du moteur. Le manuel de migration couvre l'ombre, la double écriture et le basculement en tant qu'architecture. Ce mappeur doit toujours être capable de désactiver l'enregistreur FHIR sans toucher au flux HIS ADT.

Service associé

Si vous avez besoin du mapping implémenté sur un moteur (NextGen Connect / Mirth, ou une façade FHIR devant un flux v2), c'est à dire Intégration HL7 FHIR. Pour une étude ciblée du mapping ADT vers Patient et Encounter, utilisez formulaire de contact projet.

Cette page n'est pas un certificat de conformité au v2-to-FHIR IG, ni un produit MPI, ni un conseil clinique sur l'admission ou la sortie.

HL7 v2ADTFHIRPatientEncounterPID-3PV1-19Mirth ConnectInteropérabilité

Lectures et services associés

Poursuivons la conversation

Vous avez des questions sur ce sujet ? J'aimerais avoir de vos nouvelles.