Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

FHIR の相互運用プロダクション

InterSystems の医療製品には、FHIR® 要求を送受信する相互運用プロダクションの作成に使用できるビジネス・ホストが組み込まれています。SDA を FHIR に、FHIR を SDA に変換するビジネス・プロセスも利用可能です。

相互運用プロダクションを使用できる FHIR 実装に対する理解を深めるには、"ユース・ケース" を参照してください。

Note:

インターシステムズの FHIR サーバには、相互運用プロダクションは必要ありません。既定では、エンドポイントの REST ハンドラで受信された FHIR 要求は、FHIR サーバのサービスに直接送信されます。相互運用プロダクションを使用しない FHIR サーバの方が、はるかに高速になる可能性があります。

FHIR 要求の受け入れ

FHIR の実装では、次の 2 つの方法で FHIR 要求を受け入れ、相互運用プロダクションに取り込むことができます。

  • FHIR サーバを使用する (インターシステムズ製品の内部アーキテクチャとストレージを活用する実装) 場合は、FHIR 要求は HS.FHIRServer.Interop.Service を介してリポジトリに送信できます。詳細は、"FHIR サーバ要求の受け入れ" を参照してください。

  • FHIR サーバを使用しない実装の場合は、FHIR 相互運用アダプタを使用して、FHIR 要求を受け入れ、相互運用プロダクションに取り込むことができます。詳細は、"FHIR 相互運用アダプタ" を参照してください。

受信要求のセキュリティ

FHIR 要求は、FHIR 相互運用アダプタ、またはプロダクションを使用する FHIR サーバを使って相互運用プロダクションに到達できます。セキュリティは、要求の受信に使用している機能に応じて異なる方法で処理されます。プロダクションで FHIR 相互運用を使用している場合は、"アダプタのセキュリティ" を参照してください。プロダクションで FHIR サーバを使用している場合は、"サーバ・セキュリティ" を参照してください。

FHIR サーバ要求の受け入れ

組み込みのビジネス・サービス HS.FHIRServer.Interop.ServiceOpens in a new tab は、FHIR サーバ・エンドポイントに送信された FHIR 要求を受信するよう設計されています。構成されると、エンドポイントの REST ハンドラは、要求を FHIR サーバのサービスではなく、HS.FHIRServer.Interop.Service にルーティングします。

FHIR サーバ要求を相互運用プロダクション経由でルーティングするようにエンドポイントを設定するのは、以下の 2 段階のプロセスです。

  1. 相互運用プロダクションを作成し、HS.FHIRServer.Interop.Service ビジネス・サービスを追加します。

  2. エンドポイントの [サービス構成名] フィールドを構成し、相互運用プロダクションに追加されたビジネス・サービスの名前を指定します。

エンドポイントの構成内でのビジネス・サービスの名前が相互運用プロダクション内での名前に一致している限り、これらの手順は、設定が完了したら任意の順序で実行できます。

Note:

この 2 段階プロセスでは、FHIR サーバを使用していることを前提としています。実装で FHIR サーバの内部アーキテクチャやリポジトリを利用しない場合は、FHIR 相互運用アダプタを使用して、FHIR 要求を受け入れます。

相互運用プロダクションの作成

FHIR サーバ・エンドポイントの Foundation ネームスペースが作成されると、インストール・プロセスにより、FHIR プロダクションとして使用する相互運用プロダクションも作成されます。プロダクションを変更し、要求をプロダクション経由でルーティングするためにエンドポイントで使用する、必須のビジネス・サービスを追加する必要があります。

FHIR 要求を REST ハンドラから受信する相互運用プロダクションには、HS.FHIRServer.Interop.ServiceOpens in a new tab ビジネス・サービスが含まれる必要があります。このビジネス・サービスにはカスタム名を付けることができますが、エンドポイントの [サービス構成名] オプションで指定されている名前と一致する名前にしてください。

エンドポイントの構成

FHIR サーバのエンドポイントをインストールしたら、相互運用プロダクションを使用するようにエンドポイントを構成できます。これは、プロダクションの作成前を含む任意の時点で行うことができます。エンドポイントの構成中にビジネス・サービスの名前を指定しても、プロダクションにそのビジネス・サービスが自動的に作成されることはありません。

FHIR 要求がプロダクション経由でルーティングされるように既存のエンドポイントを構成するには、以下の手順に従います。

  1. [Health] → [MyNamespace] → [FHIR 構成] に移動します。FHIR サーバのネームスペースにいることを確認します。

  2. [サーバ構成] カードを選択します。

  3. エンドポイントを選択します。

  4. [編集] を選択します。

  5. [相互運用性] セクションの [サービス構成名] フィールドで、FHIR 要求のルーティングで経由するプロダクションのビジネス・サービスの名前を指定します。例えば、ビジネス・サービスにカスタム名を付けていない場合は、HS.FHIRServer.Interop.Service を指定します。

  6. [更新] を選択します。

FHIR 要求の送信

相互運用プロダクションでは、ビジネス・オペレーションが FHIR 要求を確実に FHIR エンドポイントへ送信します。この要求は、InterSystems エンドポイントにアクセスする外部 FHIR クライアントや、HL7 メッセージを FHIR 要求に変換するビジネス・プロセスなど、さまざまなソースから生じます。その要求元に関係なく、要求の送信には、次の 2 つのビジネス・オペレーションを利用できます。

ビジネス・オペレーション・クラス 説明
HS.FHIRServer.Interop.OperationOpens in a new tab FHIR 要求をローカル・ネームスペース内のインターシステムズ FHIR サーバの内部サービスに送信します。カスタム・アーキテクチャが実装されているという稀な場合を除き、Health Connect ユーザは、リソース・リポジトリの使用ライセンスがないと、このビジネス・オペレーションを使用することはできません。

このビジネス・オペレーションでは、エンドポイントの URL (要求メッセージの SessionApplication プロパティに含まれる) に基づいてインターシステムズの適切な FHIR サーバを特定します。REST ハンドラ経由で FHIR サーバのエンドポイントに送信された要求からのメッセージの場合、エンドポイントの URL は既にメッセージの一部に組み込まれています。メッセージが SDA を FHIR に変換するビジネス・プロセス (HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process) から送信された場合は、サーバはビジネス・プロセスの FHIREndpoint 設定によって特定されます。

HS.FHIRServer.Interop.HTTPOperationOpens in a new tab FHIR 要求を、HTTP 経由で内部または外部の FHIR エンドポイントに送信します。

組み込みのビジネス・ホストを使用して、要求をこのビジネス・オペレーションに送信する場合は、そのビジネス・ホストの TargetConfigName 設定を使用します。

FHIR エンドポイントの既定の HTTP アドレスは、ビジネス・オペレーションの ServiceName 設定を使用して指定されます。これにより、サービス・レジストリのエントリが参照されます。この既定の設定は、要求に ServiceName という AdditionalInfo 項目が含まれる場合にオーバーライドされます。これにより、別のエンドポイントを指すサービス・レジストリ・エントリが指定されます。

組み込みのビジネス・ホスト (HS.FHIRServer.Interop.Service など) が要求メッセージ (HS.FHIRServer.Interop.Request) を HS.FHIRServer.Interop.HTTPOperation ビジネス・オペレーションに送信する場合、要求はカスタム・コードなしで HTTP 経由で送信されます。ただし、FHIR ペイロードが、FHIR 要求にペイロードを含める必要があるカスタム・ビジネス・ホスト内に作成される場合は、相互運用 FHIR クライアントをインスタンス化してメッセージを送信する必要があります。同様に、カスタム・ビジネス・ホストがエンドポイントから FHIR データを取得する必要がある場合は、プロダクションで FHIR クライアントを使用する必要があります。

相互運用 FHIR クライアント

インターシステムズのテクノロジは、カスタム・ビジネス・ホストから FHIR 要求を作成し、HTTP 経由で FHIR エンドポイントに送信するプロセスを簡素化する FHIR クライアント・オブジェクトを提供しています。HTTP 経由で要求を送信するために FHIR クライアントで使用されるビジネス・オペレーション HS.FHIRServer.Interop.HTTPOperation を相互運用プロダクションに追加する必要があります。プロダクションを構成したら、HS.FHIRServer.RestClient.InteropOpens in a new tab をインスタンス化し、FHIR の相互作用とオペレーションに対応するメソッドを呼び出すことにより、カスタム・ビジネス・ホストで FHIR クライアントを使用できるようになります。

HTTP 経由で FHIR 要求を送信するすべてのプロダクションに、相互運用 FHIR クライアントのインスタンス化が必要なわけではありません。例えば、HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process を使用して SDA が FHIR に変換される場合は、このビジネス・プロセスから HS.FHIRServer.Interop.HTTPOperation に転送される FHIR は、FHIR クライアントを使用せずに HTTP 経由で送信されます。ただし、FHIR ペイロードがプロダクション内のカスタム・ビジネス・ホストによって作成される場合、HTTP 経由で FHIR エンドポイントに送信する際に推奨される方法は、FHIR クライアントのインスタンス化です。

カスタム・ビジネス・ホストのコンテキスト内で FHIR クライアントをインスタンス化する場合は、CreateInstance( )Opens in a new tab メソッドに対する呼び出しに以下のパラメータを含める必要があります。

  • pServiceName — FHIR エンドポイントを指すサービス・レジストリ内のエントリの名前。この値は、HS.FHIRServer.Interop.HTTPOperation ビジネス・オペレーションの ServiceName 設定をオーバーライドします。

  • pTargetConfigNameHS.FHIRServer.Interop.HTTPOperation ビジネス・オペレーションの名前。

  • pHostObj — FHIR クライアントをインスタンス化するビジネス・ホストのオブジェクト・インスタンス。$this を使用して、FHIR クライアントをインスタンス化する現在のビジネス・ホスト・オブジェクトを指定できます。

例えば、必要な引数のみを使用してビジネス・ホスト内で FHIR クライアントをインスタンス化するには、以下のように入力します。

Set fhirClient = ##class(HS.FHIRServer.RestClient.Interop).CreateInstance("MyFHIR.HTTP.Service", , , , , ,
                                                                          "HS.FHIRServer.Interop.HTTPOperation",
                                                                           $this)

また、CreateInstance( )Opens in a new tab メソッドは、FHIR prefer ヘッダの値を指定し、OAuth トークンを要求と共に送信するオプションの引数も受け入れます。

FHIR クライアントをインスタンス化すると、それを使用して要求を送信したり、オペレーションを実行できます。FHIR クライアントのメソッドを使用してこれらのアクションを実行する方法の詳細は、"相互作用とオペレーション" を参照してください。

Note:

相互運用 FHIR クライアントのクラス (HS.FHIRServer.RestClient.InteropOpens in a new tab) を、相互運用プロダクションを通じて FHIR 要求を送信する必要があるスタンドアロンの ObjectScript アプリケーションで使用することもできます。この場合、HS.HC.Util.BusinessService ビジネス・サービスは、HS.FHIRServer.Interop.HTTPOperation と共にプロダクションに追加する必要があります。クライアントのインスタンス化は似ていますが、スタンドアロン・アプリケーションの場合、CreateInstance の呼び出しに pHostObj パラメータの引数を含めることはできません。

変換

組み込みのビジネス・プロセスをプロダクションに追加して、SDA-FHIR 変換を起動できます。例えば、プロダクションでは、HL7 メッセージを利用し、ビジネス・プロセスを使用して HL7 を SDA に変換し、さらに組み込みの SDA-FHIR ビジネス・プロセスを使用して SDA を FHIR に変換できます。これらの変換を実行するプロダクションは、Foundation ネームスペースに含まれている必要があります。

組み込みのビジネス・プロセスを使用した SDA-FHIR 変換の詳細は、"変換ビジネス・プロセス" を参照してください。

ユース・ケース

以下のユース・ケースでは、組み込みの相互運用コンポーネントを使用して FHIR リソースを操作する方法の例を示しています。

プロキシ・サーバ

インターシステムズの医療製品は、外部 FHIR クライアントからの FHIR 要求を受け入れ、それらを外部 FHIR エンドポイントに転送し、さらに FHIR エンドポイントからの応答を外部クライアントに戻すプロキシ・サーバとして使用できます。このシナリオでは、インターシステムズ製品が FHIR を受け入れ、生成するサーバではないこと、また、要求や応答は必要に応じてプロダクション内で操作できることを、FHIR クライアントが認識していない可能性があります。

単純なプロキシ・サーバは、以下を実行することにより実装できます。

  • FHIR 相互運用アダプタのインストール。

  • HS.FHIRServer.Interop.HTTPOperation のプロダクションへの追加、および ServiceName 設定の編集による外部 FHIR エンドポイントの指定。

  • InteropServiceTargetConfigName を編集することによる、HS.FHIRServer.Interop.HTTPOperation の指定。

もちろん、プロキシ・サーバのユース・ケースは多様です。例えば、複数の HS.FHIRServer.Interop.HTTPOperation ビジネス・オペレーションを追加し、ビジネス・プロセスを使用して、プロキシ・サーバのターゲットにする外部 FHIR エンドポイントを決定することもできます。

FHIR データを外部 FHIR エンドポイントに送信すると共に、内部 InterSystems リポジトリに格納したい場合は、FHIR 相互運用アダプタではなく、FHIR サーバを使用して開始する必要があります。この場合、HS.FHIRServer.Interop.HTTPOperation を使用して外部エンドポイントに要求を送信できますが、HS.FHIRServer.Interop.Operation を使用してデータを内部に格納することもできます。

HL7 から FHIR への変換

インターシステムズの医療製品は、受信 HL7 メッセージから臨床データを抽出し、そのデータを FHIR リソースに変換するプロセスを簡素化します。FHIR に変換すると、臨床データは外部 FHIR エンドポイントに転送したり、FHIR クライアントが照会できる内部 FHIR リポジトリに格納することができます。HL7 メッセージを FHIR リソースに変換する基本の相互運用プロダクションには、以下が含まれます。

  • HL7 メッセージを受け入れてプロダクションに取り込む、EnsLib.HL7.Service.HTTPService などの組み込みのビジネス・サービスの追加。

  • ビジネス・ホストを使用した HL7 から SDA (InterSystems の中間データ形式) への変換。ビジネス・プロセスに追加された以下のコードで、HL7 を SDA に変換できます。

    do ##class(HS.Gateway.HL7.HL7ToSDA3).GetSDA(request,.con)
    

    この変換方法の詳細は、"インターシステムズの医療製品のデータ変換" を参照してください。

  • HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process ビジネス・プロセスのプロダクションへの追加。このビジネス・プロセスは SDA を FHIR に変換します。

  • HL7 から SDA への変換方法を含むビジネス・ホストの TargetConfigName 設定の変更による、HS.FHIR.DTL.Util.HC.SDA3.FHIR.Process の名前の指定。

HL7 データを FHIR に変換したら、それを外部 FHIR エンドポイントに送信したり、FHIR サーバの場合は、内部リソース・リポジトリに格納したりできます。特定の機能を実行するビジネス・オペレーションを追加することにより、FHIR データの転送先を制御します。これらのビジネス・オペレーションの詳細は、"FHIR 要求の送信" を参照してください。要求を FHIR サーバの内部ストレージに転送するビジネス・オペレーションを使用する場合は、HS.FHIR.DTL.Util.HC.SDA3.FHIR.ProcessFHIREndpoint 設定を使用して、インターシステムズ FHIR サーバのエンドポイントを指定します。

HL7 メッセージの FHIR サーバとの統合の実践例は、"FHIR R4 Integration QuickStartOpens in a new tab" を参照してください。

プロダクションベースのインターシステムズのサーバ

既定では、インターシステムズの FHIR サーバへの要求は相互運用プロダクションを経由しませんが、場合によっては、プロダクションを使用したいことがあります。例えば、開発中にはプロダクションを使用して、メッセージ・トレースやプロダクションのその他のメリットを活用し、その後の実動時にはサーバのサービスに要求を直接送信するように少々変更を加えるような場合です。また、別のユース・ケースでは、インターシステムズの FHIR サーバに到着する前に、ビジネス・プロセスを使用して FHIR 要求を操作したい場合があります。

最も簡潔な形式では、プロダクションベースの FHIR サーバは、"FHIR サーバ要求の受け入れ" で説明されているようにプロダクションを構成し、その後、"FHIR 要求の送信" で説明されているように HS.FHIRServer.Interop.Operation を追加して構成されます。両方のビジネス・ホストがプロダクションに追加されたら、HS.FHIRServer.Interop.OperationTargetConfigName 設定を変更し、HS.FHIRServer.Interop.Operation ビジネス・オペレーションの名前を指定します。

開発中にプロダクションを使用することが目的である場合は、要求をサービスに直接送信する FHIR サーバに切り替え、サーバが実稼働するときには、[サービス構成名] フィールドの値を削除して、サーバのエンドポイントを再構成します。

FeedbackOpens in a new tab