Criar pesquisas FHIR personalizadas

Esta página descreve como configurar um FHIR store para suportar parâmetros de pesquisa personalizados para campos e extensões que não estão abrangidos pelos parâmetros de pesquisa padrão FHIR.

Os parâmetros de pesquisa personalizados podem ser úteis em muitas situações, incluindo as seguintes:

  • Tem de pesquisar um campo num recurso FHIR, mas não existe um parâmetro de pesquisa compatível para o campo.
  • Tem de pesquisar em extensões adicionadas ao modelo de dados FHIR.

Vista geral

Por predefinição, a pesquisa de recursos FHIR suporta os parâmetros de pesquisa padrão definidos na especificação FHIR, com algumas exclusões documentadas na declaração de capacidade FHIR ou declaração de conformidade FHIR.

Pode criar um ou mais parâmetros de pesquisa personalizados e configurar a loja FHIR para os suportar em consultas através do método search. Os parâmetros de pesquisa personalizados são úteis nas seguintes situações:

  • Para pesquisar em campos não abrangidos pelos parâmetros de pesquisa padrão.
  • Para pesquisar extensões no modelo de dados FHIR.

Muitos guias de implementação da FHIR definem parâmetros de pesquisa que pode usar nas suas pesquisas.

Os parâmetros de pesquisa personalizados suportam o mesmo comportamento de pesquisa, incluindo funcionalidades de pesquisa FHIR avançadas como parâmetros de pesquisa padrão, como os seguintes:

  • modificadores
  • _include e _revinclude
  • pesquisa encadeada
  • _sort

Para ativar uma pesquisa personalizada para a sua loja FHIR, primeiro tem de criar um ou mais recursos SearchParameter que definam o comportamento de pesquisa. SearchParameter é um tipo de recurso FHIR padrão que pode ser criado, atualizado ou eliminado através dos mesmos métodos que qualquer outro tipo de recurso. Consulte o artigo Crie um recurso de parâmetro de pesquisa na loja.

Os recursos SearchParameter numa loja FHIR não entram em vigor até serem configurados através do método configureSearch. Este método permite uma lista de parâmetros de pesquisa personalizados. Sempre que é chamado, substitui a lista anterior de parâmetros. É acionada uma operação de longa duração para configureSearch reindexar todos os recursos relevantes na loja de acordo com a nova configuração de pesquisa. Todos os recursos novos e atualizados após a chamada do método são indexados de acordo com a nova configuração. Todos os dados de índice para parâmetros de pesquisa personalizados que já não estejam na configuração são removidos. Para mais detalhes sobre como usar configureSearch, consulte o artigo Ative o parâmetro de pesquisa personalizado para a sua loja FHIR.

O CapabilityStatement da loja, obtido através do método fhir.capabilities, apresenta os parâmetros de pesquisa padrão e personalizados. Os parâmetros de pesquisa de um recurso encontram-se no campo rest.resource.searchParam.

Crie um recurso SearchParameter na loja FHIR

Os exemplos seguintes mostram como criar um recurso de parâmetro de pesquisa personalizado com o método projects.locations.datasets.fhirStores.fhir.create. Também pode usar o método projects.locations.datasets.fhirStores.import.

Para ver descrições dos campos relevantes dos parâmetros de pesquisa, consulte os campos de recursos SearchParameter.

curl

O exemplo seguinte mostra um pedido POST através de curl.

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"

Se o pedido for bem-sucedido, o servidor devolve a resposta no formato 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

O exemplo seguinte mostra um pedido POST através do Windows PowerShell.

$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

Se o pedido for bem-sucedido, o servidor devolve a resposta no formato 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"
  },
}

Ative o parâmetro de pesquisa personalizado para o seu FHIR store

Para ativar um ou mais parâmetros de pesquisa personalizados para a sua loja FHIR, faça um pedido POST ao método [store base URL]:configureSearch e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.

Os URLs canónicos são especificados num dos seguintes formatos:

  • uri: seleciona o version maior disponível na loja para esse URI.
  • uri|version Seleciona uma versão específica.

Por exemplo, se a loja contiver as versões 1.0.0 e 1.0.1 para parâmetros de pesquisa com o URI http://example.com/search, o URL canónico http://example.com/search|1.0.0 seleciona a versão 1.0.0. O URL canónico http://example.com/search seleciona a versão 1.0.1.

A lista de URLs fornecida a este método substitui qualquer configuração anterior e remove os parâmetros de pesquisa personalizados que estavam em vigor anteriormente. A configuração é colocada em cache com base no conteúdo dos recursos SearchParameter que existiam no momento em que configureSearch foi chamado. A configuração não é atualizada se os recursos SearchParameter forem atualizados ou eliminados até que configureSearch seja chamado novamente.

Quando a chamada do método [store base URL]:configureSearch é bem-sucedida, o valor de retorno é o nome de uma operação de longa duração para reindexar os recursos na loja de acordo com a nova configuração. Pode ver o estado da operação de longa duração através do método operations.get e cancelá-la através do método operations.cancel. O estado contém um contador que indica quantos recursos foram reindexados com êxito.

As pesquisas na loja continuam a funcionar normalmente enquanto a operação de longa duração é executada, exceto que os parâmetros de pesquisa personalizados que são adicionados ou alterados por esta operação devolvem resultados parciais. Cancelar a operação é seguro, mas resulta na indexação parcial dos parâmetros de pesquisa personalizada. É importante concluir uma operação de reindexação bem-sucedida antes de pesquisar com parâmetros adicionados ou alterados recentemente.

Se existirem erros, estes são apresentados no Cloud Logging.

O método configureSearch também pode ser usado com a opção "validate_only": true para validar os parâmetros de pesquisa especificados sem modificar a configuração da loja e sem reindexar quaisquer dados.

Os exemplos seguintes mostram como ativar um ou mais parâmetros de pesquisa personalizados para a sua loja FHIR através do método projects.locations.datasets.fhirStores.configureSearch.

curl

O exemplo seguinte mostra um pedido POST através de curl.

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"

Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:

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

A resposta contém um nome de operação. Para acompanhar o estado da operação, pode usar o método Operation 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"

Se a operação de longa duração ainda estiver em execução, o servidor devolve uma resposta com o número de recursos FHIR pendentes de reindexação no formato 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"
    }
  }
}

Quando a LRO termina, o servidor devolve uma resposta com o estado da operação no formato 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",
  }
}

Se a LRO for bem-sucedida, a resposta contém o número de recursos FHIR reindexados com êxito e um tipo de resposta google.protobuf.Empty.

PowerShell

O exemplo seguinte mostra um pedido POST através do Windows PowerShell.

$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"

Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:

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

A resposta contém um nome de operação. Para acompanhar o estado da operação, pode usar o método Operation 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"

Se a operação de longa duração ainda estiver em execução, o servidor devolve uma resposta com o número de recursos FHIR pendentes de reindexação no formato 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"
    }
  }
}

Quando a LRO termina, o servidor devolve uma resposta com o estado da operação no formato 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",
  }
}

Se a LRO for bem-sucedida, a resposta contém o número de recursos FHIR reindexados com êxito e um tipo de resposta google.protobuf.Empty.

Pode pesquisar através de um SearchParameter personalizado da mesma forma que qualquer outra pesquisa. Use o valor code do recurso de parâmetro de pesquisa como key para a consulta de pesquisa. Para mais informações, consulte o artigo Pesquisar recursos FHIR.

Campos de recursos SearchParameter

A secção seguinte descreve os campos do recurso SearchParameter relevantes para as pesquisas personalizadas. Estes campos estão disponíveis nas versões STU3 e R4 do FHIR.

uri e version

O campo uri, que é obrigatório, e os campos version, que são opcionais, definem o URL canónico para o recurso SearchParameter. A combinação de uri e version tem de ser única na loja FHIR.

O URL canónico é o URL usado na chamada configureSearch.

name, description e status

Os campos name, description e status são obrigatórios, mas não têm qualquer efeito funcional.

base

O campo base apresenta os tipos de recursos FHIR aos quais esta pesquisa se aplica.

Se existir mais do que um tipo, o campo expression tem de ter uma cláusula para cada tipo. Não existe diferença entre definir um parâmetro em dois tipos ou definir um parâmetro para cada tipo. A definição de um parâmetro para vários tipos de recursos torna as definições mais compactas.

code

O campo code define a chave a usar numa consulta de pesquisa FHIR. Por exemplo, se code estiver definido como payment-type e base estiver definido como Claim, uma consulta de pesquisa que use este parâmetro seria Claim?payment-type=ABC.

O campo code não pode ter o mesmo valor que qualquer outro parâmetro de pesquisa padrão ou personalizado no mesmo tipo de recurso. Não é possível redefinir nem modificar os parâmetros de pesquisa padrão através de parâmetros de pesquisa personalizados. O método configureSearch rejeita parâmetros de pesquisa duplicados.

O valor do campo code tem de cumprir os seguintes requisitos:

  • Tem de começar com uma letra
  • Não pode ter mais de 64 carateres
  • Tem de conter apenas o seguinte:
    • Carateres alfanuméricos
    • Caráter de hífen -
    • Caráter de sublinhado _

A convenção padrão FHIR para o campo code é minúscula com travessões.

type

O campo type define o tipo de parâmetro de pesquisa. O tipo de parâmetro de pesquisa determina a semântica das condições de pesquisa, conforme definido na especificação de pesquisa FHIR. Este valor de type tem de ser compatível com o tipo de dados do campo especificado pelo campo expression. Caso contrário, configureSearch rejeita o parâmetro de pesquisa personalizado.

O campo type tem de ser definido como um dos seguintes:

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

Os tipos composite e special não são suportados.

expression

O campo expression define os campos ou as extensões que o parâmetro de pesquisa consulta. Este campo usa um conjunto limitado da sintaxe e das funções do FHIRPath.

Sintaxe do campo

O campo expression é definido como um caminho que começa com o tipo de recurso e é seguido por um ou mais campos separados por ., por exemplo, Patient.contact.name.given. Pode encontrar a estrutura dos campos dos dados FHIR nos recursos FHIR e nos tipos de dados FHIR.

Várias cláusulas

O campo expression pode conter várias cláusulas separadas por |. Neste caso, o parâmetro de pesquisa corresponde se alguma das cláusulas corresponder ao recurso. Por exemplo, um parâmetro de pesquisa com a expressão Patient.name.given | Patient.name.family corresponde a qualquer um desses dois campos. Use várias cláusulas quando for especificado mais do que um tipo de recurso em base. Por exemplo, Patient.name.given | Practitioner.name.given para um parâmetro de pesquisa que se aplica a Patient e Practitioner.

.as([data type])

Use a função .as([data type]) quando um campo tiver mais do que um potencial tipo de dados. Por exemplo, o campo Observation.value pode conter muitos tipos diferentes, como Quantity e String, que funcionam com diferentes tipos de pesquisa. Pode selecionar estes tipos de pesquisa com Observation.value.as(Quantity)ou Observation.value.as(String).

Selecionar extensões

Pode selecionar extensões com a função .extension([canonical url]). Uma vez que as extensões contêm um campo value que pode conter qualquer tipo de dados, o caminho completo é definido como .extension([canonical url]).value.as([data type]). As extensões complexas podem usar vários componentes .extension(), por exemplo, Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept).

Também pode usar a função .extension.where(url='[canonical url]') para selecionar extensões. Este é o único contexto em que a função where() é permitida.

Não são suportadas outras funções FHIRPath.

target

Se o campo type estiver definido como reference, o campo target tem de conter um ou mais tipos de recursos FHIR que definem que tipos de recursos podem ser o destino desta pesquisa de referência.

Por exemplo, se o campo Patient.generalPractitioner permitir referências a Practitioner, PractitionerRole e Organization, um parâmetro de pesquisa pode corresponder especificamente a referências a Practitioner, PractitionerRole ou Organization. Para corresponder a todos os tipos de referências de destino, inclua todos os tipos no campo target.

modifier, comparator, multipleOr, multipleAnd e chain

Os campos modifier, comparator, multipleOr, multipleAnd e chain são ignorados. As opções e a funcionalidade disponíveis com um parâmetro de pesquisa personalizado são as mesmas que as suportadas pela loja FHIR num parâmetro de pesquisa padrão do mesmo tipo.

Se estiver a implementar parâmetros de pesquisa obtidos a partir de um guia de implementação da FHIR, importe os recursos SearchParameter do ficheiro JSON do guia de implementação para a loja FHIR através de um dos seguintes métodos:

Em alguns casos, tem de converter um parâmetro de pesquisa publicado para que a API Cloud Healthcare o suporte. Se os parâmetros de pesquisa não forem convertidos, o método configureSearch rejeita-os. As seguintes restrições aplicam-se aos parâmetros de pesquisa dos guias de implementação:

  • Se o parâmetro de pesquisa for idêntico aos parâmetros na especificação FHIR base, o método configureSearch rejeita os parâmetros de pesquisa duplicados. Omita esses duplicados quando chamar o configureSearch. Para mais informações, consulte code.

  • Se o parâmetro de pesquisa contiver apenas uma expressão xpath, converta a expressão numa expressão FHIRPath equivalente e use-a no campo expression. Para mais informações, consulte expression.

  • Os tipos de parâmetros de pesquisa composite e special não são suportados.

  • A sintaxe de conversão de tipos alternativa ([field] as [data type]) não é suportada. Converta para o equivalente suportado [field].as([data type]). Para mais informações, consulte .as([data type]).

  • A convenção [reference field].where(resolve() is [resource type]) para restringir o tipo de um recurso referenciado não é suportada. Remova a cláusula where() e armazene o tipo de recurso referenciado no campo SearchParameter.target. Para mais informações, consulte target.

  • Alguns guias de implementação usam expressões para extensões que omitem alguns dos componentes do caminho exigidos pelo FHIR store da Cloud Healthcare API. Por exemplo, Patient.extension('url') tem de ser modificado para Patient.extension('url').value.as([data type]), e Patient.extension('url').extension.value tem de ser modificado para Patient.extension('url').extension('url2').value.as([data type]).

Exemplos

Use uma pesquisa personalizada para pesquisar num campo de extensão

Os passos seguintes mostram um exemplo de pesquisa de texto na extensão mothersMaidenName em Recursos para pacientes.

  1. Crie um recurso Patient de exemplo:

    curl

    O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido usando curl.POST Este recurso Patient tem a extensão mothersMaidenName definida como 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"

    Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no formato 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

    O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido através do Windows PowerShell.POST Este recurso Patient tem a extensão mothersMaidenName definida como 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

    Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no formato 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. Crie um recurso de parâmetro de pesquisa personalizado:

    curl

    O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão mothersMaidenName fazendo um pedido POST através de curl.

    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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato 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

    O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão `mothersMaidenName` fazendo um pedido `POST` através do Windows PowerShell.
    $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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato 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"
     },
    }
    Para segmentar um tipo de dados diferente no campo expression, use a função .as([data type]). Por exemplo, para especificar a expressão de pesquisa de um valor booleano, use .value.as(Boolean). Para mais informações, consulte .as([data type]).

  3. Ative o parâmetro de pesquisa:

    curl

    Para ativar o parâmetro de pesquisa personalizado, faça um pedido POST e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.

    O exemplo seguinte mostra um pedido POST através de curl.

    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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:

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

    PowerShell

    Para ativar o parâmetro de pesquisa personalizado, faça um pedido POST e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.

    O exemplo seguinte mostra um pedido POST através do Windows PowerShell.

    $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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:

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

  4. Pesquise através do parâmetro de pesquisa personalizado:

    curl

    O exemplo seguinte mostra como pesquisar recursos de pacientes para a string Marca na extensão mothersMaidenName fazendo um pedido GET através de curl.

    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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR Bundle no formato JSON. O Bundle.type é searchset e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse recurso:

    {
      "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

    O exemplo seguinte mostra como pesquisar recursos de pacientes para a string `Marca` na extensão `mothersMaidenName` fazendo um pedido `GET` através do Windows PowerShell.
    $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

    Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR Bundle no formato JSON. O Bundle.type é searchset e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse recurso:

    {
      "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"
    }
    

Use uma pesquisa personalizada para pesquisar num campo de extensão de 2 níveis

Os passos seguintes mostram como pesquisar o código na extensão us-core-ethnicity num recurso Patient.

  1. Crie um recurso Patient de exemplo:

    curl

    O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido usando curl.POST Este recurso Patient tem a extensão us-core-ethnicity definida.

    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"

    Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no formato 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

    O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido através do Windows PowerShell.POST Este recurso Patient tem a extensão us-core-ethnicity definida.

    $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

    Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no formato 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. Crie um recurso de parâmetro de pesquisa personalizado:

    curl

    O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão us-core-ethnicity fazendo um pedido POST através de curl.

    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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato 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

    O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão `mothersMaidenName` fazendo um pedido `POST` através do Windows PowerShell.
    $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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato 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. Ative o parâmetro de pesquisa:

    curl

    Para ativar o parâmetro de pesquisa personalizado, faça um pedido POST e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.

    O exemplo seguinte mostra um pedido POST através de curl.

    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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:

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

    PowerShell

    Para ativar o parâmetro de pesquisa personalizado, faça um pedido POST e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.

    O exemplo seguinte mostra um pedido POST através do Windows PowerShell.

    $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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:

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

  4. Pesquise através do parâmetro de pesquisa personalizado:

    curl

    O exemplo seguinte mostra como pesquisar recursos de pacientes para o código urn:oid:2.16.840.1.113883.6.238|2028-9 na extensão us-core-ethnicity fazendo um pedido GET através de curl.

    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"

    Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR Bundle no formato JSON. O Bundle.type é searchset e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse recurso:

    {
      "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

    O exemplo seguinte mostra como pesquisar recursos de pacientes para o código `urn:oid:2.16.840.1.113883.6.238|2028-9` na extensão `us-core-ethnicity` fazendo um pedido `GET` através do Windows PowerShell.
    $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

    Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR Bundle no formato JSON. O Bundle.type é searchset e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse recurso:

    {
      "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"
    }