【问题标题】:How should one send ACKs to Mirth from a web service?应该如何从 Web 服务向 Mirth 发送 ACK?
【发布时间】:2017-09-07 02:35:49
【问题描述】:

我想编写一个简单的“网络服务”,我可以使用 Mirth 向其发送 HL7 消息。这个“Web 服务”可以像 CGI 脚本一样简单,并且只需要使用 Mirth 的 HTTP 发送器将 HL7 消息作为字符串(可能还有几个其他值)作为 POST 请求接受。

这看起来很简单,但是这个“网络服务”应该如何发回 ACK 来让 Mirth 知道一切正常还是出了什么问题? Mirth 是否期望有一种特定的格式作为响应?或者有什么方法可以告诉 Mirth 会发生什么?

注意:我不想在接收端使用 Mirth。

【问题讨论】:

    标签: http hl7 mirth


    【解决方案1】:

    简短的回答是,这完全取决于您... Mirth Connect 可以容纳任何响应(或缺少响应)并执行自定义用户逻辑来决定响应是否“成功”。

    您可以让外部 Web 服务生成 HL7 v2.x ACK 并将其发回。然后在 HTTP Sender 端,确保您的响应数据类型设置为 HL7 v2.x,并在目标设置中启用“验证响应”。

    您还可以让您的 Web 服务生成完全自定义的响应并在 MC 端进行自定义验证。例如,如果您让您的网络服务发回这样的响应:

    {
        "success": true,
        "message": "Message received successfully."
    }
    

    然后您可以将您的响应数据类型设置为 JSON,并在响应转换器中执行此操作:

    if (msg.success !== true) {
        responseStatus = ERROR;
    }
    responseStatusMessage = msg.message;
    

    您也可以仅根据响应状态代码进行验证。默认情况下,使用 HTTP Sender,仅当 HTTP 请求返回的状态为

    不过,您可以在响应转换器中覆盖该行为。如果状态特别是 200(而不是其他 2xx 或 3xx 代码),您可能只希望它被发送。将您的响应数据类型设置为 Raw(这样即使没有响应,响应转换器也会执行),并在响应转换器中执行此操作:

    var responseStatusLine = $('responseStatusLine');
    var responseCode = parseInt(responseStatusLine.split(' ')[1], 10);
    if (responseCode != 200) {
        responseStatus = ERROR;
        responseStatusMessage = responseStatusLine.substr(responseStatusLine.indexOf(' ')).trim();
    }
    

    【讨论】:

    • 谢谢,尼克·鲁普利。
    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多