X12 スキーマと利用可能なツール
ここでは、X12 スキーマと X12 ドキュメントの操作に使用可能な InterSystems IRIS® ツールの概要を示します。
X12 スキーマ構造ページの使用法
[Interoperability]→[相互運用]→[ASC X12]→[ASC X12 スキーマ構造] ページを使用すると、X12 スキーマ仕様のインポートと表示を行うことができます。
このページの使用に関する一般情報は、"プロダクション内での仮想ドキュメントの使用法" の "スキーマ構造ページの使用法" を参照してください。
スキーマ構造を決定するために、InterSystems IRIS は、この X12 ドキュメントの構造を定義するためにインポートされた SEF ファイルの .SETS、.SEGS、.COMS、.ELMS、および .CODES セクションから詳細を抽出します。ドキュメントの説明はこの X12 スキーマを定義する SEF ファイルの .INI セクションから抽出されます。Healthcare Claim Status Request は 1 つの例です。
InterSystems IRIS への X12 スキーマのロード
[スキーマ構造] ページから X12 スキーマを InterSystems IRIS にロードするには、[インポート] をクリックして目的のファイルを選択します。SEF ファイルまたは XSD ファイルのいずれかをロードできます。
インポートする SEF ファイル (X12 スキーマ) の検索場所に関する提案は、"標準交換フォーマット (SEF : Standard Exchange Format) ファイル" を参照してください。
プログラムによる SEF ファイルのロード
X12 スキーマ・ファイルをプログラムによってロードするには、以下の操作を行います。
-
ターミナル・セッションを開始します。
-
相互運用対応ネームスペースに変更し、以下のコマンドを発行します。
Do ##class(EnsLib.EDI.SEF.Compiler).Import(filename)
filename は、スキーマ・ファイルの完全パス名です。
このコマンドにより、スキーマ・ファイルからデータがインポートされ、このデータを InterSystems IRIS 内でスキーマ定義として使用できるようになります。
-
InterSystems IRIS では、SEF ファイルの .INI セクションの先頭行の最初の部分を使用して、新しいスキーマ・カテゴリの名前を作成します。例えば、837_X097.SEF ファイルに以下の行があるとします。
.INI 837_X098,,004 010 X098,X,X12-4010,Healthcare Claim: Professional
抽出されたスキーマ・カテゴリは、以下のような名前になります。
837_X098
スキーマ名前付け規則に従い、スキーマ・ファイルを編集してカスタマイズする場合は、まず、カテゴリ名を提供するスキーマ・ファイルのテキストを変更し、カスタマイズするバージョンと InterSystems IRIS にインポートする他のスキーマ・ファイルを区別できるようにすることをお勧めします。
-
スキーマ・ファイルには、構文エラーが含まれている場合があります。その場合、InterSystems IRIS からエラー・メッセージが表示され、スキーマ・ファイル内のエラーの場所が特定されます。
ドキュメント構造の表示
ドキュメント構造の内部編成を表示するには、[Interoperability]→[相互運用]→[ASC X12]→[ASC X12 スキーマ構造] ページの [DocType 構造] タブで、そのドキュメント構造の名前を選択します。InterSystems IRIS では、以下に説明する表現上の規則に基づいてドキュメントのセグメント構造が表示されます。以下の例は、このページの HIPAA_4010:820 ドキュメント構造を示しています。[Interoperability]→[相互運用]→[ASC X12]→[ASC X12 スキーマ構造] ページの左側で [HIPAA_4010] を選択し、右側で [820] を選択します。[X12 ドキュメント構造] ページが表示されます。
レイアウト
-
セグメントは青色テキストで表示され、関連するセグメント構造ページにリンクしています。
-
ループは黒色テキストで表示されます。
-
ドキュメント構造を構成するセグメントは、左から右および上から下へ順番に表示されます。
Note:X12 標準に従って、ドキュメント内で、セグメントやサブループ・タイプが、次のセグメントやサブループ・タイプの前であれば任意の順序で、許可された回数繰り返し表示される場合があります。例えば、スキーマで 8 つの REF セグメントを CRC セグメントの前に表示する必要があると指定している場合、その REF セグメントは任意の順序で表示されます。ただし、それらの間にその他のセグメント・タイプを点在させることはできません。
-
各ドキュメント・セグメントの名前が表示されます (BPR、NM1、DTM など)。この名前は、X12 ドキュメント構造内のこの場所に存在するセグメントのタイプを示します。
-
緑色の点線で囲まれているセグメントは、オプションのセグメントです。
-
茶色の実線で囲まれているセグメントは、何度か繰り返される可能性のあるセグメント (存在する場合) です。
-
黄色の実線で囲まれているセグメントは、グループの一部であるセグメントです。
-
セグメントは、繰り返しとオプションの両方である場合もあります (上記のセグメント NM1 を参照してください)。
未加工の定義
未加工のテキスト形式でドキュメント構造を表示するには、[未加工の定義テキストの表示] をクリックします。HIPAA_4010:820 ドキュメント構造の未加工定義は次のとおりです。
X12 内のループにはカスタム名を割り当てることができます。上記の HIPAA_4010:820 の未加工定義例では、ループ・タイトルは左側の括弧記号 “[、{、(” の直後に記述されているのに対して、セグメント名はチルダ “~” によってこれらの括弧記号と区切られていることに注目してください。カスタム・ループ名を使用するには、スキーマを InterSystems IRIS にインポートする前に、スキーマ・ファイル内でデフォルトのループ名の代わりにカスタム名を入力します。
レガシー・ドキュメント構造
[検証構造に移動] をクリックすることで、スキーマの旧ドキュメント構造ビューワを表示できます。レガシー・ドキュメント構造では、デフォルトのドキュメント構造ビューワでは得られない情報も提供されます。例えばレガシー・ドキュメント構造では、コード・テーブル、許可されているループ反復数、および構文の注意事項を提供できます。
実装ガイド
このコードは、http://www.wpc-edi.com/Opens in a new tab で提供されている関連する ASC X12 実装ガイドを識別します。この識別子は、すべてのドキュメント構造およびスキーマにわたって一意です。
セグメント構造の表示
ドキュメント・セグメントの構造を表示するには、前の節に示されている例と類似する任意のページで、そのドキュメント・セグメントの名前をクリックします。そのセグメント内のすべてのフィールドをリストするテーブルが InterSystems IRIS により表示されます。これは [スキーマ・セグメント構造] ページです。
例えば、HIPAA_4010:276 ドキュメント構造内の PER セグメントをクリックすると、InterSystems IRIS では次のページが表示されます。
列は以下のとおりです。
-
[要素] — セグメント内の当該要素にアクセスするために使用する番号 (番号を選ぶ場合)。
-
[説明] — 当該要素の簡単な説明。
-
[データ型] — 当該要素のデータ型を表す 1 文字または 2 文字の略称。詳細は、次のテーブルを参照してください。
-
[必須] — 必須の場合は R、オプションの場合は O が表示されます。
-
[長さ] — 当該要素に含めることができる文字数。1 つの数字のみが表示されている場合は、その数字は文字の最大数を表します。2 つの数字がハイフンで区切られて表示されている場合は、それらの数字は該当する要素に含めることができる文字数の範囲を表します (最少文字数-最大文字数)。
-
[最大繰り返し回数] — 当該要素を繰り返すことができる最大回数。
-
[代替説明] — 当該要素の追加の詳しい説明。
この情報、特に [プロパティ名] 列を使用して、segment:elem という形式で InterSystems IRIS の仮想プロパティ・パスを作成できます。以下は、HIPAA_4010:276 ドキュメント構造内の PER セグメントにある単純な elem 値を含む仮想プロパティ・パスの例です。() ショートカット構文は、繰り返しフィールドで使用可能なすべてのインスタンスを示します。(1) は、最初のインスタンスを示します。
loop2000A().loop2100A().PER:ContactFunctionCode
loop2000A().loop2100A(1).PER:ContactFunctionCode
loop2000A().loop2100A(2).PER:ContactFunctionCode
loop2000A().loop2100A(x).PER:ContactFunctionCode
loop2000A().loop2100A().PER:Name
複合構造の表示
[複合構造] 列で名前を選択すると、そのデータ構造内のすべての要素が表示されます。これは [複合構造] ページです。ここでの列の値は、前の節の列の値と同じです。
異なるカテゴリの選択
X12 標準の特性として、ドキュメント構造は X12 のバージョンによって異なる場合があり、構造の名前と番号が同じであっても同様です。例えば、X12 HIPAA_4010 と X12 HIPAA_5010 の両方で 277 というドキュメント構造が定義されていますが、これらの定義には、セグメントとセグメントの繰り返しでいくつかの差異があります。InterSystems IRIS では、HIPAA_4010:277 と HIPAA_5010:277 というドキュメント構造定義が用意されています。[X12 ドキュメント構造] ページでは、これら 2 つの定義の違いを簡単に確認できます。次の 2 つの図ではこれらの定義の違いを示しています。
X12 ドキュメント・ビューワ・ページの使用法
InterSystems IRIS では、X12 用の [ドキュメントビューワ] ページが用意されています。このページを使用して、X12 ドキュメントを表示、変換、およびエクスポートできます (プロダクション・メッセージ・アーカイブ内のドキュメントまたは外部ファイル)。
このページにアクセスするには、[Interoperability]→[相互運用]→[ASC X12]→[ASC X12 ドキュメント・ビューワ] を選択します。
オプションの選択
表示するドキュメントを指定するには、以下の操作を行います。
-
[ドキュメント・ソース] で、[ファイル]、[メッセージ・ヘッダ ID]、または [メッセージ・ボディ ID] を選択します。
-
表示するドキュメントを指定します。
-
[ファイル] を選択した場合は、[参照] を使用してファイルを選択します。[ファイル・ドキュメント数] に、表示するドキュメント数を入力します。
-
[メッセージ・ヘッダ ID] または [メッセージ・ボディ ID] を選択した場合は、表示するメッセージ・ヘッダまたはメッセージ・ボディの ID を入力します。
-
-
ドキュメントの解析方法を指定します。そのためには、[ドキュメント構造またはスキーマ] で以下のオプションのいずれかを選択します。
-
[ビジネス・サービスから受け取る] — ビジネス・サービスによって割り当てられるスキーマを使用します。これを選択する場合は、ドロップダウン・リストからビジネス・サービスを選択します。
このオプションでは、特定のビジネス・サービスがこのドキュメントに割り当てる DocType を決定できます。
-
[スキーマのカテゴリまたはバージョンを使用] — ドロップダウン・リストからドキュメント・カテゴリを選択します。
-
[特定の DocType を使用] — ドキュメント構造 (<MessageStructure>) の名前を category:structure の形式で入力します。パーサでは、このドキュメント構造が使用されます。
-
[コンテンツの宣言されたバージョン:名前を使用] — ドキュメント内で宣言されているドキュメント・タイプに関連付けられたドキュメント構造を使用します。
-
[オブジェクトの保存された DocType を使用] — ドキュメント本文オブジェクト内で宣言されている DocType を使用します (このオプションは、ファイルからロードされたドキュメントには適用されません)。
-
[なし] — ドキュメントの解析にどの DocType も使用しません。代わりに、未加工のセグメントをいずれもリンクとして表示せずにそのまま表示します。
このオプションでは、特定のデータ・ソースからのドキュメントの解釈をさまざまなスキーマ・カテゴリ・タイプとして試みることによって、そのソースからのドキュメントの処理時にどの DocType を使用するのが適切か決定できます。これを行う理由はさまざまです。例えば、外部アプリケーションを更新する際に、このアプリケーションから送信されるドキュメントの実際のバージョンが変更されているものの、このドキュメントで送信されるタイプ宣言が更新されていない場合があります。また、ドキュメントでカスタム・ドキュメント構造を使用する場合に、スキーマ・ベースとして使用する組み込みカテゴリを決定する場合にも役立ちます。
-
-
必要に応じて、[ドキュメントを変換] をクリックして、変換の詳細を指定します。"変換のテスト" を参照してください。
-
[OK] をクリックします。
ドキュメントの解析
ドキュメントを解析するには、前述のオプションを設定して、[OK] をクリックします。ドキュメント・ビューワの画面右側に以下が表示されます。
-
以下の基本情報が含まれたドキュメントのサマリ。
-
適用されているデータ変換 (該当する場合)
-
ドキュメント ID
-
DocType
-
DocType の説明 (ある場合)
-
セグメントの数
-
親ドキュメントのドキュメント ID (該当する場合)
-
-
ドキュメント構造内のセグメントごとに 1 行が含まれたドキュメント・データ。各行の内容は以下のとおりです。
-
セグメント番号
-
セグメント名 (ISA や DN1 など)
-
要素のコンテンツと区切り文字 (ドキュメントに含まれているもの)
-
当該ドキュメントが選択されたスキーマと一致する場合は、セグメントと要素は関連する構造ページへのリンクとして表示されます。
同じトランザクション・セット識別子コード (ST:1) を使用する複数の X12 DocType 構造の多重度のために、InterSystems IRIS では、ドキュメント・タイプを一意に識別するために、追加の参照識別番号 ST:3、GS:8、または REF:2 を確認し、最初に検出された実装ガイドのバージョン番号を使用します。例えば、HIPAA_4010:837P と HIPAA_4010:837D について見てみましょう。これらのドキュメントのトランザクション・セット識別子はどちらも 837 ですが、それぞれのドキュメントの参照識別番号は異なります。"実装ガイド" を参照してください。
セグメント・アドレスの表示
セグメント・アドレスを表示するには、濃色の列に示されているセグメント名にカーソルを合わせます。ツールヒントに以下の情報が表示されます。
-
仮想プロパティ・パスで使用するセグメント・アドレス
-
このセグメントの説明的な名前
要素アドレスの表示
要素アドレスを表示するには、ドキュメント構造内のフィールドにカーソルを合わせます。ツールヒントに以下の情報が表示されます。
-
仮想プロパティ・パスで使用する element アドレス (数値)
-
仮想プロパティ・パスで使用する element アドレス (名前)
X12 インターチェンジの表示
グループ内とインターチェンジ内でネストされているトランザクション・セットを表示する際は、[Interoperability]→[相互運用]→[ASC X12]→[ASC X12 ドキュメント・ビューワ] ページを使用して、ドキュメント構造を 1 レベルずつ確認できます。
次の画面は、X12 ドキュメント・ビューワを使用して 4010:Interchange ドキュメントを表示した結果を示しています。
ドキュメント・ビューワは、グループ・ドキュメントに <38> という識別子を割り当てています。
X12 インターチェンジ・ドキュメント画面でグループ・ドキュメントのリンクをクリックすると、新しいブラウザ・ウィンドウが開いてそのグループ・ドキュメントが表示されます。最上位レベルの親を表示する [ドキュメントビューワ] ウィンドウは、元のブラウザ・ウィンドウで開かれたままになります。
次の画面は、グループ・ドキュメント <38> へのリンクをクリックした結果を示しています。
単一のインターチェンジ内に 10 を超えるグループがある場合や、単一のグループ内に 10 を超えるトランザクション・セットがある場合は、ドキュメント・ビューワには最初の 5 つのドキュメントと最後の 5 つのドキュメントへのリンクが表示されます。リストの間はテキスト・フィールドになっていて、ここには最初の番号から最後の番号までの範囲の ID 番号を入力することができます。番号を入力し、[その他] をクリックします。新しいブラウザ・ウィンドウが開き、ドキュメントが表示されます。
次の画面は、トランザクション・セット <39> をクリックした結果を示しています。グループまたはインターチェンジに戻るには、それぞれのドキュメント ID 番号のリンクをクリックします。
バッチ・ドキュメント階層でドキュメントの確認を終了したら、最上位レベルの親ドキュメントが元の [ドキュメントビューワ] ウィンドウに残っている状態になるまで、すべてのポップアップ・ブラウザ・ウィンドウを閉じることができます。このウィンドウから、管理ポータルの別のアクティビティに戻ることができます。
変換のテスト
変換をテストするには、以下の操作を行います。
-
[ドキュメントを変換] にチェックを付けます。
-
[データ変換の選択] で、データ変換を選択します。
-
[表示オプションの選択] で、以下のいずれかを選択します。
-
[変換結果のみ] — 変換後のドキュメントのみ表示します。
-
[元のメッセージと結果を一緒に表示] — 元のドキュメントと変換後のドキュメントの両方を表示します。
-
-
次に、以下のいずれかまたは両方の操作を行います。
-
[OK] をクリックして、変換後のドキュメントを表示します。
-
[結果をファイルに保存] をクリックして、変換後のドキュメントをファイルに保存します。この場合は、パスとファイル名も指定します。
デフォルトのディレクトリはアクティブなネームスペースの管理ディレクトリです。
-
X12 クラス
この節では、X12 ドキュメントを操作するために提供されているクラスを参考として列挙します。
項目 | クラス | メモ |
---|---|---|
X12 ビジネス・サービス* | クラス名が示しているように、これらの X12 ビジネス・サービス・クラスのそれぞれで別々のアダプタが使用されます。 | |
X12 ビジネス・プロセス* | EnsLib.MsgRouter.VDocRoutingEngineOpens in a new tab | このクラスは標準の仮想ドキュメント・ビジネス・プロセスです。 |
X12 ビジネス・オペレーション* | クラス名が示しているように、これらの X12 ビジネス・オペレーション・クラスのそれぞれで別々のアダプタが使用されます。 | |
メッセージ | EnsLib.EDI.DocumentOpens in a new tab (ビジネス・ホスト・クラスで自動的に使用されます) | X12 ドキュメントを仮想ドキュメントとして転送するための特殊なメッセージ・クラスです。 |
検索テーブル | EnsLib.EDI.X12.SearchTableOpens in a new tab | X12 ドキュメント専用の検索テーブル・クラスです。 |
検証とバッチ処理 | これら 2 つのクラスを使用して、X12 バッチおよびドキュメントの検証と処理を行えます。これには、応答の生成とバッチの二分割 (検証に合格した子を含むバッチと検証に失敗した子を含むバッチ) が含まれます。 |
*X12 ドキュメントを操作するようにプロダクションを構成すると、管理ポータルで自動的に適切なビジネス・ホスト・クラスが選択されます。
これらのクラスのサブクラスを作成して使用することもできます。
ビジネス・ホスト・クラスには構成可能なターゲットが含まれています。それらのいくつかを下の図に示します。
その他の構成可能なターゲットに関する情報は、設定のリファレンスを参照してください。
カスタム X12 スキーマの作成
カスタム X12 スキーマは以下のいずれかの方法で作成できます。
-
XML エディタを使用して .x12 ファイルを作成する。
-
X12 スキーマ管理ポータル・ページを使用して既存のスキーマをインポートする。[Interoperability] > [相互運用] > [ASC X12] > [ASC X12 スキーマ構造] を選択して、[X12 スキーマ] ページを開きます。
-
IDE で XML ファイルを作成し、そのファイルに拡張子 .x12 を付ける。
以上で、ファイルを編集して、<Category> ブロックに XML 文を追加したり、このブロックから XML 文を削除する準備ができました。編集の基本手順は以下のとおりです。
-
<SegmentStructure> 要素を使用してカスタム・セグメントを定義します。
-
カスタム・セグメントを含むカスタムの <MessageStructure> 要素を定義します。
-
カスタム・メッセージ構造を含むカスタムの <MessageType> 要素を定義します。
-
管理ポータルから新しいカテゴリ定義を表示します。"ポータル・ツール" を参照してください。
カスタム・スキーマ・カテゴリの作成に関する情報は、"プロダクション内での仮想ドキュメントの使用法" の "カスタム・スキーマ・カテゴリの作成" を参照してください。
X12 検索テーブルの定義
X12 検索テーブル・クラスの EnsLib.EDI.X12.SearchTableOpens in a new tab は、自動的に X12 ドキュメント ID のインデックスを作成し、Identifier という名前を付けます。
検索する項目を増やす場合は、サブクラスを作成できます。サブクラスは、Identifier プロパティに加えて、検索テーブルを機能させるインフラストラクチャを継承します。詳細は、"プロダクション内での仮想ドキュメントの使用法" の "検索テーブル・クラスの定義" を参照してください。
すべてのタスクを、対象のプロダクションが含まれているネームスペースで実行する必要があります。予約パッケージ名は使用しないでください。"プロダクションの開発" の "予約パッケージ名" を参照してください。"プロダクション内での仮想ドキュメントの使用法" の "検証ロジックの上書き" も参照してください。