別のアフィニティ・ドメインのドキュメントのクエリと取得 (XCA)
IHE は、共通の IHE インフラストラクチャを共有する医療システムのアフィニティ・ドメインという考えをサポートしています。アフィニティ・ドメインは、RHIO、IDN、または他の何らかの組織である場合があります。各アフィニティ・ドメインは 1 つのドキュメント・レジストリを持ち、複数のドキュメント・リポジトリを持つ場合があります。
インターシステムズ製品は、XCPD Cross-Gateway Patient Discovery トランザクションを介して、他のアフィニティ・ドメインで患者識別子を検索できます。続いて、この患者識別子を使用し、XCA Cross-Gateway Query トランザクションを介して、ドキュメント・レジストリに対してクエリを実行し、ドキュメントのリストを要求できます。その後、XCA Retrieve Document Set トランザクションを介して、指定されたリポジトリから保存済みのドキュメントを 1 つ以上取得できます。
外部から見ると、XCA は、患者探索以外の点では基本的に XDS と同じです。XCA は XDS と同じメッセージング・インフラストラクチャを使用しており、ドキュメント・クエリでローカル・リポジトリと他のアフィニティ・ドメインの両方を検索するようにインターシステムズ製品を設定できます。
この章では、以下のトピックについて説明します。
XCA クエリのメッセージ・トレース
以下の図に、アノテーション付きの XCA クエリのメッセージ・トレースを示します。ここには、患者探索 (XCPD) およびドキュメント・クエリが示されています。
図に示されているトレース操作は、トレース内の中間処理の各段階を可視化するユーティリティです。図中の番号は、以下の手順の各段階に一致します。この手順の最初の 3 段階と最後の 3 段階は別のセッションで実行され、基本的に XDS.b クエリ・トランザクションの段階と同じです。
XCA クエリの手順
インターシステムズ製品における XCA クエリ・トランザクションは、XDS クエリ要求メッセージで始まります。XDS Document Consumer で特定のリポジトリを指すのではなく、代わりに、ローカル・リポジトリと、他のアフィニティ・ドメイン内にあるリポジトリの両方を認識している XCA Initiating Gateway を指します。これを設定する最も簡単な方法は、Initiating Gateway サービスの URL が含まれるサービス・レジストリ・エントリを作成して、そのエントリ (例えば “XCA.IG”) を呼び出すことです。続いて、XCA Document Consumer の XDSbRegistryServiceName 設定を XCA.IG に設定します。
以下に、XCA クエリの完全な手順を示します。最初の 3 段階と最後の 3 段階は別個のセッションで実行され、基本的に XDS.b クエリ・トランザクションと同じです。これらは図に示されていません。
-
MPI ID と割り当て機関が含まれる XDSb.QueryRequestOpens in a new tab メッセージを XDS.b Document Consumer に提供します。クエリ要求では、ドキュメント・タイプとステータス (“[承認済み]” など) も指定します。フィルタのリストを含めることもできます。
MPI ID は PIX クエリまたは PDQ クエリ (前述) によって取得できます。
-
Document Consumer は、TransformRetrieveToXDSb 設定を使用して、メッセージを IHE “XDSb_QueryRequest” メッセージに変換します。
-
Document Consumer は、XDSbRegistryServiceName 設定で指定された XCA Initiating Gateway サービスにクエリを転送します。手順の残りの部分は、Document Consumer が応答を受信するまで、新しいセッションで実行されます。
-
XCA Initiating Gateway サービスは、XCPDInitiatingGatewayProcess 設定で指定された XCPD Initiating Gateway プロセスにメッセージを転送します。
-
XCA Initiating Gateway プロセスは、内部で指定された変換を使用して、メッセージを IHE “XCA_QueryRequest” メッセージに変換し、それを XCPD Initiating Gateway プロセスに転送して患者探索を開始します。
-
XCPD Initiating Gateway プロセスは、要求から MPI ID を抽出し、Patient Search Request メッセージを作成します。
-
XCPD Initiating Gateway プロセスは、PDQv3Consumer 設定で指定された PDQ Consumer に Patient Search Request を送信することにより、患者の基本情報を取得します。
-
PDQ Consumer は、基本情報を返します。
-
XCPD Initiating Gateway プロセスでは、PDQ から返された <LivingSubjectID> の <Root> 要素が提供 MPI ID の割り当て機関と同じであることを確認します。
-
XCPD Initiating Gateway プロセスは、XCPDQueryServiceNames 設定を確認します。この設定には、他のアフィニティ・ドメイン内にある XCPD Responding Gateway エンドポイントを指すサービス・レジストリ・エントリのコンマ区切りリストが含まれる必要があります。
-
XCPD Initiating Gateway プロセスは、既知の XCPD Responding Gateway ごとに 1 つの XCPD Patient Discovery Request を XCPD Initiating Gateway 操作に送信します。
-
XCPD Initiating Gateway 操作は、探索要求を、他のアフィニティ・ドメイン内にある XCPD Responding Gateway に転送します。続いて、XCPD Responding Gateway からの XCPD Patient Discovery Response を XCPD Initiating Gateway プロセスに返します。各応答には、提供された基本情報に一致すると考えられる 0 人、1 人、または複数人の患者の MPI ID と基本情報が含まれます。これらは PDQ 応答とまったく同様です。
-
XCPD Initiating Gateway プロセスは、応答を変換し、ホーム・コミュニティ OID を OID レジストリからのホーム・コミュニティ ID に置換します。
-
XCPD Initiating Gateway プロセスは、一意の一致の MPI ID とホーム・コミュニティ (割り当て機関) を抽出し、ホーム・コミュニティ内の複数の患者に一致するものはすべて破棄します。
-
XCPD Initiating Gateway プロセスは、IHE “XCA_QueryResponse” メッセージを XCA Initiating Gateway プロセスに返します。ここには、ホーム・コミュニティごとに最大でも 1 つのエントリで、MPI ID とホーム・コミュニティ ID のリストが含まれます。
-
XCA Initiating Gateway プロセスは、これらのホーム・コミュニティ ID を使用して、ホーム・コミュニティ OID を取得します。各 OID を URL に変換するには、以下の設定が必要です。
-
各ホーム・コミュニティ OID の、タイプ “HomeCommunity” の OID レジストリ・エントリ
-
そのコミュニティの XCA Responding Gateway アクターの URL を提供する、各ホーム・コミュニティのサービス・レジストリ・エントリ :
-
各サービス・レジストリ・エントリには、[HomeCommunity] フィールドに OID レジストリ・コードが含まれる必要があります。これにより、OID とサービス・レジストリ・エントリを関連付けます。
-
各サービス・レジストリ・エントリには、[デバイス関数] フィールドに XCA.Query が含まれる必要があります。これは、デバイスがこのコミュニティの “XCA クエリ・デバイス” であることを示します。
-
-
-
XCPD Initiating Gateway プロセスによって返された一致それぞれに対して、XCA Initiating Gateway プロセスは、XCAInitiatingGatewayOperation 設定で指定された XCA Initiating Gateway 操作に XCA_QueryRequest メッセージを送信します。
XDSbQueryServiceName フィールドに値 (ローカル XDS レジストリを指している必要があります) がある場合、XCA Initiating Gateway プロセスは、XCA Initiating Gateway 操作に XDSb_QueryRequest も送信します。これにより、ローカル XDS レジストリ内でのドキュメント検索がトリガされます。
-
XCA Initiating Gateway 操作は、クエリ要求を XCA Responding Gateway (および可能な場合はローカル・レジストリ) に転送します。その後、XCA Responding Gateway (およびローカル・レジストリ) からのクエリ応答を XCA Initiating Gateway プロセスに返します。各応答は、患者に対して利用可能な各ドキュメントのドキュメント・メタデータと場所を示します。
-
XCA Initiating Gateway プロセスは、さまざまな応答を結合します。
-
XCA Initiating Gateway プロセスは、“XCA_QueryResponse” の種類の XML メッセージを XCA Initiating Gateway サービスに返します。
-
XCA Initiating Gateway サービスは、結合した応答を “XDSb_QueryResponse” の種類の XML メッセージで元のセッションの XDS.b Document Consumer に返します。
-
Document Consumer は、TransformToMetadata 設定で指定された変換を使用して、応答からドキュメント・メタデータを抽出します。その後、HS.Message.IHE.XDSb.QueryResponseOpens in a new tab メッセージを作成します。
-
Document Consumer は、元の XCA および XDS.b の応答と、抽出されたメタデータの両方が含まれる XDS.b Query ResponseOpens in a new tab メッセージを返します。"XCA Retrieve の手順" で説明されているように、このメッセージを使用して、XCA Retrieve を開始できます。
XCA クエリのコンポーネントと設定
コンポーネント | 設定 |
---|---|
ビジネス・ホスト | XCA Document Consumer : HS.HC.IHE.XDSb.Consumer.OperationsOpens in a new tab |
ビジネス・ホスト | XCA Initiating Gateway サービス : HS.IHE.XCA.InitiatingGateway.ServicesOpens in a new tab |
ビジネス・ホスト | XCA Initiating Gateway プロセス : HS.IHE.XCA.InitiatingGateway.ProcessOpens in a new tab |
ビジネス・ホスト | XCA Initiating Gateway 操作 : HS.IHE.XCA.InitiatingGateway.OperationsOpens in a new tab |
ビジネス・ホスト | XCPD Initiating Gateway プロセス : HS.IHE.XCPD.InitiatingGateway.ProcessOpens in a new tab |
ビジネス・ホスト | XCPD Initiating Gateway 操作 : HS.IHE.XCPD.InitiatingGateway.OperationOpens in a new tab |
ビジネス・ホスト | PDQ Consumer : HS.IHE.PDQv3.Consumer.Operations Opens in a new tab |
プロダクション設定 | XDS.b Document Consumer 内の XDSbRegistryServiceName
|
プロダクション設定 | XCA Initiating Gateway サービス内の XCPDInitiatingGatewayProcess |
プロダクション設定 | XCPD Initiating Gateway プロセス内の PDQv3Consumer |
プロダクション設定 | PDQ Consumer 操作内の Service Name |
プロダクション設定 | XCPD Initiating Gateway プロセス内の XCPDQueryServiceNames
|
プロダクション設定 | XCA Initiating Gateway プロセス内の XCAInitiatingGatewayOperation |
プロダクション設定 | XCA Initiating Gateway プロセス内の XDSbQueryServiceName
|
プロダクション設定 | XDS.b Document Consumer 内の TransformToMetadata |
プロダクション・メッセージ | HS.Message.IHE.XDSb.QueryRequestOpens in a new tab |
プロダクション・メッセージ | HS.Message.IHE.XDSb.QueryResponseOpens in a new tab |
プロダクション・メッセージ |
HS.Message.XMLMessageOpens in a new tab :
|
プロダクション・メッセージ | HS.Message.PatientSearchRequestOpens in a new tab (PDQ クエリの場合) |
プロダクション・メッセージ | HS.Message.PatientSearchResponseOpens in a new tab (PDQ クエリの場合) |
XSL 変換 | XDS.b Document Consumer 内の QueryRequestToXDSbQuery.xsl |
XSL 変換 | PDQ 内の IHE/PDQ/Version1/PatientSearchToPRPAIN201305UV.xsl |
XSL 変換 | PDQ 内の IHE/PDQ/Version1/PRPAIN201306UVToPatientSearchResponse.xsl |
XSL 変換 | XDS.b Document Consumer 内の Message-To-Metadata.xsl |
サービス・レジストリ・エントリ | XCA.IG (または類似)
|
サービス・レジストリ・エントリ | PDQv3.Supplier (PDQ クエリの場合) |
サービス・レジストリ・エントリ |
XCPD.RespondingGateway.1 XCPD.RespondingGateway.2 など :
|
サービス・レジストリ・エントリ | そのコミュニティの XCA Responding Gateway エンドポイントの URL を指す各ホーム・コミュニティの XCA.Query デバイス。[HomeCommunity] フィールドにコミュニティの OID レジストリ・コードが記述されていて、[デバイス関数] フィールドに XCA.Query が記述されている必要があります。 |
OID レジストリ・エントリ | 各ホーム・コミュニティの HomeCommunity OID |
外部 IHE アクター・エンドポイント | PDQ Supplier |
外部 IHE アクター・エンドポイント | XCPD Responding Gateway |
外部 IHE アクター・エンドポイント | XCA Responding Gateway |
XCA Retrieve のメッセージ・トレース
以下の図に、アノテーション付きの XCA ドキュメント取得のメッセージ・トレースを示します。
図に示されているトレース操作は、トレース内の中間処理の各段階を可視化するユーティリティです。図中の番号は、以下の手順の各段階に一致します。この手順の最初の 3 段階と最後の 3 段階は別のセッションで実行され、基本的に XDS.b Retrieve トランザクションの段階と同じです。
XCA Retrieve の手順
以下に、XCA Retrieve の手順を示します。最初の 3 段階と最後の 3 段階は別のセッションで実行され、基本的に XDS.b Retrieve トランザクションと同じです。これらは図に示されていません。
-
XDS.b クエリ応答を取得し (前述)、クエリ応答でリストされた 1 つ以上のドキュメントのドキュメント固有 ID とリポジトリ固有 ID (OID) が含まれる HS.Message.IHE.XDSb.RetrieveRequestOpens in a new tab メッセージを作成します。
XDS.b Retrieve 要求を XDS.b Document Consumer に送信します。
-
Document Consumer は、内部で指定された変換を使用して、メッセージを IHE “XDSb_RetrieveRequest” メッセージに変換します。
-
その後、Document Consumer は要求を XCA Initiating Gateway サービスに転送します。このサービスは XDSbRepositoryServiceName フィールドで指定します。XCA の場合、このフィールドには、プロダクションの XCA Initiating Gateway サービスの URL が含まれるサービス・レジストリ・エントリが格納されている必要があります。XDS.b のみを使用している場合、このフィールドは通常、空のままです。
手順の残りの部分は、Document Consumer が応答を受信するまで、新しいセッションで実行されます。
-
XCA Initiating Gateway サービスは、要求を XCA Initiating Gateway プロセスに転送します。
-
要求には、さまざまなホーム・コミュニティ (場合によってはローカル・コミュニティを含む) からのドキュメントが含まれることがあります。XCA Initiating Gateway プロセスは、それらを分離します。メッセージの <HomeCommunityId> は、OID として指定されます。OID を URL に変換するには、以下の設定が必要です。
-
各ホーム・コミュニティ OID の、タイプ “HomeCommunity” の OID レジストリ・エントリ
-
そのコミュニティの XCA Responding Gateway アクターの URL を提供するローカル以外の各ホーム・コミュニティのサービス・レジストリ・エントリ :
-
各サービス・レジストリ・エントリには、[ホーム・コミュニティ] フィールドに OID レジストリ・コードが含まれる必要があります。これにより、OID とサービス・レジストリ・エントリを関連付けます。
-
各サービス・レジストリ・エントリには、[デバイス関数] フィールドに XCA.Retrieve が含まれる必要があります。これは、デバイスがホーム・コミュニティの “XCA Retrieve デバイス” であることを示します。
-
-
XDS リポジトリの URL を提供するローカル・ホーム・コミュニティのサービス・レジストリ・エントリ :
-
このサービス・レジストリ・エントリには、[リポジトリ] フィールドに OID レジストリ・コードが含まれる必要があります。これにより、OID とサービス・レジストリ・エントリを関連付けます。
-
このサービス・レジストリ・エントリには、[デバイス関数] フィールドに XDSb.Retrieve が含まれる必要があります。これは、デバイスがローカル・ホーム・コミュニティの “XDS.b Retrieve デバイス” であることを示します。
-
-
-
XCA Initiating Gateway プロセスは、各コミュニティに対して XCA_RetrieveRequest を作成します。
-
XCA Initiating Gateway プロセスは、要求を XCA Initiating Gateway 操作に送信します。
-
XCA Initiating Gateway 操作は、要求を適切な XCA Responding Gateway エンドポイントに転送し、それらの応答を XCA Initiating Gateway プロセスに返します。
-
XCA Initiating Gateway プロセスは、さまざまなホーム・コミュニティからの応答を結合します。
-
XCA Initiating Gateway プロセスは、メッセージ本文内のドキュメントのリストと、MIME エンコードされた MTOM 添付ファイルのセットが各ドキュメントに対して 1 つ含まれる XCA_RetrieveResponse メッセージを作成します。
-
XCA Initiating Gateway プロセスは、クエリ応答を XCA Initiating Gateway サービスに返します。
-
XCA Initiating Gateway サービスは、結合した応答を “XDSb_RetrieveResponse” の種類の XML メッセージで元のセッションの XDS.b Document Consumer に返します。
-
Document Consumer は、添付ファイルを分離して変換します。
-
Document Consumer は、ドキュメントのリストと、MIME エンコードされた MTOM 添付ファイルを、<DocType> が “RetrieveDocumentSetResponse” で “XDSb_RetrieveResponse” の種類の XML メッセージで返します。
XDS Retrieve のコンポーネントと設定
コンポーネント | 設定 |
---|---|
ビジネス・ホスト | XCA Document Consumer : HS.HC.IHE.XDSb.Consumer.OperationsOpens in a new tab |
ビジネス・ホスト | XCA Initiating Gateway サービス : HS.IHE.XCA.InitiatingGateway.ServicesOpens in a new tab |
ビジネス・ホスト | XCA Initiating Gateway プロセス : HS.IHE.XCA.InitiatingGateway.ProcessOpens in a new tab |
ビジネス・ホスト | XCA Initiating Gateway 操作 : HS.IHE.XCA.InitiatingGateway.OperationsOpens in a new tab |
プロダクション設定 | XCA Document Consumer 内の XDSbRepositoryServiceName
|
プロダクション設定 | XCA Initiating Gateway プロセス内の XCAInitiatingGatewayOperation |
プロダクション・メッセージ | HS.Message.IHE.XDSb.RetrieveRequestOpens in a new tab |
プロダクション・メッセージ | HS.Message.IHE.XDSb.QueryResponseOpens in a new tab |
プロダクション・メッセージ |
HS.Message.XMLMessageOpens in a new tab :
|
XSL 変換 | XCA Document Consumer 内の RetrieveRequestToXDSbRetrieve.xsl |
XSL 変換 | XCA Document Consumer 内の Message-To-Metadata.xsl |
サービス・レジストリ・エントリ | XCA.IG (または類似)
|
サービス・レジストリ・エントリ | そのコミュニティの XCA Responding Gateway エンドポイントの URL を指す各外部ホーム・コミュニティの XCA.Retrieve デバイス。[HomeCommunity] フィールドにコミュニティの OID レジストリ・コードが記述されていて、[デバイス関数] フィールドに XCA.Retrieve が記述されている必要があります。 |
サービス・レジストリ・エントリ |
XDS リポジトリの URL を提供するローカル・ホーム・コミュニティのサービス・レジストリ・エントリ。このサービス・レジストリ・エントリには、[リポジトリ] フィールドに OID レジストリ・コードが含まれる必要があります。これにより、OID とサービス・レジストリ・エントリを関連付けます。このサービス・レジストリ・エントリには、[デバイス関数] フィールドに XDSb.Retrieve が含まれる必要があります。これは、デバイスがローカル・ホーム・コミュニティの “XDS.b Retrieve デバイス” であることを示します。 |
OID レジストリ・エントリ | ローカル・ホーム・コミュニティと各外部ホーム・コミュニティの HomeCommunity OID |
OID レジストリ・エントリ | ローカル XDS リポジトリのリポジトリ OID |
外部 IHE アクター・エンドポイント | XCA Responding Gateway
XDS リポジトリ (ローカル・ホーム・コミュニティ内) |
XCA クエリと取得の例
以下のメソッドは、記述されている各外部アフィニティ・ドメイン内でドキュメント・レジストリに対してクエリを実行するメッセージを送信し、見つかったドキュメントをすべて取得します。続行するには、BREAK コマンドの後にユーザが G を入力する必要があります。
/// XCA Query and retrieve///
ClassMethod XCAQuery()
{
// Create an XDSb Query Request message
s o=##class(HS.Message.IHE.XDSb.QueryRequest).%New()
// Add the MPI ID, document status, type and creation date
Do o.AddPatientId("100000001^^^&1.3.6.1.4.1.21367.2010.1.2.300&ISO")
//This is the format required by IHE
Do o.AddStatusValues("Approved")
Do o.AddCreationFrom("20110510102615-0400")
Do o.AddDocumentType(1) // 1 is stable, 2 is on-demand, 3 is both
Do o.AdditionalInfo.SetAt(1,"XCA")
// Send the message to the test service (or directly to
// HS.IHE.XDSb.Consumer.Operations or HS.HC.IHE.XDSb.Consumer.Operations)
w ##class(HS.Test.Service).SendSync(o,.pr)
Break
/// XCA Retrieve ///
// Assumes you are using the response from the previous query.
// Create the XDSb Retrieve Request message
Set obj=##class(HS.Message.IHE.XDSb.RetrieveRequest).%New()
// Use the results of the query to populate the message
Set obj.Documents=pr.Documents
// Required only for HS.Test.Service to distinguish between XCA and XDS.b
Do obj.AdditionalInfo.SetAt(1,"XCA")
// Send the message to the test service (or directly to XCA Document Consumer)
Write ##class(HS.Test.Service).SendSync(obj,.rr)
Quit
}