[英]Hapi encoding HL7 v2.7 message into xml using Hapi XML Parser
[英]Why HAPI parser is taking only last segment while converting XML to 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 的转换。 这是生成的 output:
<?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 时只占用最后一段?
我已修改您的代码以在 C#/.NET Core 中工作。 它适用于您的 XML 和其他 hl7Xml。 您可以按照此在 Java 代码中进行相同的修改。
public static String ConvertXmltoHl7(String xmlMessageString)
{
XMLParser xmlParser = new DefaultXMLParser();
IMessage hl7Message = xmlParser.Parse(xmlMessageString);
PipeParser pipeParser = new PipeParser();
String hl7MessageString = pipeParser.Encode(hl7Message);
return hl7MessageString;
}
xmlMessageString(参数转换为 ConvertXmltoHl7 方法)
<?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>
hl7MessageString(ConvertXmltoHl7 方法的返回值)
MSH|^~\&|HCEN|ASSE|INUS|SALUD.UY|20190307113000||ADT^A01^ADT_A04|72|P|2.3.1
EVN||20190228143000
PID|||998855^^^ASSE&2.16.858.2.10001442.72768.9&ISO~33434343^^^CI&2.16.858.2.10000675.68909&ISO|^^^&&ISO|pasdsds^juan|dlsdsds|19890203|1|||Colonia 1652^^MONTEVIDEO^MONTEVIDEO^^URUGUAY^H
PV1||U
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.