【问题标题】:Mirth: overwriting msg object with contents in an XML object欢乐:用 XML 对象中的内容覆盖 msg 对象
【发布时间】:2009-12-16 18:48:23
【问题描述】:

任务是将一个 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 创建一个新变量时,它会使用标签&lt;HL7Message&gt; 进行包装。

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 );

link to full size image

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

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

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

现状

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

【问题讨论】:

    标签: e4x hl7 mirth hl7-v2


    【解决方案1】:

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

    发送通道 - 将原始 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;
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 2019-09-06
        • 2015-11-09
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多