fix(#51): Corregir errores de compatibilidad con Odoo 18 y validación #53

Merged
luis_portillo merged 19 commits from feature/51-parameter-catalog into dev 2025-07-16 00:36:20 +00:00

Descripción

Este PR corrige varios errores críticos encontrados durante las pruebas del issue #51:

🐛 Problemas resueltos

  1. Error de vista "tree" en Odoo 18

    • Cambio de view_mode="tree" a view_mode="list" en acciones
    • Cambio de mode="tree" a mode="list" en campos One2many
  2. Errores en script de datos demo

    • Campos inexistentes que causaban fallo en inicialización
    • Asignación incorrecta de paciente para prueba de embarazo
  3. Validación estricta en resultados

    • Error al confirmar órdenes con parámetros de selección
    • Validación mejorada para permitir creación inicial sin valores

Cambios realizados

  • lims_management/views/menus.xml: Actualizar view_mode de action_lims_test
  • lims_management/views/lims_test_views.xml: Actualizar mode de result_ids
  • test/create_demo_data.py: Corregir campos y asignaciones
  • lims_management/models/lims_result.py: Mejorar lógica de validación

🧪 Testing

  • Instancia se inicializa sin errores
  • Menú de Pruebas de Laboratorio funciona correctamente
  • Órdenes de laboratorio se pueden confirmar
  • Pruebas con parámetros de selección funcionan correctamente

📋 Checklist

  • Código probado localmente
  • Sin errores de sintaxis o importación
  • Cambios documentados
  • Compatible con Odoo 18

Resuelve #51

## Descripción Este PR corrige varios errores críticos encontrados durante las pruebas del issue #51: ### 🐛 Problemas resueltos 1. **Error de vista "tree" en Odoo 18** - Cambio de `view_mode="tree"` a `view_mode="list"` en acciones - Cambio de `mode="tree"` a `mode="list"` en campos One2many 2. **Errores en script de datos demo** - Campos inexistentes que causaban fallo en inicialización - Asignación incorrecta de paciente para prueba de embarazo 3. **Validación estricta en resultados** - Error al confirmar órdenes con parámetros de selección - Validación mejorada para permitir creación inicial sin valores ### ✅ Cambios realizados - `lims_management/views/menus.xml`: Actualizar view_mode de action_lims_test - `lims_management/views/lims_test_views.xml`: Actualizar mode de result_ids - `test/create_demo_data.py`: Corregir campos y asignaciones - `lims_management/models/lims_result.py`: Mejorar lógica de validación ### 🧪 Testing - [x] Instancia se inicializa sin errores - [x] Menú de Pruebas de Laboratorio funciona correctamente - [x] Órdenes de laboratorio se pueden confirmar - [x] Pruebas con parámetros de selección funcionan correctamente ### 📋 Checklist - [x] Código probado localmente - [x] Sin errores de sintaxis o importación - [x] Cambios documentados - [x] Compatible con Odoo 18 Resuelve #51
luis_portillo added 19 commits 2025-07-16 00:27:52 +00:00
- 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>
- Creado modelo lims.analysis.parameter con campos: name, code, value_type, unit, etc.
- Implementadas validaciones y constraints
- Creadas vistas form, list y search
- Agregado menú en Configuración
- Configurados permisos de seguridad

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Creado modelo product.template.parameter para asociar parámetros a análisis
- Campos: sequence, required, instructions
- Relación Many2one con analysis.parameter y product.template
- Agregadas vistas embebidas en product.template
- Actualizado analysis.parameter con relación One2many
- Configurados permisos de seguridad

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Agregada sección "Desarrollo de nuevos modelos y vistas"
- Documentado orden correcto de carga en __manifest__.py
- Proceso en fases para modelos relacionados
- Guía de uso correcto de contextos en vistas XML
- Checklist de verificación antes de reiniciar instancia

Basado en lecciones aprendidas de Tasks 1 y 2

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Creado modelo lims.parameter.range para rangos de referencia flexibles
- Campos de condiciones: gender, age_min/max, pregnant
- Campos de valores: normal_min/max, critical_min/max
- Métodos helper: is_value_normal(), is_value_critical(), get_value_status()
- Múltiples validaciones para garantizar consistencia de datos
- Vistas con filtros por edad, género y condiciones especiales
- Actualizado analysis_parameter con rangos en notebook

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Agregado campo computado 'age' que calcula edad en años desde birthdate_date
- Agregado campo 'is_pregnant' con validación de género femenino
- Implementado método _compute_age() usando relativedelta para precisión
- Agregado método helper get_age_at_date() para cálculos en fechas específicas
- Actualizada vista de pacientes para mostrar edad y estado de embarazo
- Validación que previene marcar embarazo en género masculino

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Cambio de parameter_name (Char) a parameter_id (Many2one a lims.analysis.parameter)
- Mantener parameter_name como campo related para compatibilidad
- Agregados campos: parameter_value_type, parameter_unit, value_boolean, value_display
- Implementado _compute_applicable_range() para determinar rango según paciente
- Actualizado _compute_is_out_of_range() para usar rangos flexibles y detectar valores críticos
- Validación mejorada según tipo de parámetro
- Actualizada vista de resultados en lims.test para nuevos campos

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Implementado método _generate_test_results() en lims.test
- Genera automáticamente líneas de lims.result basadas en product.template.parameter
- Se ejecuta al crear una nueva prueba
- Respeta el orden (sequence) y las instrucciones de cada parámetro
- Agregado action_regenerate_results() para regenerar manualmente
- Botón en la vista con confirmación para regenerar resultados
- Logging de información sobre resultados generados

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

Co-Authored-By: Claude <noreply@anthropic.com>
- Creados 36 parámetros de análisis en parameter_demo.xml
- Creados 31 rangos de referencia en parameter_range_demo.xml
- Creadas 40 configuraciones parámetro-análisis en analysis_parameter_config_demo.xml
- Consolidado script de creación de datos demo en test/create_demo_data.py
- Actualizado init_odoo.py para usar script consolidado
- Eliminados scripts obsoletos (04_demo_lab_orders.sh, create_test_demo_data.py)
- Verificada carga exitosa de todos los datos demo
- Creados 4 archivos de test completos con cobertura total
- test_analysis_parameter.py: Tests del modelo de parámetros
- test_parameter_range.py: Tests de rangos de referencia
- test_result_parameter_integration.py: Tests de integración
- test_auto_result_generation.py: Tests de generación automática
- Creado script simplificado test_parameters_simple.py para ejecución rápida
- Corregido valor por defecto de age_max a 150 en parameter_range.py
- Documentación completa en README.md
Implementación completa del sistema de catálogo de parámetros flexible:

 **Tasks completadas:**
- Task 1-12: Todas las tareas implementadas exitosamente
- Task 13: No aplicable (no hay reportes desarrollados aún)

**Características principales:**
- Catálogo centralizado de parámetros reutilizables
- Rangos de referencia flexibles por edad/género/embarazo
- Generación automática de resultados basada en configuración
- Integración completa con el flujo existente
- 36 parámetros demo y 31 rangos de referencia
- Tests automatizados completos

**Modelos implementados:**
- lims.analysis.parameter
- lims.parameter.range
- product.template.parameter

La Task 13 se omitió ya que no existen reportes desarrollados en el módulo actualmente.
- Comentado el botón 'Imprimir Resultados' que referenciaba action_report_test_result
- Este action no existe ya que los reportes no han sido implementados aún
- Previene error de inicialización 'External ID not found'
- Eliminado completamente el botón de reporte en lims_test_views.xml
- Removida referencia a report/report_test_result.xml del manifest
- Removida referencia a report_test_result.css del manifest
- Esto soluciona el error 'External ID not found' durante la inicialización
- Movido menus.xml al final del manifest para cargar después de las vistas
- Agregadas referencias explícitas a las vistas en action_lims_test
- Esto soluciona el error 'No se pudo encontrar una vista por defecto de tipo tree'
- Cambiar view_mode de 'tree' a 'list' en menus.xml para action_lims_test
- Cambiar mode='tree' a 'list' en lims_test_views.xml para campo result_ids
- Corregir script create_demo_data.py:
  * Comentar campo inexistente 'lab_request_priority'
  * Cambiar 'observations' por 'note' (campo estándar)
  * Cambiar 'lab_sample_ids' por 'generated_sample_ids'
  * Ajustar índices de pacientes para usar María González (femenina) para embarazo
- Mejorar validación en lims_result.py:
  * Considerar False y 0.0 como equivalentes para campos numéricos
  * Solo requerir valores cuando la prueba no esté en estado 'draft'

Resuelve el error "View types not defined tree found in act_window action 457"
y permite confirmar órdenes con pruebas de selección correctamente.

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

Co-Authored-By: Claude <noreply@anthropic.com>
luis_portillo merged commit 6c3fa0bc4d into dev 2025-07-16 00:36:20 +00:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Grupo-Consiti/clinical_laboratory#53
No description provided.