HL7 2.X 逆アセンブラーのスキーマ決定
HL7 2.X メッセージには、ヘッダー セグメント (MSH) が含まれており、その後に多数の本文セグメントとオプションの数の Z セグメントが続きます。 MSH には 21 個のフィールドが含まれています。
メッセージが到着すると、2.X エンジンは ヘッダーを読み取って、メッセージ本文の解析に使用するスキーマを決定します。 次の一連のイベントが発生します。
逆アセンブラーは MSH3 (ソース パーティ) の値を読み取り、次の検証オプションを決定します。
本文の XML 検証を実行するかどうか
本文データのカスタム データ型フィールドを検証するかどうか
本文で末尾の区切り記号を許可するかどうか
本文スキーマのターゲット名前空間とは (TargetNS)
逆アセンブラーは MSH9 と MSH12 を読み取って、本文のルート ノード名を決定します。 アルゴリズムは次のようになります。
Body schema type = TargetNS + "#" + MSH9.1 + MSH9.2 + MSH12.1 (with dots removed) + MSH12.2 (or GLO if the value is blank) + MSH12.3 (or DEF if the value is blank)
Microsoft BizTalk Accelerator for HL7 (BTAHL7) では、メッセージ ヘッダーの末尾の区切り記号が常に許可されます。 エンジンは、各行の最初の 3 文字であるセグメント識別子を調べます。 本文スキーマで定義されているすべてのセグメントに対して XML を生成し続けます。 未定義のセグメントが検出されると、そのセグメントは Z セグメントとして扱います。 その時点から、未定義のすべてのセグメントがメッセージの Z 部分を構成します。 次の MSH は、このメッセージの末尾をマークします。 バッチ メッセージの場合、次の MSH または BTS (バッチ トレーラー セグメント タグ) はメッセージの末尾をマークします。 Z セグメントには、スキーマで宣言されていないセグメントのみを含めることができます。 宣言されたセグメントが見つかった場合はエラーです。