clinical_laboratory/documents/plans/issue-51-implementation-plan.md
Luis Ernesto Portillo Zaldivar d709c5c1c7 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>
2025-07-15 10:33:02 -06:00

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

  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.