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:
parent
ab30d6d0ea
commit
d709c5c1c7
173
documents/plans/issue-51-implementation-plan.md
Normal file
173
documents/plans/issue-51-implementation-plan.md
Normal 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.
|
Loading…
Reference in New Issue
Block a user