URL: https://linuxfr.org/news/libhprim-bibliotheque-de-lecture-hprim Title: libHprim : bibliothèque de lecture HPRIM Authors: JPDelabre claudex, Nÿco et Xavier Teyssier Date: 2013年02月23日T09:55:17+01:00 License: CC By-SA Tags: santé, java et dossier_médical Score: 21 [libHprim](http://github.com/aiderpmsi/libHprim) est une bibliothèque de lecture de fichiers [Hprim santé](http://fr.wikipedia.org/wiki/Harmoniser_et_promouvoir_l%27informatique_m%C3%A9dicale#HPRIM_sant.C3.A9_version_2.2). Initialement développé comme un simple outil pour comprendre les problèmes existants dans les envois de fichiers de biologie, cet outil s'est transformé en une véritable bibliothèque que j'ai développée sur mon temps libre et que je propose sous licence LGPL. ---- [Wiki libHprim](http://github.com/aiderpmsi/libHprim/wiki/libHprim-Home) [Dépôt git](http://github.com/aiderpmsi/libHprim) [HPRIM sur Wikipedia](http://fr.wikipedia.org/wiki/HPRIM) [interop'santé](http://www.interopsante.org) ---- La recommandation HPRIM Santé ----------------------------- La recommandation HPRIM santé est un format développé par l'[association interopsanté](http://www.interopsante.org/interopsante) permettant l'échange de données de santé structurées. C'est une simplification du format international [HL7](http://fr.wikipedia.org/wiki/Health_Level_7). Bien que ce dernier format soit plus complet et destiné à remplacer HPRIM dans les échanges futurs, de nombreux logiciels dans le domaine médical utilisent HPRIM et ne passeront pas à HL7 avant de nombreuses années. Lorsqu'un laboratoire d'analyses médicales renvoie un résultat sous forme électronique, c'est habituellement ce format qui est utilisé. Ci-dessous un exemple de fichier HPRIM renvoyant le résultat d'un dosage de l'acide urique : H|~^\&|0.HPR||001~ORIGIN||ORU|||002~DESTINATION||P|H2.2~C|201301011200 P|1|01|02|02|JEAN~PIERRE||19500101|M||1 RUE DE LA PAIX~~PARIS~~75001|||||||||||||||~~UNIT OBR|1||~001|AU~AU~L|R||201301011200||||N|||201301011200||UNIT~UNITE A~L A|~UNIT~UNITE A~L|01 23 45 67 89|||||201301011200||ORIGIN|I OBX|1|NM|AU~Acide urique~L|||μmol/L|||||I|||201301011200|BIOCH~80~AU~140~0~P L|1 Les fonctionnalités de libHprim ------------------------------- La bibliothèque libHprim permet de : - Valider la conformité d'un fichier à la recommandation HPRIM Santé (taille et nombre des champs et sous-champs) ; - Renvoyer les éléments du fichier sous forme de notification dans une classe Java (à la manière d'un [ContentHandler](http://docs.oracle.com/javase/6/docs/api/org/xml/sax/ContentHandler.html)) ; - Transformer ce fichier sous forme XML et pouvoir réaliser des modifications de ce XML par une feuille de style XSLT (grâce à [Xalan](http://xml.apache.org/xalan-j/) par exemple). Exemple d'utilisation --------------------- Le code suivant permet de lire un fichier HPRIM Santé comme si on lisait un fichier XML. ```java // Création de l'inputstream en entrée InputStream is = new FileInputStream("fichieroru.ORU"); // Transformation de cet inputstream hprim en reader xml XmlReader reader = new XmlReader(is); // Lecture du reader et écriture sur la sortie standard char[] buffer = new char[256]; int size; while ((size = reader.read(buffer)) != -1) { char[] toprint = Arrays.copyOf(buffer, size); System.out.print(toprint); } ``` Par la suite, les données extraites peuvent être stockées, intégrées, visualisées... Lors de l'utilisation de l'interface de bas niveau, il suffit d'implémenter une interface Java de trois fonctions pour réaliser une lecture complète de fichier hprim : ```java public interface ContentHandler { public void startElement(String typeElement, String nameElement); public void endElement(); public void content(String content); } ``` L'implémentation ---------------- La lecture du fichier hprim est réalisée grâce à [ANTLR](http://www.antlr.org/) et une grammaire en [EBNF](http://fr.wikipedia.org/wiki/Extended_Backus-Naur_Form). Pour l'instant, seule la grammaire des fichiers de résultats de biologie est réalisée, mais l'ajout des informations nécessaires (par exemple pour lire des fichiers d'administration de patients) est simplifiée grâce à ce procédé.