docs: Plan de implementación para issue #51 - Catálogo de parámetros

- Arquitectura de 3 modelos: parameter, template.parameter, parameter.range
- 13 tareas organizadas en 4 fases
- Cronograma estimado de 7-9 días
- Incluye migración de datos existentes
- Plan detallado con consideraciones técnicas y riesgos

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Luis Ernesto Portillo Zaldivar 2025-07-15 10:33:02 -06:00
parent ab30d6d0ea
commit d709c5c1c7

View File

@ -0,0 +1,173 @@
# Plan de Implementación - Issue #51: Catálogo de Parámetros de Laboratorio
## Objetivo
Implementar un catálogo maestro de parámetros de laboratorio con configuración por análisis y rangos de referencia flexibles basados en edad, sexo y otras condiciones del paciente.
## Arquitectura Propuesta
### Modelos Principales
1. **lims.analysis.parameter** - Catálogo maestro de parámetros
2. **product.template.parameter** - Asociación parámetro-análisis
3. **lims.parameter.range** - Rangos de referencia flexibles
4. **lims.result** (modificado) - Usar parameter_id en lugar de parameter_name
## Fases de Implementación
### Fase 1: Creación de Modelos Base (Tasks 1-4)
**Objetivo**: Establecer la estructura de datos fundamental
#### Task 1: Crear modelo lims.analysis.parameter
- Crear archivo `lims_management/models/analysis_parameter.py`
- Definir campos: name, code, value_type, unit, selection_values, description, active
- Implementar constraints y validaciones
- Crear vistas (list, form) para gestión del catálogo
- Agregar menú de configuración
- Crear permisos de seguridad
#### Task 2: Crear modelo product.template.parameter
- Crear archivo `lims_management/models/product_template_parameter.py`
- Definir relación entre product.template y lims.analysis.parameter
- Implementar campos: sequence, required, instructions
- Agregar constraint de unicidad
- Crear vista embebida en product.template
- Actualizar herencia de product.template
#### Task 3: Crear modelo lims.parameter.range
- Crear archivo `lims_management/models/parameter_range.py`
- Implementar campos de condiciones: gender, age_min, age_max, pregnant
- Implementar campos de valores: normal_min/max, critical_min/max
- Crear método _compute_name()
- Agregar constraint de unicidad
- Crear vistas de configuración
#### Task 4: Agregar método _compute_age() en res.partner
- Extender modelo res.partner
- Implementar cálculo de edad basado en birth_date
- Agregar campo is_pregnant (Boolean)
- Crear tests unitarios para el cálculo
### Fase 2: Migración y Adaptación (Tasks 5-7)
**Objetivo**: Adaptar el sistema existente al nuevo modelo
#### Task 5: Modificar modelo lims.result
- Cambiar parameter_name (Char) a parameter_id (Many2one)
- Mantener parameter_name como campo related (compatibilidad)
- Implementar _compute_applicable_range()
- Actualizar _compute_is_out_of_range() para usar rangos flexibles
- Crear script de migración de datos
#### Task 6: Actualizar generación automática de resultados
- Modificar _generate_test_results() en lims.test
- Generar líneas basadas en product.template.parameter
- Respetar orden (sequence) y obligatoriedad
- Asignar tipos de dato correctos
#### Task 7: Eliminar modelo obsoleto lims.analysis.range
- Remover archivo del modelo
- Eliminar referencias en product.template
- Actualizar vistas que lo referencian
- Limpiar datos de demo
- Actualizar __init__.py y __manifest__.py
### Fase 3: Interfaz de Usuario (Tasks 8-10)
**Objetivo**: Crear interfaces intuitivas para configuración y uso
#### Task 8: Crear vistas de configuración de parámetros
- Vista de catálogo de parámetros (búsqueda, filtros)
- Formulario de parámetro con smart buttons
- Vista de configuración de parámetros por análisis
- Vista de rangos con filtros por parámetro
#### Task 9: Actualizar vistas de ingreso de resultados
- Adaptar formulario de lims.result
- Mostrar tipo de dato esperado
- Validación en tiempo real
- Indicadores visuales de valores fuera de rango
- Mostrar rango aplicable según paciente
#### Task 10: Crear wizards de configuración masiva
- Wizard para copiar configuración entre análisis
- Wizard para importar parámetros desde CSV
- Wizard para aplicar rangos a múltiples parámetros
### Fase 4: Datos y Validación (Tasks 11-13)
**Objetivo**: Poblar el sistema con datos útiles y validar funcionamiento
#### Task 11: Crear datos de demostración
- Parámetros comunes de hematología
- Parámetros de química sanguínea
- Configuración para análisis existentes
- Rangos por edad/sexo realistas
- Casos de prueba especiales
#### Task 12: Desarrollar tests automatizados
- Tests unitarios para modelos
- Tests de integración para flujos
- Tests de validación de rangos
- Tests de migración de datos
- Tests de rendimiento
#### Task 13: Actualizar reportes
- Modificar report_test_result
- Incluir información del catálogo
- Mostrar rangos aplicables
- Resaltar valores anormales
- Agregar interpretación cuando esté disponible
## Consideraciones Técnicas
### Migración de Datos
- Script Python para migrar parameter_name existentes
- Crear parámetros automáticamente desde histórico
- Mantener compatibilidad durante transición
- Backup antes de migración
### Performance
- Índices en campos de búsqueda frecuente
- Cache para rangos aplicables
- Lazy loading en vistas con muchos parámetros
### Seguridad
- Solo administradores pueden crear/modificar catálogo
- Técnicos pueden ver pero no editar parámetros
- Logs de auditoría para cambios en rangos
## Cronograma Estimado
- **Fase 1**: 2-3 días (Modelos base y estructura)
- **Fase 2**: 2 días (Migración y adaptación)
- **Fase 3**: 2 días (Interfaces de usuario)
- **Fase 4**: 1-2 días (Datos y validación)
**Total estimado**: 7-9 días de desarrollo
## Riesgos y Mitigaciones
1. **Riesgo**: Pérdida de datos durante migración
- **Mitigación**: Scripts de backup y rollback
2. **Riesgo**: Resistencia al cambio de usuarios
- **Mitigación**: Mantener compatibilidad temporal, capacitación
3. **Riesgo**: Complejidad en rangos múltiples
- **Mitigación**: UI intuitiva, valores por defecto sensatos
## Criterios de Éxito
- [ ] Todos los tests automatizados pasan
- [ ] Migración sin pérdida de datos
- [ ] Validación automática funcional
- [ ] Reportes muestran información correcta
- [ ] Performance aceptable (< 2s carga de resultados)
- [ ] Documentación actualizada
## Próximos Pasos
1. Revisar y aprobar este plan
2. Comenzar con Task 1: Crear modelo lims.analysis.parameter
3. Seguir el orden de las fases para mantener coherencia
4. Validar cada fase antes de continuar
---
**Nota**: Este plan está sujeto a ajustes según se descubran nuevos requerimientos o complejidades durante la implementación.