ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

Patient — Démographie d'une personne en santé

L'une des dix ressources fondatrices de FHIR. Toute trace clinique — Observation, Encounter, MedicationRequest, DiagnosticReport — référence un Patient.

Objet de la ressource

La ressource Patient représente une personne qui reçoit ou pourrait recevoir des soins. Elle porte l'identité démographique et administrative — nom, sexe, date de naissance, adresses, contacts — ainsi que les identifiants par lesquels cette personne est connue dans différents systèmes (MRN local, INS-NIR, SSN, NHS Number, AHV / N° AVS suisse, etc.).

Patient n'est pas le bon support pour la donnée clinique sensible (allergies, diagnoses, médicaments) : chacun de ces aspects relève d'une ressource dédiée (AllergyIntolerance, Condition, MedicationStatement…) qui pointe vers le Patient via une Reference. C'est cette séparation stricte qui donne à FHIR sa capacité de modélisation modulaire.

Champs clés

La StructureDefinition publiée par HL7 énumère 22 éléments de premier niveau. Les plus importants :

ChampTypeCardinalitéRôle
identifierIdentifier[]0..*Identifiants externes par lesquels le patient est connu (MRN, NHS Number, INS-NIR…).
activeboolean0..1Indique si le dossier patient est actif. false = patient fusionné, archivé, supprimé logiquement.
nameHumanName[]0..*Noms du patient (officiel, usuel, marital, ancien…).
telecomContactPoint[]0..*Téléphones, e-mails, autres canaux de contact.
gendercode0..1Sexe administratif (male, female, other, unknown). À ne PAS utiliser pour le genre clinique (voir extensions).
birthDatedate0..1Date de naissance (CCYY-MM-DD, précision variable).
deceased[x]boolean | dateTime0..1Statut de décès. deceasedBoolean pour le statut binaire, deceasedDateTime pour la date précise.
addressAddress[]0..*Adresses connues (postale, physique, ancienne…).
maritalStatusCodeableConcept0..1Statut marital. ValueSet v3 MaritalStatus.
multipleBirth[x]boolean | integer0..1Naissance multiple (jumeau, triplé…). Booléen ou rang dans la fratrie.
photoAttachment[]0..*Photo du patient.
contactBackboneElement[]0..*Personnes à contacter (NK1 en HL7 v2). Bloc embarqué avec nom, telecom, lien de parenté.
communicationBackboneElement[]0..*Langues parlées par le patient + indicateur preferred.
generalPractitionerReference(Organization | Practitioner | PractitionerRole)[]0..*Médecin traitant, équipe pivot.
managingOrganizationReference(Organization)0..1Organisation responsable du dossier patient (l'établissement qui détient la copie maître).
linkBackboneElement[]0..*Liens vers d'autres ressources Patient ou RelatedPerson (fusion, doublon, alias).

Exemple JSON

Voici l'exemple canonique publié par HL7 sur la page de référence patient-example.json :

json patient-example.json
{
  "resourceType": "Patient",
  "id": "example",
  "meta": {
    "profile": [
      "http://hl7.org/fhir/StructureDefinition/Patient"
    ]
  },
  "identifier": [{
    "use": "usual",
    "type": {
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
        "code": "MR"
      }]
    },
    "system": "urn:oid:1.2.36.146.595.217.0.1",
    "value": "12345",
    "period": { "start": "2001-05-06" },
    "assigner": { "display": "Acme Healthcare" }
  }],
  "active": true,
  "name": [{
    "use": "official",
    "family": "Chalmers",
    "given": ["Peter", "James"]
  }, {
    "use": "usual",
    "given": ["Jim"]
  }],
  "telecom": [{
    "use": "home"
  }, {
    "system": "phone",
    "value": "(03) 5555 6473",
    "use": "work",
    "rank": 1
  }],
  "gender": "male",
  "birthDate": "1974-12-25",
  "_birthDate": {
    "extension": [{
      "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",
      "valueDateTime": "1974-12-25T14:35:45-05:00"
    }]
  },
  "deceasedBoolean": false,
  "address": [{
    "use": "home",
    "type": "both",
    "text": "534 Erewhon St PeasantVille, Rainbow, Vic  3999",
    "line": ["534 Erewhon St"],
    "city": "PleasantVille",
    "district": "Rainbow",
    "state": "Vic",
    "postalCode": "3999",
    "period": { "start": "1974-12-25" }
  }],
  "contact": [{
    "relationship": [{
      "coding": [{
        "system": "http://terminology.hl7.org/CodeSystem/v2-0131",
        "code": "N"
      }]
    }],
    "name": {
      "family": "du Marché",
      "_family": {
        "extension": [{
          "url": "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix",
          "valueString": "VV"
        }]
      },
      "given": ["Bénédicte"]
    },
    "telecom": [{
      "system": "phone",
      "value": "+33 (237) 998327"
    }]
  }],
  "managingOrganization": {
    "reference": "Organization/1"
  }
}

À noter dans cet exemple :

  • L'identifiant principal est typé MR (Medical Record Number, table v2-0203 réutilisée par FHIR pour la cohérence avec PID-3.5).
  • Le patient porte deux name : l'usage official (Chalmers, Peter James) et l'usage usual (« Jim »).
  • L'extension patient-birthTime précise l'heure de naissance avec timezone : FHIR sépare la donnée standard de la donnée régionale via des extensions URL-typées.
  • Le contact[] embarque la personne à prévenir (équivalent NK1 en v2).
  • managingOrganization pointe vers une ressource Organization via une Reference relative (Organization/1).

API REST

Quelques requêtes types sur un serveur FHIR exposant Patient :

  • GET /Patient/example — récupérer le Patient d'id example.
  • POST /Patient avec un corps JSON conforme — créer un nouveau Patient. Le serveur alloue l'id.
  • PUT /Patient/example — mettre à jour le Patient existant.
  • DELETE /Patient/example — soft-delete ou archive (selon serveur, RFC 5023).
  • GET /Patient?family=Chalmers&given=Peter — recherche par nom de famille et prénom.
  • GET /Patient?identifier=urn:oid:1.2.36.146.595.217.0.1|12345 — recherche par identifiant métier (préfixé du system).
  • GET /Patient/example/$everything — opération composite qui retourne tout le dossier (Observation, Encounter, Condition…) lié au patient.
  • GET /Patient?_revinclude=Observation:patient — recherche Patient + inclusion inversée de leurs Observations.

En 2026, les EHR américains exposent obligatoirement /Patient via leur FHIR endpoint certifié ONC, accessible aux apps tierces autorisées via le flot SMART on FHIR (OAuth 2 + OpenID Connect).

Profils nationaux

ProfilRégulateurRestrictions
US Core PatientHL7 US Realm — obligatoire ONC EHRDoit porter au moins un identifier, un name, un gender, une extension US Core Race, Ethnicity, Birth Sex.
IPS Patient (UV)HL7 + CEN/TC 251Profil cross-border européen / mondial. Doit porter identifier, name, gender, birthDate.
FR Core PatientANS (Agence du Numérique en Santé)Doit porter au moins un identifiant typé INS-NIR ou INS-A. Slicing sur l'INS, le matricule, le NSS.
NL Core PatientNictiz (Pays-Bas)Doit porter le BSN (Burgerservicenummer) dans identifier.
UK Core PatientNHS DigitalDoit porter le NHS Number dans identifier.
HL7 IPS-AU PatientHL7 AustraliaDoit porter l'IHI (Individual Healthcare Identifier).

Pièges courants

  • gender ≠ identité de genre : Patient.gender est uniquement l'identifiant administratif (M/F/O/U). Pour l'identité de genre, utiliser l'extension patient-genderIdentity ou la ressource Observation.
  • Identifier sans system : un identifier qui ne porte que value sans system n'est pas dédupliquable. Toujours qualifier (urn:oid:<OID> ou URL canonique).
  • Adresse en text uniquement : une Address n'ayant qu'un text sans line ni city ne sera pas indexable. Toujours décomposer.
  • Plusieurs name avec use="official" : ambigu pour le récepteur. Un seul officiel à la fois, les autres en old, maiden, usual.
  • Reference circulaire : Patient.link peut pointer vers un autre Patient ou un RelatedPerson, mais attention aux boucles infinies dans les chaînes de fusion.
  • Confusion active / deceased : active=false indique un dossier fermé administrativement ; deceased=true indique un patient décédé. Les deux sont indépendants.

Ressources liées

  • RelatedPerson — proche du patient, contact, aidant.
  • Person — généralisation cross-domaine d'un humain (peut référencer plusieurs Patient + Practitioner si l'EHR gère un MPI fédéré).
  • Practitioner — professionnel de santé.
  • Encounter — séjour ou consultation associé(e) au patient (équivalent PV1 en HL7 v2).
  • Observation, Condition, MedicationRequest — les données cliniques pointent toutes vers le Patient via subject ou patient.

Voir aussi : Bundle — le conteneur de transaction et de search FHIR, et ADT^A01 — la couche v2 historique qui transporte la même information démographique en pipe-delimited.