医療検索をフィルタする

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

たとえば、1 人の患者のデータを検索する場合、検索リクエストの本文には、患者 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

次のような切り捨てられたレスポンスに似た JSON レスポンスが返されます。レスポンスには、項目別に表示された検索結果が、時系列の逆順で、スニペットとともに含まれます(スニペットが利用可能な場合)。structData フィールドには、ドキュメントの構造化 JSON データが含まれます。

{
    "results": [
    {
        "id": "DOCUMENT_ID",
        "document": {
        "name": "projects/PROJECT_ID/locations/us/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents/DOCUMENT_ID",
        "id": "DOCUMENT_ID",
        "structData": {
            ...
            "resource_type": "FHIR_RESOURCE_TYPE",
            "resource_datetime": "RESOURCE_DATETIME",
            "patient_id": "PATIENT_ID",
            "FHIR_RESOURCE_TYPE": { ... }
        },
        "derivedStructData": {
            "snippets": [
            {
                "snippet": "SNIPPET_TEXT",
                "snippet_status": "SUCCESS"
            }
            ]
        }
        }
    }]
}

リソースタイプのフィルタを定義する

次の例は、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\")"