Comparteix a través de


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

Importante

Azure API for FHIR se retirará el 30 de septiembre de 2026. Siga las estrategias de migración para realizar la transición a servicio FHIR® de Azure Health Data Services en esa fecha. Debido a la retirada de Azure API for FHIR, no se permitirán nuevas implementaciones a partir del 1 de abril de 2025. El servicio FHIR de Azure Health Data Services es la versión evolucionada de la API de Azure para FHIR que permite a los clientes administrar FHIR, DICOM y los servicios de tecnologías médicas con integraciones en otros servicios de Azure.

A continuación se muestran ejemplos de cómo usar las operaciones de búsqueda fast Healthcare Interoperability Resources (FHIR®), incluidos los parámetros de búsqueda y modificadores de búsqueda, la cadena y la búsqueda inversa, la búsqueda compuesta, la visualización del siguiente conjunto de entradas para los resultados de búsqueda y la búsqueda con una POST solicitud. 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 reference patient. En el ejemplo siguiente se extraen todos los MedicationRequests pacientes y a los que se hace referencia 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

A partir de esta solicitud, obtendrá una agrupación de pacientes en los que cada recurso solo incluye los identificadores y el estado activo del paciente. Los recursos de esta respuesta contienen un meta.tag valor de SUBSETTED para indicar que son 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 género no es 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. Para los elementos de tipo de datos simples, :missing=true coincide con todos los recursos en los que el elemento está presente con extensiones, pero tiene un valor vacío. En el ejemplo siguiente se muestra cómo encontrar todos los Patient recursos que faltan información sobre la fecha de nacimiento.

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 distingue mayúsculas de 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 Patient recursos con address campos 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. Patienta menudo tienen uno o varios Encounters con un sujeto. A continuación se buscan todos los Encounter recursos de un Patient objeto con el proporcionado id.

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

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

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

Esto permitiría buscar Encounter recursos 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 tenía a Sarah del estado NY y Bill del estado WA, se hace referencia a ambos como , generalPractitionerambos se devuelven.

Para escenarios en los que la búsqueda debe ser una AND operación que cubre todas las condiciones como grupo, consulte el 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 de otra manera. Puede buscar recursos en función de las propiedades de los recursos que hacen referencia a ellos, mediante el parámetro _has. Por ejemplo, un Observation recurso tiene un parámetro patient de búsqueda que hace referencia a un recurso paciente. Use lo siguiente para buscar todos los recursos del paciente a los que hace Observation referencia con un específico code.

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

Esta solicitud devuelve los recursos del paciente a los que se hace referencia Observation con el código 527.

Además, la búsqueda en cadena inversa puede tener una estructura recursiva. Por ejemplo, en las siguientes búsquedas se buscan todos los pacientes que tienen Observation donde la observación tiene un evento de auditoría de un usuario janedoeespecífico.

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 una búsqueda compuesta que combine una secuencia de valores de parámetro único con un símbolo $. El resultado 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, la siguiente búsqueda busca todos los DiagnosticReport recursos 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. Si hay más de 1000 entradas que coinciden con la consulta de búsqueda, puede usar el procedimiento siguiente para ver entradas mayores que 1000.
Use el valor del token url de continuación en searchset, como en el resultado siguiente Bundle .

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

A continuación, realice una solicitud GET para la dirección URL proporcionada en el campo relation: next.

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

Esto devuelve el siguiente conjunto de entradas para el resultado de la búsqueda. searchset 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 servidor para recuperar entradas que no se muestran en los primeros 1000.

Búsqueda mediante POST

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

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

Esta solicitud devuelve Patient recursos con el id valor 45. Al igual que con las solicitudes GET, el servidor determina cuál del conjunto de recursos cumple la condición y devuelve un recurso de agrupación en la respuesta HTTP.

Otro ejemplo de búsqueda mediante POST en el que los parámetros de consulta se envían como un cuerpo del formulario es el siguiente.

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

Nota:

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