Mirth:用XML对象中的内容覆盖msg对象

时间:2009-12-16 18:48:24

标签: e4x hl7 mirth hl7-v2

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

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

频道沟通的步骤:

  • 在Channel-B的源变换器中,提取HL7v2内容
  • 使用提取的内容OVERWRITE Channel-B中的当前msg对象
  • 继续使用其他Channel-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 link to full size image

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

如何开始引用msg:

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

现状

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

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