FHIR のプロファイルと適応
FHIR® 標準は、特定の医療環境や実装に適応することを目的としています。これらの適応の中心には FHIR プロファイルがあり、ここで特定のリソースの許容できるフィールドを定義します。これらのプロファイルは、FHIR の基本仕様に定められているリソースの定義を拡張したり、制約したりします。プロファイルやその他の FHIR アーティファクトは、Conformance リソースを通じて定義できます。例えば、プロファイルは StructureDefinition リソースによって、検索パラメータは SearchParameter リソースによって、コードは ValueSet および CodeSystems リソースによって定義できます。
ほとんど場合、完全で堅牢な FHIR の適応は実装ガイドに定義されています。これは、適応固有のプロファイルやその他のアーティファクトを説明するドキュメントを含む Conformance リソースの一貫したコレクションです。通常、これらの実装ガイドは、配布サイトからダウンロード可能な NPM のようなパッケージとして配布されます。インターシステムズ製品では、Conformance リソースの FHIR パッケージに実装ガイド全体が含まれていない場合でも、このパッケージをエンドポイントに追加することにより、FHIR サーバのサポート対象を制御します。
インターシステムズ FHIR エンドポイントでは、複数の FHIR パッケージをサポートできます。例えば、FHIR エンドポイントでは、US Core Implementation Guide のパッケージをサポートすると同時に、カスタム・パッケージの一意の Patient プロファイルや検索パラメータをサポートできます。これにより、FHIR クライアントは、サポートされるすべてのパッケージに適合するリソースを検索したり、使用することができます。
FHIR 仕様に従い、インターシステムズの FHIR サーバで、FHIR クライアントから受信するリソースがサポートされているプロファイルに適合するかどうかを自動的に検証することはありません。FHIR クライアントは、リソースの meta 要素を使用して、リソースが 1 つ以上のプロファイルに適合することをアサートしますが、FHIR サーバはそのアサーションが真かどうかは確認しません。FHIR クライアントは、_profile 検索パラメータを使用して、プロファイルに適合していると主張するリソースを取得できます。
Note:
現在のところ、インターシステムズ製品では、リソースをプロファイルに対して検証する機能は提供されていません。検証は基本の FHIR 仕様に限られます。
FHIR サーバは FHIR の各種コア仕様をサポートしているため、FHIR サーバで許容できることや実現可能なことを FHIR クライアントで正確に判断できることが重要です。このニーズに対応するため、各 FHIR サーバには、サポート対象の API、FHIR オペレーション、検索パラメータ、およびリソースを特定する機能宣言書が用意されている必要があります。FHIR クライアントは、GET [EndpointBaseURL]/metadata を呼び出すことで、この機能宣言書を取得できます。
FHIR パッケージの操作
インターシステムズ製品では、FHIR パッケージは StructureDefinitions や SearchParameters などの Conformance リソースのコレクションです。 このように、パッケージには、医療環境のプロファイルが含まれます。パッケージは、FHIR のあるバージョンに対応した標準の Conformance リソースを格納したり、特定の目的で FHIR のあるバージョンを拡張または制約したりできます。これらのパッケージは、JSON ファイルの NPM パッケージとして配布およびインポートされます。パッケージの内容は大きく異なる可能性があります。国の実装ガイド (US Core など) の配布に使用したり、医療ネットワーク固有の Patient プロファイルに限定することもできます。配布サイトからダウンロード可能な標準の公開済みのパッケージを使用して、エンドポイントを構成する必要がある場合もあります。あるいは、カスタムのプロファイルや検索パラメータを含む独自のパッケージを開発する場合もあります。
プログラムによりパッケージを操作する必要がある場合は、"パッケージ API" を参照してください。
パッケージのインポート
エンドポイントを構成して、実装ガイドやカスタム・パッケージをサポートする前に、管理ポータルを使用して、公開済みパッケージやカスタム・パッケージをインポートしておく必要があります。一部の標準パッケージ (US Core など) は、既定で使用可能なため、エンドポイントに適用する前にインポートする必要はありません。
パッケージをインポートするには、以下の手順に従います。
-
パッケージの JSON ファイルがローカル・マシン上にあることを確認します。公開済みのパッケージをインポートする場合は、そのパッケージを配布サイトからローカル・マシンにダウンロードします。カスタム・パッケージに関する追加要件は、"カスタム・パッケージの作成" を参照してください。
-
管理ポータルで、[ホーム] → [Health] → [MyFHIRNamespace] → [FHIR 構成] に移動します。
-
[パッケージ構成] カードを選択します。
-
新しいパッケージの依存関係が既にインポートされていることを確認します。[パッケージ構成] ページの左側のナビゲーション・バーを見ると、インポート済みのパッケージを確認できます。
-
[パッケージをインポート] を選択します。
-
パッケージの JSON ファイルを含むディレクトリを選択します。個々のファイルは選択しないでください。
-
[インポート] を選択します。
FHIR パッケージに含まれていたプロファイルとその他のアーティファクトのパッケージがエンドポイントで使用できるようになりました。
パッケージのアンインストール
パッケージが別のパッケージとの間に依存関係がなく、既存のエンドポイントに適用されていない場合は、そのパッケージを FHIR サーバのネームスペースから削除できます。パッケージをアンインストールしても、パッケージのインポートに使用されたローカルの JSON ファイルは削除されません。パッケージをアンインストールするには、以下の手順に従います。
-
管理ポータルで、[ホーム] → [Health] → [MyFHIRNamespace] → [FHIR 構成] に移動します。
-
[パッケージ構成] カードを選択します。
-
左側のナビゲーション・バーからパッケージを選択します。
-
[パッケージのアンインストール] を選択します。エンドポイントに適用されているパッケージはアンインストールできません。さらに、別のパッケージの依存関係であるパッケージもアンインストールできません。
カスタム・パッケージの作成
カスタム・パッケージを使用して、カスタムのプロファイルや検索パラメータをサポートするよう FHIR エンドポイントを構成できます。例えば、カスタム検索パラメータを追加するには、ローカル・マシンにある JSON ファイルで SearchParameter リソースを定義します。次に、同じディレクトリに package.json というファイルを作成します。少なくとも、このファイルには、パッケージの名前、バージョン、依存関係が含まれている必要があります。例えば、package.json ファイルは次のようになります。
{
"name":"myorg.implementation.r4",
"version":"0.0.1",
"dependencies": {
"hl7.fhir.r4.core":"4.0.1"
}
}
Conformance リソースの定義を含む JSON ファイルと package.json ファイルが 1 つのディレクトリに用意できたら、新しいパッケージをインポートする準備は完了です。
エンドポイントへのパッケージの適用
新しい FHIR エンドポイントを作成する場合は、エンドポイントでサポートするパッケージを選択します。エンドポイント作成時には、インポートされたこれらのパッケージのみ使用できます。インターシステムズ製品には、既にインポートされた公開済みパッケージがいくつか付属しています。
新しいパッケージを既存のエンドポイントに適用することもできます。既存のエンドポイントにパッケージを追加するには、以下の手順に従います。
-
管理ポータルで、[ホーム] → [Health] → [[MyFHIRNamespace]] → [FHIR 構成] に移動します。
-
[サーバ構成] カードを選択します。
-
リストからエンドポイントを選択します。
-
[編集] を選択します。
-
[追加パッケージ] ドロップダウン・リストを使用して、パッケージを選択します。リストにパッケージが表示されない場合は、パッケージがインポートされていることを確認します。
-
[更新] を選択します。
Important:
既存のエンドポイントにパッケージを適用し、パッケージに新しい検索パラメータがある場合、エンドポイントのインデックスを再作成するまで、新しいパラメータを使用して既存のリソースを取得することはできません。詳細は、"エンドポイントのインデックスの再作成" を参照してください。
エンドポイントのインデックスの再作成
公開またはカスタムのパッケージを使用して、新しい検索パラメータを既存のエンドポイントに追加する場合、FHIR クライアントは、パッケージの適用後に、新しいパラメータを使用して、リポジトリに追加されたリソースを取得できます。ただし、新しい検索パラメータを追加する前に存在していたリソースは、エンドポイントのインデックスを再作成するまで、返されません。エンドポイントのインデックスを再作成するまで、新しい検索パラメータを使用する FHIR クライアントは、検索結果が不完全である可能性があることを示す OperationOutcome を受信します。
新しい検索パラメータを含むパッケージを適用したら、エンドポイントのインデックスを再作成するオプションが [サーバ構成] ページ ([Health] → [FHIR 構成] → [サーバ構成]) のエンドポイントの URL の横に表示されます。リポジトリに既存のリソースが多数ある場合は、エンドポイントのインデックスの再作成に長時間かかる可能性があります。
パッケージ API
実装で、ユーザ・インタフェースを使用せずに直接パッケージを操作する必要がある場合は、以下の API メソッドを利用できます。
パッケージのインポート
インターシステムズ FHIR サーバは、パッケージを使用して、サポートする FHIR プロファイルやその他のアセットを判断します。インターシステムズ製品には、FHIR の基本バージョンに対応する事前にロードされたパッケージと一般的な実装ガイドが付属していますが、StructureDefinition や ValueSet などの Conformance リソースを定義する JSON ファイルを含むディレクトリを指定することにより、新しいパッケージをインポートすることもできます。FHIR パッケージの詳細は、"FHIR パッケージの操作" を参照してください。
エンドポイントに追加できるよう新しいパッケージをインポートする API は、HS.FHIRMeta.Load.NpmLoader.importPackages()Opens in a new tab です。例えば、以下のコードでカスタム・パッケージがインポートされます。
do ##class(HS.FHIRMeta.Load.NpmLoader).importPackages($lb("C:\fhir-packages\node_modules\myorg.fhir.myPackage\"))
エンドポイント作成時のパッケージの指定
InstallInstance() メソッドの pPackageList パラメータを使用すると、新しいエンドポイントに適用するパッケージを指定できます。詳細は、"プログラムによるインストールと構成" を参照してください。
カスタム検索パラメータ
カスタム検索パラメータをエンドポイントに追加するには、SearchParameter リソースを含むカスタム・パッケージを作成し、それをエンドポイントに適用します。プロセスを完了するには、以下の操作を行います。
-
テキスト・エディタまたはサードパーティのツールを使用して、SearchParameter JSON ファイルを作成します。
-
JSON ファイルと package.json ファイルを 1 つのファイル・ディレクトリに入れると、カスタム・パッケージとしてインポートできます。詳細は、"カスタム・パッケージの作成" を参照してください。
-
パッケージをインポートします。
-
エンドポイントにパッケージを適用します。
-
既存のエンドポイントにパッケージを適用する場合は、エンドポイントのインデックスの再作成が必要な場合があります。
拡張機能
FHIR サーバは、基本の FHIR 仕様で定義されている拡張機能の構文に従った適切な形式になっている限り、拡張機能が含まれるリソースを受け付けます。FHIR 仕様に従い、FHIR サーバでは、これらの拡張子が有効なのか、リソースの meta フィールドに指定されているプロファイルに適合しているのかを自動的に検証することはありません。
拡張機能へのカスタム検索パラメータの追加の詳細は、"カスタム検索パラメータ" を参照してください。