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

ハピメーリングリストからの回答;

可能であれば、最新バージョン (2.1) にアップグレードしてください。このバージョンでは、バージョン 2.5 (ERR-2 と ERR-3 が設定されている) の時点の ERR セグメントと、バージョン 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 に答える