Skip to content
aiderpmsi edited this page Jun 13, 2013 · 11 revisions

Que fait la librairie libHprim ?

  • Lecture des fichiers hprim santé 2.x
  • En mode flux
  • Transformations possibles vers tout format au travers d'un ContentHandler Sax
  • Validation en cours de lecture de la conformité du fichier avec la recommandation HPRIM Santé
  • Niveau de conformité avec la norme paramétrable

Formats implémentés :

Les messages suivant sont lus et validés :

  • ORM
  • ORA
  • ORU
  • ADM
  • FAC
  • REG

Les versions suivantes de Hprim Santé sont prises en charge :

  • 2.2
  • 2.1
  • 2.0

Versions :

Version 3.2.0

Version 3.3.0

Version 3.4.0

Examples : (version 3.4.0)

Simple transformation xml :

  1. Code :

     // Création du collecteur par défaut (affiche sur la console les données)
     XmlContentHandler contentHandler = new XmlContentHandler(new PrintWriter(System.out));
     
     // Définition des flux matériels (à fermer en fin d'utilisation)
     InputStream is = null;
     HPRIMSInputStreamReader inputreader = null;
     
     try {
         // Création de l'inputstream en entrée
         is = new FileInputStream(args[0]);
    
         // Création de la source des tokens
         inputreader = new HPRIMSInputStreamReader(is, "ISO8859_1");
         HPRIMSTokenSource toksce = new HPRIMSTokenSource(inputreader);
    
         // Création du flux de tokens
         TokenStream tokenstream = new CommonTokenStream (toksce);
    
         // Création du parser de tokens provenant de input et réalisant dans
         // la classe collecteur l'export des données
         HPRIMSParser parser = new HPRIMSParser(tokenstream, contentHandler);
    
         // Parsing du fichier avec le niveau 3 (maximal) de conformité à la norme
         parser.hprim(3);
     } finally {
         // Fermeture propre des ressources allouées
         if (inputreader != null)
             inputreader.close();
         if (is != null)
             is.close();
     }
    
  2. Transformation : fichier d'origine

     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
    
  3. Transformation : résultat en sortie

     <?xml version="1.0" encoding="ISO-8859-1"?>
     <HPRIM.ORU.2_2>
         <H>
             <H.1>H</H.1>
             <H.2>|~^\&amp;</H.2>
             <H.3>0.HPR</H.3>
             <H.4></H.4>
             <H.5><H.5.1>001</H.5.1><H.5.2>ORIGIN</H.5.2></H.5>
             <H.6><H.6.1></H.6.1></H.6>
             <H.7>ORU</H.7>
             <H.8><H.8.1></H.8.1></H.8>
             <H.9></H.9>
             <H.10><H.10.1>002</H.10.1><H.10.2>DESTINATION</H.10.2></H.10>
             <H.11></H.11>
             <H.12>P</H.12>
             <H.13><H.13.1>H2.2</H.13.1><H.13.2>C</H.13.2></H.13>
             <H.14>201301011200</H.14>
         </H>
         <P>
             <P.1>P</P.1>
             <P.2>1</P.2>
             <P.3><P.3.1>01</P.3.1></P.3>
             <P.4>02</P.4>
             <P.5>02</P.5>
             <P.6><P.6.1>JEAN</P.6.1><P.6.2>PIERRE</P.6.2></P.6>
             <P.7></P.7>
             <P.8>19500101</P.8>
             <P.9>M</P.9>
             <P.10></P.10>
             <P.11><P.11.1>1 RUE DE LA PAIX</P.11.1><P.11.2></P.11.2><P.11.3>PARIS</P.11.3><P.11.4></P.11.4><P.11.5>75001</P.11.5></P.11>
             <P.12></P.12>
             <P.13><P.13.1></P.13.1></P.13>
             <P.14><P.14.1></P.14.1></P.14>
             <P.15></P.15>
             <P.16></P.16>
             <P.17></P.17>
             <P.18></P.18>
             <P.19><P.19.1></P.19.1></P.19>
             <P.20></P.20>
             <P.21></P.21>
             <P.22></P.22>
             <P.23></P.23>
             <P.24></P.24>
             <P.25></P.25>
             <P.26><P.26.1></P.26.1><P.26.2></P.26.2><P.26.3>UNIT</P.26.3></P.26>
         </P>
         <OBR>
             <OBR.1>OBR</OBR.1>
             <OBR.2>1</OBR.2>
             <OBR.3><OBR.3.1></OBR.3.1></OBR.3>
             <OBR.4><OBR.4.1></OBR.4.1><OBR.4.2>001</OBR.4.2></OBR.4>
             <OBR.5><OBR.5.1>AU</OBR.5.1><OBR.5.2>AU</OBR.5.2><OBR.5.3>L</OBR.5.3></OBR.5>
             <OBR.6>R</OBR.6>
             <OBR.7></OBR.7>
             <OBR.8><OBR.8.1>201301011200</OBR.8.1></OBR.8>
             <OBR.9></OBR.9>
             <OBR.10></OBR.10>
             <OBR.11><OBR.11.1></OBR.11.1></OBR.11>
             <OBR.12>N</OBR.12>
             <OBR.13><OBR.13.1></OBR.13.1></OBR.13>
             <OBR.14></OBR.14>
             <OBR.15>201301011200</OBR.15>
             <OBR.16><OBR.16.2><OBR.16.2.1></OBR.16.2.1></OBR.16.2></OBR.16>
             <OBR.17><OBR.17.1>UNIT</OBR.17.1><OBR.17.2>UNITE A</OBR.17.2><OBR.17.3>L</OBR.17.3><OBR.17.4>UNIT</OBR.17.4><OBR.17.5>UNITE A</OBR.17.5><OBR.17.6>L</OBR.17.6></OBR.17>
             <OBR.18><OBR.18.1>01 23 45 67 89</OBR.18.1></OBR.18>
             <OBR.19></OBR.19>
             <OBR.20></OBR.20>
             <OBR.21></OBR.21>
             <OBR.22></OBR.22>
             <OBR.23>201301011200</OBR.23>
             <OBR.24></OBR.24>
             <OBR.25><OBR.25.1>ORIGIN</OBR.25.1></OBR.25>
             <OBR.26>I</OBR.26>
         </OBR>
         <OBX>
             <OBX.1>OBX</OBX.1>
             <OBX.2>1</OBX.2>
             <OBX.3>NM</OBX.3>
             <OBX.4><OBX.4.1>AU</OBX.4.1><OBX.4.2>Acide urique</OBX.4.2><OBX.4.3>L</OBX.4.3></OBX.4>
             <OBX.5></OBX.5>
             <OBX.6></OBX.6>
             <OBX.7>&#181;mol/L</OBX.7>
             <OBX.8></OBX.8>
             <OBX.9></OBX.9>
             <OBX.10></OBX.10>
             <OBX.11></OBX.11>
             <OBX.12>I</OBX.12>
             <OBX.13></OBX.13>
             <OBX.14></OBX.14>
             <OBX.15>201301011200</OBX.15>
             <OBX.16><OBX.16.1>BIOCH</OBX.16.1><OBX.16.2>80</OBX.16.2><OBX.16.3>AU</OBX.16.3><OBX.16.4>140</OBX.16.4><OBX.16.5>0</OBX.16.5><OBX.16.6>P</OBX.16.6></OBX.16>
         </OBX>
         <L>
             <L.1>L</L.1>
             <L.2>1</L.2>
         </L>
     </HPRIM.ORU.2_2>
    

Transformation xml puis xslt :

  1. Code :

     // Définition des flux matériels (à fermer en fin d'utilisation)
     InputStream is = null;
     InputSource inputS = null;
     
     try {
         // Création de l'inputstream en entrée
         is = new FileInputStream(args[0]);
     	
         inputS = new InputSource(new InputStreamReader(is, "ISO8859_1"));
     	
         // Définition du reader utilisé
         XMLReader reader = new HprimReader();
    
         // Création d'une instance de transformation
         TransformerFactory tFactory = TransformerFactory.newInstance();
     	
         // Définition du xslt utilisé
         InputStream isXslt = reader.getClass().getClassLoader().getResourceAsStream("aider/org/hprim/parser/examples/example.xslt");
         Transformer transformer = tFactory.newTransformer(new StreamSource(isXslt));
         
         // Définition du contenthandler de sortie :
         ContentHandler example = new ContentHandlerExample(new PrintWriter(System.out));
         
         // Transformation
         transformer.transform(new SAXSource(reader, inputS), new SAXResult(example));
     } finally {
         if (is != null) {
             is.close();
         }
     }