ここでは、メッセージ ID を使用して組み込みメッセージを識別する方法を説明します。 メッセージ ID を使用して組み込みメッセージを識別する方法は、 メッセージ・キーを使用する方法に置き換わる手法です。
組み込みメッセージを識別するためのメッセージ ID 手法は、 複数パーツ・メッセージが下記の図 1 に示すように形式である場合に役立ちます。
この例で、「メッセージ・ヘッダー」および「メッセージ・トレーラー」は、メッセージ本体の封筒の役割を果たします。 これらの構造は通常は固定されていますが、「メッセージ本体」はさまざまな異なる構造で定義できます。
組み込みメッセージのプレースホルダーは、複合タイプまたはメッセージ本体エレメントのグループの「構成」プロパティーを「メッセージ」に設定することによって作成されます。 これにより、組み込みメッセージを外部メッセージ内のこの位置に追加して、複数パーツ・メッセージを作成できます。
メッセージ ID 手法を使用してこのような複数パーツ・メッセージを構文解析するときは、 それ以前にメッセージ ID エレメントを使用してメッセージ・ヘッダー内で組み込みメッセージを識別する必要があります。 これはモデル内で組み込みメッセージの前に置かれるストリング・エレメント (または属性) であり、 その「値の解釈方法」プロパティーは「メッセージ ID」に設定されています。
複数パーツ・メッセージがメッセージ・フローへの入力である場合、 メッセージ ID エレメントの値は、ビット・ストリーム内にある次の組み込みメッセージ の「名前」または「メッセージ別名」の どちらかと対応する値であることが必要です。これにより、MRM パーサーはモデル内の組み込みメッセージを正しく識別できます。
メッセージ ID エレメントの値がメッセージの「名前」と一致しない場合は、「メッセージ別名」プロパティーを使用してこの値を指定する必要があります。 MRM パーサーは、最初に「名前」での突き合わせを試行して、 それが失敗した場合に「メッセージ別名」での突き合わせを試行します。
MRM パーサーがメッセージ ID エレメントを検出すると、 その値は現行メッセージ内に直接含まれるすべての組み込みメッセージに適用されます。 これは組み込みメッセージ内にある組み込みメッセージには適用されません。 すべての組み込みメッセージは、直接の親メッセージ内にあるメッセージ ID エレメントから ID を指定される必要があります。
2 番目のメッセージ ID エレメントが現行メッセージ内に検出された場合、 その値はそれまで保持されていた値をオーバーライドします。 これにより、さまざまな対等の組み込みメッセージが 1 つのメッセージ内に存在できます。
メッセージ ID は、メッセージ・パスよりも優先されます。 両方が指定されている場合、メッセージ ID が使用されます。 示された複数パーツ・メッセージに対して、これらの手法を 1 つだけ使用してください。
デフォルトでは、 組み込みメッセージは現行メッセージと同じメッセージ・セット内に定義されていると想定されます。 これは、メッセージ ID と良く似た方法で機能するメッセージ・セット ID を使用してオーバーライドできます。
異なるメッセージ・セット内に定義される組み込みメッセージは、それ以前に、 メッセージ内でそのメッセージ・セットがメッセージ・セット ID エレメントを使用して識別されている必要があります。 これはモデル内で組み込みメッセージの前に置かれるストリング・エレメント (または属性) であり、 その「値の解釈方法」プロパティー は「メッセージ・セット ID」に設定されています。
複数パーツ・メッセージがメッセージ・フローへの入力である場合、 メッセージ・セット ID エレメントの値は、ビット・ストリーム内にある次の組み込みメッセージを定義するメッセージ・セットの「ID」、「名前」、 または「メッセージ・セット別名」のいずれかと対応する値であることが必要です。これにより、MRM パーサーは使用するメッセージ・セットを正しく識別できます。
メッセージ・セット ID エレメントの値がメッセージ・セットの「ID」または「名前」と一致しない場合は、「メッセージ・セット別名」プロパティーを使用してこの値を指定する必要があります。 MRM パーサーは、最初に「ID」、 次に「名前」、そして最後に「メッセージ・セット別名」での突き合わせを試行します。
MRM パーサーがメッセージ・セット ID エレメントを検出すると、 その値は現行メッセージ内に含まれるすべての組み込みメッセージに適用されます。 これはまた、組み込みメッセージにメッセージ・セット ID エレメントも含まれていない限り、 組み込みメッセージ内にある組み込みメッセージにも適用されます。
2 番目のメッセージ・セット ID エレメントが現行メッセージ内に検出された場合、 その値はそれまで保持されていた値をオーバーライドします。 これにより、対等の組み込みメッセージはさまざまなメッセージ・セット内に存在できます。
X12 メッセージの以下の例では、メッセージ ID およびメッセージ・セット ID の使用方法を示します。 行 0002 の GS セグメントにある 004010X092 を含むフィールドは、 メッセージ・セット ID を「メッセージ・セット別名」として保持します。 ST セグメントの行 0003 にある 207 は、 「メッセージ別名」として保持されたメッセージ ID です。 組み込みメッセージは、行 0004 から行 0015 まで (これらの行も含む) です。
0001 ISA*00* *00* *30*12-3456789 *ZZ *9876543-21 *000104*1820*U*00401*000000001*0*T*:! 0002 GS*HS*HOSP CLAIM*PAYER ADJDEPT*20000104*1820*1*X*004010X092! 0003 ST*270*1234! 0004 BHT*0022*13*10001234*19990501*1319! 0005 HL*1**20*1! 0006 NM1*PR*2*ABCCOMPANY*****PI*842610001! 0007 HL*2*1*21*1! 0008 NM1*1P*2*BONE AND JOINT CINIC*****SV*2000035!REF*N7*234899! 0009 N3*55*HIGH STREET! 0010 N4*SEATTLE*WA*98123! 0011 HL*3*2*22*0!TRN*1*93175-12547*9877281234! 0012 NM1*IL*1*SMITH*ROBERT*B***MI*11122333301! 0013 REF*1L*599119! 0014 DMG*D8*19430519*M! 0015 DTP*472*RD8*19990501-19990515!EQ*30**FAM!SE*17*1234! 0016 GE*1*1!IEA*1*000000001!
メッセージ ID およびメッセージ・セット ID はどちらも、すべての物理形式に適用可能です。 バージョン 6.0 以前の TDS 物理形式のバージョンには、 メッセージ ID と類似の機能の、メッセージ・キーによる組み込みメッセージ識別が含まれていました。 メッセージ・キーは推奨されなくなり、メッセージ ID に置き換えられています。