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.

MessageHeader — En-tête de routage messaging

L'équivalent FHIR du segment MSH de HL7 v2. Toujours en première position d'un Bundle de type message, il porte émetteur, destinataire, événement et données de routage.

Objet de la ressource

Le messaging FHIR est l'un des quatre paradigmes d'interopérabilité (avec REST, documents, services). Il consiste à transporter dans un Bundle de type message un événement métier — typiquement un événement clinique ou administratif — depuis un système émetteur vers un récepteur, avec acquittement asynchrone.

MessageHeader est obligatoirement la première entry de ce Bundle. Il porte la sémantique de routage : code d'événement, source, destination, sujet (focus), raison, et éventuellement la réponse asynchrone à un message précédent.

Champs clés

ChampTypeCardinalitéRôle
event[x]Coding | canonical(MessageDefinition)1..1Obligatoire. Code d'événement (équivalent MSH-9).
destinationBackboneElement[]0..*Récepteur(s) du message.
destination.endpointUrlurl0..1URL FHIR du récepteur.
destination.receiverReference(Organization | Device | Practitioner | PractitionerRole)0..1Organisation/device récepteur.
senderReference(Practitioner | PractitionerRole | Organization)0..1Émetteur logique.
authorReference(Practitioner | PractitionerRole | Device | Organization)0..1Auteur (clinicien à l'origine de l'événement).
sourceBackboneElement1..1Obligatoire. Système source technique.
source.endpointUrlurl1..1URL technique de l'émetteur.
responsibleReference(Practitioner | PractitionerRole | Organization)0..1Responsable légal du contenu.
reasonCodeableConcept0..1Raison du message (ex : admit, transfer).
responseBackboneElement0..1Pour les messages de réponse : ack de l'original.
response.identifierIdentifier1..1ID du message acquitté.
response.codecode1..1ok | transient-error | fatal-error.
response.detailsReference(OperationOutcome)0..1Détail d'erreur.
focusReference(Any)[]0..*Ressources concernées par l'événement (Patient, Encounter…).
definitioncanonical(MessageDefinition)0..1MessageDefinition qui décrit cet événement.

Pattern Messaging FHIR

Le flot type d'un échange messaging FHIR :

  1. Le système A construit un Bundle type=message avec MessageHeader en première position et les ressources cliniques en suivantes.
  2. A POST le Bundle vers [base]/$process-message du récepteur B.
  3. B retourne soit :
    • Synchrone : un Bundle message-response immédiat avec MessageHeader response.code=ok.
    • Asynchrone : un 202 Accepted, puis plus tard B POST un Bundle réponse vers l'URL source.endpointUrl de A.

Exemple JSON

Un MessageHeader pour notifier l'admission d'un patient (admin-notify), avec un Encounter en focus :

json messageheader-example.json
{
  "resourceType": "MessageHeader",
  "id": "example",
  "eventCoding": {
    "system": "http://example.org/fhir/message-events",
    "code": "admin-notify"
  },
  "destination": [{
    "name": "PMS",
    "endpointUrl": "https://pms.example.org/fhir/messaging",
    "receiver": { "reference": "Organization/pms-org" }
  }],
  "sender": { "reference": "Organization/hospital-1" },
  "author": { "reference": "Practitioner/dr-jones" },
  "source": {
    "name": "HIS",
    "software": "Acme HIS v3.4",
    "version": "3.4.1",
    "endpointUrl": "https://hospital-1.example.org/fhir/messaging"
  },
  "responsible": { "reference": "Organization/hospital-1" },
  "reason": {
    "coding": [{
      "system": "http://terminology.hl7.org/CodeSystem/message-reasons-encounter",
      "code": "admit"
    }]
  },
  "focus": [{ "reference": "Encounter/example" }]
}

Pièges courants

  • MessageHeader pas en première position — un Bundle type=message doit avoir MessageHeader en entry[0].resource. Sinon rejet.
  • Pas de source.endpointUrl — sans URL technique de retour, l'acquittement asynchrone est impossible.
  • event[x] non typé — le code d'événement doit être typé par un Coding ou un canonical MessageDefinition.
  • focus non résolvable — toute Reference dans focus doit être présente dans le même Bundle.
  • Mélanger REST et messaging — le pattern messaging est asynchrone et orienté événement. Ne pas l'utiliser pour des CRUD courants : préférer le REST.

Ressources liées