Commit Graph

165 Commits

Author SHA1 Message Date
Luis Ernesto Portillo Zaldivar
3c9d8f5bf0 fix: Agregar dependencia del módulo stock en __manifest__.py
Resuelve el error "Model 'stock.lot' does not exist in registry"
agregando 'stock' a la lista de dependencias del módulo.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 11:26:46 -06:00
a1219640f1 Merge pull request 'fix: Corregir generación de secuencias en lims.test' (#76) from feature/71-laboratory-dashboards into dev
Reviewed-on: #76
2025-07-23 23:01:55 +00:00
Luis Ernesto Portillo Zaldivar
754c5f5572 fix: Corregir generación de secuencias en lims.test
- Eliminar método create duplicado que sobrescribía la lógica de secuencias
- Consolidar la generación de secuencias en un único método create
- Agregar contexto especial para evitar validaciones durante la inicialización
- Ahora todos los tests se crean con códigos secuenciales (LAB-YYYY-NNNNN)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-23 16:59:26 -06:00
Luis Ernesto Portillo Zaldivar
64f44b9d2c feat: Implementar autocompletado de notas para resultados críticos en lims.result 2025-07-21 17:32:32 -06:00
73e3014036 Merge pull request 'feat(#71): Implementar dashboards para administrador del laboratorio' (#74) from feature/71-laboratory-dashboards into dev
Reviewed-on: #74
2025-07-21 22:53:31 +00:00
Luis Ernesto Portillo Zaldivar
53eada8432 feat(#71): Mejorar script de creación de órdenes de laboratorio - 2 órdenes por paciente con manejo de errores 2025-07-21 16:09:39 -06:00
Luis Ernesto Portillo Zaldivar
1ff44b1654 feat(#71): Agregar DUI salvadoreño y números de teléfono de El Salvador a pacientes 2025-07-21 14:36:18 -06:00
cf1e40726f Merge pull request 'feat(#71): Dashboards para administrador del laboratorio' (#73) from feature/71-laboratory-dashboards into dev
Reviewed-on: #73
2025-07-18 18:13:41 +00:00
Luis Ernesto Portillo Zaldivar
02237c6d8c fix(#71): Corregir errores en dashboards y scripts de inicialización
- Cambiar 'tree' por 'list' en view_mode de todas las acciones de dashboard
- Corregir sintaxis de filtros de fecha usando context_today() y relativedelta
- Eliminar campo booleano is_out_of_range como medida en gráfico
- Corregir referencia a sample.state en lugar de sample.sample_state
- Reemplazar sample.test_ids por búsqueda de tests asociados
- Eliminar consulta SQL directa a columna logo inexistente
- Corregir método invalidate_cache() por _invalidate_cache()
- Agregar sección de notificaciones en CLAUDE.md

Los dashboards ahora funcionan correctamente sin errores de JavaScript.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-18 12:11:01 -06:00
Luis Ernesto Portillo Zaldivar
753b84936e fix(#71): Corregir sintaxis de view_ids en acciones de dashboards
- Cambiar graph_view_id y pivot_view_id por view_ids con sintaxis correcta
- Usar eval con lista de tuplas según formato Odoo estándar
- Resolver error 'Invalid field graph_view_id on model ir.actions.act_window'

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 13:31:28 -06:00
Luis Ernesto Portillo Zaldivar
266b3f28be fix(#71): Agregar referencias explícitas de vistas en acciones de dashboards
- Agregar graph_view_id y pivot_view_id en todas las acciones
- Resolver error 'View types not defined tree found in act_window action'
- Mantener view_mode con 'tree' según convención Odoo 18

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 12:55:48 -06:00
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
2ca64186b0 Merge pull request 'feat(#67): Implementar autocompletado inteligente para campos de selección' (#72) from feature/67-smart-selection-autocomplete into dev
Reviewed-on: #72
2025-07-17 08:33:07 +00:00
Luis Ernesto Portillo Zaldivar
34f3b0aa14 fix(#67): Incluir value_selection en validación de resultados ingresados
- La validación de action_enter_results no estaba verificando el campo value_selection
- Esto causaba falso positivo de 'parámetros sin resultados ingresados'
- Agregar value_selection a la condición del filtro
2025-07-17 02:19:19 -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
db3462184b Merge pull request 'fix(#69): Corregir error 'Expected singleton' en métodos de acción de stock.lot' (#70) from bugfix/69-singleton-error-stock-lot into dev
Reviewed-on: #70
2025-07-17 07:43:27 +00: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
ac427ff778 Merge pull request 'feat(#11): Implementar informe PDF de resultados de laboratorio' (#66) from feature/11-informe-resultados-pdf into dev
Reviewed-on: #66
2025-07-17 00:59:21 +00: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
b9cd21b2c2 docs(#11): Plan detallado para implementación de informe de resultados en PDF 2025-07-16 14:16:41 -06:00
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