
- 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>
6.2 KiB
6.2 KiB
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
- lims.analysis.parameter - Catálogo maestro de parámetros
- product.template.parameter - Asociación parámetro-análisis
- lims.parameter.range - Rangos de referencia flexibles
- 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
-
Riesgo: Pérdida de datos durante migración
- Mitigación: Scripts de backup y rollback
-
Riesgo: Resistencia al cambio de usuarios
- Mitigación: Mantener compatibilidad temporal, capacitación
-
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
- Revisar y aprobar este plan
- Comenzar con Task 1: Crear modelo lims.analysis.parameter
- Seguir el orden de las fases para mantener coherencia
- 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.