Ejemplos de búsqueda de FHIR
A continuación se muestran algunos ejemplos de llamadas API de búsqueda fast Healthcare Interoperability Resources (FHIR®) que incluyen varios parámetros de búsqueda, modificadores, búsquedas encadenadas y encadenadas inversas, búsquedas compuestas, POST
solicitudes de búsqueda, etc. Para obtener una introducción general a los conceptos de búsqueda de FHIR, consulte Introducción a la búsqueda de FHIR.
Parámetros de resultados de la búsqueda
_include
_include
permite buscar instancias de recursos e incluir en los resultados otros recursos a los que hacen referencia las instancias de recursos de destino. Por ejemplo, puede usar _include
para consultar MedicationRequest
recursos y limitar la búsqueda a recetas para un paciente específico. A continuación, el servicio FHIR devolvería los MedicationRequest
recursos, así como el recurso al que se hace Patient
referencia. En el ejemplo siguiente, la solicitud extraerá todas las MedicationRequest
instancias de recursos de la base de datos y todos los pacientes a los que hacen referencia las MedicationRequest
instancias:
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Nota:
El servicio FHIR de Azure Health Data Services limita las búsquedas con _include
y _revinclude
para devolver un máximo de 100 elementos.
_revinclude
_revinclude
permite buscar instancias de recursos e incluir en los resultados otros recursos que hacen referencia a las instancias de recursos de destino. Por ejemplo, puede buscar pacientes y, a continuación, invertir incluir todos los contactos que hacen referencia a los pacientes:
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
limita la información de los resultados de la búsqueda a un subconjunto de los elementos definidos para un tipo de recurso. El _elements
parámetro acepta una lista separada por comas de elementos base:
GET {{FHIR_URL}}/Patient?_elements=identifier,active
En la solicitud anterior, recibirá una agrupación de pacientes, pero cada entrada solo incluirá los identificadores y el estado activo del paciente. Las entradas de la respuesta contendrán un meta.tag
valor de SUBSETTED
para indicar que no se incluyen todos los elementos definidos para el recurso.
Modificadores de búsqueda
:not
:not
permite buscar recursos con un elemento que no tiene un valor determinado. Por ejemplo, podría buscar pacientes que no son mujeres:
GET {{FHIR_URL}}/Patient?gender:not=female
A cambio, obtendría todos los recursos cuyo gender
valor de elemento no female
es , incluidos los Patient
pacientes sin ningún valor de género especificado. Esto es diferente de la Patient
búsqueda de recursos con el male
valor de género, ya que omitiría a los pacientes sin ningún género especificado.
:missing
:missing
devuelve todos los recursos que no tienen un valor para el elemento especificado cuando :missing=true
. Además, :missing
devuelve todos los recursos que contienen el elemento especificado cuando :missing=false
. En el caso de los elementos de tipo de datos simples, :missing=true
coincidirá con todos los recursos en los que hay un elemento, pero tiene un valor vacío. Por ejemplo, si desea buscar todos los Patient
recursos que faltan información en birthdate
, puede llamar a:
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
se usa para buscar elementos con string
tipos de datos y devuelve positivo si el valor del parámetro coincide exactamente con la secuencia de mayúsculas y minúsculas y caracteres completos del valor del elemento.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Esta solicitud devuelve Patient
recursos que tienen el given
nombre o family
.Jon
Si hubiera pacientes con nombres como Jonathan
o JON
, la búsqueda omitiría esos recursos, ya que sus nombres no coinciden exactamente con el valor especificado.
:contains
:contains
se usa para consultar string
los elementos de tipo y permite coincidencias con el valor especificado en cualquier parte del campo. contains
distingue mayúsculas de minúsculas y reconoce cadenas coincidentes concatenadas con otros caracteres. Por ejemplo:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Esta solicitud devolvería todos los Patient
recursos con address
campos de elemento que contienen la cadena "Meadow" (sin distinción entre mayúsculas y minúsculas). Esto significa que podría tener direcciones con valores como "Meadows Lane", "Pinemeadow Place" o "Meadowlark St" que devuelven coincidencias positivas.
Búsqueda encadenada
Para realizar operaciones de búsqueda que cubran los elementos contenidos en un recurso al que se hace referencia, puede "encadenar" una serie de parámetros junto con .
. Por ejemplo, si desea ver todos los DiagnosticReport
recursos con una subject
referencia a un paciente especificado por name
:
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Esta solicitud devolvería todos los DiagnosticReport
recursos con un sujeto del paciente llamado "Sarah". .
apunta la búsqueda encadenada al name
elemento dentro del recurso al que se hace Patient
referencia.
Otro uso común de la búsqueda de FHIR es encontrar todos los encuentros para un paciente específico. Para realizar una búsqueda normal (no encadenada) de Encounter
recursos que hacen referencia a un Patient
objeto con un determinado id
:
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Mediante la búsqueda encadenada, puede encontrar todos los Encounter
recursos que hacen referencia a los pacientes cuyos detalles coinciden con un parámetro de búsqueda. En el ejemplo siguiente se muestra cómo buscar encuentros que hacen referencia a pacientes limitados por birthdate
:
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Esto devolvería todas las Encounter
instancias que hacen referencia a pacientes con el valor especificado birthdate
.
Además, puede iniciar varias búsquedas encadenadas mediante el &
operador , lo que permite buscar en varias referencias en una solicitud. En tales casos, la &
búsqueda encadenada "independientemente" examina para cada valor de elemento:
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Esto devolvería todos los Patient
recursos que tienen una referencia a "Sarah" como una generalPractitioner
referencia más a un generalPractitioner
que tiene una dirección en el estado de Washington. En otras palabras, si un paciente tuviera un generalPractitioner
llamado Sarah del estado de Nueva York y otro generalPractitioner
llamado Bill del estado de Washington, esto cumpliría las condiciones para una coincidencia positiva al realizar esta búsqueda.
Para escenarios en los que la búsqueda requiere una condición AND lógica que comprueba estrictamente los valores de elementos emparejados, consulte los ejemplos de búsqueda compuesta siguientes.
Búsqueda encadenada inversa
El uso de la búsqueda encadenada inversa en FHIR permite buscar instancias de recursos de destino a las que hacen referencia otros recursos. En otras palabras, puede buscar recursos en función de las propiedades de los recursos que hacen referencia a ellos. Esto se logra con el _has
parámetro . Por ejemplo, el Observation
recurso tiene un parámetro patient
de búsqueda que busca una referencia a un Patient
recurso. Para buscar todos los Patient
recursos a los que hace referencia un Observation
con un elemento específico code
:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Esta solicitud devuelve Patient
recursos a los que hacen referencia Observation
los recursos con el código 527
.
Además, la búsqueda encadenada inversa puede tener una estructura recursiva. Por ejemplo, si desea buscar todos los pacientes a los que hace referencia un Observation
donde un profesional específico hace referencia AuditEvent
a la observación se denomina janedoe
:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Búsqueda compuesta
Para buscar recursos que contienen elementos agrupados como pares conectados lógicamente, FHIR define la búsqueda compuesta, que combina valores de parámetro únicos junto con el $
operador , formando un par conectado de parámetros. En una búsqueda compuesta, se produce una coincidencia positiva cuando la intersección de valores de elemento satisface todas las condiciones establecidas en los parámetros de búsqueda emparejados. Por ejemplo, si desea encontrar todos los DiagnosticReport
recursos que contienen un valor de potasio menor que 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Los elementos emparejados en este caso serían el code
elemento (de un Observation
recurso al que se hace referencia como result
) y el value
elemento conectado con .code
Siguiendo el código con el $
operador establece la value
condición como lt
(para "menor que") 9.2
(para el valor de mmol/L de potasio).
Los parámetros de búsqueda compuestos también se pueden usar para filtrar varias cantidades de valor de código de componente con un or lógico. Por ejemplo, para consultar observaciones con presión arterial diastolica mayor que 90 O presión arterial sistólica mayor que 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Observe cómo ,
funciona como operador OR lógico entre las dos condiciones.
Ver el siguiente conjunto de entradas
El número máximo de recursos que se pueden devolver a la vez desde una consulta de búsqueda es 1000. Sin embargo, es posible que tenga más de 1000 instancias de recursos que coincidan con la consulta de búsqueda y desee recuperar el siguiente conjunto de resultados después de las primeras 1000 entradas. En tal caso, usaría el valor de token url
de continuación (es decir"next"
, ) en la searchset
agrupación devuelta desde la búsqueda:
"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"
}
],
Realizaría una GET
solicitud para la dirección URL proporcionada:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Esto devolvería el siguiente conjunto de entradas para los resultados de búsqueda. La searchset
agrupación es el conjunto completo de entradas de resultados de búsqueda y el token url
de continuación es el vínculo proporcionado por el servicio FHIR para recuperar las entradas que no caben en el primer subconjunto (debido a la restricción del número máximo de entradas devueltas para una página).
Búsqueda mediante POST
Todos los ejemplos de búsqueda mencionados anteriormente usan GET
solicitudes. Sin embargo, también puede realizar llamadas API de búsqueda de FHIR mediante POST
con el _search
parámetro :
POST {{FHIR_URL}}/Patient/_search?_id=45
Esta solicitud devolvería la instancia de Patient
recurso con el valor especificado id
. Al igual que con GET
las solicitudes, el servidor determina qué instancias de recursos cumplen las condiciones y devuelve un lote en la respuesta HTTP.
Otra característica de la búsqueda con POST
es que permite enviar los parámetros de consulta como un cuerpo del formulario:
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Pasos siguientes
En este artículo, ha aprendido a buscar en FHIR mediante parámetros de búsqueda, modificadores y otros métodos. Para obtener más información sobre la búsqueda de FHIR, consulte
FHIR® es una marca registrada de HL7 y se usa con su permiso.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de