医療検索をフィルタする

医療データに対してクエリを実行する場合は、フィルタを使用して検索結果を絞り込むことができます。検索リクエストでは、特定の検索レスポンスを含めるか除外する条件を適用するフィルタを指定できます。

たとえば、単一の患者のデータを検索する場合、検索リクエストの本文には、患者 ID を指定する次のフィルタ式を含める必要があります。

"filter": "patient_id: ANY(\"PATIENT_ID\")"

このページでは、医療検索のフィルタを定義する方法について説明します。

始める前に

始める前に、次のことを行います。

フィルタを定義する

フィルタは、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 リソースフィルタを定義する

フィルタを使用して、FHIR リソースが Vertex AI Search データストアに存在するかどうかを確認できます。たとえば、次のフィルタを使用して、ID が 6112d1ac-c6bd-4755-d689-bfb71d59afc5 の DocumentReference リソースを検索できます。

"filter": "DocumentReference.id: ANY(\"6112d1ac-c6bd-4755-d689-bfb71d59afc5\")"