java - 为什么 HAPI 解析器在将 XML 转换为 HL7 时只占用最后一段?
问题描述
我正在使用 Java 中的 HL7 转换器与我正在开发的应用程序一起使用。
我使用以下 HL7 消息作为示例输入:
MSH|^~\\&|HCEN^^|ASSE^^|INUS^^|SALUD.UY^^|20190307113000^||ADT^A01^ADT_A04|72|P^|2.5|||||||^^^^^
EVN||20190228143000^|^|||^|^^
PID||^^^&&^^&&^^^&^&&|998855^^^ASSE&2.16.858.2.10001442.72768.9&ISO^^&&^^^&&&&&&&&^&&&&&&&&
PV1||U
以下是我开发的两个功能:
public static String convertHl7toXml(String hl7MessageString) {
// instantiate a PipeParser, which handles the "traditional or default encoding"
PipeParser ourPipeParser = new PipeParser();
String xmlMessageString = "";
try {
// parse the string format message into a Java message object
Message hl7Message = ourPipeParser.parse(hl7MessageString);
// instantiate an XML parser
//HAPI provides
XMLParser xmlParser = new DefaultXMLParser();
xmlMessageString = xmlParser.encode(hl7Message);
} catch (Exception e) {
e.printStackTrace();
}
return xmlMessageString;
}
public static String convertXmltoHl7(String xmlMessageString) {
XMLParser xmlParser = new DefaultXMLParser();
String hl7MessageString = "";
try {
Message hl7Message = xmlParser.parse(xmlMessageString);
System.out.println(hl7Message.toString());
HapiContext context = new DefaultHapiContext();
Parser parser = context.getPipeParser();
hl7MessageString = parser.encode(hl7Message);
} catch (Exception e) {
e.printStackTrace();
}
return hl7MessageString;
}
我正确运行了从 HL7 到 XML 的转换。这是结果输出:
<?xml version="1.0" encoding="UTF-8"?>
<ADT_A04 xmlns="urn:hl7-org:v2xml">
<MSH>
<MSH.1>|</MSH.1>
<MSH.2>^~\&</MSH.2>
<MSH.3>
<HD.1>HCEN</HD.1>
</MSH.3>
<MSH.4>
<HD.1>ASSE</HD.1>
</MSH.4>
<MSH.5>
<HD.1>INUS</HD.1>
</MSH.5>
<MSH.6>
<HD.1>SALUD.UY</HD.1>
</MSH.6>
<MSH.7>
<TS.1>20190307113000</TS.1>
</MSH.7>
<MSH.9>
<MSG.1>ADT</MSG.1>
<MSG.2>A01</MSG.2>
<MSG.3>ADT_A04</MSG.3>
</MSH.9>
<MSH.10>72</MSH.10>
<MSH.11>
<PT.1>P</PT.1>
</MSH.11>
<MSH.12>
<VID.1>2.3.1</VID.1>
</MSH.12>
</MSH>
<EVN>
<EVN.2>
<TS.1>20190228143000</TS.1>
</EVN.2>
</EVN>
<PID>
<PID.3>
<CX.1>998855</CX.1>
<CX.4>
<HD.1>ASSE</HD.1>
<HD.2>2.16.858.2.10001442.72768.9</HD.2>
<HD.3>ISO</HD.3>
</CX.4>
</PID.3>
<PID.3>
<CX.1>33434343</CX.1>
<CX.4>
<HD.1>CI</HD.1>
<HD.2>2.16.858.2.10000675.68909</HD.2>
<HD.3>ISO</HD.3>
</CX.4>
</PID.3>
<PID.4>
<CX.4>
<HD.3>ISO</HD.3>
</CX.4>
</PID.4>
<PID.5>
<XPN.1>
<FN.1>pasdsds</FN.1>
</XPN.1>
<XPN.2>juan</XPN.2>
</PID.5>
<PID.6>
<XPN.1>
<FN.1>dlsdsds</FN.1>
</XPN.1>
</PID.6>
<PID.7>
<TS.1>19890203</TS.1>
</PID.7>
<PID.8>1</PID.8>
<PID.11>
<XAD.1>Colonia 1652</XAD.1>
<XAD.3>MONTEVIDEO</XAD.3>
<XAD.4>MONTEVIDEO</XAD.4>
<XAD.6>URUGUAY</XAD.6>
<XAD.7>H</XAD.7>
</PID.11>
</PID>
<PV1>
<PV1.2>U</PV1.2>
</PV1>
</ADT_A04>
之后,我尝试将 XML 转换回 HL7,但结果是:
PV1||U
如果我只尝试一段,无论是哪一段,结果都是正确的。但是当尝试使用多个段时,它总是返回最后一个。
为什么 HAPI 解析器在将 XML 转换为 HL7 时只占用最后一段?
解决方案
推荐阅读
- java - 如何在 Firebase 实时数据库中检索值
- node.js - 如何从 npm 包中获取 *.min.js 文件
- image - 乳胶:水平绘图时 mbox() 上方的文本?
- snowflake-cloud-data-platform - Snowflake Security - 授予修改视图
- html - 在 Intellij IDEA 中重新格式化代码和 CSS 补全
- nginx - 重置请求标头时重写 URL - nginx
- java - 我的 JavaFX 文件无法从 JavaFX 找到或加载应用程序类
- python-3.x - 如何捕获 pyistaller.__main__.run 的输出
- java - 理解jar命令行
- python - 使用 Pandas 从 Excel 文件中读取日期并对其进行排序时出错