hl7消息编码错误

ipakzgxi  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(515)

我试图在map reduce函数中通过hapi解析hl7消息,在运行map任务时遇到encodingnotsupportedexception。我试图将\n或\r添加到每个段的末尾,但遇到相同的错误。消息保存在文本文件中并上传到hdfs。我需要加些什么吗?这是我的代码

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

示例消息

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
v8wbuo2f

v8wbuo2f1#

永远不要将hl7消息存储为文本文件,而是二进制文件。您确定段分隔符正常吗?
如果消息只包含 \r 在解析之前作为段分隔符。
段分隔符必须是 \r ,即x0d,“回车”而不是 \n ,即x0a“新线”。可能有一些工具(可能是hl7编辑器)接受可选的段分隔符或编写错误的分隔符,但这不是标准的。

相关问题