1

HL7v2 メッセージの次の PV1 セグメントについて考えてみましょう。

PV1|1|E|MYLOC||||55555^Doctor^Doc^D^^Dr^^DOCT|||||||HO||||ER||BC|||||||||||||||||||VALUE||REG|||201406270627||||||||55555^Doctor^Secondary^H^^Dr^^DOCT2|

そこには52のフィールドがあります。私たちの Meditech システムは、このインターフェイスで常にフィールド 52 (PV1_52_OtherHealthcareProvider) を送信します。これは、ここでは で表され55555^Doctor^Secondary^H^^Dr^^DOCT2ます。Allow Trailing Delimitersが ONになるように設定しました。ご覧のとおり、このセグメントには末尾の区切り文字がありますが、これはセグメントの最後のフィールドの後にあり、たまたま上記のデータが含まれています。

これは常に当てはまります。Meditech は常にこのインターフェイスの末尾に区切り文字を追加しています。

他のセグメントはいずれも最終フィールドにデータを持っていないため、末尾に区切り文字があるにもかかわらず、この問題は発生していません。PV1 セグメントで、次のエラーが表示されます。

Error happened in body during parsing 
Error # 1
Segment Id: PV1
Sequence Number: 1
Error Number: 100
Error Description: Segment sequence error (Unexpected end of message body found)
Encoding System: HL79999

デリミタを手動で削除して再送信すると、エラーは発生しないため、これは末尾のデリミタが原因であることが判明しました。また、スキーマを変更してダミー(PV1_53_ExtraField) フィールドを追加すると、メッセージが許可されます。

私の質問は次のとおりです。この場合、末尾の区切り文字を許可するとどのような動作が期待されますか? すべての場合に末尾の区切り文字を許可することになっていますか、それとも最終フィールドにデータがないセグメント (つまり、セグメントの最後の余分なフィールド) にのみ適用されますか?

4

2 に答える 2

2

HL7 Messaging Standard Version 2.6でさえ、PV1 セグメントを他のフィールドで拡張しなかったため、元のコードは 52 セグメント フィールドのみをサポートするという点で正しいものでした。

1.カスタム フィールドとカスタム セグメントを使用して HL7 メッセージング プロトコルを拡張することは完全に有効です。ただし、この拡張がすべての関係者によって合意され、HL7 適合宣言に文書化されている場合に限ります (ここここにいくつかの説明リンクがあります) 。

2.解析およびメッセージ処理コードは、プロトコルの古いバージョンと将来のバージョンの両方と互換性がある必要があります。セグメントの数、それらの名前と順序、およびフィールドの数とフィールド内のコンポーネントの数を動的に決定して処理できます。メッセージ構文は、それをサポートするように設計されています。「HL7 バージョン フィールド MSH-12 の内容に関係なく、PV1 セグメントには 52 個のフィールドが存在する」などのハードコーディングは、スケーリングされないため、あまり良いアプローチではありません。

..この場合、末尾の区切り文字を許可するのに期待される動作は何ですか?..

予想される動作は、アプリケーションがクラッシュせず、データ処理をブロックしないことです。データがコードを介して別のシステムに移動する場合、理解できないフィールドをドロップ/削除しないでください (多かれ少なかれ HL7 仕様に記述されています)。どこか..)

于 2014-08-01T12:12:31.260 に答える
1

受信パイプラインでは、セグメントの最後のフィールドの後に区切り文字を含めることはできません。これは HL7 アクセラレータのバグのようです。このプロパティは、区切り文字が定義された数のフィールド内にある場合にのみ、送信側にのみ影響を与えるようです。

受信パイプライン コンポーネントでこれに対処し、Microsoft サポートに報告することをお勧めします。

于 2014-08-01T03:48:24.030 に答える