Ejemplos de búsqueda de FHIR
A continuación se muestran ejemplos de llamadas API de búsqueda fast Healthcare Interoperability Resources (FHIR®) que incluyen varios parámetros de búsqueda, modificadores, búsquedas encadenadas e 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
los recursos y limitar la búsqueda a las recetas de un paciente específico. A continuación, el servicio FHIR devolvería los MedicationRequest
recursos y el recurso al que se hace Patient
referencia. En el ejemplo siguiente, la solicitud extrae 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 encuentros que hacen referencia a los pacientes.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
limita la información de los resultados de 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
La solicitud anterior devuelve una agrupación de pacientes. Cada entrada solo incluye los identificadores y el estado activo del paciente. Las entradas de la respuesta contienen 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 Patient
recursos cuyo gender
valor de elemento no female
es , incluidos los pacientes sin ningún valor de género especificado. Esto es diferente de buscar Patient
recursos con el valor de male
género, ya que omitiría a los pacientes sin 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
. Para los elementos de tipo de datos simples, :missing=true
coincide con todos los recursos en los que hay un elemento, pero tiene un valor vacío. Por ejemplo, si desea encontrar todos los Patient
recursos que faltan información sobre birthdate
, puede realizar la siguiente llamada.
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
elementos de tipo y permite coincidencias con el valor especificado en cualquier parte del campo. contains
no 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
, use la consulta siguiente.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Esta solicitud devuelve todos los DiagnosticReport
recursos con un sujeto de paciente denominado "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
los recursos que hacen referencia a un Patient
objeto con un determinado id
uso, use lo siguiente.
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 estrechados por birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Esto devolvería todas las Encounter
instancias que hacen referencia a los 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 los casos con &
, la búsqueda encadenada "independientemente" examina cada valor de elemento.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Esto devuelve todos los Patient
recursos que tienen una referencia a "Sarah" como generalPractitioner
una referencia más a un que generalPractitioner
tiene una dirección en el estado de Washington. En otras palabras, si un paciente tuviera un generalPractitioner
nombre de Sarah del estado de Nueva York y otro generalPractitioner
llamado Bill del estado de Washington, ambos cumplirían 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 elemento emparejados, consulte los siguientes ejemplos de búsqueda compuesta.
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 comprueba si hay una referencia a un Patient
recurso. Para buscar todos los recursos a los Patient
que hace referencia un Observation
con un elemento específico code
, use el código siguiente.
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
objeto donde se hace referencia a la observación por parte AuditEvent
de un profesional específico denominado janedoe
, use:
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 de parámetros conectados. 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. En el ejemplo siguiente se consultan 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 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.
Visualización del 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 quiera recuperar el siguiente conjunto de resultados después de las primeras 1000 entradas. En este caso, usaría el valor de token url
de continuación (es decir, "next"
) en la searchset
agrupación devuelta de la búsqueda como se indica a continuación.
"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 devuelve 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 aquí usan GET
solicitudes. Sin embargo, también puede realizar llamadas api de búsqueda de FHIR mediante POST
con el _search
parámetro como se indica a continuación.
POST {{FHIR_URL}}/Patient/_search?_id=45
Esta solicitud devuelve 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 una agrupación en la respuesta HTTP.
Otra característica de 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
Nota:
FHIR® es una marca registrada de HL7 y se usa con su permiso.