libHprim Home
aiderpmsi edited this page Jun 13, 2013
·
11 revisions
- 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
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
-
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(); }
-
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
-
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>|~^\&</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>µ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>
-
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(); } }