Aller au contenu

Étape 5

Transport et interface engines

MLLP, accusés de réception, Mirth. Comment un message voyage vraiment.

Jusqu'ici on a lu des messages. Mais comment voyagent-ils, concrètement, d'un système à l'autre ? Dans le monde HL7 v2, la réponse tient en un sigle : MLLP, et un intermédiaire : l'interface engine.

Le problème : TCP ne connaît pas les messages

Les messages voyagent sur le réseau via TCP/IP. Or TCP transmet un flux continu d'octets, sans aucune idée de l'endroit où un message s'arrête et où le suivant commence. Il faut donc une convention pour encadrer chaque message.

MLLP : trois octets d'encadrement

Le Minimal Lower Layer Protocol enveloppe chaque message entre des octets de contrôle : un octet de début, puis le message, puis deux octets de fin.

⟨0B⟩ MSH|^~\&|SLEEPLAB|... ⟨1C⟩⟨0D⟩
  • ⟨0B⟩ : l'octet de début (caractère de contrôle VT).
  • ⟨1C⟩⟨0D⟩ : les deux octets de fin (FS puis retour chariot).

Grâce à cet encadrement, le récepteur sait exactement où chaque message commence et finit, même si dix messages arrivent à la suite sur la même connexion.

L'accusé de réception, le filet de sécurité

Une fois le message reçu, le destinataire renvoie un message ACK, encadré de la même façon, pour confirmer « bien reçu et compris ». Si l'émetteur ne reçoit pas son ACK, il sait que quelque chose a échoué et peut renvoyer. C'est ce dialogue qui rend l'échange fiable.

L'interface engine, le traducteur universel

En pratique, deux systèmes se connectent rarement en direct. Au milieu se trouve uninterface engine : un logiciel qui reçoit les messages, lestransforme (renommer un champ, reformater une date, traduire un code) et lesroute vers la bonne destination. C'est le traducteur universel de l'hôpital.

Les plus connus sont Mirth Connect, Cloverleaf, Iguana, Corepoint. Mirth Connectest gratuit et open source : c'est la porte d'entrée idéale pour s'entraîner sur un petit projet perso, recevoir et renvoyer de vrais messages.