【问题标题】:Mirth HL7 ACK ERROR: Message control Ids do not matchMirth HL7 ACK ERROR:消息控制 ID 不匹配
【发布时间】:2017-03-28 17:57:03
【问题描述】:

我从 Mirth 和 HL7 开始,我正在尝试向远程服务器发送消息。我的MSH 如下:

MSH|^~\&|EPIC|EPIC|IMG_SCHEDULE_APPT|REMOTE|20170328193318|PERSONNAME|ORM^O01|12345678|T|2.4||||||||||

响应如下:

MSH|^~\&|IMG_SCHEDULE_APPT|REMOTE|EPIC|EPIC|20170328193318||ACK|12345678|T|2.4|
MSA|AA|||

我收到一条错误消息ERROR: Message control Ids do not match.

据我了解,此错误意味着ACK 消息中返回的消息控件 ID 不一样。

据我所知,数字 12345678 是消息控制 ID,我在发送的消息和返回的 ACK 中都看到了该数字。那么这里有什么问题呢?谁有错?我还是对方?

有人知道我该如何解决或调试这个问题吗?

【问题讨论】:

    标签: hl7 mirth


    【解决方案1】:

    如果您不想验证消息控件 ID,可以打开响应验证属性并取消选中“验证消息控件 ID”:

    如果远程系统无法更改其逻辑并且您仍想验证控件 ID,则可以在响应转换器中执行此操作:

    if (responseStatus == ERROR) {
        // msg here is the ACK, origMsg is the encoded data that was sent outbound
        var origMsg = new XML(SerializerFactory.getSerializer('HL7V2').toXML(connectorMessage.getEncodedData()));
        if (origMsg.MSH['MSH.10']['MSH.10.1'].toString() == msg.MSH['MSH.10']['MSH.10.1'].toString()) {
            responseStatus = SENT;
        }
    }
    

    【讨论】:

      【解决方案2】:

      MSA.2 (Message Control ID) 是必需的,并且应该与 ACK 消息确认的前一个消息中的 ControlId 相同..

      【讨论】:

      • 严格来说,ACK 消息上的 MSH-10 可能是原始发送系统发送的其他值(例如,一个响应来自多个系统的查询并使用计数器填充的系统)它作为 ACK 发回的消息 ID)。正如 sqlab 所提到的,发送系统的消息 ID 应该在 MSA-2 中发回,根据第 2.15.8 节(我正在查看 HL7 v2.5 US),这是 MSA 段中的必填字段。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2013-03-11
      • 2015-04-26
      • 2021-01-04
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多