Partilhar via


Exemplos de pesquisa FHIR

Seguem-se exemplos de chamadas de API de pesquisa do Fast Healthcare Interoperability Resources (FHIR)® com vários parâmetros de pesquisa, modificadores, pesquisas encadeadas e encadeadas inversamente, pesquisas compostas, POST pedidos de pesquisa e muito mais. Para obter uma introdução geral aos conceitos de pesquisa FHIR, consulte Visão geral da pesquisa FHIR.

Parâmetros dos resultados da pesquisa

_include

_include Permite pesquisar instâncias de recursos e incluir nos resultados outros recursos referenciados pelas instâncias de recursos de destino. Por exemplo, você pode usar _include para consultar MedicationRequest recursos e limitar a pesquisa a prescrições para um paciente específico. O serviço FHIR devolveria então os MedicationRequest recursos e o recurso referenciado Patient . No exemplo a seguir, a solicitação extrai todas as MedicationRequest instâncias de recurso no banco de dados e todos os pacientes referenciados pelas MedicationRequest instâncias.

 GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient

Nota

O serviço FHIR nos Serviços de Dados de Saúde do Azure limita as pesquisas com _include e _revinclude para retornar um máximo de 100 itens.

_revinclude

_revinclude Permite pesquisar instâncias de recursos e incluir nos resultados outros recursos que fazem referência às instâncias de recursos de destino. Por exemplo, você pode pesquisar por pacientes e, em seguida, reverter incluir todos os encontros que referenciam os pacientes.

GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject

_elements

_elements Restringe as informações nos resultados da pesquisa a um subconjunto dos elementos definidos para um tipo de recurso. O _elements parâmetro aceita uma lista separada por vírgulas de elementos base.

GET {{FHIR_URL}}/Patient?_elements=identifier,active

A solicitação anterior retorna um pacote de pacientes. Cada entrada inclui apenas os identificadores e o estado ativo do doente. As entradas na resposta contêm um meta.tag valor de SUBSETTED para indicar que nem todos os elementos definidos para o recurso estão incluídos.

Modificadores de pesquisa

:not

:not Permite encontrar recursos com um elemento que não tem um determinado valor. Por exemplo, você pode procurar pacientes que não são do sexo feminino.

GET {{FHIR_URL}}/Patient?gender:not=female

Em troca, você obteria todos os Patient recursos cujo gender valor de elemento não femaleé, incluindo quaisquer pacientes sem valor de gênero especificado. Isso é diferente de procurar Patient recursos com o valor de gênero, male uma vez que isso ignoraria pacientes sem sexo especificado.

:missing

:missing Retorna todos os recursos que não têm um valor para o elemento especificado quando :missing=true. Além disso, :missing retorna todos os recursos que contêm o elemento especificado quando :missing=false. Para elementos de tipo de dados simples, corresponde em todos os recursos em que um elemento está presente, :missing=true mas tem um valor vazio. Por exemplo, se você quiser encontrar todos os Patient recursos que estão faltando informações no birthdate, você pode fazer a seguinte chamada.

GET {{FHIR_URL}}/Patient?birthdate:missing=true

:exact

:exact é usado para procurar elementos com string tipos de dados e retorna positivo se o valor do parâmetro corresponder precisamente ao caso e à sequência completa de caracteres do valor do elemento.

GET {{FHIR_URL}}/Patient?name:exact=Jon

Essa solicitação retorna Patient recursos que têm o nome Jonou family de given . Se houvesse pacientes com nomes como Jonathan ou JON, a pesquisa ignoraria esses recursos, pois seus nomes não correspondem exatamente ao valor especificado.

:contains

:contains é usado para consultar string elementos de tipo e permite correspondências com o valor especificado em qualquer lugar dentro do campo. contains não diferencia maiúsculas de minúsculas e reconhece cadeias de caracteres correspondentes concatenadas com outros caracteres. Por exemplo:

GET {{FHIR_URL}}/Patient?address:contains=Meadow

Essa solicitação retornaria todos os Patient recursos com address campos de elemento que contêm a cadeia de caracteres "Meadow" (não diferencia maiúsculas de minúsculas). Isso significa que você pode ter endereços com valores como "Meadows Lane", "Pinemeadow Place" ou "Meadowlark St" que retornam correspondências positivas.

Para executar operações de pesquisa que abrangem elementos contidos em um recurso referenciado, você pode "encadear" uma série de parâmetros junto com .. Por exemplo, se você quiser exibir todos os DiagnosticReport recursos com uma subject referência a um paciente especificado pelo name, use a consulta a seguir.

 GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah

Esta solicitação retorna todos os DiagnosticReport recursos com um assunto paciente chamado "Sarah". O . aponta a pesquisa encadeada para o name elemento dentro do recurso referenciado Patient .

Outro uso comum da pesquisa FHIR é encontrar todos os encontros para um paciente específico. Para fazer uma pesquisa regular (não encadeada) de Encounter recursos que fazem referência a com Patient um determinado id uso, o seguinte.

GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Usando a pesquisa encadeada, você pode encontrar todos os Encounter recursos que fazem referência a pacientes cujos detalhes correspondem a um parâmetro de pesquisa. O exemplo a seguir demonstra como procurar encontros que fazem referência a pacientes restritos por birthdate.

GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20

Isso retornaria todas as Encounter instâncias que referenciam pacientes com o valor especificado birthdate .

Além disso, você pode iniciar várias pesquisas encadeadas usando o & operador, que permite pesquisar várias referências em uma solicitação. Nos casos com &, a pesquisa encadeada verifica "independentemente" cada valor de elemento.

GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Isso retorna todos os Patient recursos que têm uma referência a "Sarah" como uma generalPractitioner referência mais uma referência a um generalPractitioner que tem um endereço no estado de Washington. Em outras palavras, se um paciente tivesse um generalPractitioner nome Sarah do estado de Nova York e outro generalPractitioner chamado Bill do estado de Washington, ambos reuniriam as condições para uma correspondência positiva ao fazer essa busca.

Para cenários em que a pesquisa requer uma condição lógica E que verifica estritamente os valores de elementos emparelhados, consulte os seguintes exemplos de pesquisa composta.

O uso da pesquisa encadeada reversa no FHIR permite pesquisar instâncias de recursos de destino referenciadas por outros recursos. Em outras palavras, você pode pesquisar recursos com base nas propriedades dos recursos que se referem a eles. Isso é feito com o _has parâmetro. Por exemplo, o Observation recurso tem um parâmetro patient de pesquisa que verifica se há uma referência a um Patient recurso. Para localizar todos os Patient recursos referenciados por um Observation com um , use o código a codeseguir.

GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527

Essa solicitação retorna Patient recursos que são referenciados por Observation recursos com o código 527.

Além disso, a pesquisa encadeada reversa pode ter uma estrutura recursiva. Por exemplo, se você quiser pesquisar todos os pacientes referenciados por um Observation onde a observação é referenciada por um AuditEvent de um médico específico chamado janedoe, use:

GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Para procurar recursos que contenham elementos agrupados como pares logicamente conectados, FHIR define a pesquisa composta, que une valores de parâmetros únicos junto com o $ operador – formando um par conectado de parâmetros. Em uma pesquisa composta, uma correspondência positiva ocorre quando a interseção de valores de elementos satisfaz todas as condições definidas nos parâmetros de pesquisa pareados. O exemplo a seguir consulta todos os DiagnosticReport recursos que contêm um valor de potássio menor que 9.2:

GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Os elementos emparelhados, neste caso, seriam o code elemento (de um Observation recurso referenciado como o result) e o value elemento conectado com o code. Seguindo o código com o $ operador define a value condição como lt (para "menos de") 9.2 (para o valor mmol de potássio/L).

Os parâmetros de pesquisa compostos também podem ser usados para filtrar várias quantidades de valor de código de componente com um OR lógico. Por exemplo, para consultar observações com pressão arterial diastólica maior que 90 OU pressão arterial sistólica maior que 140:

GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140

Observe como , funciona como o operador lógico OR entre as duas condições.

Ver o próximo conjunto de entradas

O número máximo de recursos que podem ser retornados de uma só vez a partir de uma consulta de pesquisa é 1000. No entanto, você pode ter mais de 1.000 instâncias de recursos que correspondem à consulta de pesquisa e deseja recuperar o próximo conjunto de resultados após as primeiras 1.000 entradas. Nesse caso, você usaria o valor do token url de continuação (ou seja, "next") no searchset pacote retornado da pesquisa da seguinte maneira.

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
        }
    ],

Você faria uma GET solicitação para o URL fornecido:

GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Isso retorna o próximo conjunto de entradas para os resultados da pesquisa. O searchset pacote é o conjunto completo de entradas de resultados de pesquisa, e o token url de continuação é o link fornecido pelo serviço FHIR para recuperar as entradas que não se encaixam no primeiro subconjunto (devido à restrição do número máximo de entradas retornadas para uma página).

Pesquisar usando POST

Todos os exemplos de pesquisa mencionados aqui usam GET solicitações. No entanto, você também pode fazer chamadas de API de pesquisa FHIR usando POST o _search parâmetro da seguinte maneira.

POST {{FHIR_URL}}/Patient/_search?_id=45

Essa solicitação retorna a instância do Patient recurso com o valor fornecido id . Assim como acontece com GET as solicitações, o servidor determina quais instâncias de recurso satisfazem as condições e retorna um pacote na resposta HTTP.

Outro recurso da pesquisa com POST é que ele permite enviar os parâmetros de consulta como um corpo de formulário.

POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Próximos passos

Neste artigo, você aprendeu sobre como pesquisar no FHIR usando parâmetros de pesquisa, modificadores e outros métodos. Para obter mais informações sobre a pesquisa FHIR, consulte

Nota

FHIR® é uma marca registada da HL7 e é utilizada com a permissão da HL7.