
- 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>
173 lines
6.2 KiB
Markdown
173 lines
6.2 KiB
Markdown
# 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. |