Pesquisa da visão geral da FHIR
A especificação FHIR® (Fast Healthcare Interoperability Resources) define uma API para consultar recursos em um banco de dados do servidor FHIR. Este artigo orienta você pelos principais aspectos da consulta de dados no FHIR. Para obter detalhes completos sobre a API de pesquisa do FHIR, confira a documentação da Pesquisa sobre FHIR da HL7.
Ao longo deste artigo, demonstramos a sintaxe de pesquisa FHIR em chamadas de API de exemplo com o espaço reservado {{FHIR_URL}}
para representar a URL do servidor FHIR. Se o serviço FHIR estiver nos Serviços de Dados de Integridade do Azure, essa URL será https://<WORKSPACE-NAME>-<FHIR-SERVICE-NAME>.fhir.azurehealthcareapis.com
.
As pesquisas FHIR podem ser feitas em um tipo de recurso específico, em um compartimento especificado ou em todos os recursos no banco de dados do servidor FHIR. A maneira mais simples de executar uma pesquisa no FHIR é usar uma solicitação GET
. Por exemplo, se você quiser extrair todos os Patient
recursos no banco de dados, poderá usar a solicitação a seguir.
GET {{FHIR_URL}}/Patient
Você também pode pesquisar usando POST
. Para pesquisar usando POST
, os parâmetros de pesquisa são entregues no corpo da solicitação. Isso facilita o envio de consultas com uma série mais longa e complexa de parâmetros.
Com ou POST
GET
, se a solicitação de pesquisa for bem-sucedida, você receberá um pacote FHIR searchset
contendo as instâncias de recurso retornadas da pesquisa. Se a pesquisa falhar, você encontrará os detalhes do erro em uma resposta OperationOutcome
.
Nas seções a seguir, abordamos os vários aspectos da consulta de recursos no FHIR. Depois de examinar esses tópicos, confira a página de exemplos de pesquisa do FHIR, que apresenta exemplos de diferentes métodos de pesquisa FHIR.
Parâmetros de pesquisa
Ao fazer uma pesquisa no FHIR, você está pesquisando no banco de dados recursos que correspondam a determinados critérios. A API de FHIR especifica um conjunto avançado de parâmetros de pesquisa para critérios de pesquisa de ajuste fino. Cada recurso no FHIR carrega informações como um conjunto de elementos, e os parâmetros de pesquisa funcionam para consultar as informações nesses elementos. Em uma chamada à API de pesquisa FHIR, se uma correspondência positiva for encontrada entre os parâmetros de pesquisa da solicitação e os valores de elemento correspondentes armazenados em uma instância de recurso, o servidor FHIR retornará um pacote contendo as instâncias de recurso cujos elementos atenderam aos critérios de pesquisa.
Para cada parâmetro de pesquisa, a especificação FHIR define o tipo de dados que pode ser usado. Veja abaixo o suporte no serviço FHIR para os vários tipos de dados.
Pesquisar tipo de parâmetro | Serviço FHIR nos Serviços de Dados de Saúde do Azure | API do Azure para FHIR | Comentário |
---|---|---|---|
número | Sim | Sim | |
date | Sim | Sim | |
string | Sim | Sim | |
token | Sim | Sim | |
reference | Sim | Sim | |
composto | Parcial | Parcial | A lista de tipos compostos com suporte segue neste artigo. |
quantity | Sim | Sim | |
uri | Sim | Sim | |
especial | Não | No |
Parâmetros de pesquisa comum
Há parâmetros de pesquisa comuns que se aplicam a todos os recursos no FHIR. Estes estão listados a seguir, juntamente com seu apoio no serviço FHIR.
Parâmetro de pesquisa comum | Serviço FHIR nos Serviços de Dados de Saúde do Azure | API do Azure para FHIR | Comentário |
---|---|---|---|
_id |
Sim | Sim | |
_lastUpdated |
Sim | Sim | |
_tag |
Sim | Sim | |
_type |
Sim | Sim | |
_security |
Sim | Sim | |
_profile |
Sim | Sim | |
_has |
Sim | Sim | |
_query |
Não | No | |
_filter |
No | No | |
_list |
No | No | |
_text |
No | No | |
_content |
No | No |
Parâmetros específicos ao recurso
O serviço FHIR nos Serviços de Dados de Saúde do Azure dá suporte a quase todos os parâmetros de pesquisa específicos aos recursos definidos na especificação FHIR. Os parâmetros de pesquisa que não são compatíveis estão listados nos links abaixo:
Você também pode ver o suporte atual para parâmetros de pesquisa na Instrução de Funcionalidade FHIR com a seguinte solicitação:
GET {{FHIR_URL}}/metadata
Para exibir os parâmetros de pesquisa com suporte na instrução de funcionalidade, navegue até CapabilityStatement.rest.resource.searchParam
para obter os parâmetros de pesquisa específicos ao recurso e até CapabilityStatement.rest.searchParam
para obter os parâmetros de pesquisa que se aplicam a todos os recursos.
Observação
O serviço FHIR nos Serviços de Dados de Integridade do Azure não indexa automaticamente parâmetros de pesquisa que não estão definidos na especificação FHIR base. O serviço FHIR dá suporte a parâmetros de pesquisa personalizados.
Parâmetros de pesquisa compostos
As pesquisas compostas no FHIR permitem que você pesquise em pares de elementos como unidades logicamente conectadas. Por exemplo, se você estivesse procurando observações em que a altura do paciente fosse superior a 60 polegadas, teria que ter certeza de que uma única propriedade da observação continha o código de altura e um valor maior do que 60 polegadas (o valor só deve pertencer à altura). Por exemplo, você não gostaria de uma correspondência positiva em uma observação com o código de altura e um código de comprimento de braço acima de 60 polegadas. Os parâmetros de pesquisa compostos impedem esse problema pesquisando em pares pré-especificados de elementos cujos valores devem atender aos critérios de pesquisa para que uma correspondência positiva ocorra.
O serviço FHIR nos Serviços de Dados de Integridade do Azure dá suporte aos seguintes pares de tipo de parâmetro de pesquisa para pesquisas compostas.
- Referência, Token
- Token, Data
- Token, Número, Número
- Token, Quantidade
- Token, Cadeia de caracteres
- Token, Token
Para saber mais, confira a documentação sobre Parâmetros de pesquisa compostos da HL7.
Observação
Os parâmetros de pesquisa compostos não dão suporte a modificadores, de acordo com a especificação FHIR.
Modificadores e prefixos
Os modificadores permitem que você qualifique os parâmetros de pesquisa com condições adicionais. Abaixo está uma tabela de modificadores FHIR e seu suporte no serviço FHIR.
Modificadores | Serviço FHIR nos Serviços de Dados de Saúde do Azure | API do Azure para FHIR | Comentário |
---|---|---|---|
:missing |
Sim | Sim | |
:exact |
Sim | Sim | |
:contains |
Sim | Sim | |
:text |
Sim | Sim | |
:type (referência) |
Sim | Sim | |
:not |
Sim | Sim | |
:below (uri) |
Sim | Sim | |
:above (uri) |
Sim | Sim | |
:in (token) |
Não | No | |
:below (token) |
Não | No | |
:above (token) |
Não | No | |
:not-in (token) |
Não | No | |
:identifier |
No | No |
Para parâmetros de pesquisa que têm uma ordem específica (números, datas e quantidades), você pode usar um prefixo antes do valor do parâmetro para refinar os critérios de pesquisa (por exemplo, Patient?_lastUpdated=gt2022-08-01
onde o prefixo gt
significa "maior que"). O serviço FHIR nos Serviços de Dados de Saúde do Azure dá suporte a todos os prefixos definidos no padrão FHIR.
Parâmetros de resultado de pesquisa
FHIR especifica um conjunto de parâmetros de resultado de pesquisa para ajudar a gerenciar as informações retornadas de uma pesquisa. Para obter detalhes sobre como usar parâmetros de resultado de pesquisa no FHIR, consulte o site do HL7 . A seguir está uma tabela de parâmetros de resultado de pesquisa FHIR e seu suporte no serviço FHIR.
Parâmetros de resultado de pesquisa | Serviço FHIR nos Serviços de Dados de Saúde do Azure | API do Azure para FHIR | Comentário |
---|---|---|---|
_elements |
Sim | Sim | |
_count |
Sim | Sim | _count é limitado a 1000 recursos. Se for definido como superior a 1000, apenas 1000 serão retornados e um aviso será incluído no pacote. |
_include |
Sim | Sim | Os itens recuperados com _include são limitados a 100. _include em PaaS e OSS no Azure Cosmos DB não dá suporte (:iterate #2137). |
_revinclude |
Sim | Sim | Os itens recuperados com _revinclude são limitados a 100. _revinclude em PaaS e OSS no Azure Cosmos DB não dá suporte (:iterate #2137). Há também um código de status incorreto para uma solicitação incorreta: #1319. |
_summary |
Sim | Sim | |
_total |
Parcial | Parcial | _total=none e _total=accurate |
_sort |
Parcial | Parcial | sort=_lastUpdated tem suporte no serviço FHIR. Para o serviço FHIR e os servidores FHIR do BD SQL de software de código aberto, há suporte para classificação por cadeias de caracteres e campos dateTime. Para bancos de dados da API do Azure para FHIR e Azure Cosmos DB de software de código aberto criados após 20 de abril de 2021, há suporte para classificação em nome, sobrenome, data de nascimento e clínica. |
_contained |
Não | No | |
_containedType |
No | No | |
_score |
No | No |
Observação:
- Por padrão,
_sort
organiza os registros em ordem crescente. Você também pode usar o prefixo-
para classificar em ordem decrescente. O serviço FHIR só permite que você classifique em um único campo de cada vez. - O serviço FHIR oferece suporte a pesquisas de curinga com revinclude. Adicionar um parâmetro de consulta "." em uma consulta revinclude direciona o serviço FHIR para fazer referência a todos os recursos mapeados para o recurso de origem.
Por padrão, o serviço FHIR nos Serviços de Dados de Saúde do Azure é definido como manipulação branda. Isso significa que o servidor ignora quaisquer parâmetros desconhecidos ou sem suporte. Se você quiser usar a manipulação estrita, poderá incluir o cabeçalho Prefer
e definir handling=strict
.
Busca encadeada e encadeada reversa
Uma pesquisa encadeada permite que você execute consultas com alvo preciso para recursos que tenham uma referência a outro recurso. Por exemplo, se você quiser achar encontros em que o nome da paciente é Jane, use:
GET {{FHIR_URL}}/Encounter?subject:Patient.name=Jane
O .
na solicitação anterior direciona o caminho da pesquisa encadeada para o parâmetro de destino (name
neste caso).
Da mesma forma, você pode fazer uma pesquisa encadeada reversa com o parâmetro _has
. Isso permite que você recupere instâncias de recurso especificando critérios em outros recursos que fazem referência aos recursos de interesse. Para obter exemplos de pesquisa encadeada e encadeada reversa, confira a página de exemplos de pesquisa do FHIR.
Paginação
Como mencionado anteriormente, os resultados de uma pesquisa FHIR estão disponíveis em formato paginado em um link fornecido no searchset
pacote. Por padrão, o serviço FHIR exibe 10 resultados de pesquisa por página, mas isso pode ser aumentado (ou diminuído) definindo o _count
parâmetro. Se houver mais correspondências do que cabem em uma página, o pacote incluirá um next
link. Buscar repetidamente no next
link produz as páginas subsequentes de resultados. Observe que o valor do _count
parâmetro não pode exceder 1000.
Atualmente, o serviço FHIR nos Serviços de Dados de Saúde do Azure dá suporte apenas ao link next
e não dá suporte aos links first
, last
ou previous
em pacotes retornados de uma pesquisa.
Perguntas frequentes
O que significa "suporte parcial" nos parâmetros de pesquisa não suportados R4?
Alguns dos parâmetros de pesquisa específicos do recurso abrangem mais de um tipo de dados, e o serviço FHIR nos Serviços de Dados de Integridade do Azure pode dar suporte apenas a esse parâmetro de pesquisa em um desses tipos de dados. Por exemplo, Condition-abatement-age e Condition-onset-age abrangem dois tipos de dados diferentes, Age e Range; no entanto, o serviço FHIR nos Serviços de Dados de Integridade do Azure dá suporte a esses dois parâmetros de pesquisa no Intervalo, mas não na Idade.
Há suporte para a operação $lastn para Observações?
Isso não tem suporte. A abordagem alternativa seria usar _count para restringir os recursos retornados por página e _sort para fornecer resultados em ordem decrescente.
Próximas etapas
Agora que você aprendeu sobre os conceitos básicos da pesquisa FHIR, confira a página de exemplos de pesquisa para obter detalhes sobre como pesquisar usando parâmetros de pesquisa, modificadores e outros métodos de pesquisa FHIR.
Observação
FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.