カスタム FHIR 検索の作成

このページでは、FHIR 標準検索パラメータでカバーされていないフィールドと拡張機能のカスタム検索パラメータをサポートする FHIR ストアの設定法について説明します。

カスタム検索パラメータは次のような多くの状況で有用です。

  • FHIR リソース内のフィールドを検索する必要がありますが、このフィールドに対してサポートされている検索パラメータは存在しません。
  • FHIR データモデルに追加された拡張機能を検索する必要があります。

概要

デフォルトでは、FHIR 仕様で定義されている標準検索パラメータは、FHIR リソースの検索によってサポートされています。ただし、FHIR 機能ステートメントまたは FHIR 適合性宣言に記載されている検索パラメータは除きます。

1 つ以上のカスタム検索パラメータを作成し、作成したパラメータを search メソッドを介してクエリでサポートするように FHIR ストアを構成できます。カスタム検索パラメータは、次のような状況で有用です。

  • 標準の検索パラメータに含まれていないフィールドを検索する。
  • FHIR データモデルの拡張機能を検索する。

FHIR 実装ガイドの多くには、検索で使用する検索パラメータが定義されています。

カスタム検索パラメータは、次のような標準の検索パラメータと高度な FHIR 検索機能を含む、同じ検索動作をサポートしています。

  • 修飾キー
  • _include_revinclude
  • チェーン検索
  • _sort

FHIR ストアのカスタム検索を有効にするには、まず、検索動作を定義する SearchParameter リソースを 1 つ以上作成する必要があります。SearchParameter は、他のリソースタイプと同じ方法で作成、更新、削除できる標準の FHIR リソースタイプです。ストアに検索パラメータ リソースの作成をご覧ください。

FHIR ストア内の SearchParameter リソースは、configureSearchメソッドを使用して設定すると、有効になります。このメソッドを使用すると、カスタム検索パラメータのリストが有効になります。メソッドを呼び出すたびに、以前のパラメータ リストが置き換えられます。configureSearch に対して長時間実行オペレーションがトリガーされ、新しい検索設定に従って、ストア内の関連するすべてのリソースがインデックスに再登録されます。メソッド呼び出し後に新しく更新されたすべてのリソースは、新しい設定に従ってインデックスに登録されます。すでに設定にないカスタム検索パラメータのインデックス データはすべて削除されます。 configureSearch の使用方法について詳しくは、FHIR ストアのカスタム検索パラメータを有効にするをご覧ください。

ストアの CapabilityStatementfhir.capabilities メソッドを使用して取得され、標準検索パラメータとカスタム検索パラメータの両方を一覧表示します。リソースの検索パラメータは rest.resource.searchParam フィールドにあります。

FHIR ストアに SearchParameter リソースを作成します。

次のサンプルは、projects.locations.datasets.fhirStores.fhir.create メソッドを使用して、カスタム検索パラメータ リソースを作成する方法を示しています。projects.locations.datasets.fhirStores.import メソッドも使用できます。

検索パラメータの関連フィールドの説明については、SearchParameter のリソース フィールドをご覧ください。

curl

次のサンプルは、curlを使用した POST リクエストを示しています。

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
        \"resourceType\": \"SearchParameter\",
        \"url\": \"CANONICAL_URL\",
        \"base\": [\"RESOURCE_TYPE\"],
        \"code\": \"SEARCH_PARAMETER_CODE\",
        \"name\": \"SEARCH_PARAMETER_NAME\",
        \"type\": \"SEARCH_PARAMETER_TYPE\",
        \"expression\": \"SEARCH_PARAMETER_EXPRESSION\",
        \"status\": \"active\",
        \"description\": \"SEARCH_PARAMETER_DESCRIPTION\"
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "resourceType": "SearchParameter",
  "url": "CANONICAL_URL",
  "base": ["RESOURCE_TYPE"],
  "code": "SEARCH_PARAMETER_CODE",
  "name": "SEARCH_PARAMETER_NAME",
  "type": "SEARCH_PARAMETER_TYPE",
  "expression": "SEARCH_PARAMETER_EXPRESSION",
  "status": "active",
  "description": "SEARCH_PARAMETER_DESCRIPTION",
  "meta": {
    "lastUpdated": "LAST_UPDATED",
    "versionId": "VERSION_ID"
  },
}

PowerShell

次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

$SearchParameter = '{
    "resourceType": "SearchParameter",
    "url": "CANONICAL_URL",
    "base": ["RESOURCE_TYPE"],
    "code": "SEARCH_PARAMETER_CODE",
    "name": "SEARCH_PARAMETER_NAME",
    "type": "SEARCH_PARAMETER_TYPE",
    "expression": "SEARCH_PARAMETER_EXPRESSION",
    "status": "active",
    "description": "SEARCH_PARAMETER_DESCRIPTION"
}'

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $SearchParameter `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter" | ConvertTo-Json

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "resourceType": "SearchParameter",
  "url": "CANONICAL_URL",
  "base": ["RESOURCE_TYPE"],
  "code": "SEARCH_PARAMETER_CODE",
  "name": "SEARCH_PARAMETER_NAME",
  "type": "SEARCH_PARAMETER_TYPE",
  "expression": "SEARCH_PARAMETER_EXPRESSION",
  "status": "active",
  "description": "SEARCH_PARAMETER_DESCRIPTION",
  "meta": {
    "lastUpdated": "LAST_UPDATED",
    "versionId": "VERSION_ID"
  },
}

FHIR ストアのカスタム検索パラメータを有効にする

FHIR ストアに対して 1 つ以上のカスタム検索パラメータを有効にするには、[store base URL]:configureSearchメソッドにPOSTリクエストを行い、有効にする各検索パラメータに対して正規 URL を指定します。

正規 URL は、次のいずれかの形式で指定できます。

  • uri: その URI のストアで使用可能な最大のversionを選択
  • uri|version: 特定のバージョンを選択

たとえば、http://example.com/searchURI を有する検索パラメータ用のバージョン1.0.01.0.1がストアに含まれる場合、正規 URL http://example.com/search|1.0.0によって、1.0.0バージョンが選択されます。正規 URL http://example.com/search では 1.0.1 バージョンが選択されます。

このメソッドに提供された URL のリストによって、以前の設定は置き換えられ、以前に有効だったカスタム検索パラメータは削除されます。構成は、configureSearch が呼び出された時点で存在していた SearchParameter リソースの内容に基づいてキャッシュに保存されます。そして、configureSearch が再度呼び出されるまで、SearchParameter リソースが更新されても削除されても、構成は更新されません。

[store base URL]:configureSearch メソッドの呼び出しが成功すると、戻り値は長時間実行オペレーションの名前になり、新しい構成に従ってストア内のリソースを再インデックス登録します。operations.get メソッドを使用して、長時間実行オペレーションのステータスを表示できます。また、operations.cancel メソッドを使用して、そのオペレーションをキャンセルできます。ステータスには、正常に再インデックス化されたリソースの数を示すカウンターが含まれます。

ストア内の検索は通常、長時間実行オペレーションの実行中も引き続き機能します。ただし、このオペレーションによって追加または変更されたカスタム検索パラメータは、部分的な結果を返します。操作をキャンセルしても安全ですが、カスタム検索パラメータのインデックスが部分的に作成されます。新たに追加または変更されたパラメータを使用して検索する前に、インデックス登録オペレーション全体を正常に完了することが重要です。

エラーがある場合は、Cloud Logging に表示されます。

configureSearch メソッドをオプション "validate_only": true とともに使用して、ストア設定の変更やデータの再インデックス登録を行わずに、指定した検索パラメータを検証することもできます。

次のサンプルでは、projects.locations.datasets.fhirStores.configureSearch メソッドを使用して FHIR ストアの 1 つ以上のカスタム検索パラメータを有効にする方法が示されます。

curl

次のサンプルは、curlを使用した POST リクエストを示しています。

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
        \"canonicalUrls\": [\"CANONICAL_URL1\",\"CANONICAL_URL2\"],
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get メソッドを使用します。

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

長時間実行オペレーションがまだ実行中の場合、サーバーは、インデックス再作成保留中の FHIR リソースの数を JSON 形式で返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch",
    "createTime": "CREATE_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "pending": "PENDING_COUNT"
    }
  }
}

LRO が終了すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty",
  }
}

LRO が成功した場合、レスポンスには、正常に再インデックス付けされた FHIR リソースの数と google.protobuf.Empty レスポンス タイプが含まれます。

PowerShell

次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

$configureSearch = '{
  "canonical_urls": [
    "CANONICAL_URL1",
    "CANONICAL_URL2"
  ]
}'

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body $configureSearch `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"

リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

レスポンスにはオペレーション名が含まれています。オペレーションのステータスを追跡するには、オペレーションの get メソッドを使用します。

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

長時間実行オペレーションがまだ実行中の場合、サーバーは、インデックス再作成保留中の FHIR リソースの数を JSON 形式で返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch",
    "createTime": "CREATE_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "pending": "PENDING_COUNT"
    }
  }
}

LRO が終了すると、サーバーはオペレーションのステータスを含む JSON 形式のレスポンスを返します。

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty",
  }
}

LRO が成功した場合、レスポンスには、正常に再インデックス付けされた FHIR リソースの数と google.protobuf.Empty レスポンス タイプが含まれます。

他の検索と同じ方法で、カスタム SearchParameter を使用して検索できます。検索パラメータリソースの code 値を検索クエリの key として使用します。詳細については、FHIR リソースの検索をご覧ください。

SearchParameter のリソース フィールド

次のセクションでは、カスタム検索に関連する SearchParameter リソースのフィールドについて説明します。これらのフィールドは、FHIR の STU3 バージョンと R4 バージョンの両方で使用できます。

uriversion

uri フィールド(必須)と version フィールド(省略可)は、SearchParameter リソースの正規 URL を定義します。uriversion の組み合わせは、FHIR ストア内で一意である必要があります。

正規 URL によって、configureSearch 呼び出しで使用される URL が定義されます。

namedescriptionstatus

namedescriptionstatus の各フィールドは必須ですが、機能的効果はありません。

base

base フィールドには、この検索が適用される FHIR リソースタイプが一覧表示されます。

複数のタイプがある場合、expression フィールドには各タイプの句が必要です。2 つのタイプに 1 つのパラメータを定義する場合でも、各タイプに 1 つのパラメータを定義する場合でも、違いはありません。複数のリソースタイプに対して 1 つのパラメータを定義すると、定義がよりコンパクトになります。

code

code フィールドでは、FHIR 検索クエリで使用するキーが定義されます。たとえば、codepayment-type として定義され、baseClaim として定義されている場合、このパラメータを使用する検索クエリは Claim?payment-type=ABC になります。

code フィールドには、同じリソースタイプで、他の標準またはカスタム検索パラメータと同じ値を指定することはできません。標準の検索パラメータでは、カスタム検索パラメータを使用して再定義または変更することはできません。configureSearch メソッドでは、重複する検索パラメータは拒否されます。

code フィールドの値は、次の要件を満たす必要があります。

  • 先頭は英字にしてください
  • 64 文字までにしてください。
  • 次の構成要素のみを使用できます。
    • 英数字
    • ハイフン(-
    • アンダースコア文字 _

code フィールドの FHIR 標準規則では、小文字とダッシュが使用されます。

type

type フィールドでは、検索パラメータのタイプが定義されます。検索パラメータのタイプによって、FHIR 検索の仕様に定義されたとおりに、検索条件のセマンティクスが決まります。この値 type は、expression フィールドで指定されたフィールドのデータタイプとの互換性が必要です。そうでない場合、configureSearch ではカスタム検索パラメータが拒否されます。

type フィールドは次のいずれかのように定義する必要があります。

  • number
  • date
  • string
  • token
  • reference
  • quantity
  • uri

composite タイプと special タイプはサポートされていません。

expression

expression フィールドでは、検索パラメータによってクエリが実行されるフィールドまたは拡張機能が定義されます。このフィールドで使用できるのは、FHIRPath の構文と関数のセットに限定されています。

フィールドの構文

expression フィールドは、リソースタイプで始まり、Patient.contact.name.given などの . で区切られた 1 つ以上のフィールドが続くパスとして定義されます。FHIR データのフィールド構造に関しては、FHIR リソースFHIR データタイプをご覧ください。

複数の句

expression フィールドには、| で区切られた複数の句を含めることができます。この場合、句のいずれかがリソースに一致すると、検索パラメータが一致します。たとえば、式 Patient.name.given | Patient.name.family の検索パラメータは、この 2 つのフィールドのいずれかと一致します。base で複数のリソースタイプが指定されている場合は、複数の句を使用します。たとえば、PatientPractitioner の両方に適用される検索パラメータの場合は Patient.name.given | Practitioner.name.given です。

.as([data type])

フィールドに潜在的な複数のデータタイプがある場合は、関数 .as([data type]) を使用します。たとえば、Observation.value フィールドには QuantityString など、多くのさまざまなタイプを含めることができ、それらはさまざまな詮索タイプと連携します。Observation.value.as(Quantity) または Observation.value.as(String) を使用してこれらの検索タイプを選択できます。

拡張機能の選択

.extension([canonical url]) 関数を使用して拡張機能を選択できます。拡張機能には、任意のデータ型を含めることができる value フィールドが含まれているため、フルパスは .extension([canonical url]).value.as([data type]) として定義されます。複雑な拡張機能では、複数の .extension() コンポーネントを使用できます(例: Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept))。

.extension.where(url='[canonical url]') 関数を使用して拡張機能を選択することもできます。これは、where() 関数が許可されている唯一のコンテキストです。

他の FHIRPath 関数はサポートされていません。

target

type フィールドが reference として定義されている場合、target フィールドには、この参照検索のターゲットにできるリソースタイプを定義する 1 つ以上の FHIR リソースタイプを含める必要があります。

たとえば、Patient.generalPractitioner フィールドで PractitionerPractitionerRoleOrganization への参照が許可されている場合、検索パラメータは PractitionerPractitionerRole、または Organization への参照と一致させることができます。すべての参照のターゲット タイプと一致するように、target フィールドにすべてのタイプを含めます。

modifiercomparatormultipleOrmultipleAndchain

フィールド modifiercomparatormultipleOrmultipleAndchain は無視されます。カスタム検索パラメータで使用できるオプションと機能は、同じ種類の標準検索パラメータで FHIR ストアによってサポートされるものと同じです。

FHIR 実装ガイドから取得した検索パラメータを実装する場合は、次のいずれかのメソッドを使用して、SearchParameter リソースを実装ガイドの JSON ファイルから FHIR ストアにインポートします。

場合によっては、Cloud Healthcare API の公開検索パラメータを変換してサポートする必要があります。検索パラメータが変換されない場合、configureSearch メソッドはそれらを拒否します。実装ガイドの検索パラメータには、次の制約が適用されます。

  • 検索パラメータが基本 FHIR 仕様のパラメータと同一である場合、configureSearch メソッドによって、重複する検索パラメータは拒否されます。configureSearch を呼び出すときは、このような重複を省略します。詳細については、code をご覧ください。

  • 検索パラメータに xpath 式のみが含まれる場合は、その式を同等の FHIRPath 式に変換し、expression フィールドで使用します。詳細については、expression をご覧ください。

  • compositespecial の検索パラメータ タイプはサポートされていません。

  • 代替の型キャスト構文 ([field] as [data type]) はサポートされていません。サポートされている同等の [field].as([data type]) に変換します。詳細については、.as([data type]) をご覧ください。

  • 参照されるリソースのタイプを制限する [reference field].where(resolve() is [resource type]) 規則はサポートされていません。where() 句を削除し、参照されるリソースタイプを SearchParameter.target フィールドに格納します。詳細については、target をご覧ください。

  • 一部の実装ガイドでは、Cloud Healthcare API の FHIR ストアに必要なパス コンポーネントの一部を省略した拡張機能の式を使用しています。たとえば、Patient.extension('url')Patient.extension('url').value.as([data type]) に変更し、Patient.extension('url').extension.valuePatient.extension('url').extension('url2').value.as([data type]) に変更する必要があります。

カスタム検索を使用して拡張機能フィールドを検索する

次の手順では、患者リソースの mothersMaidenName 拡張機能内でテキストを検索する例を説明します。

  1. サンプルの患者リソースを作成する:

    curl

    次のサンプルは、curlを使用して POST リクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、mothersMaidenName拡張子が Marca に設定されています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          \"name\": [
              {
                  \"use\": \"official\",
                  \"family\": \"Smith\",
                  \"given\": [
                      \"Darcy\"
                  ]
              }
          ],
          \"gender\": \"female\",
          \"birthDate\": \"1970-01-01\",
          \"resourceType\": \"Patient\",
          \"extension\": [
              {
                  \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName\",
                  \"valueString\": \"Marca\"
              }
          ]
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
    

    リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
            "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
            "valueString": "Marca"
        }
      ]
    }
    

    PowerShell

    次のサンプルは、Windows PowerShell を使用して POST リクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、mothersMaidenName拡張子が Marca に設定されています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $Patient = '{
        "name": [
            {
                "use": "official",
                "family": "Smith",
                "given": [
                    "Darcy"
                ]
            }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient",
        "extension": [
            {
                "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
                "valueString": "Marca"
            }
        ]
    }'
    
    Invoke-RestMethod `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/fhir+json; charset=utf-8" `
      -Body $Patient `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
    

    リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
            "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
            "valueString": "Marca"
        }
      ]
    }
    

  2. カスタム検索パラメータ リソースを作成する

    curl

    次の例は、curl を使用して POST リクエストを実行し、mothersMaidenName 拡張機能のカスタム検索パラメータ リソースを作成する方法を示しています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"resourceType\": \"SearchParameter\",
            \"url\": \"http://example.com/SearchParameter/patient-mothersMaidenName\",
            \"base\": [\"Patient\"],
            \"code\": \"mothers-maiden-name\",
            \"name\": \"mothers-maiden-name\",
            \"type\": \"string\",
            \"expression\": \"Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)\",
            \"status\": \"active\",
            \"description\": \"search on mother's maiden name\"
      }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    { 
     "resourceType": "SearchParameter",
     "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
     "base": ["Patient"],
     "code": "mothers-maiden-name",
     "name": "mothers-maiden-name",
     "type": "string",
     "expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
     "status": "active",
     "description": "search on mother's maiden name",
     "meta": {
      "lastUpdated": "2020-01-01T00:00:00+00:00",
      "versionId": "VERSION_ID"
     },
    }

    PowerShell

    次の例は、Windows PowerShell を使用して `POST` リクエストを実行し、`mothersMaidenName` 拡張子のカスタム検索パラメータ リソースを作成する方法を示しています。
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $SearchParameter = '{
        "resourceType": "SearchParameter",
        "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
        "base": ["Patient"],
        "code": "mothers-maiden-name",
        "name": "mothers-maiden-name",
        "type": "string",
        "expression": "Patient.extension(''http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName'').value.as(String)",
        "status": "active",
        "description": "search on mother''s maiden name"
    }'
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $SearchParameter `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    { 
     "resourceType": "SearchParameter",
     "url": "http://example.com/SearchParameter/patient-mothersMaidenName",
     "base": ["Patient"],
     "code": "mothers-maiden-name",
     "name": "mothers-maiden-name",
     "type": "string",
     "expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
     "status": "active",
     "description": "search on mother's maiden name",
     "meta": {
       "lastUpdated": "2020-01-01T00:00:00+00:00",
       "versionId": "VERSION_ID"
     },
    }
    expression フィールドで別のデータ型をターゲットにするには、.as([data type]) 関数を使用します。たとえば、ブール値の検索式を指定するには、.value.as(Boolean) を使用します。詳細については、.as([data type]) をご覧ください。

  3. 検索パラメータを有効にする:

    curl

    カスタム検索パラメータを有効にするには、POST リクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。

    次のサンプルは、curlを使用した POST リクエストを示しています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-mothersMaidenName\"],
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

    PowerShell

    カスタム検索パラメータを有効にするには、POST リクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $configureSearch = '{
      "canonicalUrls": "http://example.com/SearchParameter/patient-mothersMaidenName"
    }' `
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $configureSearch `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

  4. カスタム検索パラメータを使用して検索する

    curl

    次のサンプルは、curl を使用して GET リクエストを実行し、mothersMaidenName 拡張子の文字列 Marca の患者リソースを検索する方法を示しています。

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca"
    

    リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR Bundle として返します。Bundle.typesearchset で、検索結果は Bundle.entry 配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                  "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
                  "valueString": "Marca"
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    以下のサンプルは、Windows PowerShell を使用して `GET` リクエストを実行し、`mothersMaidenName` 拡張子の `Marca` という文字列の患者リソースを検索する方法を説明します。
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca" | ConvertTo-Json
    

    リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR Bundle として返します。Bundle.typesearchset で、検索結果は Bundle.entry 配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                  "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
                  "valueString": "Marca"
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

カスタム検索を使用して 2 段階の拡張機能フィールドを検索する

次の手順では、Patient リソースの us-core-ethnicity 拡張機能内でコードを検索する方法を示します。

  1. サンプルの患者リソースを作成する:

    curl

    次のサンプルは、curlを使用して POST リクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、us-core-ethnicity 拡張子が設定されています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
          \"name\": [
              {
                  \"use\": \"official\",
                  \"family\": \"Smith\",
                  \"given\": [
                      \"Darcy\"
                  ]
              }
          ],
          \"gender\": \"female\",
          \"birthDate\": \"1970-01-01\",
          \"resourceType\": \"Patient\",
          \"extension\": [
              {
                \"url\": \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity\",
                \"extension\": [
                  {
                    \"url\" : \"ombCategory\",
                    \"valueCoding\" : {
                      \"system\" : \"urn:oid:2.16.840.1.113883.6.238\",
                      \"code\" : \"2028-9\",
                      \"display\" : \"Asian\"
                    }
                  }
                ]
              }
          ]
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
    

    リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
          "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
          "extension": [
            {
              "url" : "ombCategory",
              "valueCoding" : {
                "system" : "urn:oid:2.16.840.1.113883.6.238",
                "code" : "2028-9",
                "display" : "Asian"
              }
            }
          ]
        }
      ]
    }
    

    PowerShell

    次のサンプルは、Windows PowerShell を使用して POST リクエストを実行し、患者リソースを作成する方法を示しています。この患者リソースでは、us-core-ethnicity 拡張子が設定されています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $Patient = '{
        "name": [
            {
                "use": "official",
                "family": "Smith",
                "given": [
                    "Darcy"
                ]
            }
        ],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient",
        "extension": [
          {
            "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
            "extension": [
              {
                "url" : "ombCategory",
                "valueCoding" : {
                  "system" : "urn:oid:2.16.840.1.113883.6.238",
                  "code" : "2028-9",
                  "display" : "Asian"
                }
              }
            ]
          }
        ]
    }'
    
    Invoke-RestMethod `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/fhir+json; charset=utf-8" `
      -Body $Patient `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
    

    リクエストが成功すると、サーバーは JSON 形式の次のサンプルのようなレスポンスを返します。

    {
      "birthDate": "1970-01-01",
      "gender": "female",
      "id": "PATIENT_ID",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
      "name": [
        {
          "family": "Smith",
          "given": [
            "Darcy"
          ],
          "use": "official"
        }
      ],
      "resourceType": "Patient"
      "extension": [
        {
          "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
          "extension": [
            {
              "url" : "ombCategory",
              "valueCoding" : {
                "system" : "urn:oid:2.16.840.1.113883.6.238",
                "code" : "2028-9",
                "display" : "Asian"
              }
            }
          ]
        }
      ]
    }
    

  2. カスタム検索パラメータ リソースを作成する

    curl

    次の例は、curl を使用して POST リクエストを実行し、us-core-ethnicity 拡張機能のカスタム検索パラメータ リソースを作成する方法を示しています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"resourceType\": \"SearchParameter\",
            \"url\": \"http://example.com/SearchParameter/patient-us-core-ethnicity\",
            \"base\": [\"Patient\"],
            \"code\": \"ethnicity\",
            \"name\": \"ethnicity\",
            \"type\": \"token\",
            \"expression\": \"Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)\",
            \"status\": \"active\",
            \"description\": \"search on the ombCategory of a patient.\"
      }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "resourceType": "SearchParameter",
      "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
      "base": ["Patient"],
      "code": "ethnicity",
      "name": "ethnicity",
      "type": "token",
      "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)",
      "status": "active",
      "description": "search on the ombCategory of a patient.",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
    }
    
    

    PowerShell

    次の例は、Windows PowerShell を使用して `POST` リクエストを実行し、`mothersMaidenName` 拡張子のカスタム検索パラメータ リソースを作成する方法を示しています。
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $SearchParameter = '{
        "resourceType": "SearchParameter",
        "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
        "base": ["Patient"],
        "code": "ethnicity",
        "name": "ethnicity",
        "type": "token",
        "expression": "Patient.extension(''http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'').extension(''ombCategory'').value.as(Coding)",
        "status": "active",
        "description": "search on the ombCategory of a patient."
    }'
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $SearchParameter `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "resourceType": "SearchParameter",
      "url": "http://example.com/SearchParameter/patient-us-core-ethnicity",
      "base": ["Patient"],
      "code": "ethnicity",
      "name": "ethnicity",
      "type": "token",
      "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)",
      "status": "active",
      "description": "search on the ombCategory of a patient.",
      "meta": {
        "lastUpdated": "2020-01-01T00:00:00+00:00",
        "versionId": "VERSION_ID"
      },
    }
    
    

  3. 検索パラメータを有効にする:

    curl

    カスタム検索パラメータを有効にするには、POST リクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。

    次のサンプルは、curlを使用した POST リクエストを示しています。

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data "{
            \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-us-core-ethnicity\"],
        }" \
        "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

    PowerShell

    カスタム検索パラメータを有効にするには、POST リクエストを作成し、有効にする各検索パラメータの正規 URL を指定します。

    次のサンプルは、Windows PowerShell を使用した POST リクエストを示しています。

    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    $configureSearch = '{
      "canonicalUrls": "http://example.com/SearchParameter/patient-us-core-ethnicity"
    }' `
    
    Invoke-WebRequest `
      -Method Post `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -Body $configureSearch `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
    

    リクエストが成功すると、サーバーは JSON 形式のレスポンスを返します。

    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
    }
    

  4. カスタム検索パラメータを使用して検索する

    curl

    次のサンプルは、curl を使用して GET リクエストを実行し、us-core-ethnicity 拡張子のコード urn:oid:2.16.840.1.113883.6.238|2028-9 の患者リソースを検索する方法を示しています。

    curl -X GET \
        -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
    

    リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR Bundle として返します。Bundle.typesearchset で、検索結果は Bundle.entry 配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
                "extension": [
                  {
                    "url" : "ombCategory",
                    "valueCoding" : {
                      "system" : "urn:oid:2.16.840.1.113883.6.238",
                      "code" : "2028-9",
                      "display" : "Asian"
                    }
                  }
                ]
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }
    

    PowerShell

    次のサンプルは、Windows PowerShell を使用して `GET` リクエストを実行し、`us-core-ethnicity` 拡張子のコード `urn:oid:2.16.840.1.113883.6.238|2028-9` の患者リソースを検索する方法を示しています。
    $cred = gcloud auth application-default print-access-token
    $headers = @{ Authorization = "Bearer $cred" }
    
    Invoke-RestMethod `
      -Method Get `
      -Headers $headers `
      -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9 | ConvertTo-Json
    

    リクエストが成功すると、サーバーはレスポンスを JSON 形式の FHIR Bundle として返します。Bundle.typesearchset で、検索結果は Bundle.entry 配列のエントリです。この例では、リクエストはそのリソース内のデータを含む単一の患者リソースを返します。

    {
      "entry": [
        {
          "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID",
          "resource": {
            "birthDate": "1970-01-01",
            "gender": "female",
            "id": "PATIENT_ID",
            "meta": {
              "lastUpdated": "LAST_UPDATED",
              "versionId": "VERSION_ID"
            },
            "name": [
              {
                "family": "Smith",
                "given": [
                  "Darcy"
                ],
                "use": "official"
              }
            ],
            "resourceType": "Patient"
            "extension": [
              {
                "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
                "extension": [
                  {
                    "url" : "ombCategory",
                    "valueCoding" : {
                      "system" : "urn:oid:2.16.840.1.113883.6.238",
                      "code" : "2028-9",
                      "display" : "Asian"
                    }
                  }
                ]
              }
            ]
          },
          "search": {
            "mode": "match"
          }
        }
      ],
      "link": [
        {
          "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
        }
      ],
      "resourceType": "Bundle",
      "total": 1,
      "type": "searchset"
    }