如何在欢乐目的地内将 HL7 v2.x 转换为 XML

How to convert HL7 v2.x to XML within a Mirth destination

我有一条来自 SQL 数据库的源消息。它的格式如下:

<result>
    <rawmessage>A|Full Raw|HL7|Message|is here </rawmessage>
    <id>The-Messages-GUID-FromMSSQL</id>
</result>

我想从查询中获取信息并将其分成多个表,每行都绑定到与消息相关的 GUID。我能够获取原始消息并将 HL7 字符串转换为 XML 但无法获取数据。

我目前的理解是通道中的源和目标类型是 XML。我可以使用 msg['id'] 访问 ID 并将其保存到频道地图。我还可以将 HL7 字符串转换为 XML 并将其保存到一个变量中(见下文)。例如,当我尝试使用 msg2['OBR']['OBR.2']['OBR.2.1'].toString() 访问段或字段时,我在错误选项卡中收到消息 Cannot read property "OBR" from undefined,在控制台的信息中收到消息 Undefined。如果我删除 ['HL7Message'],我会在错误中得到 Cannot read property "OBR.2" from undefined,在信息中得到 <?xml version="1.0" encoding="UTF-8"?><HL7Message><MSH>。如果我将通道映射变量定义为 msg1['OBR.2.1'],它会返回未定义状态。

这是我的变流器步骤:

channelMap.put('Raw Message', msg['rawmessage'].toString());
channelMap.put('Raw GUID', msg['id'].toString());
channelMap.put('XML Message', SerializerFactory.getSerializer('HL7V2').toXML($('Raw Message')));

var msg2 = $('XML Message')['HL7Message'];
logger.info(msg2);

channelMap.put('OBR 2', msg2['OBR.2.1']);

我希望通过使用类似于 msg['OBR']['OBR.2']['OBR.2.1'].toString()("normal" Mirth 符号)的符号来获取字段的值,方法是将 msg 替换为变量名称。

区别在于 xml 字符串与 xml 对象。序列化程序 returns 一个字符串。这会将您的字符串转换为对象。

var msg2 = new XML($('XML Message'));