是否有任何好的解析器可以使用Java解析HL7 V2.7消息,除了HAPI . 我的目标是将消息转换为XML文件 .
这个http://www.dcm4che.org/confluence/display/ee2/Home开源Java软件可以通过MLLP协议接收各种HL7消息,将它们转换为XML,通过XSLT转换器运行,然后将它们加载到数据库中,并根据需要提供给DICOM客户端 . 为了在代码库中执行此操作,需要HL7-> XML代码 . 只需找到它,复制/粘贴并使用它 .
一旦我知道这个代码到底在哪里,我正在解决消息字符集问题 . 那时我发现HL7解析器相当简单,只能理解配置中提供的1个字符集 . 它不读取/使用消息中提供的字符集(MSH-18,表0211,Grahame Grieve's encoding tips),它也不支持在消息解码期间切换字符集(参见HL7规范中的"Escape sequences supporting multiple character sets"章节) .
所以我知道解析器代码就在那里 . 它是在Java中 . 它为特定于客户的XSLT转换脚本生成XML输入 . 它应该很容易重用 .
你应该能够自己找到它 . 否则你的问题会变成普通finding a tool §4 is an off-topic :)
有我自己的开源替代方案叫做HL7X,它适用于任何HL7v2版本 . 它将您的HL7字符串转换为XML字符串 .
例:
MSH|^~\&|||||20121116122025||ADT^A01|5730224|P|2.5||||||UNICODE UTF-8 EVN|A01|20130120151827 PID||0|123||Name^Firstname^^^^||193106170000|w PV1||E|
变换为
<?xml version="1.0" encoding="UTF-8"?> <HL7X> <HL7X> <MSH> <MSH.1>^~\&</MSH.1> <MSH.6>20121116122025</MSH.6> <MSH.8> <MSH.8.1>ADT</MSH.8.1> <MSH.8.2>A01</MSH.8.2> </MSH.8> <MSH.9>5730224</MSH.9> <MSH.10>P</MSH.10> <MSH.11>2.5</MSH.11> <MSH.17>UNICODE UTF-8</MSH.17> </MSH> <EVN> <EVN.1>A01</EVN.1> <EVN.2>20130120151827</EVN.2> </EVN> <PID> <PID.2>0</PID.2> <PID.3>123</PID.3> <PID.5> <PID.5.1>Name</PID.5.1> <PID.5.2>Firstname</PID.5.2> </PID.5> <PID.7>193106170000</PID.7> <PID.8>F</PID.8> </PID> <PV1> <PV1.2>E</PV1.2> </PV1> </HL7X>
2 回答
这个http://www.dcm4che.org/confluence/display/ee2/Home开源Java软件可以通过MLLP协议接收各种HL7消息,将它们转换为XML,通过XSLT转换器运行,然后将它们加载到数据库中,并根据需要提供给DICOM客户端 . 为了在代码库中执行此操作,需要HL7-> XML代码 . 只需找到它,复制/粘贴并使用它 .
一旦我知道这个代码到底在哪里,我正在解决消息字符集问题 . 那时我发现HL7解析器相当简单,只能理解配置中提供的1个字符集 . 它不读取/使用消息中提供的字符集(MSH-18,表0211,Grahame Grieve's encoding tips),它也不支持在消息解码期间切换字符集(参见HL7规范中的"Escape sequences supporting multiple character sets"章节) .
所以我知道解析器代码就在那里 . 它是在Java中 . 它为特定于客户的XSLT转换脚本生成XML输入 . 它应该很容易重用 .
你应该能够自己找到它 . 否则你的问题会变成普通finding a tool §4 is an off-topic :)
有我自己的开源替代方案叫做HL7X,它适用于任何HL7v2版本 . 它将您的HL7字符串转换为XML字符串 .
例:
变换为