Exemplos de pesquisa do FHIR para a API do Azure para FHIR

Seguem-se alguns exemplos da utilização de operações de pesquisa Fast Healthcare Interoperability Resources (FHIR®), incluindo parâmetros de pesquisa e modificadores, pesquisa em cadeia e em cadeia inversa, pesquisa composta, visualização do próximo conjunto de entrada para resultados de pesquisa e pesquisa com um POST pedido. Para obter mais informações sobre a pesquisa, veja Descrição geral da Pesquisa FHIR.

Parâmetros do resultado da pesquisa

_include

_include procura nos recursos os que incluem o parâmetro especificado do recurso. Por exemplo, pode procurar entre MedicationRequest recursos para encontrar apenas os que incluem informações sobre as receitas de um paciente específico, que é o reference parâmetro patient. No exemplo abaixo, esta ação irá solicitar todos os MedicationRequests pacientes e que são referenciados a partir de MedicationRequests:

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

Nota

_include e _revinclude estão limitados a 100 itens.

_revinclude

_revinclude permite-lhe procurar na direção oposta como _include. Por exemplo, pode procurar pacientes e, em seguida, ao contrário, 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 ao omitir dados desnecessários. O parâmetro aceita uma lista separada por vírgulas de elementos base:

GET [your-fhir-server]/Patient?_elements=identifier,active

Neste pedido, irá recuperar um conjunto de pacientes, mas cada recurso incluirá apenas os identificador(s) e o estado ativo do paciente. Os recursos nesta resposta devolvida 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-lhe encontrar recursos onde um atributo não é verdadeiro. Por exemplo, pode procurar pacientes em que o sexo não seja feminino:

GET [your-fhir-server]/Patient?gender:not=female

Como valor devolvido, obteria todas as entradas de pacientes em que o sexo não é feminino, incluindo valores vazios (entradas especificadas sem género). Isto é diferente de procurar Pacientes onde o sexo é masculino, uma vez que isso não incluiria as entradas sem um sexo específico.

:em falta

:missing devolve todos os recursos que não têm um valor para o elemento especificado quando o valor é true, e devolve todos os recursos que contêm o elemento especificado quando o valor é false. Para elementos de tipo de dados simples, :missing=true corresponderá a todos os recursos em que o elemento está presente com extensões, mas tem um valor vazio. Por exemplo, se quiser encontrar todos os Patient recursos em falta sobre a data de nascimento, pode fazer:

GET [your-fhir-server]/Patient?birthdate:missing=true

:exato

:exact é utilizado para string parâmetros e devolve resultados que correspondem precisamente ao parâmetro, como na concatenação de carateres e invólucros.

GET [your-fhir-server]/Patient?name:exact=Jon

Este pedido devolve Patient recursos que têm o nome exatamente igual Jona . Se o recurso tivesse Pacientes com nomes como Jonathan ou joN, a pesquisa ignoraria e ignoraria o recurso, uma vez que não corresponde exatamente ao valor especificado.

:contém

:contains é utilizado para string parâmetros e procura recursos com correspondências parciais do valor especificado em qualquer parte da cadeia dentro do campo que está a ser pesquisado. contains não é sensível a maiúsculas e minúsculas e permite a concatenação de carateres. Por exemplo:

GET [your-fhir-server]/Patient?address:contains=Meadow

Este pedido devolver-lhe-ia todos os Patient recursos com address campos com valores que contêm a cadeia "Meadow". Isto significa que pode ter endereços que incluam valores como "Meadowers" ou "59 Meadow ST" devolvidos como resultados da pesquisa.

Para efetuar uma série de operações de pesquisa que abrangem vários parâmetros de referência, pode "encadear" a série de parâmetros de referência ao anexá-los ao pedido do servidor um a um utilizando um ponto final .. Por exemplo, se quiser ver todos os DiagnosticReport recursos com uma subject referência a um Patient recurso que inclua um determinado 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 efetuar a pesquisa em cadeia no parâmetro de referência do subject parâmetro.

Outra utilização comum de uma pesquisa regular (não uma pesquisa em cadeia) é 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 de um Patient com o fornecido id:

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Ao utilizar a pesquisa em cadeia, 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

Isto permitiria não só procurar 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 em cadeia pode ser efetuada mais do que uma vez num pedido através do símbolo &, que lhe permite procurar várias condições num único pedido. Nesses casos, a pesquisa em cadeia procura cada parâmetro "independentemente", em vez de procurar condições que satisfaçam apenas todas as condições de uma só vez:

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Isto devolveria todos os Patient recursos que têm "Sarah" como e generalPractitioner têm um generalPractitioner que tem o endereço com a WA do estado. Por outras palavras, se um paciente tivesse Sarah do estado NY e Bill da WA do estado ambos referenciados como o do generalPractitionerpaciente, o seria devolvido.

Para cenários em que a pesquisa tem de ser uma AND operação que abrange todas as condições como um grupo, veja o exemplo de pesquisa composto abaixo.

A pesquisa em cadeia permite-lhe procurar recursos com base nas propriedades dos recursos a que se referem. Utilizar a pesquisa em cadeia inversa permite-lhe fazê-lo ao contrário. Pode procurar recursos com base nas propriedades dos recursos que se referem aos mesmos, utilizando _has o parâmetro . Por exemplo, Observation o recurso tem um parâmetro patient de pesquisa que se refere a um recurso do Paciente. Para localizar todos os recursos do Paciente referenciados por Observation com um específico code:

GET [base]/Patient?_has:Observation:patient:code=527

Este pedido devolve os recursos do Paciente que são referidos com Observation o código 527.

Além disso, a pesquisa em cadeia inversa pode ter uma estrutura recursiva. Por exemplo, se quiser procurar todos os pacientes que tenham Observation onde a observação tem um evento de auditoria de um utilizador janedoeespecífico, 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 em cadeia e a pesquisa em cadeia inversa são uma implementação MVP. Para realizar pesquisas em cadeia no Azure Cosmos DB, a implementação explica a expressão de pesquisa e os problemas das sub-consultas para resolver os recursos correspondentes. Isto é feito para cada nível da expressão. Se qualquer consulta devolver mais de 100 resultados, será emitido um erro.

Para procurar recursos que cumpram múltiplas condições ao mesmo tempo, utilize a pesquisa composta que associa uma sequência de valores de parâmetro único com um símbolo $. O resultado devolvido seria a interseção dos recursos que correspondem a todas as condições especificadas pelos parâmetros de pesquisa associados. Estes parâmetros de pesquisa são denominados parâmetros de pesquisa compostos e definem um novo parâmetro que combina os múltiplos parâmetros numa estrutura aninhada. Por exemplo, se quiser encontrar todos os DiagnosticReport recursos que contenham Observation um valor de potássio inferior 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 potássio. Ao seguir o $ símbolo, especifica o intervalo do valor para o componente que utiliza lt para "menor ou igual a" e 9.2 para o intervalo de valores de potássio.

Procurar no conjunto de entrada seguinte

O número máximo de entradas que podem ser devolvidas por uma única consulta de pesquisa é 1000. No entanto, poderá ter mais de 1000 entradas que correspondem à consulta de pesquisa e poderá querer ver o próximo conjunto de entradas após as primeiras 1000 entradas devolvidas. Nesse caso, utilizaria 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 faria um pedido GET para o URL fornecido no campo relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Isto devolverá 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 é a ligação fornecida pelo servidor para obter as entradas que não aparecem no primeiro conjunto porque a restrição sobre o número máximo de entradas devolvidas para uma consulta de pesquisa.

Procurar com POST

Todos os exemplos de pesquisa mencionados acima utilizaram GET pedidos. Também pode efetuar operações de pesquisa com POST pedidos com _search:

POST [your-fhir-server]/Patient/_search?_id=45

Este pedido devolveria todos os Patient recursos com o id valor de 45. Tal como nos pedidos GET, o servidor determina qual do conjunto de recursos cumpre as condições e devolve um recurso de pacote na resposta HTTP.

Outro exemplo de pesquisa com POST em que os parâmetros de consulta são submetidos como um corpo de formulário é:

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Passos seguintes

Neste artigo, aprendeu a pesquisar com 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 do HL7 e é utilizada com a permissão de HL7.