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.
Búsqueda encadenada
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. Patient
a menudo tienen uno o varios Encounter
s 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 , generalPractitioner
ambos 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.
Búsqueda en cadena inversa
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 janedoe
especí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.
Búsqueda compuesta
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.