2013-06-05 3 views
0

У меня проблема с сообщением NACK, созданным 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 

Почему у меня такое недопустимое сообщение? Я делаю что-то неправильно здесь?

+0

Можете ли вы дать мне полный код, который вы написали? – Sid

+0

Сид, это линия, которую я сделал для генерации сообщения NACK; hl7Msg.generateACK ('AE', новый HL7Exception (errorMsg)); это ссылка API, я использовал для создания ack http://hl7api.sourceforge.net/apidocs/src-html/ca/uhn/hl7v2/model/Message.html#line.170 – Ratha

+0

@Sid, пожалуйста, обратитесь к этому вопросу также http://stackoverflow.com/questions/16957792/why-nack-message-misses-to-create-the-fields-3-4-and-5-in-hapi – Ratha

ответ

0

Ans из списка рассылки hapi;

Если возможно, вам следует перейти на последнюю версию (2.1). В этой версии проводится различие между сегментами ERR с версии 2.5 (где заполняются ERR-2 и ERR-3) и до версии 2.5 (где используется ERR-1), когда generateACK вызывается с Исключением.

В любом случае, вы можете использовать классы использования, такие как Terser, для изменения полей сегмента ERR в сообщении ACK по вашему желанию. В вашем случае вы, вероятно, придется копировать значения из 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, "");