Hello everybody,

i have a problem when parsing OMG_O19 messages containing more than 1 order.

I receive this message:

MSH|^~\&|SGP-CHMARTIN|SGPUSER|^SOFTO|^SOFTO|20100528095538||OMG^O19^OMG_O19|SGP000000000330385|P|2.5||||||8859/1
PID|1||AAAAAAA^^^^XXXX~XXXXXXXXXXXXXXXX^^^^CF~""^^^^STP~604235050^^^^CS~""^^^^TEAM||PROVA^PROVA^^^^^L||19210102|M|||^^123456^^^^N~&VIA PROVA 7^^123456^^37131^^L~&VIA PROVA 7 B^^023091^^37131^^H||^PRN^PH^^^^^^^^^123-123456|^ORN^PH||||||||||||100
"PV1||O|CUP
PV2|||||||||||||||||||||||||5
ORC|NW|201000226094^SGP^CRD^L||201000074242|SC||||20100608115538|CHMARTIN^Martinelli^Chiara|||||20100427000000||CUP||||||||A
TQ1|1||||||20100608115500\r"
OBR||201000226094^SGP^CRD^L||RTP.255^MANO D.^ESENTEP||||||||||||||019||050090570973173||||||||||D
ORC|NW|201000226094^SGP^CRD^L||201000074242|SC||||20100608115538|CHMARTIN^Prova^Prova|||||20100427000000||CUP||||||||A
TQ1|1||||||20100608125500
OBR||201000226094^SGP^CRD^L||ECO.324^ADDOME SUP. E INF.^ESENTEP||||||||||||||019||050090570973173||||||||||D

I parse this message in the following way, using the API's From HAPI (http://hl7api.sourceforge.net):

        Message hapiMsg = null;
        Document hapidoc = null;  
        PipeParser hapiPipeParser = new PipeParser();
        DefaultXMLParser xmlparse = new DefaultXMLParser();
        try {
            hapiMsg = hapiPipeParser.parse(omg);
            hapidoc = xmlparse.encodeDocument(hapiMsg);
        } catch (EncodingNotSupportedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (HL7Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }    
        System.out.println(toString(hapidoc));

In XML i get the result which is printed at the end of this mail.
You can notice that the first ORC segment is a child of the <OMG_O19.ORDER>, while the second ORC has been put
in the <OMG_O19.ORDER_PRIOR> group.
In Brief, this is what i get.

   <OMG_O19.ORDER>
      <ORC>
         <ORC.1>NW</ORC.1>
         <ORC.2>
            <EI.1>201000226094</EI.1>
            <EI.2>SGP</EI.2>
            <EI.3>CRD</EI.3>
            <EI.4>L</EI.4>
         </ORC.2>
        </ORC>
         <OMG_O19.ORDER_PRIOR>
            <ORC>
               <ORC.1>NW</ORC.1>
               <ORC.2>
                  <EI.1>201000226094</EI.1>
                  <EI.2>SGP</EI.2>

I think this is actually correct., because the parser cannot know where exactly he has to put those segments.

But now the question is: how should i write the RAILTRACK message if i want to obtain the following XML Structure?
I do not need the <OMG_O19.PRIOR_RESULT> groups, but i need to send more orders in the same message.

Here an example of what i want:

<OMG_O19>
   <OMG_O19.ORDER>
      <ORC>
         <ORC.1>NW</ORC.1>
         <ORC.2>
            <EI.1>201000226094</EI.1>
            <EI.2>SGP</EI.2>
            <EI.3>CRD</EI.3>
            <EI.4>L</EI.4>
         </ORC.2>
    </OMG_O19.ORDER>
   <OMG_O19.ORDER>
      <ORC>
         <ORC.1>NW</ORC.1>
         <ORC.2>
            <EI.1>201000226094</EI.1>
            <EI.2>SGP</EI.2>
            <EI.3>CRD</EI.3>
            <EI.4>L</EI.4>
         </ORC.2>
    </OMG_O19.ORDER>
<OMG_O19>

Is there a way to write the message so that i can obtain this result??

Greetings,
Fabio Daprile

Here the full result i get actually:

<OMG_O19>
   <MSH>
      <MSH.1>|</MSH.1>
      <MSH.2>^~\&amp;</MSH.2>
      <MSH.3>
         <HD.1>SGP-CHMARTIN</HD.1>
      </MSH.3>
      <MSH.4>
         <HD.1>SGPUSER</HD.1>
      </MSH.4>
      <MSH.5>
         <HD.2>SOFTO</HD.2>
      </MSH.5>
      <MSH.6>
         <HD.2>SOFTO</HD.2>
      </MSH.6>
      <MSH.7>
         <TS.1>20100528095538</TS.1>
      </MSH.7>
      <MSH.9>
         <MSG.1>OMG</MSG.1>
         <MSG.2>O19</MSG.2>
         <MSG.3>OMG_O19</MSG.3>
      </MSH.9>
      <MSH.10>SGP000000000330385</MSH.10>
      <MSH.11>
         <PT.1>P</PT.1>
      </MSH.11>
      <MSH.12>
         <VID.1>2.5</VID.1>
      </MSH.12>
      <MSH.18>8859/1</MSH.18>
   </MSH>
   <SFT/>
   <NTE/>
   <OMG_O19.PATIENT>
      <PID>
         <PID.1>1</PID.1>
         <PID.3>
            <CX.1>AAAAAAAAA</CX.1>
            <CX.5>XXXX</CX.5>
         </PID.3>
         <PID.3>
            <CX.1>XXXXXXXXXXXXXXXX</CX.1>
            <CX.5>CF</CX.5>
         </PID.3>
         <PID.3>
            <CX.1>""</CX.1>
            <CX.5>STP</CX.5>
         </PID.3>
         <PID.3>
            <CX.1>123456789</CX.1>
            <CX.5>CS</CX.5>
         </PID.3>
         <PID.3>
            <CX.1>""</CX.1>
            <CX.5>TEAM</CX.5>
         </PID.3>
         <PID.5>
            <XPN.1>
               <FN.1>PROVA</FN.1>
            </XPN.1>
            <XPN.2>PROVA</XPN.2>
            <XPN.7>L</XPN.7>
         </PID.5>
         <PID.7>
            <TS.1>19210102</TS.1>
         </PID.7>
         <PID.8>M</PID.8>
         <PID.11>
            <XAD.3>123456</XAD.3>
            <XAD.7>N</XAD.7>
         </PID.11>
         <PID.11>
            <XAD.1>
               <SAD.2>VIA PROVA 7</SAD.2>
            </XAD.1>
            <XAD.3>123456</XAD.3>
            <XAD.5>12345</XAD.5>
            <XAD.7>L</XAD.7>
         </PID.11>
         <PID.11>
            <XAD.1>
               <SAD.2>VIA PROVA 7 B</SAD.2>
            </XAD.1>
            <XAD.3>123456</XAD.3>
            <XAD.5>12345</XAD.5>
            <XAD.7>H</XAD.7>
         </PID.11>
         <PID.13>
            <XTN.2>PRN</XTN.2>
            <XTN.3>PH</XTN.3>
            <XTN.12>123 -123456</XTN.12>
         </PID.13>
         <PID.14>
            <XTN.2>ORN</XTN.2>
            <XTN.3>PH</XTN.3>
         </PID.14>
         <PID.26>
            <CE.1>100</CE.1>
         </PID.26>
      </PID>
      <PD1/>
      <NTE/>
      <NK1/>
      <OMG_O19.PATIENT_VISIT>
         <PV1>
            <PV1.2>O</PV1.2>
            <PV1.3>
               <PL.1>CUP</PL.1>
            </PV1.3>
         </PV1>
         <PV2>
            <PV2.25>5</PV2.25>
         </PV2>
      </OMG_O19.PATIENT_VISIT>
      <OMG_O19.INSURANCE>
         <IN1/>
         <IN2/>
         <IN3/>
      </OMG_O19.INSURANCE>
      <GT1/>
      <AL1/>
   </OMG_O19.PATIENT>
   <OMG_O19.ORDER>
      <ORC>
         <ORC.1>NW</ORC.1>
         <ORC.2>
            <EI.1>201000226094</EI.1>
            <EI.2>SGP</EI.2>
            <EI.3>CRD</EI.3>
            <EI.4>L</EI.4>
         </ORC.2>
         <ORC.4>
            <EI.1>201000074242</EI.1>
         </ORC.4>
         <ORC.5>SC</ORC.5>
         <ORC.9>
            <TS.1>20100608115538</TS.1>
         </ORC.9>
         <ORC.10>
            <XCN.1>CHMARTIN</XCN.1>
            <XCN.2>
               <FN.1>Prova</FN.1>
            </XCN.2>
            <XCN.3>Prova</XCN.3>
         </ORC.10>
         <ORC.15>
            <TS.1>20100427000000</TS.1>
         </ORC.15>
         <ORC.17>
            <CE.1>CUP</CE.1>
         </ORC.17>
         <ORC.25>
            <CWE.1>A</CWE.1>
         </ORC.25>
      </ORC>
      <OMG_O19.TIMING>
         <TQ1>
            <TQ1.1>1</TQ1.1>
            <TQ1.7>
               <TS.1>20100608115500</TS.1>
            </TQ1.7>
         </TQ1>
         <TQ2/>
      </OMG_O19.TIMING>
      <OBR>
         <OBR.2>
            <EI.1>201000226094</EI.1>
            <EI.2>SGP</EI.2>
            <EI.3>CRD</EI.3>
            <EI.4>L</EI.4>
         </OBR.2>
         <OBR.4>
            <CE.1>RTP.255</CE.1>
            <CE.2>MANO D.</CE.2>
            <CE.3>ESENTEP</CE.3>
         </OBR.4>
         <OBR.18>019</OBR.18>
         <OBR.20>050090570973173</OBR.20>
         <OBR.30>D</OBR.30>
      </OBR>
      <NTE/>
      <CTD/>
      <DG1/>
      <OMG_O19.OBSERVATION>
         <OBX/>
         <NTE/>
      </OMG_O19.OBSERVATION>
      <OMG_O19.SPECIMEN>
         <SPM/>
         <OBX/>
         <OMG_O19.CONTAINER>
            <SAC/>
            <OBX/>
         </OMG_O19.CONTAINER>
      </OMG_O19.SPECIMEN>
      <OMG_O19.PRIOR_RESULT>
         <OMG_O19.PATIENT_PRIOR>
            <PID/>
            <PD1/>
         </OMG_O19.PATIENT_PRIOR>
         <OMG_O19.PATIENT_VISIT_PRIOR>
            <PV1/>
            <PV2/>
         </OMG_O19.PATIENT_VISIT_PRIOR>
         <AL1/>
         <OMG_O19.ORDER_PRIOR>
            <ORC>
               <ORC.1>NW</ORC.1>
               <ORC.2>
                  <EI.1>201000226094</EI.1>
                  <EI.2>SGP</EI.2>
                  <EI.3>CRD</EI.3>
                  <EI.4>L</EI.4>
               </ORC.2>
               <ORC.4>
                  <EI.1>201000074242</EI.1>
               </ORC.4>
               <ORC.5>SC</ORC.5>
               <ORC.9>
                  <TS.1>20100608115538</TS.1>
               </ORC.9>
               <ORC.10>
                  <XCN.1>CHMARTIN</XCN.1>
                  <XCN.2>
                     <FN.1>Prova</FN.1>
                  </XCN.2>
                  <XCN.3>Prova</XCN.3>
               </ORC.10>
               <ORC.15>
                  <TS.1>20100427000000</TS.1>
               </ORC.15>
               <ORC.17>
                  <CE.1>CUP</CE.1>
               </ORC.17>
               <ORC.25>
                  <CWE.1>A</CWE.1>
               </ORC.25>
            </ORC>
            <OBR/>
            <OMG_O19.TIMING_PRIOR>
               <TQ1>
                  <TQ1.1>1</TQ1.1>
                  <TQ1.7>
                     <TS.1>20100608125500</TS.1>
                  </TQ1.7>
               </TQ1>
               <TQ2/>
            </OMG_O19.TIMING_PRIOR>
            <NTE/>
            <CTD/>
            <OMG_O19.OBSERVATION_PRIOR>
               <OBX/>
               <NTE/>
            </OMG_O19.OBSERVATION_PRIOR>
         </OMG_O19.ORDER_PRIOR>
         <OMG_O19.ORDER_PRIOR>
            <ORC/>
            <OBR>
               <OBR.2>
                  <EI.1>201000226094</EI.1>
                  <EI.2>SGP</EI.2>
                  <EI.3>CRD</EI.3>
                  <EI.4>L</EI.4>
               </OBR.2>
               <OBR.4>
                  <CE.1>ECO.324</CE.1>
                  <CE.2>ADDOME SUP. E INF.</CE.2>
                  <CE.3>ESENTEP</CE.3>
               </OBR.4>
               <OBR.18>019</OBR.18>
               <OBR.20>050090570973173</OBR.20>
               <OBR.30>D</OBR.30>
            </OBR>
         </OMG_O19.ORDER_PRIOR>
      </OMG_O19.PRIOR_RESULT>
   </OMG_O19.ORDER>
</OMG_O19>


--

 



Fabio Daprile

via Galilei, 2
39100 Bolzano (BZ) - Italy
tel. +39.0471065901
fax. +39.0471065919
e-mail [email protected]

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Hl7api-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hl7api-devel

Reply via email to