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 birthdate
o , 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.
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 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.
Pesquisa encadeada reversa
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
Pesquisa composta
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 ) result
e 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.