Nesta página, mostramos as instruções básicas para pesquisar recursos de FHIR em um armazenamento FHIR. Pesquisar por recursos de FHIR é a principal maneira de consultar e conseguir insights de dados de FHIR.
É possível pesquisar recursos de FHIR na API Cloud Healthcare das seguintes maneiras:
- Usando o visualizador de FHIR no console do Google Cloud.
- Com o método
projects.locations.datasets.fhirStores.fhir.search
. Esse método oferece as seguintes maneiras de pesquisar recursos de FHIR:- Solicitações
GET
- Solicitações
POST
- Solicitações
Esta página resume muitos dos recursos de pesquisa mais usados, mas não é uma lista completa dos componentes da especificação de pesquisa de FHIR suportados pela API Cloud Healthcare.
Como usar o visualizador de FHIR
O visualizador de FHIR é uma página no console do Google Cloud que permite pesquisar e visualizar o conteúdo dos recursos de FHIR.
Para pesquisar recursos em um armazenamento FHIR, siga estas etapas:
No console do Google Cloud, acesse a página do visualizador FHIR.
Na lista suspensa Armazenamento de FHIR, selecione um conjunto de dados e, em seguida, selecione um armazenamento de FHIR no conjunto de dados.
Para filtrar a lista de tipos de recursos, pesquise os que você quer exibir:
Clique no campo Resource Type.
Na lista suspensa Propriedades, selecione Tipo de recurso.
Insira um tipo de recurso.
Para procurar outro tipo de recurso, selecione OU na lista suspensa Operadores exibida e insira outro tipo de recurso.
Na lista de tipos de recursos, selecione o tipo de recurso em que você quer pesquisar.
Na caixa de pesquisa da tabela de recursos exibida, digite o valor que você quer pesquisar.
O visualizador de FHIR exibe os resultados da pesquisa em uma tabela. Depois de selecionar um recurso, o visualizador de FHIR exibe o conteúdo do recurso.
Quando você visualiza o conteúdo de um recurso, é possível pesquisar dados dentro dele.
Para pesquisar dados em um recurso, siga estas etapas:
Selecione um recurso.
No painel Visualizador de FHIR, clique na guia Elementos.
Na caixa de pesquisa, digite o valor que você quer pesquisar.
Como fazer o download de dados binários em recursos FHIR
Para fazer o download dos dados binários disponíveis associados a um recurso no visualizador FHIR, siga estas etapas:
Selecione um recurso.
No painel Visualizador de FHIR, clique na guia Elementos.
Se necessário, expanda os elementos para acessar o elemento de recurso necessário.
Clique em Fazer o download do arquivo para salvar os dados disponíveis.
Como criar e executar consultas de pesquisa avançadas
É possível usar consultas de pesquisa avançadas para pesquisar recursos FHIR específicos usando a especificação de pesquisa FHIR.
Para criar uma consulta de pesquisa avançada, siga estas etapas:
Na página Visualizador de FHIR, clique na guia Pesquisar.
Para criar uma consulta de pesquisa, clique em Abrir o Criador de consultas.
O painel Seleção de consulta é exibido.
Na lista Selecionar um tipo de recurso FHIR, escolha o tipo de recurso FHIR que você quer pesquisar.
Clique em Continuar.
Na lista Parâmetro, selecione o parâmetro que você quer usar para pesquisar recursos.
Na lista Modificador, selecione o modificador a ser aplicado à consulta. A lista inclui apenas modificadores compatíveis com o tipo de dados do parâmetro selecionado.
Essa é uma seleção opcional. Se nenhum modificador for selecionado, uma verificação de igualdade será realizada.
No campo Valor, insira o valor do parâmetro de consulta.
Para adicionar mais de um valor de parâmetro, clique em OR. Isso permite incluir vários valores do parâmetro de recurso na consulta de pesquisa.
Ao criar a consulta de pesquisa, ela é exibida no painel Visualização da consulta. Para conferir o URL completo da consulta de pesquisa, clique em Mostrar caminho completo.
Para adicionar mais de um parâmetro, clique em E.
Clique em Continuar.
Para incluir recursos referenciados pelos recursos retornados na consulta de pesquisa, escolha o parâmetro de recurso na lista suspensa Parâmetros incluídos.
Para incluir recursos que fazem referência aos recursos retornados na consulta de pesquisa, escolha o parâmetro de recurso na lista suspensa Parâmetros incluídos invertidos.
Clique em Concluído para salvar a consulta de pesquisa.
A consulta de pesquisa salva é exibida no campo Operação de pesquisa FHIR.
Para pesquisar recursos com a consulta, clique em Executar pesquisa.
Os resultados da pesquisa são exibidos na lista Resultados da pesquisa. Para conferir os detalhes de um recurso retornado pela pesquisa, clique em um recurso na lista.
Para salvar a consulta como um modelo, clique em Salvar modelo e escolha Salvar modelo ou Salvar modelo como. Você vai precisar informar um nome e uma descrição para a consulta. Os parâmetros de consulta são salvos em um modelo, mas todos os valores definidos são removidos.
Exemplo de consulta de pesquisa
O exemplo a seguir mostra uma consulta de pesquisa que busca recursos de reivindicação de um provedor de cuidados de saúde específico, Practitioner/12345, para o mês de agosto de 2021:
- Parâmetro:
care-team
- Valor:
Practitioner/12345
- Valor:
- Operador: AND
- Parâmetro:
created
- Prefixo:
lt (lesser than)
- Valor:
8/1/21, 12:00 AM
- Prefixo:
- Operador: AND
- Parâmetro:
created
- Prefixo:
gt (greater than)
- Valor:
8/31/21, 11:59 PM
- Prefixo:
Isso é configurado da seguinte maneira no painel Seleção de consulta, e a consulta é visualizada no painel Visualização da consulta. A consulta será exibida no campo Operação de pesquisa FHIR.
Como editar consultas de pesquisa
Para editar uma consulta de pesquisa, faça o seguinte:
- Para editar a consulta no criador de consultas, clique em Abrir criador de consultas.
- Para editar a consulta manualmente, edite os valores do parâmetro na caixa de texto.
Como executar modelos de consulta
Para executar uma consulta em um modelo salvo, siga estas etapas:
Clique em Modelos salvos.
A guia Modelos de pesquisa do painel Seleção de consulta é exibida, mostrando todos os modelos de consulta salvos.
Selecione o modelo de consulta que você quer executar e clique em Concluído.
A consulta de pesquisa do modelo é exibida no campo Operação de pesquisa FHIR sem valores.
Para definir os valores da consulta de pesquisa, edite os valores do parâmetro no campo.
Clique em Executar pesquisa para pesquisar recursos com a consulta.
Como usar o método search
Para pesquisar recursos de FHIR com a API REST, use o
método
projects.locations.datasets.fhirStores.fhir.search
. Chame o método usando solicitações GET
ou POST
.
Como usar o método search
com GET
Os exemplos a seguir mostram como pesquisar recursos em um determinado armazenamento FHIR usando o método projects.locations.datasets.fhirStores.fhir.search
com GET
.
curl
Para pesquisar recursos em um armazenamento FHIR, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados
- O nome do armazenamento FHIR
- O tipo de recurso a ser pesquisado
- Uma string de consulta contendo as informações que você está pesquisando, conforme descrito na seção Como criar uma consulta de pesquisa
- Um token de acesso
O exemplo a seguir mostra uma solicitação GET
usando curl
para pesquisar todos os pacientes com o sobrenome "Smith".
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/fhirStores/FHIR_STORE_ID/fhir/Patient?family:exact=Smith"
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" }, "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
Para pesquisar recursos em um armazenamento FHIR, faça uma solicitação GET
e especifique as seguintes informações:
- O nome do conjunto de dados
- O nome do armazenamento FHIR
- O tipo de recurso a ser pesquisado
- Uma string de consulta contendo as informações que você está pesquisando, conforme descrito na seção Como criar uma consulta de pesquisa
- Um token de acesso
O exemplo a seguir mostra uma solicitação GET
usando o Windows PowerShell para pesquisar todos os pacientes com o sobrenome "Smith".
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE?family:exact=Smith" | 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" }, "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" }
Java
Node.js
Python
Como usar o método search
com POST
Os exemplos a seguir mostram como pesquisar recursos em um determinado armazenamento FHIR usando o método projects.locations.datasets.fhirStores.fhir.search
com POST
.
curl
Para pesquisar recursos em um armazenamento FHIR, faça uma solicitação POST
e especifique as seguintes informações:
- O nome do conjunto de dados
- O nome do armazenamento FHIR
- O tipo de recurso a ser pesquisado
- Uma string de consulta contendo as informações que você está pesquisando, conforme descrito na seção Como criar uma consulta de pesquisa
- Um token de acesso
O exemplo a seguir mostra uma solicitação POST
usando curl
para pesquisar todos os pacientes com o sobrenome "Smith".
curl -X POST \ --data "" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/_search?family:exact=Smith"
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" }, "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
Para pesquisar recursos em um armazenamento FHIR, faça uma solicitação POST
e especifique as seguintes informações:
- O nome do conjunto de dados
- O nome do armazenamento FHIR
- O tipo de recurso a ser pesquisado
- Uma string de consulta contendo as informações que você está pesquisando, conforme descrito na seção Como criar uma consulta de pesquisa
- Um token de acesso
O exemplo a seguir mostra uma solicitação POST
usando o Windows PowerShell para pesquisar todos os pacientes com o sobrenome "Smith".
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/_search?family:exact=Smith" | 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" }, "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" }
Java
Node.js
Python
Como criar uma consulta de pesquisa
A string de consulta é uma série de pares name=value
codificados no formato de URL. Uma pesquisa
combina todos os pares com um AND
lógico. Cada valor pode ser uma lista de valores separados por vírgulas, que são tratados como um OR
lógico desses valores. Por exemplo, Patient?key1=value1&key2=value2,value3
é uma pesquisa em
recursos de pacientes usando os seguintes critérios:
(key1 = value1) AND (key2 = value2 OR key2 = value3)
Não há sintaxe para executar um OR
de dois pares name=value
.
Cada tipo de recurso do FHIR define os próprios parâmetros de pesquisa em cada versão do FHIR. Os parâmetros disponíveis são documentados na especificação de FHIR para cada recurso. Veja um exemplo em Paciente R4 de FHIR. É possível recuperar os parâmetros de maneira programática usando a instrução de recurso. A API Cloud Healthcare suporta a maioria dos parâmetros de pesquisa. É possível encontrar exclusões usando a declaração de capacidade ou a declaração de conformidade com FHIR.
Paginação e classificação
O número de recursos retornados em cada página dos resultados da pesquisa do FHIR depende dos seguintes fatores:
- O parâmetro
_count
. Ele controla o número máximo de recursos retornados do método de pesquisa. Por exemplo,_count=10
retorna, no máximo, 10 recursos que correspondem à consulta. O padrão é 100,e o valor máximo permitido é 1.000. - O tamanho dos dados de resposta. Uma página de resultados da pesquisa pode retornar menos
recursos do que o valor especificado no parâmetro
_count
se o tamanho da resposta for grande.
Se uma pesquisa retornar mais recursos do que o número de recursos que cabem em uma
página, a resposta incluirá um URL de paginação no campo Bundle.link
. Vários valores podem ser retornados
nesse campo. O valor com
Bundle.link.relation = next
indica que é possível usar o Bundle.link.url
correspondente para recuperar a próxima página.
O valor de Bundle.total
indica o número total de recursos
correspondentes. Esse valor é exato se os resultados se encaixarem totalmente em uma página, mas
se tornará uma estimativa aproximada conforme o número de resultados se torna maior do que uma página.
Para ver o total exato de uma pesquisa que corresponda a muitos resultados,
siga os links de paginação várias vezes até que os resultados sejam
esgotados.
Para mais informações sobre paginação e totais de pesquisa, consulte Como implementar a paginação e os totais de pesquisa com a pesquisa FHIR.
É possível classificar os resultados usando o parâmetro _sort
, que aceita uma
lista separada por vírgulas de nomes de parâmetros de pesquisa em ordem de prioridade. É possível
usar um prefixo -
para indicar ordem decrescente. Por exemplo, a consulta a seguir
classifica por status em ordem crescente, separando a data por ordem decrescente e
todos os outros parâmetros de categoria por ordem crescente:
_sort=status,-date,category
Atraso na indexação
Os recursos do FHIR são indexados de forma assíncrona. Portanto, pode haver um pequeno atraso
entre o momento em que um recurso é criado ou alterado e momento em que a criação ou alteração é
refletida nos resultados da pesquisa. A única exceção são os dados do identificador de recurso,
que são indexados de forma síncrona como um índice especial. Como resultado, a pesquisa usando
o identificador de recurso não está sujeita a atrasos de indexação. Para usar o índice
síncrono especial, o termo de pesquisa do identificador precisa estar no padrão
identifier=[system]|[value]
ou identifier=[value]
, e qualquer um dos
parâmetros de resultado de pesquisa a seguir pode ser usado:
_count
_include
_revinclude
_summary
_elements
Se a consulta tiver outros parâmetros de pesquisa, o índice assíncrono padrão será usado. A pesquisa na indexação especial é
otimizada para resolver um pequeno número de correspondências. A pesquisa não será otimizada se
os critérios de pesquisa de identificador corresponderem a um grande número (mais de 2.000) de
recursos. Para uma consulta de pesquisa que vai corresponder a um grande número de recursos, é possível evitar o uso do índice síncrono especial incluindo um parâmetro
_sort
adicional na consulta. Use _sort=-_lastUpdated
se quiser manter
a ordem de classificação padrão.
Como pesquisar em todos os tipos de recursos
Alguns parâmetros de pesquisa, diferenciados por um sublinhado à esquerda, como _id
,
aplicam-se a todos os tipos de recursos. Esses parâmetros de todos os recursos estão listados na
especificação FHIR referente ao tipo de recurso.
Ao usar esses parâmetros de pesquisa, você pode realizar uma pesquisa em vários tipos de recursos omitindo o tipo de recurso do caminho da solicitação. Por exemplo,
usar GET .../fhir?_id=1234
em vez de GET .../fhir/Patient?_id=1234
pesquisa
em todos os recursos de FHIR em vez de apenas em um recurso "Paciente". É possível usar o parâmetro especial _type
com esse tipo de solicitação para limitar os resultados a uma lista separada por
vírgulas de tipos de recursos. Por exemplo, a consulta a seguir
retorna apenas resultados correspondentes para recursos Observation
e Condition
:
GET .../fhir?_tag=active&_type=Observation,Condition
Tipos de dados
Cada parâmetro de pesquisa definido pelo FHIR tem um tipo de dados que inclui tipos primitivos, como os seguintes:
- String
- Número
- Data
Os tipos de dados também incluem os seguintes tipos complexos:
- Token
- Referência
- Quantidade
Cada tipo de dados tem sua própria sintaxe para especificar valores. Cada tipo de dados suporta modificadores que alteram como a pesquisa é realizada.
As seções a seguir mostram como usar tipos de dados. Para mais detalhes sobre outros tipos de dados, sintaxes de valor e modificadores, consulte Recursos avançados de pesquisa de FHIR.
Número
Pesquisa valores inteiros ou de ponto flutuante. Para alterar o comparador, prefixe o valor com um dos seguintes modificadores:
ne
lt
le
gt
ge
Por exemplo, use [parameter]=100
para igualdade ou [parameter]=ge100
para maior
ou igual a 100.
Data
Pesquisa qualquer tipo de data, hora ou período. O formato do parâmetro de data é o seguinte:
yyyy-mm-ddThh:mm:ss[Z|(+|-)hh:mm]
Os mesmos modificadores de prefixo usados para número são aplicáveis.
String
O padrão é uma pesquisa de prefixo indiferente a maiúsculas, acentos ou outras marcas diacríticas.
Token
Pesquisa uma correspondência exata de string de um "código". É possível definir o escopo da pesquisa como o URI de um "sistema", indicando o valor que foi retirado do código usando o seguinte formato:
[parameter]=[system]|[code]
Por exemplo, a pesquisa a seguir corresponde a um código de 10738-3, mas somente quando qualificada como um valor de um sistema de codificação com o URI especificado:
code=http://hl7.org/fhir/ValueSet/observation-codes|10738-3
Quantidade
Pesquisa um valor numérico usando os mesmos modificadores de prefixo de número. É possível qualificar a pesquisa com um sistema e código específicos indicando as unidades do valor no seguinte formato:
[parameter]=[prefix][number]|[system]|[code]
Por exemplo, a consulta a seguir pesquisa valores de quantidade inferiores a 9.1 que tenham o sistema de unidades e o código especificados:
value-quantity=lt9.1|http://unitsofmeasure.org|mg
Referência
Pesquisa referências entre recursos. É possível usar as consultas a seguir para referências a recursos dentro de um armazenamento de FHIR:
[parameter]=[id]
[parameter]=[type]/[id]
É possível usar [parameter]=[url]
para especificar referências por URL
que possam estar fora do armazenamento de FHIR.
Manipulação dos parâmetros de pesquisa
Por padrão, o método de pesquisa aplica um tratamento "flexível", que ignora os parâmetros que a pesquisa não reconhece. O método de pesquisa executa a pesquisa usando os parâmetros restantes na solicitação, o que pode retornar mais recursos do que o esperado.
A resposta inclui o seguinte:
- Um valor em
Bundle.link
com um valor deBundle.link.relation = self
- Um
Bundle.link.url
de um URL contendo apenas os parâmetros que foram aplicados à pesquisa. Inspecione esse valor para determinar se algum parâmetro foi ignorado.
É possível definir o cabeçalho HTTP da solicitação como Prefer: handling=strict
em uma solicitação de
pesquisa. Definir o cabeçalho faz com que o armazenamento de FHIR retorne um erro em qualquer parâmetro não
reconhecido.