如何在mirth 3.4中停止执行并发送带有错误信息的ACKNACK?

问题描述 投票:0回答:1

我是mirth的新手,所以如果我的问题看起来很幼稚的话,很抱歉。我有一个mirth频道,可以接收hl7消息,这很好,而且我在Source和Destination都有一些过滤器和变换器。

当一切正常的时候,在目的地结束时,我发送一个带有消息的ACK,为了这个目的,我在代码模板中做了这个功能。

function getAck(success, detailMessage, statusMessage) {
if (!detailMessage)
    detailMessage = success ? "Operation completed successfully" : "Some error occours";

if(!statusMessage)
    statusMessage = detailMessage;

if (success) {
        ack = ACKGenerator.generateAckResponse(connectorMessage.getRawData(), "AA", detailMessage);
        resp = new Response(com.mirth.connect.userutil.Status.SENT, ack, statusMessage);
} else {
        ack = ACKGenerator.generateAckResponse(connectorMessage.getRawData(), "AE", detailMessage);
        resp = new Response(com.mirth.connect.userutil.Status.ERROR, ack, statusMessage, detailMessage);
}

return resp;
}

所以我使用ACKGenerator.generateAckResponse来创建一个Ack和Response,以便在客户端发送响应。这工作,但只有在目的地,这是我的问题。如果我在目的地之前得到一个错误(例如在过滤器,变压器,......),我不能停止执行并发送一个带有错误解释的NACK,这是我想做的。我这样做是错的吗?

hl7 mirth ack
1个回答
0
投票

你可以在responseMap中的任何过滤器或变压器中存储一个response。一旦你在ResponseMap中定义了一个键,它应该在你的通道的源标签上的Response下拉中作为一个选择(而不是选择一个目的地。

您当前的连接器应该停止处理带有 ERROR 状态的消息,如果您手动地 throw 在ResponseMap中设置了所需的值后,会产生一个异常。如果你在过滤器中,你也可以过滤消息,而不是抛出异常。

如果你担心一个未捕获的异常,你可以在通道的第一个点用一个 "未知错误 "消息来初始化 responseMap 变量,在那里你的自定义代码被定义为直接影响消息(很可能是描述中的源过滤器,但也可能是预处理程序或附件处理程序,如果你使用这些的话)。我们的期望是,如果消息一直到最后,这将被一个更具描述性的错误或成功所取代,但通道总会有一些东西要返回。

© www.soinside.com 2019 - 2024. All rights reserved.