任务是将一个XML对象从Channel-A发送到Channel-B
<MyMessage>
<ID>42</ID>
<hl7v2>
MSH|^~\&|LAB|....
PID|1|....
</hl7v2>
</MyMessage>
频道沟通的步骤:
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:
msg['PID']['PID.5']
现状
答案 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部分。