Compartir vía


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 femalees , 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.

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.

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

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.