質問

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. 。そのように設定しました 末尾の区切り文字を許可する がオンになっています。ご覧のとおり、このセグメントの末尾には区​​切り文字があります。 しかし これはセグメントの最後のフィールドの後であり、たまたま上記のデータが含まれています。

これは常に当てはまり、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) フィールドでは、メッセージが許可されます。

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

役に立ちましたか?

解決

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

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

他のヒント

たとえでも HL7 メッセージング標準バージョン 2.6 PV1 セグメントを他のフィールドで拡張していないため、元のコードは 52 セグメント フィールドのみをサポートするという点では正しかったです。

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

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

..この場合、末尾の区切り文字を許可するとどのような動作が予想されますか?.

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top