0

我对 HAPI 生成的 NACK 消息有疑问,

我正在生成 NACK 消息,如下所示;

 Message msg= hl7Msg.generateACK(HL7Constants.HL7_MSA_ERROR_FIELD_VALUE, 
                    new HL7Exception(errorMsg));

这返回;以下消息;

MSH|^~\&|||||20130604165513.576+0100||ACK|108|P|2.5 
MSA|AE|HL7Gtw01361605B49500 
ERR|^^^207&ERROR&hl70357&&errmsg

如果您注意到 ERR 段,它没有必需的信息;

上面的消息有效吗?

我怀疑它必须是这样的;

MSH|^~\&|||||20130604165513.576+0100||ACK|108|P|2.5 
MSA|AE|HL7Gtw01361605B49500 
ERR|||207|E|^errmsg

为什么我会收到这样无效的消息?我在这里做错什么了吗?

4

1 回答 1

0

来自 hapi 邮件列表的答案;

如果可能,您应该升级到最新版本 (2.1)。当使用异常调用 generateACK 时,此版本区分了 2.5 版(填充 ERR-2 和 ERR-3)和 2.5 版之前(使用 ERR-1)的 ERR 段。

无论如何,您可以使用诸如 Terser 之类的实用程序类来根据需要修改 ACK 消息中 ERR 段的字段。在您的情况下,您可能必须将值从 ERR-1 复制到 ERR-3

    Segment err = (Segment)msg.get("ERR");
    Terser.set(err, 3, 0, 1, 1, Terser.get(err, 1, 0, 4, 1));
    Terser.set(err, 3, 0, 2, 1, Terser.get(err, 1, 0, 4, 2));
    Terser.set(err, 3, 0, 3, 1, Terser.get(err, 1, 0, 4, 3));
    Terser.set(err, 3, 0, 9, 1, Terser.get(err, 1, 0, 4, 5));
    Terser.set(err, 4, 0, 1, 1, "E");

然后可以选择删除 ERR-1 中的值:

Terser.set(err, 1, 0, 4, 1, "");

于 2013-06-07T14:51:58.760 回答