Guía de Filtrado API

API v1 utiliza un sistema de filtrado flexible que permite realizar consultas precisas sobre los recursos.

Sintaxis Básica

El filtrado se realiza mediante el parámetro de consulta filter:

GET /api/v1/resource?filter[campo]=valor

Ejemplo:

GET /api/v1/studies?filter[modality]=CT


Operadores de Comparación

Para campos numéricos o de fecha, se pueden utilizar operadores matemáticos entre corchetes [operador].

OperadorDescripciónEjemplo
[>]Mayor quefilter[date][>]=2024-01-01
[>=]Mayor o igualfilter[date][>=]=2024-01-01
[<]Menor quefilter[date][<]=2024-01-01
[<=]Menor o igualfilter[date][<=]=2024-01-01
[=]Igual afilter[age][=]=35
[!=]Diferente defilter[status][!=]=CANCELED

Filtros de Conjunto (IN)

Para filtrar por múltiples valores específicos en un mismo campo (ej: {"id": {"in": [2, 5, 9]}}), utilice el operador [in].

Sintaxis (Valores separados por coma):

filter[campo][in]=valor1,valor2,valor3

Ejemplo:

GET /api/v1/studies?filter[modality][in]=CT,MR,US

Sintaxis Alternativa (Arreglo):

filter[campo][in][]=valor1&filter[campo][in][]=valor2


Búsqueda Parcial (LIKE)

En campos de texto (como nombres o descripciones), el sistema suele aplicar una búsqueda de tipo "contiene" (LIKE) de forma automática.

Ejemplo:

GET /api/v1/patients?filter[last_name]=DOE (Busca todos los pacientes cuyo apellido contenga "DOE")


Búsqueda Unificada (search)

Para realizar búsquedas de texto sobre múltiples columnas/atributos simultáneamente, utilice el parámetro de consulta search:

GET /api/v1/resource?search=termino

Ejemplo:

GET /api/v1/procedures?search=MR (Busca coincidencias parciales de "MR" en el código, nombre y modalidad)


Formatos de Datos Recomendados

Fechas y Rangos (DateRangeStrategy)

Utilice siempre el formato ISO 8601 (YYYY-MM-DD).

  • Correcto: 2026-07-30
  • Incorrecto: 30/07/2026, 20260730

Cuando se utiliza el filtro por fecha (ej. filter[date]=2026-07-30), la estrategia DateRangeStrategy expande automáticamente la consulta para cubrir todo el día desde las 00:00:00 hasta las 23:59:59.


Estrategias de Filtrado Personalizadas (Filter Strategy Pattern)

El servicio de filtrado (FilterService) soporta la delegación de filtros a clases que implementan FilterStrategyInterface:

  • DefaultStrategy: Filtra mediante comparación directa o condiciones andFilterWhere.
  • DateRangeStrategy: Transforma una fecha YYYY-MM-DD en una condición de rango de día completo BETWEEN 'Y-m-d 00:00:00' AND 'Y-m-d 23:59:59'.

Filtros por Relaciones

Algunos endpoints permiten filtrar por campos de objetos relacionados. Por ejemplo, en los Reportes se puede filtrar por datos del estudio asociado.

Ejemplo:

GET /api/v1/reports?filter[accession_number]=2024001

Consulte la documentación específica de cada controlador para ver qué filtros adicionales están disponibles.