任务是将XML对象从通道A发送到频道B

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

渠道通信的步骤:

  • 在通道B的源变压器中,提取HL7V2内容
  • 用提取的内容覆盖通道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 );

alt text 链接到全尺寸图像

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

我如何开始引用味精:

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

现在的情况

  • 接收频道的输入类型是XML
  • 需要从该XML对象提取所有属性; ID是一个数据库PK,将在目的地以后使用。
有帮助吗?

解决方案

对不起,我的原始答案与我自己场景的特殊性陷入了困境。我已经对其进行了重新设计和测试,以确保在您的方案中有效。

将频道 - 将RAW HL7包装到您的XML结构中,然后将其转发到称为RecectXML的通道。我已经在源变压器中对此进行了编码,但是您应该在适合您的地方对其进行编码。

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;

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top