Como criar pesquisas de FHIR personalizadas

Nesta página, descrevemos como configurar um armazenamento de FHIR para aceitar parâmetros de pesquisa personalizada em campos e extensões que não são cobertos pelos parâmetros de pesquisa padrão do FHIR.

Os parâmetros de pesquisa personalizada podem ser úteis em muitas situações, como estas:

  • Você precisa pesquisar um campo em um recurso FHIR, mas não há um parâmetro de pesquisa compatível para o campo.
  • É preciso pesquisar em extensões adicionadas ao modelo de dados FHIR.

Visão geral

Por padrão, a pesquisa de recursos FHIR funciona com os parâmetros de pesquisa padrão definidos na especificação FHIR (link em inglês), com algumas exclusões documentadas na declaração de capacidade de FHIR ou instrução de conformidade FHIR.

É possível criar um ou mais parâmetros de pesquisa personalizada e configurar o armazenamento de FHIR para dar suporte a eles em consultas com o método search. Os parâmetros de pesquisa personalizada são úteis nas seguintes situações:

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

Muitos guias de implementação do FHIR definem parâmetros de pesquisa que podem ser usados nas pesquisas.

Os parâmetros de pesquisa personalizados oferecem suporte ao mesmo comportamento de pesquisa, incluindo recursos avançados de pesquisa FHIR como parâmetros de pesquisa padrão, como:

  • Modificadores
  • _include e _revinclude
  • pesquisa encadeada
  • _sort

Para ativar uma pesquisa personalizada no armazenamento de FHIR, primeiro crie um ou mais recursos de SearchParameter que definam o comportamento de pesquisa. SearchParameter é um tipo de recurso FHIR padrão que pode ser criado, atualizado ou excluído usando os mesmos métodos que qualquer outro tipo de recurso. Consulte Criar um recurso de parâmetro de pesquisa na loja.

Os recursos SearchParameter em um armazenamento FHIR só entram em vigor quando configurados usando o método configureSearch. Esse método ativa uma lista de parâmetros de pesquisa personalizada. Cada vez que é chamado, ele substitui a lista anterior de parâmetros. Uma operação de longa duração é acionada para configureSearch para reindexar todos os recursos relevantes no armazenamento, de acordo com a nova configuração de pesquisa. Todos os recursos novos e atualizados após a chamada de método são indexados de acordo com a nova configuração. São removidos os dados do índice de parâmetros de pesquisa personalizada que não estão mais na configuração. Para mais detalhes sobre como usar configureSearch, consulte Ativar o parâmetro de pesquisa personalizada para o armazenamento de FHIR.

O CapabilityStatement da loja, recuperado com o método fhir.capabilities, lista os parâmetros de pesquisa padrão e personalizada. Os parâmetros de pesquisa de um recurso são encontrados no campo rest.resource.searchParam.

Criar um recurso "SearchParameter" no armazenamento de FHIR

Os exemplos a seguir mostram como criar um recurso de parâmetro de pesquisa personalizada usando o método projects.locations.datasets.fhirStores.fhir.create. Também é possível usar o método projects.locations.datasets.fhirStores.import:

Para descrições dos campos relevantes dos parâmetros de pesquisa, consulte Campos do recurso SearchParameter.

curl

O exemplo a seguir mostra uma solicitação POST usando 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 a solicitação for bem-sucedida, o servidor retornará 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 a seguir mostra uma solicitação POST usando o 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 a solicitação for bem-sucedida, o servidor retornará 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"
  },
}

Ativar o parâmetro de pesquisa personalizada para o armazenamento de FHIR

Para ativar um ou mais parâmetros de pesquisa personalizada para seu armazenamento de FHIR, faça uma solicitação POST para o método [store base URL]:configureSearch e especifique o URL canônico para cada parâmetro de pesquisa que será ativado.

Os URLs canônicos são especificados em um dos seguintes formatos:

  • uri: seleciona o maior version disponível no armazenamento para o URI.
  • uri|version seleciona uma versão específica.

Por exemplo, se o armazenamento tiver 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 selecionará 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 fornecidos a esse método substitui qualquer configuração anterior e remove os parâmetros de pesquisa personalizada que estavam em vigor anteriormente. A configuração é armazenada em cache com base no conteúdo dos recursos de SearchParameter que existiam no momento em que configureSearch foi chamado. A configuração não será atualizada se os recursos de SearchParameter forem atualizados ou excluídos até que configureSearch seja chamado novamente.

Quando a chamada do método [store base URL]:configureSearch for bem-sucedida, o valor de retorno será o nome de uma operação de longa duração para reindexar os recursos no armazenamento, de acordo com a nova configuração. Para ver o status da operação de longa duração, use o método operations.get. Ele pode ser cancelado usando o método operations.cancel. O status contém um contador que indica quantos recursos foram reindexados com sucesso.

As pesquisas no armazenamento continuam funcionando normalmente enquanto a operação de longa duração é executada, com exceção dos parâmetros de pesquisa personalizada adicionados ou alterados por essa operação que retornam 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 parâmetros recém-adicionados ou alterados.

Se houver erros, eles serão exibidos 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 do armazenamento e sem reindexar dados.

Os exemplos a seguir mostram como ativar um ou mais parâmetros de pesquisa personalizada para o armazenamento de FHIR usando o método projects.locations.datasets.fhirStores.configureSearch.

curl

O exemplo a seguir mostra uma solicitação POST usando 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 a solicitação for bem-sucedida, o servidor retornará 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 rastrear o status da operação, use o método get de operação:

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 retornará 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 terminar, o servidor vai retornar uma resposta com o status 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 conterá o número de recursos do FHIR reindexados e um tipo de resposta google.protobuf.Empty.

PowerShell

O exemplo a seguir mostra uma solicitação POST usando o 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 a solicitação for bem-sucedida, o servidor retornará 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 rastrear o status da operação, use o método get de operação:

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 retornará 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 terminar, o servidor vai retornar uma resposta com o status 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 conterá o número de recursos FHIR reindexados e um tipo de resposta google.protobuf.Empty.

É possível pesquisar usando 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 Como pesquisar recursos FHIR.

Campos do recurso SearchParameter

A seção a seguir descreve os campos do recurso SearchParameter relevantes para pesquisas personalizadas. Esses 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 do recurso SearchParameter. A combinação de uri e version precisa ser exclusiva no armazenamento de FHIR.

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

name, description e status

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

base

O campo base lista os tipos de recursos FHIR a que essa pesquisa se aplica.

Se houver mais de um tipo, o campo expression precisará ter uma cláusula para cada tipo. Não há diferença entre definir um parâmetro em dois tipos ou definir um parâmetro em cada tipo. Definir um parâmetro para vários tipos de recurso torna as definições mais compactas.

code

O campo code define a chave a ser usada em uma consulta de pesquisa FHIR. Por exemplo, se code for definido como payment-type e base for definido como Claim, uma consulta de pesquisa que usará esse parâmetro será Claim?payment-type=ABC.

O campo code não pode ter o mesmo valor que qualquer outro parâmetro de pesquisa padrão ou personalizada no mesmo tipo de recurso. Os parâmetros de pesquisa padrão não podem ser redefinidos ou modificados usando parâmetros de pesquisa personalizada. O método configureSearch rejeita parâmetros de pesquisa duplicados.

O valor do campo code precisa atender aos seguintes requisitos:

  • Precisa começar com uma letra
  • Não pode ter mais de 64 caracteres
  • Precisa conter apenas o seguinte:
    • Caracteres alfanuméricos
    • Caractere hífen -
    • Caractere sublinhado _

A convenção padrão do FHIR para o campo code está em letras minúsculas com traços.

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. Esse valor de type precisa ser compatível com o tipo de dados do campo especificado pelo campo expression. Se não for, configureSearch rejeitará o parâmetro de pesquisa personalizada.

O campo type precisa ser definido como uma das seguintes opções:

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

Os tipos composite e special não são compatíveis.

expression

O campo expression define quais campos ou extensões o parâmetro de pesquisa consulta. Esse campo usa um conjunto limitado de sintaxe e funções de FHIRPath.

Sintaxe de campos

O campo expression é definido como um caminho que inicia com o tipo de recurso e é seguido por um ou mais campos separados por ., por exemplo, Patient.contact.name.given. A estrutura do campo de dados FHIR pode ser encontrada nos recursos FHIR e nos tipos de dados FHIR.

Várias cláusulas

O campo expression pode conter várias cláusulas separadas por |. Nesse caso, haverá correspondência do parâmetro de pesquisa 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 um desses dois campos. Use várias cláusulas quando mais de um tipo de recurso for especificado 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 de um tipo de dados em potencial. Por exemplo, o campo Observation.value pode conter muitos tipos diferentes, como Quantity e String, que funcionam com diferentes tipos de pesquisa. É possível selecionar esses tipos de pesquisa com Observation.value.as(Quantity)ou Observation.value.as(String).

Selecionar extensões

É possível selecionar extensões com a função .extension([canonical url]). Como 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]). 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).

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

Nenhuma outra função FHIRPath é compatível.

target

Se o campo type for definido como reference, o campo target precisará conter um ou mais tipos de recurso FHIR que definem a que tipos de recurso o parâmetro de pesquisa se aplica.

Por exemplo, se o campo Patient.generalPractitioner permitir referências a Practitioner, PractitionerRole e Organization, um parâmetro de pesquisa poderá 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 funcionalidades disponíveis com um parâmetro de pesquisa personalizada são as mesmas compatíveis com o armazenamento FHIR em um parâmetro de pesquisa padrão do mesmo tipo.

Se você estiver implementando parâmetros de pesquisa obtidos de um guia de implementação do FHIR, importe os recursos SearchParameter do arquivo JSON do guia de implementação para o armazenamento de FHIR usando um dos seguintes métodos:

Em algumas instâncias, é preciso converter um parâmetro de pesquisa publicado para que a API Cloud Healthcare seja compatível com ele. Se os parâmetros de pesquisa não forem convertidos, o método configureSearch os rejeitará. As seguintes restrições se aplicam a parâmetros de pesquisa nos guias de implementação:

  • Se o parâmetro de pesquisa for idêntico aos parâmetros na especificação FHIR de base, o método configureSearch rejeitará os parâmetros de pesquisa duplicados. Omita essas cópias ao chamar configureSearch. Veja mais informações em code.

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

  • Os tipos de parâmetro de pesquisa composite e special não são compatíveis.

  • A sintaxe de transmissão de tipo alternativa ([field] as [data type]) não é compatível. Converta para o [field].as([data type]) equivalente compatível. Veja mais informações em .as([data type]).

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

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

Exemplos

Usar uma pesquisa personalizada para pesquisar em um campo de extensão

As etapas a seguir mostram um exemplo de como pesquisar texto na extensão mothersMaidenName nos recursos do paciente.

  1. Crie um recurso de paciente de amostra:

    curl

    O exemplo a seguir mostra como criar um recurso de paciente fazendo uma solicitação POST e usando curl. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 a seguir mostra como criar um recurso de paciente fazendo uma solicitação POST e usando o Windows PowerShell. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 personalizada:

    curl

    O exemplo a seguir mostra como criar o recurso de parâmetro de pesquisa personalizada para a extensão mothersMaidenName fazendo uma solicitação POST que use 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 a solicitação for bem-sucedida, o servidor retornará 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

    Veja a seguir como criar o recurso de parâmetro de pesquisa personalizada para a extensão "mothersMaidenName" fazendo uma solicitação "POST" e usando o 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 a solicitação for bem-sucedida, o servidor retornará 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 ver mais informações, consulte .as([data type]).

  3. Ativar o parâmetro de pesquisa:

    curl

    Para ativar o parâmetro de pesquisa personalizada, faça uma solicitação POST e especifique o URL canônico para cada um deles.

    O exemplo a seguir mostra uma solicitação POST usando 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 a solicitação for bem-sucedida, o servidor retornará 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 personalizada, faça uma solicitação POST e especifique o URL canônico para cada um deles.

    O exemplo a seguir mostra uma solicitação POST usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

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

  4. Pesquise usando o parâmetro de pesquisa personalizada:

    curl

    O exemplo a seguir mostra como pesquisar recursos de pacientes para a string Marca na extensão mothersMaidenName, fazendo uma solicitação GET e usando 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 a solicitação for bem-sucedida, o servidor retornará a resposta como um Bundle do FHIR no formato JSON. O Bundle.type é searchset, e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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

    No exemplo a seguir, mostramos como pesquisar recursos de pacientes para a string "Marca" na extensão "mothersMaidenName" fazendo uma solicitação "GET" e usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta como um Bundle do FHIR no formato JSON. O Bundle.type é searchset, e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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"
    }
    

Usar uma pesquisa personalizada para pesquisar em um campo de extensão de dois níveis

As etapas a seguir mostram como pesquisar o código na extensão us-core-ethnicity em um recurso de paciente.

  1. Crie um recurso de paciente de amostra:

    curl

    O exemplo a seguir mostra como criar um recurso de paciente fazendo uma solicitação POST e usando curl. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 a seguir mostra como criar um recurso de paciente fazendo uma solicitação POST e usando o Windows PowerShell. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 personalizada:

    curl

    O exemplo a seguir mostra como criar o recurso de parâmetro de pesquisa personalizada para a extensão us-core-ethnicity fazendo uma solicitação POST que use 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 a solicitação for bem-sucedida, o servidor retornará 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 a seguir mostra como criar o recurso de parâmetro de pesquisa personalizada para a extensão "mothersMaidenName" fazendo uma solicitação "POST" e usando o 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 a solicitação for bem-sucedida, o servidor retornará 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. Ativar o parâmetro de pesquisa:

    curl

    Para ativar o parâmetro de pesquisa personalizada, faça uma solicitação POST e especifique o URL canônico para cada um deles.

    O exemplo a seguir mostra uma solicitação POST usando 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 a solicitação for bem-sucedida, o servidor retornará 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 personalizada, faça uma solicitação POST e especifique o URL canônico para cada um deles.

    O exemplo a seguir mostra uma solicitação POST usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:

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

  4. Pesquise usando o parâmetro de pesquisa personalizada:

    curl

    O exemplo a seguir 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 uma solicitação GET e usando 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 a solicitação for bem-sucedida, o servidor retornará a resposta como um Bundle do FHIR no formato JSON. O Bundle.type é searchset, e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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 a seguir 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 uma solicitação "GET" e usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta como um Bundle do FHIR no formato JSON. O Bundle.type é searchset, e os resultados da pesquisa são entradas na matriz Bundle.entry. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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"
    }