NACK错误消息无效?

时间:2013-06-05 07:39:10

标签: hl7 hapi

我对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

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

1 个答案:

答案 0 :(得分:0)

来自hapi邮件列表的Ans;

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

无论如何,您可以使用像Terser这样的util类来根据需要修改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(错误,1,0,4,1,“”);