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