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 クライアント

インターシステムズ製品には、標準の FHIR® クライアント・クラスが付属しており、スタンドアロンの ObjectScript アプリケーションや相互運用プロダクションはこれを使用して FHIR 要求を HTTP 経由で FHIR REST エンドポイントに送信したり、ローカルのインターシステムズ FHIR サーバに送信できます。要求を行うためにアプリケーションで使用されるメソッドは、アプリケーションで使用されている FHIR クライアント・クラスに関係なく、同じです。いずれの場合も、ユース・ケースに対応するクライアント・クラスをインスタンス化した後、アプリケーションで FHIR 相互作用Opens in a new tabまたはオペレーションOpens in a new tabに対応するメソッドを呼び出します。

以下の 3 つのクライアント・クラスから選択できます。

FHIR 要求を HTTP 経由で FHIR エンドポイントに送信します。クラスをインスタンス化する際には、FHIR サーバのエンドポイントの URL はサービス・レジストリのエントリによって特定されます。

FHIR 要求を同じネームスペース内のインターシステムズ FHIR サーバのサービスに送信します。クラスをインスタンス化する際には、インターシステムズ FHIR サーバはサーバのエンドポイント (/fhirapp/fhir/r4 など) によって識別されます。

相互運用プロダクションを使用して、FHIR 要求を HTTP 経由で FHIR エンドポイントに送信します。それには、以下の 2 つの方法があります。

  • カスタム・ビジネス・ホスト内で生成された FHIR ペイロードを送信するか、ビジネス・ホストから FHIR データを取得する。

  • HTTP 経由で送信する前に、スタンドアロン ObjectScript アプリケーションからの FHIR 要求を、相互運用プロダクションを通じてルーティングする。

この相互運用 FHIR クライアントの詳細は、"相互運用 FHIR クライアント" を参照してください。

これらのクラスはすべて単一のベース・クラス HS.FHIRServer.RestClient.BaseOpens in a new tab から継承されます。このクラスには、FHIR クライアントが FHIR 相互作用やオペレーションを実行するために使用するメソッドのロジックが含まれています。各タイプの FHIR クライアントは、CreateInstance メソッドを使用してインスタンス化されます。

相互作用とオペレーション

FHIR 仕様の RESTful アーキテクチャ内で、FHIR クライアントは相互作用を通じてサーバ上のリソースを操作します。インターシステムズのテクノロジによって開発された FHIR クライアントには、これらの相互作用に対応するメソッドが用意されており、ObjectScript コードで単一のメソッド呼び出しとの相互作用を行うことを可能にしています。

FHIR クライアントは、各相互作用に 1 つ以上のメソッドを提供しますが、ある 1 つのメソッドを、FHIR サーバで実行されているオペレーションに関係なく提供します。このメソッドを起動してオペレーションを実行する方法の詳細は、クラス・リファレンスで Operation( )Opens in a new tab を参照してください。

相互作用メソッドの呼び出し

FHIR クライアントが update などの相互作用を使用してサーバに書き込みを行う場合は、SetRequestFormat メソッドを使用して、サーバに書き込まれるペイロードの形式を指定する必要があります。使用可能な形式は、JSONXMLFormXPatch、および Jpatch です。同様に、FHIR クライアントは SetResponseFormat を使用して、FHIR サーバから返されるリソースの適切な形式を指定できます。 使用可能な形式は、JSONXML です。

要求および応答の形式が個々の相互作用に合わせて変更されない限り、アプリケーションは要求や応答を一度設定すると、すべての相互作用メソッドに適用できます。例えば、要求を HTTP 経由で FHIR サーバに送信するスタンドアロンの FHIR クライアントは、クライアントのインスタンス化後すぐに、要求と応答の形式を設定できます。

Set clientObj = ##class(HS.FHIRServer.RestClient.HTTP).CreateInstance("MyFHIR.HTTP.Service")
Do clientObj.SetRequestFormat("JSON")
Do clientObj.SetResponseFormat("JSON")

FHIR クライアント・クラスがインスタンス化され、要求と応答の形式が設定されると、アプリケーションはサーバ上で実行したい FHIR 相互作用に対応するメソッドを呼び出すことができます。シグニチャなど、FHIR クライアントで利用可能な FHIR 相互作用メソッドを確認するには、クラス・リファレンスで HS.FHIRServer.RestClient.BaseOpens in a new tab を参照してください。条件付きのアクションを許可する FHIR 相互作用には、2 つの異なるメソッドがあります。例えば、update 相互作用が条件付きであるかどうかに応じて、アプリケーションでは Update または ConditionalUpdate を呼び出すことができます。

引数として渡されるペイロードのデータ型は、インスタンス化された FHIR クライアントのタイプによって決まります。

  • HTTP 経由で FHIR サーバにアクセスするクライアントの場合、ペイロードの引数は文字列またはストリームになります。

  • ローカル・ネームスペースでインターシステムズの FHIR サーバにアクセスするクライアントの場合、ペイロードの引数は、文字列、ストリーム、またはダイナミック・オブジェクトにできます。

以下に、FHIR クライアントをインスタンス化し、外部 FHIR サーバ上で read 相互作用を実行する例を示します。

Set clientObj = ##class(HS.FHIRServer.RestClient.HTTP).CreateInstance("MyFHIR.HTTP.Service")
Do clientObj.SetResponseFormat("JSON")
Set clientResponseObj = clientObj.Read("GET", "Patient", "123")

カスタム・ヘッダの追加

API キーを渡す場合などで FHIR 要求にカスタム・ヘッダ情報が必要な場合は、SetOtherRequestHeaders()Opens in a new tab メソッドを使用します。このメソッドは、参照による多次元配列を入力として取ります。この配列では、各カスタム・ヘッダを添え字付き要素とします。配列にカスタム・ヘッダを取り込むには、次のように header nameheader value を指定します。

 Set otherHeaders("X-API-Key") = "123"
 Do clientObj.SetOtherRequestHeaders(.otherHeaders)

REST clientObj インスタンスで “他のヘッダ” コレクションをクリアするには ClearOtherRequestHeaders()Opens in a new tab API メソッドを使用します。このメソッドは引数を取りません。

  Do clientObj.ClearOtherRequestHeaders()

要求と応答のカスタマイズ

内部的には、各相互作用メソッドが 3 つのオーバーライド可能なメソッドを呼び出します。これらのメソッドをカスタマイズすることにより、要求の送信方法を変更したり、要求で受信される応答を操作できます。この 3 つのメソッド MakeRequestInvokeRequest、および MakeClientResponseFromResponse は、ベース・クラスではなく、FHIR クライアントのタイプ別に実装されます。詳細は、FHIR クライアント・クラス (HS.FHIRServer.RestClient.HTTPOpens in a new tabHS.FHIRServer.RestClient.FHIRServiceOpens in a new tab、または HS.FHIRServer.RestClient.InteropOpens in a new tab) のコメントを参照してください。

FHIR クライアント・クラスなしの要求

ObjectScript アプリケーションから内部 FHIR サーバへの要求を行う場合、FHIR クライアント・クラスの使用が推奨されますが、これらの標準クライアント・メソッドなしで、サーバ上で CRUD オペレーションを実行するカスタム・クラスを記述できます。例えば、サービスを経由しない (したがって、許可されている相互作用に関する制約をバイパスする)、FHIR サーバと相互作用するカスタム・クラスを記述できます。また、DispatchRequest メソッドを使用して、サービスに対して直接呼び出しを行うこともできます。このような特殊なケースの詳細は、"ObjectScript アプリケーション" を参照してください。

FeedbackOpens in a new tab