HL7 ビジネス・サービスの設定
概要
HL7 ビジネス・サービスには次のような設定があります。
グループ | 設定 | 参照先 |
---|---|---|
基本設定 | [ターゲット構成名] | "Ensemble 仮想ドキュメント" の “ビジネス・サービスに関する設定” |
[Ackターゲット構成名]、[メッセージ・スキーマ・カテゴリ] | このトピックの節 | |
接続設定 | [Framing] | このトピックの節 |
追加設定 | [検索テーブル・クラス] | "Ensemble 仮想ドキュメント" の “ビジネス・サービスに関する設定” |
[ローカル・ファシリティ・アプリケーション]、[Ackモード]、[Ackコミットコード使用]、[インバウンドACKを無視]、[NACK ERR追加]、[NACKエラーコード]、[バッチハンドリング]、[デフォルト文字エンコーディング]、[DocTypeResolution]、[応答を保存] | このトピックの節 |
残りの設定は、すべてのビジネス・サービスに共通のものであるか、アダプタのタイプによって異なるものであるかのどちらかです。詳細は、以下を参照してください。
-
"Ensemble プロダクションの構成" の “すべてのビジネス・サービスに含まれる設定”
-
"Ensemble でのファイル・アダプタの使用法" の “ファイル受信アダプタの設定”
-
"Ensemble での HTTP アダプタの使用法" の “HTTP 受信アダプタの設定”
-
"Ensemble での FTP アダプタの使用法" の “FTP 受信アダプタに関する設定”
EnsLib.HL7.Adapter.TCPInboundAdapterOpens in a new tab と呼ばれる特定用途のアダプタの違いは、[JobPerConnection] が偽に設定されていることで、これは通常 HL7 に適しています。
HL7 で最も重要な設定は以下に挙げるものです。
-
[プール・サイズ] — デフォルト値の 1 を設定すると、FIFO (先入れ先出し法) 処理が可能になります。多くの場合、複数の患者の動態の更新は順に受信する必要があります。例えば、多くのアプリケーションでは、ADT 登録メッセージを受け取ってから指示メッセージを処理し、指示メッセージの後に結果メッセージを受け取る必要があるということになります。
-
[カテゴリ] — このテキスト・ラベルによって、構成項目を構成ダイアグラム内で並べ替えることができます。
-
[タイムスタンプ追加] — ([ファイル] のみ) [アーカイブパス] 内のファイル名にタイム・スタンプを付加します。
-
[アーカイブパス] — ([ファイル] および [FTP] のみ) HL7 メッセージのアーカイブ先を指定します。
-
[呼び出し間隔] — 次の入力を検索するまでに待機する秒数。デフォルトは 5 秒です。最小値は 0.1 秒です。
[Ackモード]
これにより、受信した HL7 メッセージに応答して HL7 確認応答メッセージを発行するための形式と規則を確立できます。ビジネス・サービスの場合、この設定には以下のテーブルに示す値のいずれかを指定できます。
Ack モード | 意味 |
---|---|
[応答しない] | ACK を返しません。 |
[即時] | 受信メッセージを受け取るとすぐにコミット ACK 応答メッセージを返します。何も指定されていない場合、これがデフォルトになります。 |
[アプリケーション] | メッセージが検証を通った場合、ターゲット・アプリケーションからの ACK 応答メッセージを待機し、ACK が到着したらこれを返します。
呼び出し側は応答を要求しているにもかかわらず、いずれかのターゲットから応答を返すように Ensemble ルーティング・エンジンが構成されていない場合、Ensemble では ACK オブジェクトまたは NACK オブジェクトを作成して呼び出し側に返します。検証に失敗し、[Ackモード] が Application である場合、Ensemble はターゲット・アプリケーションとは連絡をとりません。その代わり、呼び出し側に直ちに Validation NACK を送信します。 |
[MSH 指定] | MSH ヘッダ・フィールド 15 および 16 の要求に応じて ACK 応答メッセージを返します。いずれかのフィールドに含まれる制御コードは、以下の 4 つのうちの 1 つです。
|
Byte* | 受信メッセージを受け取るとすぐに、ACK メッセージではなく、1 バイトの ACK コードを返します。ASCII 6 は OK を意味し、ASCII 21 はエラーを意味します。このオプションは組み込みの HL7 ビジネス・サービス (TCP、ファイル、HTTP など) では使用できませんが、[Ackモード] 設定を上書きせずに EnsLib.HL7.Service.StandardOpens in a new tab をサブクラス化するカスタム・ビジネス・サービスを記述すると使用可能になります。 |
* Ensemble ビジネス・オペレーションは自動的に、シングル・バイト ASCII 6 をコミット・コードが AA の HL7 ACK として処理し、ASCII 21 をコミット・コードが AE の HL7 ACK として処理します。
ACK 処理の概要は、前述した “HL7 確認応答 (ACK) モード” を参照してください。
[ACK ターゲット構成名]
([ファイル] および [FTP] のみ) TCP ビジネス・サービスと異なり、ファイル・ビジネス・サービスおよび FTP ビジネス・サービスには、HL7 確認応答メッセージ (ACK または NACK) を送信するための常駐接続はありません。このため、ファイル・ビジネス・サービスおよび FTP ビジネス・サービスのデフォルトの [Ackモード] は Never であり、通常はこれが適切です。ただし、ファイル・ビジネス・サービスまたは FTP ビジネス・サービスから ACK を送信する場合は、[Ackターゲット構成名] 設定を使用して、ACK メッセージを受信する Ensemble ルーティング・プロセスまたはビジネス・オペレーションを特定します。
詳細は、"[Ackモード]" を参照してください。ACK 処理の概要は、前述した “HL7 確認応答 (ACK) モード” を参照してください。
[NACK ERR追加]
真の場合は、NACK メッセージを生成する際に、Ensemble のエラー・コードとエラー・テキストを含む ERR セグメントを付加します。偽の場合は、NACK メッセージに内部エラーの状態情報を埋め込みません。
ACK 処理の概要は、前述した “HL7 確認応答 (ACK) モード” を参照してください。
[バッチ処理]
受信メッセージ・バッチの取り扱い方法。選択項目は、以下のとおりです。
-
[バッチ全体] — メッセージ・ドキュメントを個別に処理しません。累積してバッチ全体を 1 つの複合ドキュメントとして送信します。
-
[1 つのセッションのバッチ] — 1 つのセッションでバッチ内のすべてのメッセージをまとめて転送します。セッションには、バッチ・ヘッダ・セグメントおよびトレーラ・セグメントを表すオブジェクトが含まれます。これがデフォルトです。
-
[複数のセッションのバッチ] — バッチ内の各メッセージを個別のセッションで転送します。各セッションには、バッチ・ヘッダ・セグメントおよびトレーラ・セグメントを表すオブジェクトが含まれます。
-
[個別] — バッチ内の各子メッセージを個別のセッションで転送します。バッチ・ヘッダ・セグメントおよびトレーラ・セグメントを表すオブジェクトは転送されません。
詳細は、“HL7 バッチ・メッセージ” を参照してください。
[デフォルト文字エンコーディング]
受信 HL7 メッセージの文字エンコード。Ensemble は、自動的に、文字をこのエンコードから変換します。
UTF-8、Latin1、および Ensemble サーバにインストールされているその他の NLS 定義によるエンコードが使用可能です。値 Native は、Ensemble サーバのデフォルト・エンコードを使用することを意味します。Ensemble 変換テーブルを直接使用することもできます。そのためには、値 @tablename (tablename はテーブルの名前) を使用します。
デフォルトでは、受信 HL7 メッセージの MSH:18 (文字セット) フィールドが空でない場合、Ensemble はこの設定の代わりにその値を使用します。Ensemble が MSH:18 を無視してこの設定を代わりに使用するように強制するには、設定値の先頭に ! (感嘆符) 文字を付加します。例 : !UTF-8
デフォルト値はアダプタによって異なります。
Caché 内の文字変換に関する背景情報は、"Caché プログラミング入門ガイド" の “ローカライズのサポート” を参照してください。
[DocTypeResolution]
MSH:9 からのメッセージ・タイプに基づいた DocType の解決方法を指定します。以下のいずれかを選択します。
-
[標準] — 有効な [メッセージ・スキーマ・カテゴリ] の値と、対応するスキーマ・カテゴリ内を MSH:9 メッセージ・タイプ値で検索して検出されたメッセージ構造名とを組み合わせます。これがデフォルトです。
-
[9.3 を無視] — [標準] と似ていますが、MSH:9 が 3 ピース以上で構成されている場合、追加のピースは無視されます。一部のスキーマは 3 部分のタイプ名で構成されているため、サブピースがない場合にはタイプ名の一部としてピース 3 を使用するのが標準の動作です。
-
[9.3 を使用] — [標準] と似ていますが、MSH:9 が 3 ピース以上で構成されている場合、適用可能なスキーマ・カテゴリ内のドキュメント構造のリテラル名として追加のピースが使用されます。メッセージは選択されたスキーマ・カテゴリに構造が存在しない MSH:9.3 値を添付して着信することがあるため、慎重に使用します。
-
[リテラル] — 有効な [メッセージ・スキーマ・カテゴリ] の値を、メッセージの構造名と解釈されたリテラル MSH:9 メッセージ・タイプ値と組み合わせます。メッセージ・タイプごとに対応する構造の定義を持つカスタム・スキーマのみを使用します。
[Framing]
HL7 ビジネス・サービスによる受信 HL7 メッセージ・パケットの変換方法を制御します。使用する値が不明な場合は、HL7 ビジネス・サービスのデフォルトの Flexible フレーミングを受け入れます。
この設定で有効な値を以下のテーブルに示します。
フレーミング・タイプ | 受信/送信 | 意味 |
---|---|---|
[Flexible] | 受信 | 受信データの内容からフレーミング・スタイルを決定します。 |
[なし] | 両方 | フレーミングしません。文字列 MSH で始まる各行から、新しいメッセージが始まります。 |
[MLLP] | 両方 | 最下位プロトコル — ASCII 11 接頭語および ASCII 28 の後に ASCII 13 が続くサフィックスによって、各 HL7 メッセージをフレーミングします。 |
[MLLP[nn]/[mm]] | 両方 | 非標準の ASCII 値を使用した MLLP。nn によって指定された ASCII 文字値で構成される接頭語を使用して、各 HL7 メッセージをフレーミングします。また、mm によって指定された ASCII 文字値と後続の ASCII 13 (復帰文字) で構成されるサフィックスも付加します。 |
[AsciiLF] | 両方 | ASCII 10 (改行文字) によってメッセージをフレーミングし、各メッセージとその後続のメッセージを区切ります。 |
[AsciiCR] | 両方 | 追加の ASCII 13 (復帰文字) によってメッセージをフレーミングし、各メッセージとその後続のメッセージを区切ります。 |
[Ascii[nn]] | 両方 | サフィックスによってメッセージをフレーミングし、各メッセージとその後続のメッセージを区切ります。このサフィックスは nn によって指定される ASCII 文字値で構成されます。 |
[Ascii[nn]/[mm]] | 両方 | 各メッセージの前に接頭語文字を付加して、メッセージをフレーミングします。この接頭語は nn によって指定される ASCII 文字値で構成されます。また、mm によって指定された ASCII 文字値で構成されるサフィックスも付加しますが、末尾に ASCII 13 は付けません。 |
[LLP] | 両方 | (廃止) 下位レベル・プロトコル — 冗長なチェックサム・ブロックで各 HL7 メッセージをフレーミングします。 |
[MsgEnvelope] | 送信 | メッセージの Envelope プロパティが存在する場合は、このプロパティを逐語的に使用します。エンベロープに文字列が <!--HL72MSG--> が存在する場合、この文字列はメッセージ・コンテンツに置換されます。存在しない場合は、エンベロープ・テキストの後にメッセージが続きます。 |
[MLLPMsgEnvelope] | 送信 | MsgEnvelope と同様ですが、さらに MLLP 接頭語とサフィックスによってエンベロープ内でメッセージを囲みます。 |
フレーミング・タイプが MLLP の場合、Ensemble は自動的に終了フレーミングの前にメッセージ内で発生する復帰 (ASCII 13) を検出します。これは、空白行がメッセージを区切るために使用されているのではないことを Ensemble に示します。これにより Ensemble は空白行がメッセージ・コンテンツの一部であり、無視しても問題がないものと見なします。
複数の文字を指定できます。例えば、HL7 メッセージで、メッセージの開始に $Char(2)、メッセージの終了に $Char(3,4) などの非標準のフレーミングを必要とする場合は、以下のように Ascii[nn]/[mm] フレーミング・オプションを使用できます。
Ascii2/3,4
[Framing] フィールドに数値を入力する際は、数値に ASCII 値を指定する必要があります。例えば、小文字の x は Ascii'x' ではなく Ascii120 として入力します。
[インバウンドACKを無視]
真の場合、ビジネス・サービスは受信 ACK メッセージを無視し、ACK フィードバック・ループの作成を回避します。
ACK 処理の概要は、前述した “HL7 確認応答 (ACK) モード” を参照してください。
[ローカル・ファシリティ・アプリケーション]
このビジネス・サービスを介して HL7 メッセージを受け取る機能とアプリケーションを表す、コロンで区切られた LocalFacility:LocalApplication コード。ビジネス・サービスが独自の ACK を作成する場合、[ローカル・ファシリティ・アプリケーション] は ACK メッセージの SendingFacility:SendingApplication コードを指定します。独自の ACK を作成しない場合、この設定は無視されます。
[メッセージ・スキーマ・カテゴリ]
受信メッセージ・タイプに適用して、完全な DocType 仕様を生成するカテゴリ。ドキュメント・タイプ名 Name (MSH:9) と組み合わせると、MessageType 仕様を生成できます。Ensemble はこの仕様を使用して、指定された HL7 スキーマ・カテゴリの MessageTypes セクションにある MessageStructure / DocType を検索します。
この設定では、複数のタイプ名をカンマ区切りリストで指定することもできます。それぞれのタイプ名を含む HL7 メッセージに適用する DocTypeCategory の値または完全な DocType の値も、このリストでタイプ名に = で続けて指定できます。タイプ名の一部分を指定してその末尾にアスタリスク (*) を付けると、名前がその一部分で始まるすべてのタイプが一致します。
HL7 メッセージ・オブジェクトの DocType プロパティ
例 : MessageSchemaCategory='2.3.1, ADT_*=2.5, BAR_P10=2.4, ORM_O01_6=2.4:RDE_O01'
DocType 割り当ては、[検証] または [テーブル・クラス検索] のインデックス付けに必要な場合があることに注意してください。
HL7 ビジネス・サービスのカスタム・スキーマ定義がまだ準備できていない場合、現時点ではこのフィールドを空白にしておくことができます。ただし、ルーティング・プロセスの検証も無効にしない限り、これをずっと空白のままにしないでください。空白のままにすると検証エラーが自動的に発生します。“検証” を参照してください。
[NACKエラーコード]
受信メッセージの処理でエラーが発生した場合にこのサービスによって生成される NACK メッセージの MSA:1 内のエラー・コードを制御します。このデフォルト値は ContentE です。この場合、メッセージ・コンテンツに関するエラーにはコード E が返され、メッセージを処理しようとしたときに発生したシステム・エラーにはコード R が返されます。
この区別は重要です。なぜなら、システム・エラーの場合には、リモート・クライアントが後で再試行しても同じエラーが発生しないように解決されることが期待され、メッセージ・コンテンツ・エラーや検証エラーの場合には、ソースにおける修正が要求され、同じフォームで再試行する価値がなくなることが期待されるためです。クライアント・システムによっては、別のエラー時動作が期待または要求される可能性もあるため、Ensemble にはさらに 3 つの動作が用意されています。以下のテーブルで、これら 4 つのオプションについて説明します。
コード | 意味 |
---|---|
ContentE | メッセージ・コンテンツに関するエラーの報告には MSA エラー・コード E を使用し、(再試行可能な) システム・エラーによる拒否にはコード R を使用します。 |
ContentR* | コンテンツ・エラーには R を返し、システム・エラーには E を返します。 |
AllE | すべてのコンテンツ・エラーおよびシステム・エラーに対して E を返します。 |
AllR | すべてのコンテンツ・エラーおよびシステム・エラーに対して R を返します。 |
* 旧バージョンの Ensemble では、ContentR の動作が排他的に使用されていました。
ACK 処理の概要は、前述した “HL7 確認応答 (ACK) モード” を参照してください。
[応答を保存]
リモート・システムに返信される応答メッセージのコピーを保存するかどうか指定します。オプションで、構成された検索テーブル・クラスがあればそれを使用してインデックスを割り当てるかどうかも指定できます。以下のいずれかを選択します。
-
[なし] — 応答メッセージを保存したりインデックスを割り当てません。
-
[NotOKs] — 単純な OK ACKメッセージ以外の応答のみを保存します。たとえば、エラー NACKS およびクエリの応答は保存します。
-
[すべて] — リモート・システムへ送信されたすべての応答メッセージのコピーを保存します。
-
[IndexNotOKs] — 単純な OK ACK メッセージ以外の応答を保存し、さらに構成された検索テーブルを使用して応答メッセージにインデックスを割り当てます。このクラスの IndexReplies、SaveOKACKs、または IndexACKs パラメータを上書きしている場合を除き、これがデフォルトの動作になります。IndexReplies、SaveOKACKs、およびIndexACKs は現在では廃止されていることに注意してください。
-
[IndexAll] — すべての応答メッセージのコピーを保存し、さらに構成された検索テーブルを使用して応答メッセージにインデックスを割り当てます。
[Ackコミットコード使用]
真または偽。真の場合、HL7 メッセージ・バージョン 2.3 以降の ACK メッセージを作成する際、ビジネス・サービスは MSA セグメントの AcknowledgmentCode フィールドに拡張モードの ACK コミット・コードのいずれかを配置します。
HL7 ビジネス・サービスには、[メッセージ・スキーマ・カテゴリ] が 2.3 以降の場合に適用される [Ackコミットコード使用] 設定があります。この設定は真または偽を取ります。真の場合、HL7 メッセージ・バージョン 2.3 以降の ACK メッセージを作成する際、ビジネス・サービスは MSA セグメントの AcknowledgmentCode フィールドに 拡張モードの ACK コミット・コードのいずれかを配置します。このコードは、以下の 2 文字のシーケンスのいずれかになります。
コード | 元のモードでの意味 | 拡張モードでの意味 |
---|---|---|
AA | アプリケーションの受け入れ | アプリケーション確認応答 : 受け入れ |
AE | アプリケーション・エラー | アプリケーション確認応答 : エラー |
AR | アプリケーションの拒否 | アプリケーション確認応答 : 拒否 |
CA | — | 受け入れ確認応答 : 受け入れのコミット |
CE | — | 受け入れ確認応答 : エラーのコミット |
CR | — | 受け入れ確認応答 : 拒否のコミット |
ACK 処理の概要は、前述した “HL7 確認応答 (ACK) モード” を参照してください。