Compartilhar via


Exemplos de pesquisa FHIR

Veja a seguir 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 reversas, pesquisas compostas, POST solicitações 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 de resultado de 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 retornaria os MedicationRequest recursos e o recurso referenciado Patient . No exemplo a seguir, a solicitação extrai todas as MedicationRequest instâncias de recursos no banco de dados e todos os pacientes referenciados pelas MedicationRequest instâncias.

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

Observação

O serviço FHIR nos Serviços de Dados de Integridade 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 pacientes e, em seguida, incluir inversamente todos os encontros que fazem referência aos 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 status ativo do paciente. 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 que você encontre recursos com um elemento que não tem um determinado valor. Por exemplo, você pode pesquisar 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 pacientes sem valor de gênero especificado. Isso é diferente de pesquisar Patient recursos com o valor de gênero, male pois isso ignoraria pacientes sem gênero 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 a todos os recursos em que um elemento está presente, :missing=true mas tem um valor vazio. Por exemplo, se você quiser localizar todos os Patient recursos que não têm informações sobre birthdateo , poderá fazer a seguinte chamada.

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

:exact

:exact é usado para pesquisar 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 given nome ou family de Jon. 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" (sem distinção entre maiúsculas e 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 por name, use a consulta a seguir.

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

Essa solicitação retorna todos os DiagnosticReport recursos com um assunto de 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 Patient com um determinado id uso, use 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 pesquisar encontros que fazem referência a pacientes reduzidos por birthdate.

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

Isso retornaria todas as Encounter instâncias que fazem referência a pacientes com o valor especificado birthdate .

Além disso, você pode iniciar várias pesquisas encadeadas usando o & operador, que permite pesquisar em 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 um generalPractitioner 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 atenderiam às condições para uma correspondência positiva ao fazer essa pesquisa.

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

O uso da pesquisa em cadeia reversa no FHIR permite que você pesquise 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 específico code, use o código a seguir.

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

Essa solicitação retorna Patient recursos 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 em que 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 pesquisar recursos que contêm elementos agrupados como pares logicamente conectados, o FHIR define a pesquisa composta, que une valores de parâmetro único com o $ operador – formando um par de parâmetros conectados. Em uma pesquisa composta, uma correspondência positiva ocorre quando a interseção dos valores dos elementos satisfaz todas as condições definidas nos parâmetros de pesquisa emparelhados. 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 ) resulte o value elemento conectado com o code. Seguir o código com o $ operador define a value condição como lt (para "menor que") 9.2 (para o valor de mmol de potássio/L).

Os parâmetros de pesquisa compostos também podem ser usados para filtrar quantidades de valor de código de vários componentes 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 OR lógico 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 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 no 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 à 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 atendem às condições e retorna um pacote na resposta HTTP.

Outro recurso da pesquisa 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óximas etapas

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

Observação

FHIR® é uma marca registrada da HL7 e é usado com a permissão da HL7.