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:
- Como usar 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 das partes da Especificação de pesquisa FHIR com suporte da 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 ver o conteúdo dos recursos FHIR.
Para pesquisar recursos em um repositório 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 nos recursos FHIR
Fazer o download dos dados binários disponíveis associados a um recurso no FHIR visualizador, 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 fazer o download dos dados disponíveis.
Criar e executar consultas de pesquisa avançadas
Use as consultas de pesquisa avançada para procurar 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 a opção o tipo de recurso que você quer pesquisar.
Clique em Continuar.
Na lista Parâmetros, selecione o parâmetro que você quer usar. para procurar recursos.
Na lista de Modificadores, selecione o modificador para aplicar ao consulta. A lista inclui apenas modificadores compatíveis com o tipo de dados do parâmetro selecionado.
Essa seleção é opcional. Se nenhum modificador for selecionado, um modelo de quando a verificação é 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.
À medida que você cria sua consulta de pesquisa, ela é exibida no campo Query Visualização. Para visualizar o URL completo da consulta de pesquisa, clique em Mostrar caminho de conversão.
Para adicionar mais de um parâmetro, clique em E.
Clique em Continuar.
Para incluir os recursos referenciados pelos recursos retornados na sua consulta de pesquisa, escolha o parâmetro de recurso na lista Parâmetros incluídos lista suspensa.
Para incluir recursos que fazem referência aos recursos retornados na consulta de pesquisa, escolha o parâmetro de recurso na lista suspensa Reversão de parâmetros incluídos.
Clique em Concluído para salvar a consulta de pesquisa.
A consulta de pesquisa salva é exibida no campo Operação de pesquisa FHIR.
Para procurar recursos com a consulta, clique em Executar pesquisa.
Os resultados da pesquisa são exibidos na lista Resultados da pesquisa. Para visualizar 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. É necessário inserir um nome e uma descrição para a consulta. Os parâmetros de consulta são salvos em um modelo, mas quaisquer valores definidos são removida.
Exemplo de consulta de pesquisa
O exemplo a seguir mostra uma consulta de pesquisa que procura recursos Claim de um prestador de cuidados de saúde específico, Practitioner/12345, em 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 é 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, siga um destes procedimentos:
- Para editar a consulta no Criador de consultas, clique em Abrir o criador de consultas.
- Para editar a consulta manualmente, edite os valores dos parâmetros no texto caixa
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 na operação de pesquisa FHIR. sem valores.
Para definir os valores da consulta de pesquisa, edite os valores de parâmetro no campo.
Clique em Executar pesquisa para procurar 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 FHIR depende nos seguintes fatores:
- O parâmetro
_count
. 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 de pesquisa pode retornar menos
recursos do que o valor especificado no parâmetro
_count
se o tamanho do a resposta for grande.
Se uma pesquisa retornar mais recursos do que o número de recursos que cabe em uma
a resposta vai incluir um URL de paginação no campo Bundle.link
.
podem ser diversos valores retornados neste campo. o valor com
Bundle.link.relation = next
indica que é possível usar a função
Bundle.link.url
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 os totais de paginação e 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 FHIR são indexados de forma assíncrona, então pode haver um pequeno atraso
entre o momento em que um recurso é criado ou alterado e o momento em que a alteração
aparece nos resultados da pesquisa. A única exceção são
os dados do identificador de recursos,
que é indexado de forma síncrona como um índice especial. Como resultado, pesquisar usando
o identificador de recurso não está sujeito a atraso de indexação. Para usar a função
índice síncrono, o termo de pesquisa para identificador deve estar no padrão
identifier=[system]|[value]
ou identifier=[value]
, e qualquer um dos seguintes
os parâmetros dos resultados da pesquisa podem ser usados:
_count
_include
_revinclude
_summary
_elements
Se a consulta tiver outros parâmetros de pesquisa, o método assíncrono padrão
será usado no lugar dele. A pesquisa na indexação especial é
otimizada para resolver um pequeno número de correspondências. A pesquisa não será otimizada se
seus critérios de pesquisa de identificador correspondem a um grande número (ou seja,mais de 2.000) de
do Google Cloud. Para uma consulta de pesquisa que corresponderá a um grande número de recursos, você
podem evitar o uso do índice síncrono especial, incluindo
parâmetro _sort
na sua 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.