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].
| Operador | Descripción | Ejemplo |
|---|---|---|
[>] | Mayor que | filter[date][>]=2024-01-01 |
[>=] | Mayor o igual | filter[date][>=]=2024-01-01 |
[<] | Menor que | filter[date][<]=2024-01-01 |
[<=] | Menor o igual | filter[date][<=]=2024-01-01 |
[=] | Igual a | filter[age][=]=35 |
[!=] | Diferente de | filter[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 condicionesandFilterWhere.DateRangeStrategy: Transforma una fechaYYYY-MM-DDen una condición de rango de día completoBETWEEN '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.