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 Jon
ou 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.
Pesquisa encadeada
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.
Pesquisa encadeada reversa
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 code
seguir.
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
Pesquisa composta
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.