メッセージ・アナライザ
メッセージ・アナライザは、以下を実行できるコマンド行ユーティリティです。
-
HL7 メッセージをスキャンして、指定されたドキュメント構造と比較し、メッセージに一致する新しいドキュメント構造を派生させる。通常、派生されたドキュメント構造には、スキャンされたメッセージで見つかった Z セグメントが含まれます。
-
指定されたドキュメント構造に照らしてメッセージを検証し、オプションでカスタム・スキーマのセグメント、データ構造、およびコード・テーブルを更新し、失敗メッセージに対応できるようにする。
メッセージ・アナライザでは以下の用語を使用します。
用語 | 説明 |
---|---|
ドキュメント構造 | ADT_01 などの HL7 メッセージ構造。管理ポータルでは、スキーマのドキュメント構造は [DocType 構造] タブに表示されます。 |
HL7 構成 | 管理ポータルで定義されているスキーマ、ドキュメント構造、セグメント、データ構造、およびコード・テーブルの総称です。 |
ライブラリ・スキーマ | 管理ポータルで利用可能なベース・スキーマ (例えば 2.7.1)。カスタム・スキーマは、これらのライブラリ・スキーマの 1 つに基づきます。 |
メッセージ・アナライザの実行
メッセージ・アナライザを実行するには、以下の手順に従います。
-
InterSystems ターミナルを開きます。
-
HL7 メッセージをルーティングする HL7 相互運用プロダクションが含まれているか、これから含まれる予定のネームスペースに移動します。これは、カスタム・スキーマが保存されるネームスペースです。例えば、以下のように入力します。
set $namespace="MyRoutingNamespace"
-
以下のように入力します。
Do ##class(EnsLib.InteropTools.HL7.MessageAnalyzer).Interactive()
メッセージ・アナライザにより、指定できるオプションを示す一連のプロンプトが表示されます。任意のプロンプトで ^ と入力すると、コンテキストに応じて、前の入力に戻るかプログラムを終了します。メニューの中で適用されるオプションが 1 つだけの場合、メニューは表示されず、そのオプションが自動的に選択されます。プロンプトで <value> 構文を使用している場合、Enter キーを押すと、value がプロンプトへの回答として使用されます。
初期設定
メッセージ・アナライザを初めて実行する場合、ワークスペース・フォルダ、および HL7 スキーマとドキュメント構造の情報を指定するよう求めるプロンプトが表示されます。
メッセージ・アナライザを次回実行するときには、初期設定はスキップされ、メイン・メニューで起動します。ワークスペース・フォルダを切り替える必要がある場合は、別のメッセージをロードするか、別のスキーマ/ドキュメント構造を使用して、メイン・メニューから [ワークスペースの設定] オプションを選択します。
ワークスペース・フォルダ
メッセージ・アナライザを初めて実行すると、ワークスペース・フォルダを指定するよう求めるプロンプトが表示されます。
Workspace folder:
現在存在しないファイル・システム・フォルダ (ディレクトリ) の名前を入力します。 このフォルダはスクラッチ・ワークスペースとして使用されます。初期設定時には、ファイルが上書きされるのを避けるため、既存のフォルダを入力すると拒否されます。後で設定を再実行する場合は、既存のワークスペースを使用することも、新しいワークスペースを作成することもできます。
ソース・フォルダ
以下のプロンプトが表示され、ソース・ファイルまたはソース・フォルダを指定するよう求められます。
Source file or folder:
HL7 メッセージ・ファイル、または HL7 メッセージ・ファイルが含まれるフォルダを入力します。HL7 メッセージ・ファイルは、各行が 1 つのセグメントを表すテキスト・ファイルです。 1 つのメッセージ・ファイルに任意の数のメッセージを含めることができます。新しいメッセージが始まる位置は、MSH セグメントを使用して検出されます。ファイルにメッセージのバッチを含めることもできます。
スキーマ
以下のプロンプトが表示され、スキーマを指定するよう求められます。
Schema:
エントリは以下のいずれかである必要があります。
-
既存のカスタム・スキーマ。
-
既存のライブラリ・スキーマ (例えば、2.4)。このスキーマを直接使用することはできないため、ライブラリ・スキーマに基づく新しいカスタム・スキーマの名前を指定するよう求めるプロンプトが表示されます。
-
新しいカスタム・スキーマ。カスタム・バージョンの基にする既存のライブラリ・スキーマを指定するよう求めるプロンプトが表示されます。
メッセージ・アナライザは、新しいドキュメント構造を派生させ、入力メッセージに基づいてこのカスタム・スキーマに変更を加えます。また、セグメント、データ構造、およびコード・テーブルを検証および変更し、失敗メッセージに対応できるようにする場合は、ライブラリ・スキーマではなくカスタム・スキーマも更新します。
ドキュメント構造
以下のプロンプトが表示され、ドキュメント構造を指定するよう求められます。
Existing document structure name, or a new one to be copied from another schema:
カスタム・スキーマに存在するドキュメント構造の名前 (例えば、ADT_A01)、または他のスキーマに存在するドキュメント構造の名前を入力します。 カスタム・スキーマ内にあるドキュメント構造のリストから選択するには、ドキュメント構造の最初の文字と、それに続いて ? を入力します。例えば、A? と入力すると、ADT_A01 や ADT_A02 が表示されます。新しいドキュメント構造の名前を入力した場合、そのドキュメント構造をカスタム・スキーマにコピーするため、ドキュメント構造が存在するライブラリ・スキーマを指定するよう求めるプロンプトが表示されます。
メッセージ・アナライザは、新しいドキュメント構造を派生するときに、入力 HL7 メッセージの構造を、指定されたドキュメント構造と比較します。また、メッセージを検証するときに、指定されたドキュメント構造のセグメント、データ構造、およびコード・テーブルをメッセージ内のものと比較します。
管理ポータルでは、ドキュメント構造はスキーマの [DocType 構造] タブに表示されます。
メイン・メニュー
メッセージ・アナライザの初期設定を少なくとも 1 回完了すると、メイン・メニューが表示されます。
[1] Derive new document structures
[2] Validate messages, optionally fixing the configuration
[3] View history of fixes to the configuration (validation fixes only)
[4] Setup Workspace
[新規ドキュメント構造の派生] オプションを選択すると、入力メッセージが、設定中に指定されたドキュメント構造と照合され、メッセージの構造に基づいて新しいドキュメント構造が派生されます。
[メッセージを検証し、オプションで構成を修復] オプションを選択すると、入力メッセージが、指定されたドキュメント構造に照らして比較され、失敗メッセージに対応できるようにして検証に合格するためにスキーマの変更が提案されます。
[構成の修正履歴を表示] オプションを選択すると、カスタム・スキーマに加えられた変更のリストが表示されます。
[ワークスペースの設定] オプションを選択すると、初期設定プロセスが再実行され、新しいワークスペース、カスタム・スキーマ、またはドキュメント構造を指定できます。
新しいドキュメント構造の派生
[新規ドキュメント構造の派生] オプションを選択すると、入力 HL7 メッセージが、設定中に指定されたドキュメント構造に対して照合され、メッセージの構造に基づいて新しいドキュメント構造が派生されます。例えば、派生されたドキュメント構造には、メッセージで使用されている Z セグメントが含まれる場合があります。
メッセージの分析プロセスには時間がかかる可能性があるため、[新規ドキュメント構造の派生] オプションでは、スキャンするメッセージの割合を入力するよう求めるプロンプトが表示されます。
Enter a number between 1 and 100, or ^ to quit.
結果は以下のようになります。
Begin document structure derivation run
Loading document structure definition
Match messages to document structure: ORU_R01
Derive new document structure
Match messages to derived document structure
Finished.
Summary Report for workspace /Users/MSmith/wf2temp
Schema is MySchema24
ALL: 19 matched, 53 unmatched, derived 1 new document structures
新しいドキュメント構造が派生されたら、新しいドキュメント構造のセグメントが表示されます。この場合、カスタム・スキーマのドキュメント構造を更新するかどうかを尋ねられます。
Updating MySchema24:ORU_R01 Would you like to update the document structure in the database? (Y/N):
メッセージの検証と構成の修正
メッセージ・アナライザの [メッセージを検証し、オプションで構成を修復] オプションは、カスタム・スキーマのセグメント、データ構造、およびコード・テーブルに照らして HL7 メッセージを検証します。カスタム・スキーマにこれらが存在しない場合は、カスタム・スキーマの基になっているライブラリ・スキーマに照らして検証します。検証が完了すると、メッセージ・アナライザは、入力メッセージのセグメント、データ構造、およびコード・テーブルに基づいてカスタム・スキーマを変更するよう提案し、メッセージがスキーマに対する検証に合格するようにします。
Workflow/2 - Validation
[1] Select Field Validation [ ]
[2] Select Component Validation [ ]
[3] Select Code Table Validation [ ]
[4] Start Validation
Enter one of the above options, ^ to go back a level:
メッセージ・アナライザでそのタイプの検証を実行するよう指定するには、最初の 3 つのエントリの 1 つを選択します。メニュー行が "[ ]" で終わる場合、その項目は検証で使用されません。メニュー行が "[X]" で終わる場合、その項目は検証で使用されます。エントリを 1 つ以上選択したら、4 を入力して検証を開始します。
フィールドの検証では、メッセージ内のセグメントが、指定されたドキュメント構造のセグメント定義に適合しているかどうかが確認されます。コンポーネントの検証では、メッセージ内のデータ構造が、ドキュメント構造のデータ構造定義に適合しているかどうかが確認されます。コード・テーブルの検証では、メッセージ内のコード・テーブルがドキュメント構造内のコード・テーブルに一致するかどうかが確認されます。
検証が完了すると、以下のようなレポートが表示されます。
Validating messages ..
72 messages: 18-ok/54-failed (was 34/38) - 25%/75% (was 47%/53%)
105 auto-fixable validation error(s) found
カスタム・スキーマの修正
検証後、メッセージ・アナライザによって特定された実行可能な修正を行うかどうかを尋ねるプロンプトが表示されます。実行可能な修正が複数ある場合は、個々にドリルダウンして、実行する修正を選択するよう求めるプロンプトが表示されます。修正を選択すると、その修正はすぐには実行されずキューに追加されます。修正を選択し終わったら、キュー内のすべての修正を受け入れるかどうかを尋ねるプロンプトが表示されます。
実行可能な修正のサブセットを受け入れる場合は、プロンプトを使用して、実行する修正を指定し、修正を適用するかどうかを尋ねるプロンプトが表示されるまで ^ を入力します。
修正のカテゴリの選択
複数のタイプの検証 (フィールド、コンポーネント、およびコード・テーブル) を実行した場合、実行可能な修正が複数のカテゴリに対して検出される可能性があります。この場合、どのタイプの修正を実行するかを指定するよう求めるプロンプトが表示されます。実行可能な修正が 1 つのカテゴリ (セグメント、データ構造、またはコード・テーブル) でのみ見つかった場合、このプロンプトはスキップされます。
Select a category of fixes to process
[1] 70 code table(s)
[2] 7 data structure(s)
[3] 28 segment structure(s)
Enter one of the above options, ^ to go back a level:
構造、セグメント、またはテーブルの選択
複数のセグメント、データ構造、またはコード・テーブルに対して実行可能な修正がある場合、実行する修正を選択するよう求めるプロンプトが表示されます。修正の 1 つを選択すると、その修正はリストから削除されて、別の修正を選択できます。修正の選択が完了し、一部の修正を受け入れたくない場合は、修正を受け入れるためのプロンプトが表示されるまで、^ を入力します。
例えば、複数のデータ構造に対する修正があるとします。以下のようなプロンプトが表示されます。
Select a data structure to process
[1] 2.4:CE coded element (1)
[2] 2.4:HD hierarchic designator (1)
[3] 2.4:ID coded value for HL7 defined tables (1)
[4] 2.4:IS coded value for user-defined tables (1)
[5] 2.4:MSG Message Type (1)
[6] 2.4:PL person location (1)
[7] 2.4:ST string data (1)
Enter one of the above options, ^ to go back a level:
キューへの修正の追加
ほとんどの場合、セグメント、データ構造、またはコード・テーブルを選択するたびに、修正を受け入れるかどうかを尋ねるプロンプトが表示されます。Y を入力すると、修正はすぐには適用されず、修正のキューに追加され、最終確認を行ったときに適用されます。同じコード・テーブル、セグメント、またはデータ構造に対する修正が複数ある場合は、修正をキューに追加する前に、実行する修正を選択するよう求めるプロンプトが表示されます。
修正の実行
実行可能な修正をすべてキューに追加するか、^ を使用して修正の追加を完了したことを示すと、キューに入っている修正をカスタム・スキーマに適用するかどうかを尋ねるプロンプトが表示されます。まだカスタム・スキーマに存在しない項目は、変更を実行する前に、組み込みのライブラリ・スキーマからコピーされます。
例えば、以下のような変更のキューをカスタム・スキーマに適用するかどうかを尋ねるプロンプトが表示される場合があります。
Items queued for fixes to HL7 configuration:
*Do you want to add code 'Z' to code table 2.4:1 (Administrative sex)
*Do you want to add code 'EC' to code table 2.4:131 (!Copied from 2.5 - Contact Role)
*Do you want to add 3 dummy components to data structure 2.4:CE (coded element)
*Do you want to add 1 dummy components to data structure 2.4:IS (coded value for user-defined tables)
*Do you want to increase the maximum size for field 2 (EncodingCharacters) in segment structure 2.4:MSH (Message Header) from 4 to 5
*Do you want to make field 7 (DateTimeOfMessage) in segment structure 2.4:MSH (Message Header) optional
Fixes marked with a '*' apply to library items, which cannot be updated directly
Do you want to apply these fixes? (Y/N):
変更の理解
関連する修正を実行する (例えば、新しいコードをコード・テーブルに追加する) 前に、メッセージ・アナライザは以下を実行しなければならない場合があります。
-
項目 (例えば、コード・テーブル) をカスタム・スキーマにコピーする
-
カスタム項目を、以前に参照していたライブラリ項目ではなく他のカスタム項目を参照するように更新する
これらの変更は、修正を適用することを確認した後、更新レポートに詳細に記述されます。 コピー、参照の更新、またはプリンシパルの変更はそれぞれ専用の行に詳細に記述されます。
Path: で始まる行には、ドキュメント構造、セグメント構造、データ構造、およびコード・テーブルの更新の概要が記述されます。このような行の + は、その項目がカスタム・スキーマにコピーされたことを意味し、* は、指定された参照が更新されたことを意味します。
例えば、ORU_R01 --> PID -*-> XTN+ -*-> 202+ のパスは以下を意味します。
-
カスタム・ドキュメント構造 ORU_R01
-
カスタム・セグメント PID : XTN への参照が更新された
-
データ構造 XTN : カスタム・スキーマにコピーされ、202 への参照が更新された
-
コード・テーブル 202 : カスタム・スキーマにコピーされた
パスには、検証で特定されたプリンシパル更新ターゲットは記述されません。上の例では、これは、コード・テーブルへのコードの追加になります。
修正の履歴
メイン・メニューから [構成の修正履歴を表示 (検証の修正のみ)] オプションを選択すると、メッセージ・アナライザが HL7 構成のカスタム・スキーマに対して実行した変更のリストを生成できます。オプションの 1 つを選択して、プロンプトに従います。履歴をファイルに書き込むためのオプションが表示されます。
Workflow/2 History of Configuration Changes
[1] List all changes
[2] List changes made today
[3] List changes for a range of dates
Enter one of the above options, ^ to go back a level:
ワークスペースの設定
メイン・メニューから [ワークスペースの設定] オプションを選択すると、新しいワークスペースの作成、新しい一連のメッセージのインポート、またはスキーマやドキュメント構造の変更を行うことができます。メッセージ・アナライザが再び起動し、初めて起動する場合と同じように、ワークスペース、メッセージ・ソース、スキーマ、およびドキュメント構造を指定するよう求めるプロンプトが表示されます。既存のワークスペースのパスを入力した場合、現在の設定で続行するか、それともパスをクリアして新しい一連のメッセージをそこにコピーするかを尋ねられます。