mirth:用XML对象中的内容覆盖MSG对象
题
任务是将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 );
问题: :您对如何覆盖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部分。
不隶属于 StackOverflow