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

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.

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

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.