Menu

#122 OBX.5 stripping control characters

closed-fixed
5
2014-08-09
2011-06-21
Anonymous
No

we have an issue with HAPI removing control characters (all he \N\ and \H\ are just turned into an N and H). Have you seen this before or had any ideas?

e.g

MSH|~\&|PHCN_ULTRA|2220|HSIE|2220|201106161233||ORU^R01|72313573|T|2.4|||AL|AL|AU
PV1||I|^DIS^DIS^2220|||||0129296H^BRAUN^GARY|7MPH^MPH-HL7-RESULT FEED|||||||||I|^^^2220
ORC|RE|^HNAM_ORDERID|11-6879530-GAS-0^PHCN_ULTRA||RE
OBR|1|^HNAM_ORDERID|11-6879530-GAS-0^PHCN_ULTRA|GAS^GASES (BLOOD)|||201106161000|||||||||0129296H^BRAUN^GARY^^^DR^^^2220^^^^Provider Num||||1295102|7MPH|201106161233||GRP|F||^^^201106161203
OBX|1|FT|GAS^^LN|| Biochemistry (Whole Blood Sample) - Type Venous\.br\\.br\ Analysis Date : 16/06/2011\.br\ Analysis Time : 12:21\.br\\.br\ Measured Parameters :\.br\ pH : \H\ 7.28\N\ (7.38-7.43) *\.br\ pCO2 : \H\ 117\N\ mmHg (35-45) ***\.br\ pO2 : \H\ 37\N\ mmHg\.br\ Sodium : 140 mmol/L (136-142)\.br\ Potassium : 3.8 mmol/L (3.8-5.0)\.br\ Chloride : \H\ 83\N\ mmol/L (95-110) *\.br\ Ionised Calcium : 1.23 mmol/L (1.15-1.29)\.br\ Lactate : \H\ 2.1\N\ mmol/L (0.5-2.0) *\.br\ Glucose : \H\ 10.9\N\ mmol/L (4.0-7.8) *\.br\ Haemoglobin : 13.9 g/dL (11.5-16.5)\.br\ FO2Hb : \H\ 60.7\N\ % (94.0-97.0) *\.br\ FCOHb : \H\ 2.1\N\ % (< 1.5) *\.br\ FmetHb : 0.5 % (< 1.5)\.br\ FHHb : \H\ 36.7\N\ % (< 5.0) *\.br\ Haematocrit : 42.6 % (37.0-47.0)\.br\\.br\ Calculated (37 \S\o C) :\.br\ Actual HCO3 : \H\ 54\N\ mmol/L (20-24) ***\.br\ Standard HCO3 : \H\ 43\N\ mmol/L (22-26) *\.br\ Base Excess : \H\ +19.6\N\ mmol/L (-3.3 - +1.2) *\.br\ Oxygen Saturation : \H\ 62.5\N\ %\.br\\.br\ Note: The reference intervals for pH, pCO2 and pO2 apply for arterial\.br\ samples only.|||A|||F

is turning into this

MSH|^~\&|PHCN_ULTRA|2220|HSIE|2220|201106161233||ORU^R01|72313573a|T|2.4|||AL|AL|AU
PV1||I|^DIS^DIS^2220|||||0129296H^BRAUN^GARY|7MPH^MPH-HL7-RESULT FEED|||||||||I|^^^2220
ORC|RE|^HNAM_ORDERID|11-6879530-GAS-0^PHCN_ULTRA||RE
OBR|1|^HNAM_ORDERID|11-6879530-GAS-0^PHCN_ULTRA|GAS^GASES (BLOOD)|||201106161000|||||||||||||1295102|7MPH|201106161233||GRP|F||^^^201106161203
OBX|1|FT|GAS^^LN||Biochemistry (Whole Blood Sample) - Type Venous\.br\\.br\ Analysis Date : 16/06/2011\.br\ Analysis Time : 12:21\.br\\.br\ Measured Parameters :\.br\ pH : H 7.28N (7.38-7.43) *\.br\ pCO2 : H 117N mmHg (35-45) ***\.br\ pO2 : H 37N mmHg\.br\ Sodium : 140 mmol/L (136-142)\.br\ Potassium : 3.8 mmol/L (3.8-5.0)\.br\ Chloride : H 83N mmol/L (95-110) *\.br\ Ionised Calcium : 1.23 mmol/L (1.15-1.29)\.br\ Lactate : H 2.1N mmol/L (0.5-2.0) *\.br\ Glucose : H 10.9N mmol/L (4.0-7.8) *\.br\ Haemoglobin : 13.9 g/dL (11.5-16.5)\.br\ FO2Hb : H 60.7N % (94.0-97.0) *\.br\ FCOHb : H 2.1N % (< 1.5) *\.br\ FmetHb : 0.5 % (< 1.5)\.br\ FHHb : H 36.7N % (< 5.0) *\.br\ Haematocrit : 42.6 % (37.0-47.0)\.br\\.br\ Calculated (37 \S\o C) :\.br\ Actual HCO3 : H 54N mmol/L (20-24) ***\.br\ Standard HCO3 : H 43N mmol/L (22-26) *\.br\ Base Excess : H +19.6N mmol/L (-3.3 - +1.2) *\.br\ Oxygen Saturation : H 62.5N %\.br\\.br\ Note: The reference intervals for pH, pCO2 and pO2 apply for arterial\.br\ samples only.|||A|||F

My code is just this
ca.uhn.hl7v2.parser.PipeParser parser = new ca.uhn.hl7v2.parser.PipeParser();
ca.uhn.hl7v2.model.Message message;
parser.setValidationContext( new NoValidation() );
message = parser.parse( strHL7PayloadNew );
ca.uhn.hl7v2.util.Terser terserMsg = new ca.uhn.hl7v2.util.Terser( message );
ca.uhn.hl7v2.model.v24.message.ORU_R01 msgORU = (ORU_R01) message;
int orderingProviderLength = msgORU.getORDER_GENERAL().getORDER( 0).getOBSERVATION_REQUEST().getOBR().getObr16_OrderingProviderReps();

int intCountOBR = msgORU.getPATIENT_RESULT().getORDER_OBSERVATIONReps();

for (int iOBR = 0; iOBR < intCountOBR; iOBR++) {
msgORU.getPATIENT_RESULT().getORDER_OBSERVATION( iOBR ).getOBR().removeObr16_OrderingProvider( 0 );
}

strHL7PayloadNew = parser.encode( msgORU );

Discussion

  • Christian Ohr

    Christian Ohr - 2012-01-30
    • assigned_to: nobody --> ohr
     
  • Christian Ohr

    Christian Ohr - 2012-03-19

    I cannot reproduce this with 2.0-beta

    I added a test to EscapeTest, almost duplicating the code above, and it passes:

    // Issue 3323850
    @Test
    public void testFormattingCharacters2\(\) throws HL7Exception \{
    
        String msg = "MSH|^~\\\&|PHCN\_ULTRA|2220|HSIE|2220|201106161233||ORU^R01|72313573|T|2.4|||AL|AL|AU\r" +
                     "PV1||I|^DIS^DIS^2220|||||0129296H^BRAUN^GARY|7MPH^MPH-HL7-RESULT FEED|||||||||I|^^^2220\r" +
                     "ORC|RE|^HNAM\_ORDERID|11-6879530-GAS-0^PHCN\_ULTRA||RE\r" +
                     "OBR|1|^HNAM\_ORDERID|11-6879530-GAS-0^PHCN\_ULTRA|GAS^GASES \(BLOOD\)|||201106161000|||||||||0129296H^BRAUN^GARY^^^DR^^^2220^^^^Provider Num||||1295102|7MPH|201106161233||GRP|F||^^^201106161203\r" +
                     "OBX|1|FT|GAS^^LN||Biochemistry \(Whole Blood Sample\) - Type Venous\\\\.br\\\\\\\\.br\\\ Analysis Date : 16/06/2011\\\\.br\\\ Analysis Time : 12:21\\\\.br\\\\\\\\.br\\\ Measured Parameters :\\\\.br\\\ pH : \\\H\\\ 7.28\\\N\\\ \(7.38-7.43\) \*\\\\.br\\\ pCO2 : \\\H\\\ 117\\\N\\\ mmHg \(35-45\) \*\*\*\\\\.br\\\ pO2 : \\\H\\\ 37\\\N\\\ mmHg\\\\.br\\\ Sodium : 140 mmol/L \(136-142\)\\\\.br\\\ Potassium : 3.8 mmol/L \(3.8-5.0\)\\\\.br\\\ Chloride : \\\H\\\ 83\\\N\\\ mmol/L \(95-110\) \*\\\\.br\\\ Ionised Calcium : 1.23 mmol/L \(1.15-1.29\)\\\\.br\\\ Lactate : \\\H\\\ 2.1\\\N\\\ mmol/L \(0.5-2.0\) \*\\\\.br\\\ Glucose : \\\H\\\ 10.9\\\N\\\ mmol/L \(4.0-7.8\) \*\\\\.br\\\ Haemoglobin : 13.9 g/dL \(11.5-16.5\)\\\\.br\\\ FO2Hb : \\\H\\\ 60.7\\\N\\\ % \(94.0-97.0\) \*\\\\.br\\\ FCOHb : \\\H\\\ 2.1\\\N\\\ % \(&lt; 1.5\) \*\\\\.br\\\ FmetHb : 0.5 % \(&lt; 1.5\)\\\\.br\\\ FHHb : \\\H\\\ 36.7\\\N\\\ % \(&lt; 5.0\) \*\\\\.br\\\ Haematocrit : 42.6 % \(37.0-47.0\)\\\\.br\\\\\\\\.br\\\ Calculated \(37 \\\S\\\o C\) :\\\\.br\\\ Actual HCO3 : \\\H\\\ 54\\\N\\\ mmol/L \(20-24\) \*\*\*\\\\.br\\\ Standard HCO3 : \\\H\\\ 43\\\N\\\ mmol/L \(22-26\) \*\\\\.br\\\ Base Excess : \\\H\\\ +19.6\\\N\\\ mmol/L \(-3.3 - +1.2\) \*\\\\.br\\\ Oxygen Saturation : \\\H\\\ 62.5\\\N\\\ %\\\\.br\\\\\\\\.br\\\ Note: The reference intervals for pH, pCO2 and pO2 apply for arterial\\\\.br\\\ samples only.|||A|||F ";
    
        // ca.uhn.hl7v2.model.v24.message.ORU\_R01 message = new ca.uhn.hl7v2.model.v24.message.ORU\_R01\(\);
        Parser p = new PipeParser\(\);
        p.setValidationContext\(new NoValidation\(\)\);
    
        ca.uhn.hl7v2.model.v24.message.ORU\_R01 message = \(ca.uhn.hl7v2.model.v24.message.ORU\_R01\)p.parse\(msg\);
    
        int intCountOBR = message.getPATIENT\_RESULT\(\).getORDER\_OBSERVATIONReps\(\);
        for \(int i = 0; i &lt; intCountOBR; i++\) \{
            message.getPATIENT\_RESULT\(\).getORDER\_OBSERVATION\(i\).getOBR\(\).removeObr16\_OrderingProvider\(0\);
        \}
    
        String encoded = message.encode\(\);
        System.out.println\("Encoded message: \r\n" + encoded\);
        assertEquals\(msg.trim\(\), encoded.trim\(\)\);
    \}
    
     
  • Christian Ohr

    Christian Ohr - 2012-03-19
    • summary: OBX.6 stripping control characters --> OBX.5 stripping control characters
     
  • Christian Ohr

    Christian Ohr - 2012-04-01

    James already fixed this

     
  • Christian Ohr

    Christian Ohr - 2012-04-01
    • status: open --> closed-fixed
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.