libHprim est une bibliothèque de lecture de fichiers Hprim santé. 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.
La recommandation HPRIM Santé
La recommandation HPRIM santé est un format développé par l'association interopsanté permettant l'échange de données de santé structurées. C'est une simplification du format international HL7. 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) ;
- Transformer ce fichier sous forme XML et pouvoir réaliser des modifications de ce XML par une feuille de style XSLT (grâce à Xalan par exemple).
Exemple d'utilisation
Le code suivant permet de lire un fichier HPRIM Santé comme si on lisait un fichier XML.
// 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 :
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 et une grammaire en EBNF. 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é.
Aller plus loin
- Wiki libHprim (1000 clics)
- Dépôt git (378 clics)
- HPRIM sur Wikipedia (617 clics)
- interop'santé (375 clics)
# CSLT ?
Posté par Antoine Gutzwiller . Évalué à 1.
XSLT non ?
[^] # Re: CSLT ?
Posté par claudex . Évalué à 3.
Corrigé, merci.
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.