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 :
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
identifier | Identifier[] | 0..* | Identifiants externes par lesquels le patient est connu (MRN, NHS Number, INS-NIR…). |
active | boolean | 0..1 | Indique si le dossier patient est actif. false = patient fusionné, archivé, supprimé logiquement. |
name | HumanName[] | 0..* | Noms du patient (officiel, usuel, marital, ancien…). |
telecom | ContactPoint[] | 0..* | Téléphones, e-mails, autres canaux de contact. |
gender | code | 0..1 | Sexe administratif (male, female, other, unknown). À ne PAS utiliser pour le genre clinique (voir extensions). |
birthDate | date | 0..1 | Date de naissance (CCYY-MM-DD, précision variable). |
deceased[x] | boolean | dateTime | 0..1 | Statut de décès. deceasedBoolean pour le statut binaire, deceasedDateTime pour la date précise. |
address | Address[] | 0..* | Adresses connues (postale, physique, ancienne…). |
maritalStatus | CodeableConcept | 0..1 | Statut marital. ValueSet v3 MaritalStatus. |
multipleBirth[x] | boolean | integer | 0..1 | Naissance multiple (jumeau, triplé…). Booléen ou rang dans la fratrie. |
photo | Attachment[] | 0..* | Photo du patient. |
contact | BackboneElement[] | 0..* | Personnes à contacter (NK1 en HL7 v2). Bloc embarqué avec nom, telecom, lien de parenté. |
communication | BackboneElement[] | 0..* | Langues parlées par le patient + indicateur preferred. |
generalPractitioner | Reference(Organization | Practitioner | PractitionerRole)[] | 0..* | Médecin traitant, équipe pivot. |
managingOrganization | Reference(Organization) | 0..1 | Organisation responsable du dossier patient (l'établissement qui détient la copie maître). |
link | BackboneElement[] | 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 :
{
"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'usageofficial(Chalmers, Peter James) et l'usageusual(« Jim »). - L'extension
patient-birthTimepré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). managingOrganizationpointe vers une ressource Organization via uneReferencerelative (Organization/1).
API REST
Quelques requêtes types sur un serveur FHIR exposant Patient :
GET /Patient/example— récupérer le Patient d'idexample.POST /Patientavec 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
| Profil | Régulateur | Restrictions |
|---|---|---|
| US Core Patient | HL7 US Realm — obligatoire ONC EHR | Doit porter au moins un identifier, un name, un gender, une extension US Core Race, Ethnicity, Birth Sex. |
| IPS Patient (UV) | HL7 + CEN/TC 251 | Profil cross-border européen / mondial. Doit porter identifier, name, gender, birthDate. |
| FR Core Patient | ANS (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 Patient | Nictiz (Pays-Bas) | Doit porter le BSN (Burgerservicenummer) dans identifier. |
| UK Core Patient | NHS Digital | Doit porter le NHS Number dans identifier. |
| HL7 IPS-AU Patient | HL7 Australia | Doit porter l'IHI (Individual Healthcare Identifier). |
Pièges courants
gender≠ identité de genre :Patient.genderest uniquement l'identifiant administratif (M/F/O/U). Pour l'identité de genre, utiliser l'extensionpatient-genderIdentityou la ressourceObservation.- Identifier sans
system: un identifier qui ne porte quevaluesanssystemn'est pas dédupliquable. Toujours qualifier (urn:oid:<OID>ou URL canonique). - Adresse en
textuniquement : uneAddressn'ayant qu'untextsanslinenicityne sera pas indexable. Toujours décomposer. - Plusieurs
nameavecuse="official": ambigu pour le récepteur. Un seul officiel à la fois, les autres enold,maiden,usual. - Reference circulaire :
Patient.linkpeut pointer vers un autre Patient ou un RelatedPerson, mais attention aux boucles infinies dans les chaînes de fusion. - Confusion
active/deceased:active=falseindique un dossier fermé administrativement ;deceased=trueindique 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
subjectoupatient.
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.