医療データに対してクエリを実行する場合は、フィルタを使用して検索結果を絞り込むことができます。検索リクエストでフィルタを指定すると、特定の検索レスポンスを含めるか除外するかの条件を適用できます。
たとえば、1 人の患者のデータを検索する場合、検索リクエストの本文には、患者 ID を指定する次のフィルタ式を含める必要があります。
"filter": "patient_id: ANY(\"PATIENT_ID\")"
このページでは、医療検索のフィルタを定義する方法について説明します。
始める前に
始める前に、次のことを行います。
- 医療検索アプリと医療検索データストアを作成し、FHIR R4 データをインポートします。詳細については、医療検索アプリを作成すると医療検索データストアを作成するをご覧ください。
- Vertex AI Search がインデックス登録可能、検索可能、取得可能なフィールドとしてサポートする FHIR R4 リソースのリストをご確認ください。詳細については、Healthcare FHIR R4 データスキーマ リファレンスをご覧ください。
- フィルタ式の構文を理解します。
フィルタを定義する
フィルタは、servingConfigs.search
メソッドのリクエスト本文の filter
フィールドで指定します。
フィルタ定義は、フィルタ式の構文に従います。フィルタ式のリテラルは、検索クエリのレスポンスからインデックスに登録できる任意のフィールドにすることができます。たとえば、レスポンスに Observation リソースが含まれている場合、Observation リソースが参照する patient_id
をフィルタ リテラルとして使用できます。
以降のセクションでは、フィルタを構築する方法の例をいくつか示します。
resource_datetime
フィルタを定義する
この例では、指定した日時より後の resource_datetime
値を持つリソースのみを含む検索のフィルタを指定する方法を示します。
REST
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://us-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "filter": "patient_id: ANY(\"PATIENT_ID\") AND resource_datetime > \"DATE_TIME_VALUE, "contentSearchSpec":{"snippetSpec":{"returnSnippet":true}} }'
以下を置き換えます。
PROJECT_ID
: Google Cloud プロジェクトの ID。DATA_STORE_ID
: Vertex AI Search データストアの ID。QUERY
: 検索クエリ。PATIENT_ID
: データを検索する患者のリソース ID。DATE_TIME_VALUE
: FHIR の dateTime 形式の日時を表すresource_datetime
フィールドの値。このフィールドの例を次に示します。-
T
区切りでタイムゾーンを含む日時を指定するには:2022-08-05T01:00:00+00:00
- 日付を指定するには:
2022-08-05
- 月を指定するには:
2022-08
- 年を指定するには:
2022
-
リソースタイプのフィルタを定義する
次の例は、AND
演算子を使用して、まずすべての Composition リソースをフィルタし、次に指定された日時より後の日付のリソースをフィルタするフィルタを作成する方法を示しています。
"filter": "resource_type: ANY("Composition") AND Composition.date > "2022-08-05T01:00:00+00:00""
FHIR リソース フィルタを定義する
フィルタを使用して、Vertex AI Search データストアに FHIR リソースが存在するかどうかを確認できます。たとえば、次のフィルタを使用して、ID が 6112d1ac-c6bd-4755-d689-bfb71d59afc5
の DocumentReference リソースを検索できます。
"filter": "DocumentReference.id: ANY(\"6112d1ac-c6bd-4755-d689-bfb71d59afc5\")"