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 Jon
a . 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.
Pesquisa em cadeia
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. Patient
s muitas vezes terá um ou mais Encounter
s 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 generalPractitioner
paciente, 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.
Pesquisa em cadeia inversa
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 janedoe
especí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.
Pesquisa composta
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.