2016-04-26 6 views
1

map-reduce関数でHapiでHL7メッセージを解析しようとしていますが、マップタスクを実行するとEncodingNotSupportedExceptionが発生しました。 私は\ nまたは\ rを各セグメントの末尾に追加しようとしましたが、同じエラーに直面しています。 メッセージはテキストファイルに保存され、HDFSにアップロードされます。私は、これはサンプルメッセージmap-reduceでメッセージを解析中にhl7メッセージのエンコーディングエラーが発生しました

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

エンコーディングを処理するPipeParserが役に立ちます。 –

+0

私もそれを使用して、私は同じエラーがあった – Zaman

+1

私たちはどのようにメッセージのように見える! HL7メッセージをテキストファイルとして保存するのではなく、バイナリとして保存してください。セグメント区切り文字は大丈夫ですか? – sqlab

答えて

0

はテキストファイルとしてではなく、バイナリとしてHL7-のメッセージを保存しないでください私のコード

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; 
     } 
    } 

ある何かを追加する必要がありますする必要があります。セグメント区切り文字は大丈夫ですか?

メッセージを解析する前にセグメントの区切り文字として\rのみが含まれている場合は、コンソールに出力するか、デバッガを使用してHDFSから読み込んだ後、HL7メッセージを確認してください。

セグメント区切り文字は、\rでなければなりません。すなわち、x0d、「キャリッジリターン」で、\nではなく、x0a「改行」でなければなりません。おそらくいくつかのツール、おそらくHL7エディタ、代替セグメント区切り文字の受け入れ、または間違った区切り文字の書き込みがありますが、これは標準ではありません。

関連する問題