2016-04-26 10 views
1

Ich versuche, eine HL7-Nachricht von Hapi in Map-Reduce-Funktion zu analysieren Ich habe EncodingNotSupportedException, wenn ich die Map-Task ausführen. Ich habe versucht, am Ende jedes Segments \ n oder \ hinzuzufügen, aber ich habe den gleichen Fehler. Die Nachricht wird in einer Textdatei gespeichert und in HDFS hochgeladen. sollte ich das etwas hinzufügen müssen, ist mein CodeHL7 Nachricht Codierung Fehler beim Analysieren der Nachricht in map-reduce

String v = value.toString(); 

InputStream is = new StringBufferInputStream(v);   
is = new BufferedInputStream(is);  
Hl7InputStreamMessageStringIterator iter = new Hl7InputStreamMessageStringIterator(
        is); 

    HapiContext hcontext = new DefaultHapiContext(); 
    Message hapiMsg; 
    Parser p = hcontext.getGenericParser(); 

    while (iter.hasNext()) { 

     String msg = iter.next(); 

     try { 
      hapiMsg = p.parse(msg); 
     } catch (EncodingNotSupportedException e) { 
      e.printStackTrace(); 
      return; 
     } catch (HL7Exception e) { 
      e.printStackTrace(); 
      return; 
     } 
    } 

die Probe Nachricht

MSH|^~\&|HIS|RIH|EKG|EKG|20150121002000||ADT^A01||P|2.5.1 
EVN||20150121002000|||||CITY GENL HOSP^0133195934^NPI 
PID|1||95101100001^^^^PI^CITY GENL HOSP&0133195934&NPI||SNOW^JOHN^^^MR^^L||19560121002000|M||2054-5^White^CDCREC|470 Ocean Ave^^NEW YORK^^11226^USA^C^^29051||^^^^^513^5551212|||||95101100001||||2186-5^White American^CDCREC|||1 
PV1||E||E||||||||||1|||||||||||||||||||||||||||||| 
OBX|1|NM|21612-7^PATIENT AGE REPORTED^LN||60|a^YEAR^UCUM|||||F|||201601131443 
OBX|2|NM|21613-7^Urination^LN||2|a^DAY^UCUM|||||F|||19740514201500 
DG1|001||4158^Diabetes^I9CDX||19740514201500|A|5478^Non-infectious 
DG1|002||2222^Huntington^I9CDX||19610718121500|A|6958^Genetic 
+0

Kann PipeParser Ihnen helfen, die die Codierung behandelt. –

+0

Ich benutzte es auch und ich hatte den gleichen Fehler – Zaman

+1

zeigen Sie uns, wie die Nachricht aussieht! Speichern Sie HL7-Nachrichten niemals als Textdatei, sondern als Binärdatei. Sind Sie sicher, dass die Segmentbegrenzer in Ordnung sind? – sqlab

Antwort

0

Nie speichern HL7-Nachrichten als Textdatei, sondern als binär. Sind Sie sicher, dass die Segmentbegrenzer in Ordnung sind?

Überprüfen Sie Ihre HL7-Nachricht nach dem Lesen von HDFS entweder über das Drucken auf die Konsole oder über den Einsatz eines Debuggers, wenn die Nachricht nur \r als Segmenttrennzeichen vor dem Parsen enthält.

Das Segment-Delimiter muss ein \r sein, also x0d, "Wagenrücklauf" und kein \n, also x0a "newline". Es gibt wahrscheinlich einige Werkzeuge, vielleicht HL7-Editoren, die alternative Segmenttrennzeichen akzeptieren oder das falsche Trennzeichen schreiben, aber dies ist kein Standard.

Verwandte Themen