Commit Graph

145 Commits

Author SHA1 Message Date
fca7a187d9 Merge pull request 'feat(#63): Implementar redirección a vistas personalizadas de muestras' (#65) from feature/63-sample-view-redirection into dev 2025-07-16 18:33:58 +00: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
fc2275f809 Merge pull request 'feat(#60): Automatización configurable de re-muestreo y reorganización de estados' (#62) from feature/60-user-assignment-improvements into dev 2025-07-16 16:31:42 +00: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
1e079a896b fix(#60): Corregir error en creación de actividades al rechazar muestra
- Agregar campo obligatorio res_model_id en mail.activity
- Obtener ID del modelo stock.lot antes de crear actividad
- Prevenir error de validación al rechazar muestras

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 08:22:35 -06:00
Luis Ernesto Portillo Zaldivar
8d85d8c3ba feat(#60): Agregar asignación automática de admin al grupo de laboratorio
- Crear script assign_admin_to_lab_group.py
- Integrar en proceso de inicialización
- Asegurar que admin tenga acceso completo al menú de configuración

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 08:04:31 -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
0751f272ae Merge pull request #61 from feature/58-sample-rejection-flow
feat(#58): Implementar flujo de rechazo de muestras
2025-07-15 23:39:28 -06:00
Luis Ernesto Portillo Zaldivar
b35a4be5d9 fix(#58): Agregar permisos faltantes para sale.order.line
- Agregar permisos de lectura/escritura para recepcionista en sale.order.line
- Agregar permisos de solo lectura para técnico en sale.order y sale.order.line
- Agregar permisos completos para administrador en ambos modelos

Esto corrige el error "No puede ingresar a los registros 'Línea de pedido de venta'"
que impedía a la recepcionista ver las órdenes de laboratorio.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 23:08:12 -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
f2dff1de65 docs: Agregar documentación sobre manejo de códigos de barras en Odoo 18
- Sintaxis correcta para widget barcode en reportes QWeb
- Solución para caracteres especiales en PDFs
- Ejemplo de layout para múltiples etiquetas por página
- Problemas comunes y sus soluciones
2025-07-15 22:08:46 -06:00
36a9772a07 Merge pull request 'feat(#10): Implementar etiquetas de muestras con código de barras' (#57) from feature/10-sample-barcode-labels into dev 2025-07-16 04:05:26 +00:00
Luis Ernesto Portillo Zaldivar
90ac5b2275 fix(#10): Corregir problemas de diseño en etiquetas de muestras
- Corregir codificación UTF-8 usando referencias numéricas de caracteres
- Ajustar espaciado entre etiquetas para evitar solapamiento
- Reducir tamaño de código de barras para mejor ajuste
- Agregar contenedores con overflow para controlar el contenido
- Cambiar de web.html_container a web.basic_layout para mejor renderizado PDF
2025-07-15 22:03:51 -06:00
Luis Ernesto Portillo Zaldivar
3e296d3c2c fix(#10): Corregir visualización de código de barras en etiquetas
- Cambiar sintaxis de generación de código de barras a widget de Odoo 18
- Usar t-field con t-options para renderizar correctamente
- El código de barras ahora se muestra correctamente en el PDF
2025-07-15 21:15:12 -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
2c76b97402 fix(#10): Corregir generación de código de barras en etiquetas
- Agregar método _ensure_barcode() para generar códigos faltantes
- Llamar _ensure_barcode() antes de imprimir etiquetas
- Usar name del lote como fallback si no hay barcode
- Manejar casos donde el campo barcode está vacío

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 20:51:26 -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
0c210bef9e Merge pull request 'feat(#9): Implementar flujo de validación y seguridad' (#56) from feature/9-validation-security-flow into dev
Reviewed-on: luis_portillo/clinical_laboratory#56
2025-07-16 02:05:51 +00: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
Luis Ernesto Portillo Zaldivar
d911c8d0ba feat(#9): Agregar usuarios demo para pruebas de roles
- Crear usuario 'recepcionista' con rol Recepcionista
- Crear usuario 'tecnico' con rol Técnico
- Crear usuario 'administrador' con rol Administrador
- Todos con contraseña 'demo' para facilitar pruebas
- Incluir archivo en datos demo del módulo

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 19:23:06 -06:00
Luis Ernesto Portillo Zaldivar
58e1648493 feat(#9): Implementar flujo de validación y seguridad
- Ajustar permisos base: recepcionistas solo lectura, técnicos sin eliminar
- Crear reglas de registro para control granular por estado
- Implementar verificación de permisos en todas las transiciones
- Agregar mail.thread a stock.lot para trazabilidad completa
- Validar transiciones de estado y muestras asociadas
- Actualizar vistas con restricciones según grupos de usuario
- Mejorar mensajes del chatter con más contexto

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-15 19:19:51 -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