2013-06-05 2 views
0

HAPI에서 생성 된 NACK 메시지에 대한 문제가 있습니다.NACK 오류 메시지가 유효하지 않습니까?

다음과 같이 NACK 메시지를 생성합니다.

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

다음 메시지; 당신이 ERR 세그먼트를 통지하는 경우

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

, 그것은 정보를 요구하지 않는다;

위의 메시지가 유효합니까?

나는 이렇게 생각해야한다.

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 링크입니다. 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

아프가니스탄 메일 링리스트에서;

가능하면 최신 버전 (2.1)으로 업그레이드해야합니다. 이 버전은 generateACK가 Exception으로 호출 될 때 버전 2.5 (ERR-2와 ERR-3이 채워지는 곳)와 버전 2.5 (ERR-1이 사용되는 곳) 이전의 ERR 세그먼트를 구별합니다.

어쨌든 Terser와 같은 util 클래스를 사용하여 원하는대로 ACK 메시지의 ERR 세그먼트 필드를 수정할 수 있습니다. 귀하의 경우에 당신은 아마

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"); 

-3을 ERR 선택적 ERR-1 이후의 값을 제거 ERR-1의 값을 복사 할 것이다 :

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

관련 문제