Une équipe de développeurs a mis au point une solution astucieuse pour améliorer la lisibilité et la gestion des tests de messages, notamment dans le cadre de la conversion de données V2 vers FHIR. Cette approche novatrice utilise des techniques de « piratage » de chaînes de caractères pour simplifier la syntaxe et rendre les fichiers de test plus intuitifs.
Au cœur de cette innovation réside une astuce de programmation permettant de raccourcir l’expression d’identification des en-têtes de message. Plutôt que de taper la totalité de « oftype (messageheader) », les développeurs utilisent une substitution de chaîne pour n’écrire que « % » suivi de « context.entry.resource. » et de « MessageHeader ». Ce raccourci, bien que mineur en apparence, permet de gagner environ 31 caractères à chaque utilisation, ce qui se répercute positivement sur la longueur et la clarté des scripts.
L’objectif principal de cette méthode est de rapprocher les « affirmations » – des assertions ou des vérifications – de l’endroit où elles sont pertinentes au sein du message. L’idée est de visualiser clairement les deux flux de données présents dans chaque cas de test : le message lui-même et les affirmations qui le valident. Ces deux éléments peuvent être entrelacés, mais cette nouvelle approche permet de placer les affirmations immédiatement après le segment concerné, une optimisation particulièrement utile lorsque les segments de message sont très longs.
Pour gérer ces segments potentiellement volumineux, les développeurs ont emprunté une fonctionnalité à d’autres langages de script, comme Bash : l’utilisation du caractère de continuation de ligne. Ce caractère permet de diviser une longue ligne en plusieurs lignes physiques, améliorant ainsi la lisibilité. Pour éviter toute confusion visuelle, les espaces en début de ligne des continuations sont ignorés, garantissant une présentation nette.
Concrètement, cette méthode permet de structurer les fichiers de test de manière plus organisée. Un exemple typique se présente comme suit, où un message ACK sortant est suivi de ses affirmations correspondantes :
# ACK sortant:
Msh | ^ ~ & |
Pat_identity_x_ref_mgr_misys_tls |
@ Messageheader.source.name = "pat_identify_x_ref_mgr_misys_tls"
Allscripts |
@ Messageheader.source.endpoint = "allscripts"
Autres_ibm_bridge_tls |
@ MessageHeader.Destination.Name = "Autres_ibm_bridge_tls"
IBM | 20090224114149-0500 |
@ MessageHeader.Destination.endpoint = "IBM"
| Ack ^ a04 | openpixpdq10.243.0.65.19767899354465 | P | 2.3.1
MSA | AA | 0851077658473390286
Cette nouvelle approche offre la possibilité de commencer un cas de test avec le message dans son format habituel, puis d’y ajouter progressivement les affirmations jugées importantes. Elle permet également de découper les très longues lignes de messages V2, rendant ainsi les fichiers de test plus faciles à lire et à comprendre. Une autre amélioration concerne la gestion des affirmations longues, qui peuvent désormais être segmentées de la même manière que les messages. Les commentaires finaux sont intégrés dans l’expression de l’affirmation, une technique permise par la syntaxe FHIRPath, pour servir de message explicatif au sein du cadre de test.
L’ensemble du code source permettant ces optimisations est disponible au sein du convertisseur open source V2toFHIR, développé par l’équipe. Les deux fichiers principaux à consulter pour comprendre le fonctionnement de cette analyse d’entrée de test sont `MessageParserS.java` et `Testdata.java`, la méthode `TestData.Load()` étant le lieu où « toute la magie de l’analyse de l’entrée de test se produit ». Selon les développeurs, le système n’est « pas vraiment compliqué ».