---
{
  "title": "Parámetros de Búsqueda Integrados en FHIR",
  "description": "La especificación FHIR define una interfaz HTTP para datos médicos complejos, incluyendo información «simple» del paciente como el historial de sus declaraciones, avales, observaciones, etc.",
  "date": "2025-04-11",
  "author": "Aleksandr Penskoi",
  "reading-time": "5 min",
  "tags": [
    "Aidbox",
    "FHIR Tools"
  ]
}
---

> For the complete documentation index, see [llms.txt](https://www.health-samurai.io/llms.txt).
> Use it to discover all available pages before guessing URLs.

---
## Parámetros de Búsqueda Integrados en FHIR

La especificación FHIR define una interfaz HTTP para datos médicos complejos, incluyendo información «simple» del paciente como el historial de sus declaraciones, avales, observaciones, etc. Dichos datos se representan como un conjunto de recursos jerárquicos conectados (objetos JSON), que pueden contener: elementos opcionales, objetos, arrays, elementos polimórficos (con más de un tipo de dato, como los Tipos de Datos Algebraicos) y extensiones (elementos propios de FHIR que se explican más adelante).

Uno de los problemas: ¿cómo solicitar/buscar dichos datos? Por ejemplo, si necesitamos encontrar a todos los pacientes con una ocupación específica, ¿cómo encajar esas consultas en una URL? Escribir consultas complejas como [FHIRPath](https://www.hl7.org/fhir/fhirpath.html) o [JSONPath](https://datatracker.ietf.org/doc/html/rfc9535) directamente en la URL resulta poco legible.

### Parámetros de Búsqueda Integrados en FHIR

La respuesta de FHIR a esto son los [Search Parameters](https://build.fhir.org/searchparameter.html). Para simplificar, podemos considerarlos alias de consultas [FHIRPath](/articles/unlocking-fhirpath-power-a-deep-dive-into-static-type-analysis-for-robust-tooling). Veamos algunos ejemplos para el [recurso Patient](https://www.hl7.org/fhir/patient.html); estos son los [parámetros de búsqueda integrados](https://www.hl7.org/fhir/patient-search.html):

- `active`

Para encontrar registros de pacientes activos. En una URL tendría el siguiente aspecto: `GET /fhir/Patient?active=true`. Es algo más sencillo que el FHIRPath real:


```javascript
FHIRPath: `Patient.active`.
```


- `email`

Este ejemplo es algo más complejo, porque el correo electrónico puede encontrarse en distintas ubicaciones según el recurso.

FHIRPath:


```javascript
Patient.telecom.where(system='email') 
    | Person.telecom.where(system='email') 
    | Practitioner.telecom.where(system='email') 
    | PractitionerRole.contact.telecom.where(system='email') 
    | RelatedPerson.telecom.where(system='email')
```


Lo que observamos aquí:

- Puede aplicarse a muchos tipos de recursos.

- La información sobre el correo electrónico se encuentra en distintas ubicaciones según el recurso (normalmente en el objeto `telecom`, aunque puede estar dentro de `contact`).

- Por lo general, toda la información de contacto se almacena en un único array, por lo que es necesario filtrar únicamente la información de «email», lo cual se realiza mediante la expresión `where(...)`.

### Más Allá de los Parámetros de Búsqueda Integrados

No resultaría demasiado útil si solo pudiéramos cubrir los casos estándar con los parámetros de búsqueda integrados.

En ocasiones es necesario almacenar información «personalizada», como por ejemplo la ocupación del paciente, que no forma parte del recurso `Patient` pero puede ser relevante para algunas aplicaciones. En ese caso, podemos adjuntar dicha información como una `extension` del recurso de la siguiente forma, siguiendo el [Extension Element](https://www.hl7.org/fhir/extensibility.html):


```json
{
  "resourceType": "Patient",
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
      "extension": [
        {
          "url": "code",
          "valueCodeableConcept": {
            "coding": [
              {
                "system": "urn:iso:std:iso:3166",
                "code": "DE"
              }
            ]
          }
        },
        {
          "url": "period",
          "valuePeriod": {
            "start": "2009-03-14"
          }
        }
      ]
    }
  ]
}
```


Para buscar dichos objetos, podemos definir parámetros de búsqueda personalizados como:


```json
{
  "resourceType": "SearchParameter",
  "id": "patient-citizenship",
  "url": "http://example.org/fhir/SearchParameter/patient-citizenship",
  "version": "1.0.0",
  "name": "citizenship",
  "status": "active",
  "description": "Search patients by citizenship",
  "code": "citizenship",
  "base": [
    "Patient"
  ],
  "type": "string",
  "expression": "Patient.extension.where(url='http://hl7.org/fhir/StructureDefinition/patient-citizenship').value.as(string)"
}
```


Y podemos utilizarlo en una URL como: `GET /fhir/Patient?citizenship=GB`

En conclusión, los Search Parameters de FHIR junto con FHIRPath son herramientas potentes y extensibles para buscar datos médicos complejos. Puede encontrar información sobre cómo trabajar con ellos en Aidbox, así como otros ejemplos, en la [documentación](https://www.health-samurai.io/docs/aidbox/api-1/fhir-api/search-1/custom-search-parameter/custom-search-parameters).

Véase también: [Resolve FHIR SearchParameters Conflicting](/blog/resolve-fhir-searchparameters-conflicting) y [New Resource Browser](/blog/new-resource-browser).