Exemplos de pesquisa FHIR para a API do Azure para FHIR
Importante
A API do Azure para FHIR será desativada em 30 de setembro de 2026. Siga as estratégias de migração para fazer a transição para o serviço FHIR® dos Serviços de Dados de Saúde do Azure até essa data. Devido à desativação da API do Azure para FHIR, novas implantações não serão permitidas a partir de 1 de abril de 2025. O serviço FHIR dos Serviços de Dados de Saúde do Azure é a versão evoluída da API do Azure para FHIR que permite aos clientes gerir serviços FHIR, DICOM e MedTech com integrações noutros serviços do Azure.
Abaixo estão alguns exemplos de uso de operações de pesquisa FHIR® (Fast Healthcare Interoperability Resources), incluindo parâmetros e modificadores de pesquisa, pesquisa em cadeia e cadeia reversa, pesquisa composta, visualização do próximo conjunto de entradas para resultados de pesquisa e pesquisa com uma POST
solicitação. Para obter mais informações sobre pesquisa, consulte Visão geral da pesquisa FHIR.
Parâmetros dos resultados da pesquisa
_include
_include
pesquisa em recursos aqueles que incluem o parâmetro especificado do recurso. Por exemplo, você pode pesquisar entre MedicationRequest
recursos para encontrar apenas aqueles que incluem informações sobre as prescrições para um paciente específico, que é o reference
parâmetro patient
. No exemplo abaixo, isso puxará todos os MedicationRequests
pacientes referenciados do MedicationRequests
:
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Nota
_include e _revinclude são limitados a 100 itens.
_revinclude
_revinclude
permite que você pesquise na direção oposta como _include
. Por exemplo, você pode pesquisar por pacientes e, em seguida, reverter incluir todos os encontros que referenciam os pacientes:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_elements
_elements
Reduz o resultado da pesquisa a um subconjunto de campos para reduzir o tamanho da resposta omitindo dados desnecessários. O parâmetro aceita uma lista separada por vírgulas de elementos base:
GET [your-fhir-server]/Patient?_elements=identifier,active
Nesta solicitação, você receberá de volta um pacote de pacientes, mas cada recurso incluirá apenas o(s) identificador(es) e o status ativo do paciente. Os recursos nessa resposta retornada conterão um meta.tag
valor de SUBSETTED
para indicar que são um conjunto incompleto de resultados.
Modificadores de pesquisa
:não
:not
permite que você encontre recursos onde um atributo não é verdadeiro. Por exemplo, você pode pesquisar pacientes em que o sexo não é feminino:
GET [your-fhir-server]/Patient?gender:not=female
Como valor de retorno, você obteria todas as entradas de pacientes em que o gênero não é feminino, incluindo valores vazios (entradas especificadas sem gênero). Isso é diferente de procurar pacientes onde o gênero é masculino, já que isso não incluiria as entradas sem um gênero específico.
:ausente
:missing
Retorna todos os recursos que não têm um valor para o elemento especificado quando o valor é true
, e retorna todos os recursos que contêm o elemento especificado quando o valor é false
. Para elementos de tipo de dados simples, corresponderá em todos os recursos em que o elemento está presente com extensões, :missing=true
mas tem um valor vazio. Por exemplo, se você quiser encontrar todos os Patient
recursos que estão faltando informações sobre a data de nascimento, você pode fazer:
GET [your-fhir-server]/Patient?birthdate:missing=true
:exato
:exact
é usado para string
parâmetros e retorna resultados que correspondem ao parâmetro com precisão, como em concatenação de invólucros e caracteres.
GET [your-fhir-server]/Patient?name:exact=Jon
Essa solicitação retorna Patient
recursos que têm o nome exatamente igual a Jon
. Se o recurso tivesse Pacientes com nomes como Jonathan
ou joN
, a pesquisa ignoraria e ignoraria o recurso, pois ele não corresponde exatamente ao valor especificado.
:contém
:contains
é usado para string
parâmetros e procura recursos com correspondências parciais do valor especificado em qualquer lugar na cadeia de caracteres dentro do campo que está sendo pesquisado. contains
não diferencia maiúsculas de minúsculas e permite a concatenação de caracteres. Por exemplo:
GET [your-fhir-server]/Patient?address:contains=Meadow
Essa solicitação retornaria todos os Patient
recursos com address
campos que têm valores que contêm a cadeia de caracteres "Meadow". Isso significa que você pode ter endereços que incluem valores como "Meadowers" ou "59 Meadow ST" retornados como resultados da pesquisa.
Pesquisa encadeada
Para executar uma série de operações de pesquisa que abrangem vários parâmetros de referência, você pode "encadear" a série de parâmetros de referência anexando-os à solicitação do servidor, um a um, usando um ponto .
. Por exemplo, se você quiser exibir todos os DiagnosticReport
recursos com uma subject
referência a um Patient
recurso que inclua um :name
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Este pedido devolveria todos os DiagnosticReport
recursos com um paciente chamado "Sarah". O período .
após o campo Patient
executa a pesquisa encadeada no parâmetro de referência do subject
parâmetro.
Outro uso comum de uma busca regular (não uma busca encadeada) é encontrar todos os encontros para um paciente específico. Patient
s muitas vezes terá um ou mais Encounter
s com um assunto. Para procurar todos os Encounter
recursos com Patient
o fornecido id
:
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Usando a pesquisa encadeada, você pode encontrar todos os Encounter
recursos que correspondem a uma determinada informação Patient
, como o birthdate
:
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Isso permitiria não apenas pesquisar Encounter
recursos para um único paciente, mas em todos os pacientes que têm o valor de data de nascimento especificado.
Além disso, a pesquisa encadeada pode ser feita mais de uma vez em uma solicitação usando o símbolo &
, que permite pesquisar várias condições em uma solicitação. Nesses casos, a pesquisa encadeada procura "independentemente" cada parâmetro, em vez de procurar condições que apenas satisfaçam todas as condições de uma só vez:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Isso devolveria todos os Patient
recursos que têm "Sarah" como o generalPractitioner
e têm um generalPractitioner
que tem o endereço com o estado WA. Em outras palavras, se um paciente tivesse Sarah do estado NY e Bill do estado WA ambos referenciados como do generalPractitioner
paciente, o seria devolvido.
Para cenários em que a pesquisa deve ser uma AND
operação que abrange todas as condições como um grupo, consulte o exemplo de pesquisa composta abaixo.
Pesquisa em cadeia inversa
A pesquisa em cadeia permite pesquisar recursos com base nas propriedades dos recursos a que se referem. Usando a pesquisa em cadeia reversa, permite que você faça o contrário. Você pode pesquisar recursos com base nas propriedades dos recursos que se referem a eles, usando _has
o parâmetro. Por exemplo, Observation
o recurso tem um parâmetro patient
de pesquisa referente a um recurso do paciente. Para encontrar todos os recursos do Paciente referenciados com Observation
um :code
GET [base]/Patient?_has:Observation:patient:code=527
Esta solicitação retorna os recursos do paciente que são encaminhados com Observation
o código 527
.
Além disso, a pesquisa em cadeia reversa pode ter uma estrutura recursiva. Por exemplo, se você quiser pesquisar todos os pacientes que têm Observation
onde a observação tem um evento de auditoria de um usuário janedoe
específico, você pode fazer:
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Nota
Na API do Azure para FHIR e no servidor FHIR de código aberto apoiado pelo Azure Cosmos DB, a pesquisa encadeada e a pesquisa encadeada reversa são uma implementação MVP. Para realizar a pesquisa encadeada no Azure Cosmos DB, a implementação percorre a expressão de pesquisa e emite subconsultas para resolver os recursos correspondentes. Isso é feito para cada nível da expressão. Se qualquer consulta retornar mais de 100 resultados, um erro será gerado.
Pesquisa composta
Para procurar recursos que atendam a várias condições ao mesmo tempo, use a pesquisa composta que une uma sequência de valores de parâmetro único com um símbolo $
. O resultado retornado seria a interseção dos recursos que correspondem a todas as condições especificadas pelos parâmetros de pesquisa associados. Esses parâmetros de pesquisa são chamados de parâmetros de pesquisa compostos e definem um novo parâmetro que combina os vários parâmetros em uma estrutura aninhada. Por exemplo, se você quiser encontrar todos os DiagnosticReport
recursos que contêm Observation
com um valor de potássio menor ou igual a 9,2:
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Este pedido especifica o componente que contém um código de 2823-3
, que, neste caso, seria o potássio. Seguindo o $
símbolo, especifica o intervalo do valor para o componente usando lt
para "menor ou igual a" e 9.2
para o intervalo de valor de potássio.
Pesquisar o próximo conjunto de entradas
O número máximo de entradas que podem ser retornadas por uma única consulta de pesquisa é 1000. No entanto, poderá ter mais de 1000 entradas que correspondam à consulta de pesquisa e poderá querer ver o próximo conjunto de entradas após as primeiras 1000 entradas que foram devolvidas. Nesse caso, você usaria o valor do token url
de continuação como searchset
no Bundle
resultado abaixo:
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
E você faria uma solicitação GET para o URL fornecido no campo relation: next
:
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Isso retornará o próximo conjunto de entradas para o resultado da pesquisa. O searchset
é o conjunto completo de entradas de resultados de pesquisa, e o token url
de continuação é o link fornecido pelo servidor para você recuperar as entradas que não aparecem no primeiro conjunto devido à restrição no número máximo de entradas retornadas para uma consulta de pesquisa.
Pesquisar usando o POST
Todos os exemplos de pesquisa mencionados acima utilizaram GET
pedidos. Você também pode fazer operações de pesquisa usando POST
solicitações usando _search
:
POST [your-fhir-server]/Patient/_search?_id=45
Este pedido devolveria todos os Patient
recursos com o id
valor de 45. Assim como nas solicitações GET, o servidor determina qual do conjunto de recursos atende à(s) condição(ões) e retorna um recurso de pacote na resposta HTTP.
Outro exemplo de pesquisa usando POST onde os parâmetros de consulta são enviados como um corpo de formulário é:
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Próximos passos
Neste artigo, você aprendeu sobre como pesquisar usando diferentes parâmetros de pesquisa, modificadores e ferramentas de pesquisa FHIR. Para obter mais informações sobre a Pesquisa FHIR, consulte
FHIR® é uma marca registada da HL7 e é utilizada com a permissão da HL7.