Share via


Ejemplos de búsqueda de FHIR para Azure API for FHIR

A continuación se muestran algunos ejemplos de uso de las operaciones de búsqueda de Recursos Rápidos de Interoperabilidad en Salud (FHIR®), incluidos los parámetros y modificadores de búsqueda, la búsqueda en cadena y en cadena inversa, la búsqueda compuesta, la visualización del siguiente conjunto de entradas para los resultados de la búsqueda y la búsqueda con una solicitud POST. Para obtener más información sobre la búsqueda, vea Introducción a la búsqueda de FHIR.

Parámetros de resultados de la búsqueda

_include

_include busca entre los recursos aquellos que incluyen el parámetro especificado del recurso. Por ejemplo, puede buscar entre recursos MedicationRequest para encontrar solo los que incluyen información sobre las recetas de un paciente específico, que es el parámetro de referencepatient. En el ejemplo siguiente, se extraerán todos los objetos MedicationRequests y se hace referencia a todos los pacientes desde MedicationRequests:

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

Nota:

_include y _revinclude están limitados a 100 elementos.

_revinclude

_revinclude permite buscar en la dirección opuesta como _include. Por ejemplo, puede buscar pacientes y, a continuación, invertir incluir todos los contactos que hacen referencia a los pacientes:

GET [your-fhir-server]/Patient?_revinclude=Encounter:subject

_elements

_elements limita el resultado de la búsqueda a un subconjunto de campos para reducir el tamaño de la respuesta omitiendo los datos innecesarios. El parámetro acepta una lista separada por comas de elementos base:

GET [your-fhir-server]/Patient?_elements=identifier,active

En esta solicitud, recibirá un conjunto de pacientes, pero cada recurso solo incluirá los identificadores y el estado activo del paciente. Los recursos de esta respuesta devuelta contendrán un valor meta.tag de SUBSETTED para indicar que se trata de un conjunto incompleto de resultados.

Modificadores de búsqueda

:not

:not permite buscar recursos en los que un atributo no es true. Por ejemplo, podría buscar pacientes en los que el sexo no sea femenino:

GET [your-fhir-server]/Patient?gender:not=female

Como valor devuelto se obtienen todas las entradas de pacientes en las que el sexo no es femenino, incluidos los valores vacíos (entradas especificadas sin género). Esto es diferente de buscar pacientes en los que el sexo es masculino, ya que eso no incluiría las entradas sin un género específico.

:missing

:missing devuelve todos los recursos que no tienen un valor para el elemento especificado cuando el valor es true, y devuelve todos los recursos que contienen el elemento especificado cuando el valor es false. En el caso de los elementos de tipo de datos simples, :missing=true coincidirá con todos los recursos en los que el elemento esté presente con extensiones pero tenga un valor vacío. Por ejemplo, si desea encontrar todos los recursos Patient a los que falta información sobre la fecha de nacimiento, puede hacer lo siguiente:

GET [your-fhir-server]/Patient?birthdate:missing=true

:exact

:exact se usa para los parámetros string, y devuelve resultados que coinciden con el parámetro con precisión, como en el caso del uso de mayúsculas y minúsculas y la concatenación de caracteres.

GET [your-fhir-server]/Patient?name:exact=Jon

Esta solicitud devuelve recursos Patient que tienen el nombre exactamente igual que Jon. Si el recurso tuviera pacientes con nombres como Jonathan o joN, la búsqueda omitiría el recurso, ya que no coincide exactamente con el valor especificado.

:contains

:contains se usa para los parámetros string y busca recursos con coincidencias parciales del valor especificado en cualquier parte de la cadena dentro del campo en el que se está buscando. contains no tiene en cuenta las mayúsculas y minúsculas y permite la concatenación de caracteres. Por ejemplo:

GET [your-fhir-server]/Patient?address:contains=Meadow

Esta solicitud devolvería todos los recursos Patient con campos address que tienen valores que contienen la cadena "Meadow". Esto significa que podría obtener direcciones que incluyan valores como "Meadowers" o "59 Meadow ST" como resultados de la búsqueda.

Para realizar una serie de operaciones de búsqueda que abarquen varios parámetros de referencia, puede "encadenar" la serie de parámetros de referencia anexándolos a la solicitud de servidor uno por uno mediante un punto .. Por ejemplo, si desea ver todos los recursos DiagnosticReport con una referencia subject a un recurso Patient que incluye un determinado name:

 GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah

Esta solicitud devolvería todos los recursos DiagnosticReport con una paciente llamada "Sarah". El punto . después del campo Patient realiza la búsqueda encadenada en el parámetro de referencia del parámetro subject.

Otro uso común de una búsqueda normal (no encadenada) es buscar todos los contactos médicos de un paciente específico. Los valores Patient a menudo tendrán uno o varios valores Encounter con un sujeto. Para buscar todos los recursos Encounter de Patient con el valor id proporcionado:

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Mediante la búsqueda encadenada, puede encontrar todos los recursos Encounter que coincidan con un fragmento determinado de información de Patient, como birthdate:

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

Esto permitiría no solo buscar recursos Encounter para un solo paciente, sino en todos los pacientes que tengan el valor de fecha de nacimiento especificado.

Además, la búsqueda encadenada se puede realizar más de una vez en una solicitud mediante el símbolo &, que permite buscar varias condiciones en una solicitud. En tales casos, la búsqueda encadenada busca "independientemente" cada parámetro, en lugar de buscar condiciones que solo cumplan todas las condiciones a la vez:

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Esto devolvería todos los recursos de Patient que tienen "Sarah" como generalPractitioner y tienen una propiedad generalPractitioner que tiene la dirección con el estado WA. En otras palabras, si un paciente tuviera a Sarah del estado NY y a Bill del estado WA como referencias de la propiedad generalPractitioner del paciente, se devolverían ambos.

Para los escenarios en los que la búsqueda tiene que ser una operación AND que abarque todas las condiciones como grupo, consulte el siguiente ejemplo de búsqueda compuesta.

La búsqueda en cadena permite buscar recursos en función de las propiedades de los recursos a los que hacen referencia. El uso de la búsqueda en cadena inversa le permite hacerlo al revés. Puede buscar recursos en función de las propiedades de los recursos que hacen referencia a ellos, mediante el parámetro _has. Por ejemplo, el recurso Observation tiene un parámetro de búsqueda patient que hace referencia a un recurso de paciente. Para buscar todos los recursos de pacientes a los que hace referencia Observation con un elemento code específico:

GET [base]/Patient?_has:Observation:patient:code=527

Esta solicitud devuelve los recursos de pacientes a los que hace referencia Observation con el código 527.

Además, la búsqueda en cadena inversa puede tener una estructura recursiva. Por ejemplo, si desea buscar todos los pacientes que tienen Observation donde la observación tiene un evento de auditoría de un usuario janedoe específico, podría hacer lo siguiente:

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Nota

En Azure API for FHIR y el servidor FHIR de código abierto respaldado por Azure Cosmos DB, la búsqueda encadenada y la búsqueda encadenada inversa son una implementación de MVP. Para realizar búsquedas encadenadas en Azure Cosmos DB, la implementación le guía por la expresión de búsqueda y emite subconsultas para resolver los recursos coincidentes. Esto se hace para cada nivel de la expresión. Si alguna consulta devuelve más de 100 resultados, se producirá un error.

Para buscar recursos que cumplan varias condiciones a la vez, use la búsqueda compuesta que une una secuencia de valores de parámetro único con un símbolo $. El resultado devuelto sería la intersección de los recursos que coinciden con todas las condiciones especificadas por los parámetros de búsqueda unidos. Estos parámetros de búsqueda se denominan parámetros de búsqueda compuesta y definen un nuevo parámetro que combina los diferentes parámetros en una estructura anidada. Por ejemplo, si desea buscar todos los recursos DiagnosticReport que contienen Observation con un valor de potasio menor o igual que 9,2:

GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Esta solicitud especifica el componente que contiene un código de 2823-3, que en este caso sería potasio. Después del símbolo $, especifica el intervalo del valor para el componente que usa lt para "menor o igual que" y 9.2 para el intervalo de valores de potasio.

Búsqueda en el siguiente conjunto de entradas

El número máximo de entradas que se pueden devolver por una sola consulta de búsqueda es 1000. Sin embargo, es posible que tenga más de 1000 entradas que coincidan con la consulta de búsqueda y que desee ver el siguiente conjunto de entradas después de las primeras 1000 entradas devueltas. En tal caso, usaría el valor url del token de continuación en searchset como en el resultado Bundle siguiente:

    "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"
        }
    ],

Y realizaría una solicitud GET para la dirección URL proporcionada en el campo relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Esto devolverá el siguiente conjunto de entradas para el resultado de la búsqueda. searchset es el conjunto completo de entradas de los resultados de la búsqueda, y el token de continuación url es el vínculo proporcionado por el servidor para que pueda recuperar las entradas que no se muestran en el primer conjunto debido a la restricción en el número máximo de entradas devueltas para una consulta de búsqueda.

Búsqueda mediante POST

Todos los ejemplos de búsqueda mencionados anteriormente han usado solicitudes GET. También puede realizar operaciones de búsqueda mediante solicitudes POST usando _search:

POST [your-fhir-server]/Patient/_search?_id=45

Esta solicitud devolvería todos los recursos Patient con el valor id de 45. Al igual que en las solicitudes GET, el servidor determina cuál de los recursos cumple las condiciones y devuelve un recurso agrupado en la respuesta HTTP.

Otro ejemplo de búsqueda mediante POST donde los parámetros de consulta se envían como cuerpo del formulario es:

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Pasos siguientes

En este artículo ha aprendido a buscar mediante diferentes parámetros de búsqueda, modificadores y herramientas de búsqueda de FHIR. Para más información sobre la búsqueda de FHIR, consulte

FHIR® es una marca registrada de HL7 y se usa con su permiso.