Commit Graph

123 Commits

Author SHA1 Message Date
Luis Ernesto Portillo Zaldivar
4b27b34189 fix(#10): Corregir orden de definición en XML del reporte
- Mover paperformat antes del action report para evitar error de referencia
- Asegurar que los IDs se definan en el orden correcto

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 20:43:35 -06:00
Luis Ernesto Portillo Zaldivar
c74b17554e feat(#10): Implementar etiquetas de muestras con código de barras
- Crear plantilla QWeb para etiquetas de 100x50mm
- Incluir datos del paciente, orden y tipo de muestra
- Generar código de barras Code128 usando campo existente
- Agregar botón 'Imprimir Etiquetas' en órdenes confirmadas
- Formato optimizado para impresoras de etiquetas

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 19:57:25 -06:00
4d3206f3a1 Merge pull request 'feat(#54): Cancelar automáticamente muestras y pruebas al cancelar orden' (#55) from feature/54-auto-cancel-samples into dev 2025-07-16 00:59:08 +00:00
Luis Ernesto Portillo Zaldivar
39318f9073 feat(#54): Cancelar automáticamente muestras y pruebas al cancelar orden
- Agregar estado 'cancelled' a stock.lot para muestras
- Implementar método action_cancel() en stock.lot
- Override action_cancel() en sale.order para:
  * Cancelar muestras en estados: pending_collection, collected, received, in_process
  * Cancelar pruebas asociadas que no estén validadas
  * Registrar mensajes en el chatter de cada elemento cancelado
  * Mostrar resumen de elementos cancelados en la orden
- Agregar tests unitarios completos para verificar:
  * Cancelación correcta de muestras y pruebas
  * No cancelación de elementos en estados finales
  * Generación de mensajes en chatter
  * Órdenes normales no afectadas

La funcionalidad asegura que no queden muestras o pruebas "huérfanas"
cuando se cancela una orden de laboratorio.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 18:53:19 -06:00
6c3fa0bc4d Merge pull request 'fix(#51): Corregir errores de compatibilidad con Odoo 18 y validación' (#53) from feature/51-parameter-catalog into dev 2025-07-16 00:36:19 +00:00
Luis Ernesto Portillo Zaldivar
0a7e3a1b12 fix: Corregir errores de compatibilidad con Odoo 18 y validación de resultados
- 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>
2025-07-15 18:25:24 -06:00
Luis Ernesto Portillo Zaldivar
02f011a02b fix: Corregir orden de carga de vistas y referencias en action
- 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'
2025-07-15 15:05:21 -06:00
Luis Ernesto Portillo Zaldivar
4283fe0507 fix: Eliminar referencias a reportes no implementados
- 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
2025-07-15 14:53:08 -06:00
Luis Ernesto Portillo Zaldivar
78091085f3 fix: Comentar botón de reporte no implementado
- 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'
2025-07-15 14:26:15 -06:00
Luis Ernesto Portillo Zaldivar
c7009990fe feat(#51): Issue #51 completado - Catálogo de parámetros de análisis
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.
2025-07-15 14:22:11 -06:00
Luis Ernesto Portillo Zaldivar
aaa1204490 feat(#51): Task 12 completada - Tests automatizados para catálogo de parámetros
- 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
2025-07-15 14:08:33 -06:00
Luis Ernesto Portillo Zaldivar
999896f89e feat(#51): Task 11 completada - Datos de demostración con catálogo de parámetros
- 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
2025-07-15 13:56:09 -06:00
Luis Ernesto Portillo Zaldivar
169fc55368 docs: Agregar mejores prácticas para desarrollo de vistas y depuración de errores comunes 2025-07-15 13:21:28 -06:00
Luis Ernesto Portillo Zaldivar
bac05b4bb2 feat(#51): Task 9 completada - Actualizar vistas de ingreso de resultados 2025-07-15 13:18:00 -06:00
Luis Ernesto Portillo Zaldivar
cdb8a97d58 feat(#51): Task 8 completada - Crear vistas de configuración de parámetros 2025-07-15 12:59:49 -06:00
Luis Ernesto Portillo Zaldivar
c80a154afd feat(#51): Task 7 completada - Eliminar modelo obsoleto lims.analysis.range 2025-07-15 12:48:40 -06:00
Luis Ernesto Portillo Zaldivar
79373a01a1 feat(#51): Task 6 completada - Actualizar generación automática de resultados
- 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>
2025-07-15 12:40:44 -06:00
Luis Ernesto Portillo Zaldivar
5bee8e79df feat(#51): Task 5 completada - Modificar modelo lims.result
- 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>
2025-07-15 12:33:20 -06:00
Luis Ernesto Portillo Zaldivar
99990bdfcc feat(#51): Task 4 completada - Agregar método _compute_age() en res.partner
- 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>
2025-07-15 11:56:50 -06:00
Luis Ernesto Portillo Zaldivar
bd0daf3da7 feat(#51): Task 3 completada - Crear modelo lims.parameter.range
- 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>
2025-07-15 11:47:32 -06:00
Luis Ernesto Portillo Zaldivar
651f90966d docs: Actualizar CLAUDE.md con mejores prácticas para evitar errores comunes
- 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>
2025-07-15 11:39:06 -06:00
Luis Ernesto Portillo Zaldivar
92f8894164 feat(#51): Task 2 completada - Crear modelo product.template.parameter
- 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>
2025-07-15 11:29:41 -06:00
Luis Ernesto Portillo Zaldivar
98aba1c747 feat(#51): Task 1 completada - Crear modelo lims.analysis.parameter
- 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>
2025-07-15 11:10:13 -06:00
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
Luis Ernesto Portillo Zaldivar
ab30d6d0ea fix: Agregar nombre único a muestras usando secuencia
- Se agrega el campo 'name' obligatorio al crear stock.lot para muestras
- Se utiliza la secuencia 'stock.lot.serial' para generar nombres únicos
- Se incluye fallback basado en timestamp si no existe secuencia
- Corrige el error de validación en la creación de muestras

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 10:05:09 -06:00
Luis Ernesto Portillo Zaldivar
ddbc829103 feat: Reorganización de scripts y actualización automática de logo
- Movidos scripts Python a carpetas organizadas (test/ y utils/)
- Agregado logo del laboratorio (lab_logo.png)
- Implementado sistema de actualización automática de logo y nombre de empresa
- Creado script de validación para verificar estado del logo
- Actualizada documentación CLAUDE.md con nuevas rutas
- Eliminados intentos fallidos de cambio de tema CSS
- Ajustado docker-compose.yml para mapear carpetas de scripts

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 03:50:46 -06:00
beaed060eb Merge pull request 'feat(#8): Implementar gestión de pruebas y resultados de laboratorio' (#52) from feature/8-test-results-management into dev 2025-07-15 07:49:27 +00:00
Luis Ernesto Portillo Zaldivar
820c05ffa9 fix: Implementar generación automática de pruebas y mejorar selección de muestras
- Agregar método _generate_lab_tests() en sale.order para crear pruebas automáticamente al confirmar orden
- Agregar método _find_sample_for_analysis() para asociar muestras con análisis según tipo
- Mejorar dominio de sample_id en lims.test para filtrar por paciente y estado (collected/in_analysis)
- Agregar método _onchange_sale_order_line() para actualizar dominio de muestra dinámicamente
- Las pruebas ahora se crean automáticamente con la muestra correcta asignada

Esto resuelve el problema reportado donde las órdenes aprobadas no generaban pruebas
y las muestras no estaban disponibles para selección manual.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 01:17:37 -06:00
Luis Ernesto Portillo Zaldivar
80c70b67d9 feat(#8): Task 7 completada - Datos de demostración básicos
- Script Python para crear datos de demostración
- Crea pruebas con diferentes estados: en proceso, ingresado, validado
- Incluye resultados con valores dentro y fuera de rango
- Mezcla tipos de valor: numérico y texto
- Integrado en el proceso de inicialización
- Instancia validada sin errores
2025-07-15 01:07:05 -06:00
Luis Ernesto Portillo Zaldivar
619c6a3afa feat(#8): Task 5 completada - Configuración de validación opcional
- Modelo res.config.settings con parámetro lims_require_validation
- Método _compute_require_validation usa la configuración
- Auto-validación cuando no se requiere validación manual
- Vista de configuración en Laboratorio > Configuración > Ajustes
- Instancia validada sin errores
2025-07-15 00:59:52 -06:00
Luis Ernesto Portillo Zaldivar
de9102f7e0 feat(#8): Task 4 completada - Resaltado visual para valores fuera de rango
- CSS personalizado para resaltar valores en rojo
- Integración con decoration-danger de Odoo 18
- Estilos aplicados a vistas lista y formulario
- Assets backend configurados en manifest
2025-07-15 00:51:12 -06:00
Luis Ernesto Portillo Zaldivar
8851a8994a feat(#8): Task 3 completada - Interfaz de ingreso de resultados
- Vista formulario con lista editable de resultados
- Campos dinámicos que se ocultan según tipo de valor
- Botones de acción según estado de la prueba
- Vista lista, kanban y búsqueda implementadas
- Menú agregado en sección Laboratorio
- decoration-danger para valores fuera de rango preparado
2025-07-15 00:45:46 -06:00
Luis Ernesto Portillo Zaldivar
a1b8f7b1de feat(#8): Task 1 y 2 completadas - Crear modelos lims.test y lims.result
- Modelo lims.test con todos los campos especificados
- Modelo lims.result con soporte para múltiples tipos de valor
- Secuencia automática para códigos de prueba
- Flujo de estados: draft -> in_process -> result_entered -> validated
- Validación de un solo tipo de valor por resultado
- Permisos de seguridad configurados
2025-07-15 00:36:58 -06:00
Luis Ernesto Portillo Zaldivar
7e2dfb6465 docs(#8): Actualizar plan para enfocarse en requisitos específicos del issue
- Reducir alcance a lo especificado en Issue #8
- Eliminar funcionalidades de otros issues (PDF, seguridad avanzada)
- Agregar validación opcional configurable
- Actualizar estimación a 9 horas
- 7 tareas principales enfocadas en modelos e interfaz
2025-07-15 00:22:29 -06:00
Luis Ernesto Portillo Zaldivar
d285906b7b docs(#8): Crear plan detallado para gestión de pruebas y resultados
- Definición de 10 tareas principales
- Modelos: lims.test, lims.test.parameter, lims.result
- Flujo de validación de dos pasos
- Generación de reportes PDF
- Sistema de permisos por roles
- Integración con órdenes y muestras existentes
2025-07-15 00:11:42 -06:00
67048b1c4b Merge pull request 'feat: Agregar comando list-open-issues al helper de Gitea' (#49) from feature/32-automatic-sample-generation into dev 2025-07-15 06:07:33 +00:00
Luis Ernesto Portillo Zaldivar
9c32be4c28 feat: Agregar comando list-open-issues a gitea_cli_helper.py
- Nuevo comando para listar todos los issues abiertos
- Muestra número, título, autor, fecha y URL
- Útil para verificar el estado de los issues
- Documentado en GEMINI.md con ejemplos
2025-07-15 00:06:37 -06:00
c470dc0326 Merge pull request 'chore: Limpieza de archivos temporales y actualización de .gitignore' (#48) from feature/32-automatic-sample-generation into dev 2025-07-15 06:02:52 +00:00
Luis Ernesto Portillo Zaldivar
4891c1d6b3 chore: Limpiar archivos pr_description y actualizar .gitignore
- Eliminar archivos pr_description*.txt no versionados
- Agregar patrón pr_description*.txt a .gitignore
- Documentar en GEMINI.md que estos archivos son temporales
- Indicar que deben eliminarse después de usar el helper
2025-07-15 00:01:45 -06:00
6a6e8d042b Merge pull request 'docs: Actualizar GEMINI.md con comando merge-pr' (#47) from feature/32-automatic-sample-generation into dev 2025-07-15 05:57:11 +00:00
Luis Ernesto Portillo Zaldivar
345c861037 docs: Agregar documentación de merge-pr a GEMINI.md
- Añadir sección completa para el comando merge-pr
- Incluir validación de rama dev obligatoria
- Agregar ejemplos de uso con diferentes métodos de merge
- Documentar verificaciones automáticas del script
2025-07-14 23:55:26 -06:00
35c2dfa7f5 Merge pull request 'feat(#32): Generación automática de muestras al confirmar órdenes' (#46) from feature/32-automatic-sample-generation into dev 2025-07-15 05:52:07 +00:00
Luis Ernesto Portillo Zaldivar
4be56fc9f7 fix(#32): Spanish translations and workflow fixes
- Fixed missing action_collect method for pending_collection state
- Updated all model field labels to Spanish
- Updated view labels and strings to Spanish
- Fixed readonly conditions for pending_collection state
- Added barcode and new fields to stock.lot views
- Updated sale.order embedded view with correct button
- Added 5-minute timeout note to CLAUDE.md
- Removed problematic demo sale.order XML records
- Updated test script location guidance in CLAUDE.md
- Marked all acceptance criteria as completed in plan
2025-07-14 23:46:31 -06:00
Luis Ernesto Portillo Zaldivar
b88ce446c8 docs(#32): Add comprehensive implementation summary 2025-07-14 22:58:22 -06:00
Luis Ernesto Portillo Zaldivar
20710da5c9 docs(#32): Mark Task 8 as completed - All mandatory tasks done 2025-07-14 22:57:37 -06:00
Luis Ernesto Portillo Zaldivar
0d9dee160c feat(#32): Add demo data for automatic sample generation - Task 8 completed
- Created 4 demo lab orders showcasing different scenarios:
  - Order 1: Multiple analyses requiring same sample type (EDTA)
  - Order 2: Multiple analyses with different sample types
  - Order 3: Mixed analyses for thyroid panel
  - Order 4: Pediatric order with different sample types
- Added file to manifest demo section
- Successful test with ephemeral instance restart (main initialization OK)
2025-07-14 22:56:55 -06:00
Luis Ernesto Portillo Zaldivar
97cdc368d0 feat(#32): Create verification script - Task 7 completed
- Comprehensive verification script for automatic sample generation
- Tests existing orders with generated samples
- Creates and tests new order with sample generation
- Verifies barcode uniqueness across all samples
- Checks for analyses without sample types
- Provides detailed summary and issue reporting
- Successful test with ephemeral instance restart
2025-07-14 22:48:25 -06:00
Luis Ernesto Portillo Zaldivar
f3443619ce feat(#32): Update sale.order views for generated samples - Task 4 completed
- Added 'Muestras Generadas' tab in sale.order form view
- Shows generated samples with barcode, type, volume, and analyses
- Added action buttons for sample workflow in the embedded list
- Added indicators in sale.order list view for lab requests and samples
- Successful test with ephemeral instance restart
2025-07-14 22:42:51 -06:00
Luis Ernesto Portillo Zaldivar
e7074418f7 docs(#32): Mark Task 3 as completed 2025-07-14 22:38:44 -06:00
Luis Ernesto Portillo Zaldivar
5a4a65c65b feat(#32): Enhanced barcode generation with uniqueness - Task 3 completed
- Added barcode field to stock.lot with automatic generation
- Implemented unique barcode generation in format YYMMDDNNNNNNC
- Added Luhn check digit for barcode validation
- Handles high volume scenarios with sample type prefixes
- Collision detection and retry mechanism for uniqueness
- Successful test with ephemeral instance restart
2025-07-14 22:38:18 -06:00