Le format XML raté de HL7 v2.x
27/12/2007
HL7 est une organisation internationale en charge de la définition et de la standardisation d’un format d’échange d’informations circulant dans les SIH (Systèmes d’Informations Hospitalier). Le format HL7 permet donc à des applications hétérogènes d’échanger des informations cliniques, qu’elles soient d’ordre médico-administratif, comme l’admission d’un patient, médico-technique comme les résultats d’examen de laboratoire, etc.
Les premières versions de ce format d’échange sont antérieures à la spécification XML, elles se reposent donc assez naturellement sur un format spécifique. Un message est composé de segments. Chaque segment est représenté par une ligne. Les trois premières lettres indiquent le type du segment. Un jeu de caractères spéciaux (^~& \
et |
) permet de séparer les informations. Ainsi le message d’admission du patient William Jones (exemple tiré de la spécification HL7 2.5) ressemble à :
MSH|^~\&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01^ADT_A01|MSG00001-|P|2.5| EVN|A01|198808181123|| PID|1||PATID1234^5^M11^ADT1^MR^MCM~123456789^^^USSSA^SS||JONES^WILLIAM^A^III||19610615|M||C|1200 N ELM STREET^^GREENSBORO^NC^27401-1020|GL|(91-9)379-1212|(919)271-3434||S||PATID12345001^2^M10^ADT1^AN^A|123456789|987654^NC| NK1|1|JONES^BARBARA^K|WI^WIFE||||NK^NEXT OF KIN PV1|1|I|2000^2012^01||||004777^LEBAUER^SIDNEY^J.|||SUR||||ADM|A0|
Peu lisible au premier coup d’œil, l’information est pourtant bien compartimentée et le format est efficace, à défaut d’être exprimé dans un format « standard ». Prenons un exemple : la date de naissance du patient venant juste d’être admis pour une hospitalisation se retrouve dans la « case » PID-7 (soit le 7ème champ du segment PID), c’est-à-dire le 15/06/1961.
Le passage à XML
Comme toute organisation spécifiant des messages d’échange, HL7 s’est intéressée à XML, une fois la recommandation du W3C publiée. Seulement ce projet a été mal conduit. Seul le volet syntaxique a été mené, délaissant totalement le volet sémantique. Ainsi, le groupe de travail centré sur XML au sein de HL7 a produit un document proposant un algorithme de convertion de la notation classique à une version XML. Il s’agit là d’une traduction technique des champs et des segments en éléments XML. Le message d’admission précédent au format XML n’est pas insérable ici tellement sa longueur est rédhibitoire. En ne reprenant que le début du segment PID (jusqu’au champ 8), il est possible de se faire une première idée :
Avec le format classique
PID|1||PATID1234^5^M11^ADT1^MR^MCM~123456789^^^USSSA^SS||JONES^WILLIAM^A^III||19610615|M||
En XML
<PID> <PID.1>1</PID.1> <PID.3> <CX.1>PATID1234</CX.1> <CX.2>5</CX.2> <CX.3>M11</CX.3> <CX.4><HD.1>ADT1</HD.1></CX.4> <CX.5>MR</CX.5> <CX.6><HD.1>MCM</HD.1></CX.6> </PID.3> <PID.3> <CX.1>123456789</CX.1> <CX.4><HD.1>USSSA</HD.1></CX.4> <CX.5>SS</CX.5> </PID.3> <PID.5> <XPN.1><FN.1>JONES</FN.1></XPN.1> <XPN.2>WILLIAM</XPN.2> <XPN.3>A</XPN.3> <XPN.4>III</XPN.4> </PID.5> <PID.7> <TS.1>19610615</TS.1> </PID.7> <PID.8>M</PID.8> .../... </PID>
Ainsi chaque champ est entouré de balises qui n’exprime pas sa signification mais sa position technique relative au format original ! Le PID-7 se trouve donc dans l’arborescence <PID><PID.7><TS.1>…</TS.1></PID.7></PID>
. Apparaissent également certains types de données. Par exemple, le PID-3 est composé de plusieurs éléments CX. En HL7, CX désigne un identifiant étendu.
Au final
- La lisibilité est sans doute pire que dans la version initiale,
- Les messages sont plus complexes, beaucoup plus longs (voir le graphique).
Alors, quel intérêt ?
- La communication entre deux logiciels ? Chaque logiciel capable de produire et de lire du HL7 utilise nativement la version texte. La transformation des messages dans les ESB ou les bus d’échange ? Il est certainement plus rentable de mettre en place un connecteur HL7.
- La génération automatique d’objets métier grâce à la définition de la grammaire XML (proposée par des librairies de type XMLBeans) ? La définition est tellement technique que cela ne représente aucun intérêt !
- La validation des messages ? Sans doute l’aspect le plus intéressant. Cependant, il faut savoir que les échanges de messages dans les SIH se basent certes sur les messages HL7, mais ils s’inscrivent également dans des transactions IHE. Le problème est donc complexe.
Conclusion
Si XML est devenu un passage obligé dans la définition de formats d’échange dans les SI, il ne doit pas être utilisé à mauvais escient. Il semblerait que l’exemple d’HL7 version 2.x montre assez bien ce qu’il ne faut pas faire : un projet technique avec un algorithme de conversion automatique. Sans sémantique, les messages XML n’ont aucun intérêt, se révèlent lourds, verbeux, difficiles à manipuler. Et par conséquent, ils ne sont pas utilisés. HL7 doit en être conscient puisque la philosophie XML de la version 3 (toujours en cours) est totalement différente !