Commit Graph

36 Commits

Author SHA1 Message Date
Luis Ernesto Portillo Zaldivar
d51d3b5d69 feat(#71): Implementar dashboards para administrador del laboratorio
- Dashboard de Estado de Órdenes: Vista gráfica y pivot de órdenes por estado
- Dashboard de Productividad de Técnicos: Análisis de pruebas por técnico
- Dashboard de Muestras: Estado y distribución de muestras por tipo
- Dashboard de Parámetros Fuera de Rango: Identificación de resultados críticos
- Dashboard de Análisis Más Solicitados: Top de análisis por período
- Dashboard de Distribución Demográfica: Tests por género y rango de edad
- Agregar campos computed age_range, patient_gender y patient_age_range
- Configurar menú de Dashboards solo para administradores

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 11:17:26 -06:00
Luis Ernesto Portillo Zaldivar
f8be847777 feat(#67): Implementar autocompletado inteligente para campos de selección
- Agregar método _onchange_value_selection() que autocompleta al escribir
- Agregar método _validate_and_autocomplete_selection() para validación
- Override create() y write() para autocompletar antes de guardar
- Búsqueda flexible: acepta iniciales, mayúsculas/minúsculas, coincidencias parciales
- Generar instrucciones automáticas en campo notes al crear resultados
- Las instrucciones muestran opciones disponibles y ejemplos de uso
2025-07-17 02:06:04 -06:00
Luis Ernesto Portillo Zaldivar
0637f0a9e3 fix(#69): Corregir error 'Expected singleton' en métodos de acción de stock.lot
- Modificar todos los métodos action_* para manejar múltiples registros
- Usar bucle 'for record in self:' en lugar de acceder directamente a self
- Afecta a: action_collect, action_receive, action_start_analysis,
  action_complete_analysis, action_store, action_dispose, action_cancel
- Previene el error cuando se llaman estos métodos con múltiples muestras
2025-07-16 21:49:50 -06:00
Luis Ernesto Portillo Zaldivar
aa8a0571fc feat(#11): Implementar informe PDF de resultados de laboratorio
- Agregar QWeb template para generar PDF profesional con:
  - Encabezado con datos del laboratorio y logo
  - Información completa del paciente y orden
  - Tabla de resultados con indicadores visuales para valores fuera de rango
  - Sección de observaciones y notas
  - Información del validador y fecha de validación

- Agregar campo computado reference_text en parameter_range para mostrar rangos formateados
- Agregar botón "Imprimir Informe de Resultados" en vista de órdenes (solo visible cuando hay pruebas validadas)
- Agregar campo lab_notes en sale.order para observaciones generales
- Reorganizar vista de lims.test con pestañas para mejor UX
- Corregir manejo de employee_ids en el reporte para casos donde no existe el módulo HR
- Incluir scripts de prueba para generar datos de demostración

El informe resalta valores críticos y fuera de rango con colores distintivos,
facilitando la interpretación rápida de los resultados por parte del médico.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 18:03:06 -06:00
Luis Ernesto Portillo Zaldivar
0d09e1819a feat(#63): Implementar redirección a vistas personalizadas de muestras
- Agregar contexto de vistas personalizadas en todos los campos que referencian muestras
- Modificar sale_order_views.xml: campo all_sample_ids con redirección
- Modificar lims_test_views.xml: campo sample_id con redirección
- Modificar lims_result_bulk_entry_views.xml: campo sample_id con redirección
- Modificar stock_lot_views.xml: campos parent_sample_id y child_sample_ids
- Agregar muestra y estado a vista de resultados con filtros y agrupación
- Corregir estado 'in_analysis' por 'in_process' en action_start_process
- Corregir validación de resultados críticos para usar campo correcto

Ahora todas las referencias a muestras en el módulo LIMS abren la vista personalizada del laboratorio en lugar de la vista estándar de stock.lot.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 12:30:13 -06:00
Luis Ernesto Portillo Zaldivar
a77e848922 fix(#60): Mejorar estructura de re-muestreos para mantener jerarquía plana
- Las re-muestras de re-muestras ahora se crean como hijas del padre original
- Evita nombres anidados como RE-RE-0000002-1
- Mantiene estructura más clara: todas las re-muestras son hermanas
- Actualiza mensajes para reflejar la muestra rechazada que originó la re-muestra
- Mejora trazabilidad manteniendo referencia clara al origen

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 09:44:19 -06:00
Luis Ernesto Portillo Zaldivar
3e97c9f418 feat(#60): Mejorar control y trazabilidad de re-muestreos
- Respetar configuración del wizard (checkbox crear re-muestra)
- Prevenir creación de múltiples re-muestras activas
- Agregar campos para trazabilidad completa:
  - root_sample_id: muestra original de la cadena
  - resample_chain_count: total de re-muestreos en cadena
- Validar límite de re-muestreos por cadena completa
- Mejorar vista con información de trazabilidad
- Método auxiliar para contar re-muestreos recursivamente

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 09:12:28 -06:00
Luis Ernesto Portillo Zaldivar
be6c97cfad fix(#60): Corregir impresión de etiquetas para incluir re-muestras activas
- Modificar action_print_sample_labels para usar all_sample_ids
- Filtrar muestras rechazadas, canceladas y desechadas
- Actualizar condición del botón para usar all_sample_ids
- Ahora imprime etiquetas de re-muestras activas

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 08:55:59 -06:00
Luis Ernesto Portillo Zaldivar
b225fa0815 feat(#60): Agregar visualización de re-muestras en órdenes de laboratorio
- Agregar campo computed all_sample_ids que incluye re-muestras
- Método recursivo para obtener todas las re-muestras
- Mejorar vista de orden con pestaña unificada de muestras
- Mostrar indicador de re-muestra y muestra original
- Incluir estado y motivo de rechazo en la vista

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 08:38:14 -06:00
Luis Ernesto Portillo Zaldivar
0cf2e42f7a feat(#60): Implementar automatización configurable de re-muestreo
- Agregar modelo de configuración del laboratorio (lims.config.settings)
- Implementar generación automática de re-muestras al rechazar
- Añadir campos de trazabilidad: parent_sample_id, child_sample_ids
- Crear vista de configuración accesible desde menú admin
- Mejorar vistas de stock.lot con información de re-muestreo
- Incluir notificaciones automáticas a recepcionistas
- Configurar límite máximo de re-muestreos por muestra

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 07:39:43 -06:00
Luis Ernesto Portillo Zaldivar
87640b48e0 feat(#58): Implementar flujo de rechazo de muestras
- Agregar estado 'rejected' al ciclo de vida de la muestra
- Crear modelo lims.rejection.reason para gestionar motivos de rechazo
- Agregar campos de rechazo en stock.lot (reason, notes, rejected_by, date)
- Crear wizard para proceso de rechazo con validaciones
- Implementar acción de rechazo con notificaciones
- Crear vistas para muestras rechazadas con filtros y búsquedas
- Agregar 10 motivos de rechazo predefinidos (hemolizada, coagulada, etc.)
- Incluir permisos de seguridad para los nuevos modelos
- Agregar menús para gestión de rechazos y muestras rechazadas
- Corregir compatibilidad con Odoo 18 en vistas existentes

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 22:49:43 -06:00
Luis Ernesto Portillo Zaldivar
2ebd8cc50d fix(#10): Corregir sintaxis del código de barras en template QWeb
- Cambiar sintaxis de % a t-attf-src para mejor compatibilidad
- Agregar el número del código debajo de la imagen
- Verificado que las muestras tienen barcode en BD
- Simplificar la lógica del template

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 20:57:09 -06:00
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
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
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
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
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
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
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
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
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
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
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
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
Luis Ernesto Portillo Zaldivar
a9ed1a23bd feat(#32): Add automatic sample generation - Task 1 completed
- Added generated_sample_ids field to sale.order model
- Override action_confirm() to intercept lab order confirmation
- Implemented _generate_lab_samples() main logic method
- Implemented _group_analyses_by_sample_type() for grouping
- Implemented _create_sample_for_group() for sample creation
- Added necessary fields to stock.lot model (doctor_id, origin, volume_ml, analysis_names)
- Updated state field to include 'pending_collection' state
- Added proper error handling and user notifications via message_post
- Successful test with ephemeral instance restart
2025-07-14 22:29:29 -06:00
Luis Ernesto Portillo Zaldivar
d240ba5de1 feat(#44): Add sample_type_product_id field to StockLot model
- Added sample_type_product_id Many2one field to reference sample type products
- Kept container_type field for backward compatibility (marked as legacy)
- Added @api.onchange method to synchronize fields
- Added get_container_name() method to retrieve container name from either field

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 20:44:43 -06:00
Luis Ernesto Portillo Zaldivar
45af1771fa feat(#7): Anadir campo de recolector a muestras
- Anadido el campo 'collector_id' al modelo stock.lot.
- Actualizadas las vistas de lista y formulario para incluir el nuevo campo.
- Actualizados los datos de demostracion para asignar un recolector.
- Actualizado el plan de desarrollo.
2025-07-14 09:39:58 -06:00
Luis Ernesto Portillo Zaldivar
a047cd1a02 feat(#7): Implementar feedback de gestion de muestras
- Anadido catalogo de Tipos de Muestra.
- Mejorada la vista de Muestras para seleccionar el tipo.
- Creados datos de demostracion para tipos de muestra y muestras.
2025-07-14 09:09:24 -06:00
Luis Ernesto Portillo Zaldivar
ade39f9310 feat(#7): Extender stock.lot para gestion de muestras 2025-07-14 08:12:43 -06:00
Luis Ernesto Portillo Zaldivar
f56b60ad15 \"feat(#6): Implementar solicitudes de laboratorio y corregir datos de demostracion\" 2025-07-14 02:29:38 -06:00
Luis Ernesto Portillo Zaldivar
0eaaaef98d feat(#5): Implementar catálogo de análisis clínicos
- Se extiende el modelo product.template para incluir análisis.
- Se crea el modelo para rangos de referencia (lims.analysis.range).
- Se definen permisos de seguridad para el nuevo modelo.
- Se crean las vistas de formulario y lista necesarias.
- Se añade el menú 'Catálogo de Análisis' en Configuración.
- Se actualiza la guía de desarrollo en GEMINI.md con las nuevas convenciones de Odoo 18.
2025-07-13 23:45:32 -06:00
Luis Ernesto Portillo Zaldivar
db3bb92c52 chore: remove compiled files and add .gitignore 2025-07-13 20:12:54 -06:00
Luis Ernesto Portillo Zaldivar
38365e6e41 configuraciones instancia efimera odoo 18 2025-07-13 17:07:59 -06:00