Partilhar via


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.

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. Patients muitas vezes terá um ou mais Encounters 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 generalPractitionerpaciente, 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.

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 janedoeespecí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.

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.