MessageDefinition — Définir un événement messaging
Ce que ADT_A01 est à HL7 v2, MessageDefinition l'est au messaging FHIR : la définition formelle d'un événement, du contenu attendu, et de la réponse autorisée.
Objet de la ressource
MessageDefinition est la métadonnée qui décrit un événement messaging FHIR :
quel code d'événement (le eventCoding), quelles ressources sont
attendues comme focus, à quels profils elles doivent être conformes,
quelles réponses sont autorisées.
Là où HL7 v2 publiait les structures abstraites (ADT_A01, ORM_O01) dans le standard, FHIR encode la même chose comme une ressource : une MessageDefinition par événement métier, packagée dans un Implementation Guide.
Champs clés
| Champ | Type | Cardinalité | Rôle |
|---|---|---|---|
url | uri | 0..1 | URL canonique. |
name | string | 0..1 | Nom machine. |
status | code | 1..1 | Obligatoire. État de publication. |
event[x] | Coding | uri | 1..1 | Obligatoire. Code d'événement défini. |
category | code | 0..1 | consequence, currency, notification. |
focus | BackboneElement[] | 0..* | Ressources attendues en focus. |
focus.code | code | 1..1 | Type de ressource (Patient, Encounter…). |
focus.profile | canonical(StructureDefinition) | 0..1 | Profil sur la ressource. |
focus.min / focus.max | integer / string | 1..1 chacun | Cardinalité. |
responseRequired | code | 0..1 | always, on-error, never, on-success. |
allowedResponse | BackboneElement[] | 0..* | MessageDefinition de réponses autorisées. |
graph | canonical(GraphDefinition) | 0..1 | Graphe complet de ressources attendu. |
parent | canonical[] | 0..* | Hiérarchie d'événements. |
Exemple JSON
MessageDefinition Patient Link Notification : notifie la fusion ou le lien entre deux patients (cas type d'identitovigilance) :
{
"resourceType": "MessageDefinition",
"id": "patient-link",
"url": "http://hl7.org/fhir/MessageDefinition/patient-link",
"version": "5.0.0",
"name": "PatientLinkNotification",
"title": "Patient Link Notification",
"status": "draft",
"experimental": true,
"date": "2026-05-14",
"publisher": "HL7 (FHIR Project)",
"description": "Notification d'un lien entre deux patients (fusion, doublon).",
"eventCoding": {
"system": "http://hl7.org/fhir/message-events",
"code": "patient-link"
},
"category": "notification",
"focus": [{
"code": "Patient",
"profile": "http://hl7.org/fhir/StructureDefinition/Patient",
"min": 2,
"max": "2"
}],
"responseRequired": "always",
"allowedResponse": [{
"message": "http://hl7.org/fhir/MessageDefinition/patient-link-response"
}]
} Pièges courants
event[x]incohérent avec le MessageHeader.event[x] — le code dans MessageHeader DOIT matcher la MessageDefinition citée.- Cardinalité focus mal pensée — pour un événement comme
patient-link,focus.min=2exige bien deux Patients ; pour unadmit, un seul. - Réponse obligatoire sans
allowedResponse— déclarerresponseRequired=alwayssans lister une MessageDefinition réponse rend l'IG inopérant. - Confusion MessageDefinition vs OperationDefinition — la première décrit un événement asynchrone (push de Bundle), la seconde une opération synchrone (
$xxx).
Ressources liées
- MessageHeader — référence cette MessageDefinition via
definition. - GraphDefinition — décrit le graphe complet de ressources attendu.
- ImplementationGuide — package des MessageDefinitions IHE / nationales.
- OperationDefinition — alternative synchrone.