次の方法で共有


FHIR 検索の概要

高速ヘルスケア相互運用性リソース (FHIR®) 仕様では、FHIR サーバー データベース内のリソースに対してクエリを実行するための API が定義されています。 この記事では、FHIR でのデータのクエリの主要な側面について説明します。 FHIR 検索 API の詳細については、HL7 FHIR 検索 のドキュメントを参照してください。

この記事では、FHIR サーバー URL を表す {{FHIR_URL}} プレースホルダーを使用したサンプル API 呼び出しの FHIR 検索構文について説明します。 Azure Health Data Services の FHIR サービスの場合、この URL は https://<WORKSPACE-NAME>-<FHIR-SERVICE-NAME>.fhir.azurehealthcareapis.com です。

FHIR 検索は、特定のリソースの種類、指定されたコンパートメント、または FHIR サーバー データベース内のすべてのリソースに対して実行できます。 FHIR で検索を実行する最も簡単な方法は、GET 要求を使用する方法です。 たとえば、データベース内のすべての Patient リソースをプルする場合は、次の要求を使用できます。

GET {{FHIR_URL}}/Patient

POST を使用して検索することもできます。 POST を使用して検索する場合は、検索パラメーターが要求の本文に配信されます。 これにより、より長くより複雑な一連のパラメーターを含むクエリを簡単に送信できます。

POST もしくは GET を使用して、検索要求が成功した場合は、検索から返されたリソース インスタンスを含む FHIR searchset バンドルを受け取ります。 検索が失敗した場合は、OperationOutcome 応答にエラーの詳細が表示されます。

次のセクションでは、FHIR のリソースに対するクエリのさまざまな側面について説明します。 これらのトピックを確認したら、FHIR 検索のサンプル ページを参照してください。このページには、さまざまな FHIR 検索方法の例が記載されています。

検索パラメーター

FHIR で検索を実行すると、特定の検索条件に一致するリソースがデータベースで検索されます。 FHIR API は、検索条件を微調整するための豊富な一連の検索パラメーターを指定します。 FHIR の各リソースは一連の要素として情報を運び、検索パラメーターはこれらの要素の情報をクエリするために機能します。 FHIR 検索 API 呼び出しで、要求の検索パラメーターとリソース インスタンスに格納されている対応する要素値の間に正の一致が見つかった場合、FHIR サーバーは、検索条件を満たす要素を持つリソース インスタンスを含むバンドルを返します。

検索パラメーターごとに、使用できるデータ型が FHIR 仕様によって定義されます。 さまざまなデータ型に対する FHIR サービスのサポートの概要を次に示します。

検索パラメーターの種類 Azure Health Data Services の FHIR サービス Azure API for FHIR コメント
数値 はい はい
日付 はい あり
string はい はい
token はい はい
reference はい はい
複合 部分的 Partial サポートされている複合型の一覧については、この記事の後半で説明します。
quantity はい はい
uri はい はい
スペシャル いいえ いいえ

一般的な検索パラメーター

FHIR のすべてのリソースに適用される一般的な検索パラメーターがあります。 FHIR サービスでのサポートと共に次に一覧を表示します。

一般的な検索パラメーター Azure Health Data Services の FHIR サービス Azure API for FHIR コメント
_id はい イエス
_lastUpdated イエス イエス
_tag イエス イエス
_type イエス イエス
_security イエス イエス
_profile イエス イエス
_has イエス はい
_query いいえ 番号
_filter 番号 番号
_list 番号 番号
_text 番号 番号
_content 番号 いいえ

リソース固有のパラメーター

Azure Health Data Services の FHIR サービスは、FHIR 仕様で定義されているほぼすべてのリソース固有の検索パラメーターをサポートしています。 サポートされていない検索パラメーターは、次のリンクに一覧表示されます。

次の要求を使用して、FHIR 機能ステートメントの検索パラメーターの現在のサポートを確認することもできます。

GET {{FHIR_URL}}/metadata

機能ステートメントでサポートされている検索パラメーターを表示するには、 リソース固有の検索パラメーターの場合は CapabilityStatement.rest.resource.searchParam に、すべてのリソースに適用される検索パラメーターの場合は CapabilityStatement.rest.searchParam に移動します。

Note

Azure Health Data Services の FHIR サービスでは、基本 FHIR 仕様で定義されていない検索パラメーターのインデックスが自動的に作成されることはありません。 ただし、FHIR サービスではカスタム検索パラメーターがサポートされています。

複合検索パラメーター

FHIR での複合検索を使用すると、要素ペアを論理的に接続されたユニットとして検索できます。 たとえば、患者の体高が 60 インチを超える観測値を検索する場合は、観測の 1 つのプロパティに体高コード 60 インチより大きい値が含まれていることを確認します (値は体高のみに関係する必要があります)。 たとえば、体高コード腕から腕の長さが 60 インチを超える観測値に対して正の一致を返す必要はありません。 複合検索パラメーターは、事前に指定された要素のペアを検索することでこの問題を回避します。この要素のペアの値はどちらも正の一致が発生する検索条件を満たしている必要があります。

Azure Health Data Services の FHIR サービスでは、複合検索に対して次の検索パラメーターの種類のペアリングがサポートされています。

  • 参照、トークン
  • トークン、日付
  • トークン、数字、数字
  • トークン、数量
  • トークン、文字列
  • トークン、トークン

詳細については、HL7 の「 複合検索パラメーター」ドキュメントを参照してください。

Note

FHIR 仕様に従って、複合検索パラメーターでは修飾子はサポートされていません。

修飾子とプレフィックス

修飾子を使用すると、追加の条件で検索パラメーターを修飾できます。 FHIR 修飾子と FHIR サービスでのそれらのサポートのリストを次に示します。

修飾子 Azure Health Data Services の FHIR サービス Azure API for FHIR コメント
:missing はい イエス
:exact イエス イエス
:contains イエス イエス
:text イエス はい
:type (参照) はい イエス
:not イエス はい
:below (URI) はい はい
:above (URI) はい はい
:in (トークン) いいえ いいえ
:below (トークン) いいえ いいえ
:above (トークン) いいえ いいえ
:not-in (トークン) いいえ 番号
:identifier 番号 いいえ

特定の順序 (数値、日付、数量) を持つ検索パラメーターの場合は、パラメーター値の前に prefix を使用して検索条件を絞り込むことができます (たとえば、プレフィックスgtが "より大きい" を意味するPatient?_lastUpdated=gt2022-08-01)。 Azure Health Data Services の FHIR サービスでは、FHIR 標準で定義されているすべてのプレフィックスがサポートされています。

検索結果のパラメーター

FHIR は、検索から返される情報の管理に役立つ一連の検索結果パラメーターを指定します。 FHIR の検索結果パラメーターの使い方の詳細については、HL7 Web サイトを参照してください。 FHIR 検索結果パラメーターと FHIR サービスでのそれらのサポートの一覧を次に示します。

検索結果のパラメーター Azure Health Data Services の FHIR サービス Azure API for FHIR コメント
_elements はい イエス
_count イエス はい _count は 1,000 リソースに制限されています。 1000 より大きく設定されている場合は、1000 のみが返され、警告がバンドルに含まれます。
_include はい はい _include で取得される項目は 100 に制限されます。 _include PaaS および Azure Cosmos DB 上の OSS では、 :iterate (#2137)はサポートされていません。
_revinclude はい はい _revinclude で取得される項目は 100 に制限されます。 _revinclude PaaS および Azure Cosmos DB 上の OSS では、 :iterate (#2137)はサポートされていません。 また、不適切な要求に対する正しくない状態コードがあります #1319
_summary はい はい
_total 部分的 Partial _total=none および _total=accurate
_sort 部分的 Partial sort=_lastUpdated は FHIR サービスでサポートされています。 FHIR サービスと OSS SQL DB FHIR サーバーでは、文字列と dateTime フィールドによる並べ替えがサポートされています。 2021 年 4 月 20 日以降に作成された Azure API for FHIR および OSS Azure Cosmos DB データベースでは、姓、生年月日、臨床日で並べ替えがサポートされています。
_contained いいえ 番号
_containedType 番号 番号
_score 番号 いいえ

注意:

  1. 既定では、_sort はレコードを昇順に並べ替えられます。 プレフィックス - を使用して、降順で並べ替えることもできます。 FHIR サービスでは、一度に 1 つのフィールドでのみ並べ替えることができます。
  2. FHIR サービスでは、リヴィンクルードを使用したワイルドカード検索がサポートされています。 revinclude クエリに "." クエリ パラメーターを追加すると、ソース リソースにマップされているすべてのリソースを参照するように FHIR サービスに指示されます。

既定では、Azure Health Data Services の FHIR サービスは、厳密ではない処理に設定されています。 これは、不明なパラメーターまたはサポートされていないパラメーターがサーバーによって無視されることを意味します。 厳密な処理を使用する場合は、Prefer ヘッダーを含めて handling=strict を設定できます。

チェーンおよびリバース チェーン検索

チェーン検索を使用すると、別のリソースへの参照を持つリソースに対して、絞り込みクエリを実行できます。 たとえば、患者の名前が Jane である結果を探す場合は、次のコマンドを使用します。

GET {{FHIR_URL}}/Encounter?subject:Patient.name=Jane

上記の要求の . では、チェーン検索のパスをターゲット パラメーター (この場合はname) に誘導します。

同様に、_has パラメーターを使用してリバース チェーン検索を実行できます。 これにより、目的のリソースを参照する他のリソースの条件を指定して、リソース インスタンスを取得できます。 チェーン検索とリバース チェーン検索のその他の例については、「FHIR 検索の例」ページを参照してください。

ページ区切り

前述のように、FHIR 検索の結果は、 searchset バンドル内のリンクにあるページ分割された形式で使用できます。 既定では、FHIR サービスでは 1 ページあたり 10 件の検索結果が表示されますが、 _count パラメーターを設定することで、これを増減できます。 1 つのページに収まるよりも多くの一致がある場合、バンドルには next リンクが含まれます。 next リンクから繰り返しフェッチすると、後続の結果ページが生成されます。 _count パラメーター値は 1000 を超えることはできません。

現時点では、Azure Health Data Services の FHIR サービスは next リンクのみをサポートしており、検索から返されるバンドル内の firstlast、または previous リンクはサポートしていません。

次のステップ

FHIR 検索の基本について学習したので、検索パラメーター、修飾子、その他の FHIR 検索メソッドを使用して検索する方法の詳細について、検索サンプルのページを参照してください。

FHIR® は HL7 の登録商標であり、HL7 の許可を得て使用しています。