1

任务是将 XML 对象从 Channel-A 发送到 Channel-B

<MyMessage>
<ID>42</ID>
<hl7v2>
    MSH|^~\&|LAB|....
    PID|1|....
</hl7v2>
</MyMessage>

渠道沟通的步骤:

  • 在 Channel-B 的源转换器中,提取 HL7v2 内容
  • 用提取的内容覆盖 Channel-B 中的当前 msg 对象
  • 继续在其他通道-B 源变压器中,并期望msg['PID']['PID.5']正常参考。

好消息是我可以将 HL7v2 的“有效负载”提取到一个变量中。问题或困难在于重置msg对象或任何其他能够按预期引用 HL7 属性的对象。

当我用 . 创建一个新变量时SerializerFactory.getHL7Serializer,它会用标签<HL7Message>.

channelMap.put('MessageID', msg['ID']); //successful
channelMap.put('v2payload',msg['HL7v2']); //also looks good

var v2Msg = SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['HL7v2']);

channelMap.put('v2Msg', v2Msg );

替代文字 链接到全尺寸图像

问题:您对如何覆盖 msg 对象有任何建议吗?

我怎样才能开始这样引用味精:

msg['PID']['PID.5']

现在的情况

  • 接收通道的输入类型是 XML
  • 需要从该 XML 对象中提取所有属性;ID 是稍后在目标中使用的数据库 PK。
4

2 回答 2

2

很抱歉,我最初的答案因我自己的场景的特殊性而陷入困境。我已经重新设计和测试,以确保这适用于您的场景。

发送通道 - 将原始 hl7 包装到您的 xml 结构中,并转发到名为 ReceiveXML 的通道。我已经在 Source Transformer 中对此进行了编码,但您应该在适合您的地方对其进行编码。

var wrappedHL7 = <MyMessage><ID>123</ID>
                      <hl7v2>{messageObject.getRawData()}</hl7v2>
                 </MyMessage>;

router.routeMessage("ReceiveXML", wrappedHL7);

接收通道 - 从 xml 中提取 hl7,将其转换为 xml,然后分配回 msg 对象。我已经在源过滤器中对此进行了编码 - 因此“返回 true;”

msg = new XML(SerializerFactory.getHL7Serializer(false,false,true).toXML(msg['hl7v2'].toString()));
return true;
于 2009-12-16T19:28:49.567 回答
0

您所要做的就是将传入的 xml 消息放入 mirth 的入站模板区域,然后使用消息树将所需的 XML 信息拖放到连接器的 javascript 部分。

于 2010-03-30T22:46:48.307 回答