feat: Automatización configurable de re-muestreo y reorganización de estados #60

Closed
opened 2025-07-16 05:29:29 +00:00 by luis_portillo · 4 comments

Descripción

Actualmente, cuando se rechaza una muestra y se marca la opción "Crear Nueva Solicitud", el sistema solo agrega una nota en la orden pero no genera automáticamente una nueva muestra. Esta mejora propone implementar la automatización configurable del proceso de re-muestreo.

Relacionado con

  • Issue #58: Implementar flujo de rechazo de muestras (implementación base completada)

Objetivos

  1. Implementar generación automática de nueva muestra al rechazar con opción de re-muestreo
  2. Hacer configurable si el re-muestreo es automático o manual
  3. Reorganizar estados para que "desechado" sea posterior a "rechazado"
  4. Mostrar información de rechazo al desechar una muestra rechazada

Funcionalidades Propuestas

1. Configuración de Re-muestreo

Agregar en Configuración del Laboratorio:

  • Campo booleano: automatic_resampling (Por defecto: False)
  • Descripción: "Generar automáticamente nueva muestra al rechazar con solicitud de re-muestreo"

2. Generación Automática de Nueva Muestra

Si automatic_resampling está activo y se marca "Crear Nueva Solicitud":

  • Crear nuevo registro stock.lot con:
    • Mismo paciente, doctor, análisis
    • Nuevo código de barras único
    • Estado: 'pending_collection'
    • Campo de referencia a muestra rechazada
    • Nota indicando que es re-muestreo
  • Mantener relación con la orden original
  • Notificar la creación en el chatter

3. Generación Manual (Comportamiento actual mejorado)

Si automatic_resampling está inactivo:

  • Marcar la orden con campo needs_resampling = True
  • Mostrar botón/alerta visual en la orden
  • Permitir generar nueva muestra con un click
  • Mantener el comportamiento actual de solo notificar

4. Reorganización de Estados

Cambiar el flujo de estados para que "desechado" sea el último:

pending_collection → collected → received → in_process → analyzed → stored
                                     ↓                        ↓
                                  rejected ←------------------┘
                                     ↓
                                  disposed

5. Información de Rechazo al Desechar

  • Al mostrar formulario de muestra desechada que fue rechazada:
    • Mostrar grupo "Información de Rechazo" siempre visible
    • Incluir motivo, fecha, usuario y notas del rechazo
  • En la vista de lista, indicar visualmente muestras desechadas que fueron rechazadas

Modelos a Modificar

stock.lot

  • Agregar campo: resampling_of (Many2one a stock.lot) - Referencia a muestra original
  • Agregar campo: is_resampling (Boolean, computed) - True si es re-muestreo
  • Modificar estados y transiciones

sale.order

  • Agregar campo: needs_resampling (Boolean) - Indica orden con re-muestreo pendiente
  • Agregar método: action_generate_resampling() - Para generación manual

res.config.settings

  • Agregar campo: automatic_resampling (Boolean)

Tareas de Implementación

  1. Agregar configuración en res.config.settings
  2. Modificar wizard de rechazo para leer configuración
  3. Implementar lógica de generación automática en _create_new_sample_request()
  4. Agregar campos de relación en stock.lot
  5. Reorganizar estados y validar transiciones
  6. Actualizar vistas para mostrar información de rechazo
  7. Agregar botón de generación manual en sale.order
  8. Crear tests unitarios
  9. Actualizar documentación

Criterios de Aceptación

  • La configuración permite elegir entre re-muestreo automático o manual
  • Si automático: nueva muestra se genera inmediatamente con código único
  • Si manual: se marca la orden y permite generación posterior
  • El estado "desechado" solo es accesible después de otros estados finales
  • La información de rechazo es visible al desechar muestras rechazadas
  • Se mantiene trazabilidad completa entre muestra original y re-muestreo
  • Los reportes muestran correctamente las relaciones de re-muestreo

Consideraciones Técnicas

  • Validar que no se generen loops infinitos de re-muestreo
  • Limitar número máximo de re-muestreos por análisis
  • Considerar impacto en facturación (¿se cobra el re-muestreo?)
  • Mantener compatibilidad con flujo actual
## Descripción Actualmente, cuando se rechaza una muestra y se marca la opción "Crear Nueva Solicitud", el sistema solo agrega una nota en la orden pero no genera automáticamente una nueva muestra. Esta mejora propone implementar la automatización configurable del proceso de re-muestreo. ## Relacionado con - Issue #58: Implementar flujo de rechazo de muestras (implementación base completada) ## Objetivos 1. Implementar generación automática de nueva muestra al rechazar con opción de re-muestreo 2. Hacer configurable si el re-muestreo es automático o manual 3. Reorganizar estados para que "desechado" sea posterior a "rechazado" 4. Mostrar información de rechazo al desechar una muestra rechazada ## Funcionalidades Propuestas ### 1. Configuración de Re-muestreo Agregar en Configuración del Laboratorio: - Campo booleano: `automatic_resampling` (Por defecto: False) - Descripción: "Generar automáticamente nueva muestra al rechazar con solicitud de re-muestreo" ### 2. Generación Automática de Nueva Muestra Si `automatic_resampling` está activo y se marca "Crear Nueva Solicitud": - Crear nuevo registro stock.lot con: - Mismo paciente, doctor, análisis - Nuevo código de barras único - Estado: 'pending_collection' - Campo de referencia a muestra rechazada - Nota indicando que es re-muestreo - Mantener relación con la orden original - Notificar la creación en el chatter ### 3. Generación Manual (Comportamiento actual mejorado) Si `automatic_resampling` está inactivo: - Marcar la orden con campo `needs_resampling = True` - Mostrar botón/alerta visual en la orden - Permitir generar nueva muestra con un click - Mantener el comportamiento actual de solo notificar ### 4. Reorganización de Estados Cambiar el flujo de estados para que "desechado" sea el último: ``` pending_collection → collected → received → in_process → analyzed → stored ↓ ↓ rejected ←------------------┘ ↓ disposed ``` ### 5. Información de Rechazo al Desechar - Al mostrar formulario de muestra desechada que fue rechazada: - Mostrar grupo "Información de Rechazo" siempre visible - Incluir motivo, fecha, usuario y notas del rechazo - En la vista de lista, indicar visualmente muestras desechadas que fueron rechazadas ## Modelos a Modificar ### stock.lot - Agregar campo: `resampling_of` (Many2one a stock.lot) - Referencia a muestra original - Agregar campo: `is_resampling` (Boolean, computed) - True si es re-muestreo - Modificar estados y transiciones ### sale.order - Agregar campo: `needs_resampling` (Boolean) - Indica orden con re-muestreo pendiente - Agregar método: `action_generate_resampling()` - Para generación manual ### res.config.settings - Agregar campo: `automatic_resampling` (Boolean) ## Tareas de Implementación 1. [ ] Agregar configuración en res.config.settings 2. [ ] Modificar wizard de rechazo para leer configuración 3. [ ] Implementar lógica de generación automática en `_create_new_sample_request()` 4. [ ] Agregar campos de relación en stock.lot 5. [ ] Reorganizar estados y validar transiciones 6. [ ] Actualizar vistas para mostrar información de rechazo 7. [ ] Agregar botón de generación manual en sale.order 8. [ ] Crear tests unitarios 9. [ ] Actualizar documentación ## Criterios de Aceptación - [ ] La configuración permite elegir entre re-muestreo automático o manual - [ ] Si automático: nueva muestra se genera inmediatamente con código único - [ ] Si manual: se marca la orden y permite generación posterior - [ ] El estado "desechado" solo es accesible después de otros estados finales - [ ] La información de rechazo es visible al desechar muestras rechazadas - [ ] Se mantiene trazabilidad completa entre muestra original y re-muestreo - [ ] Los reportes muestran correctamente las relaciones de re-muestreo ## Consideraciones Técnicas - Validar que no se generen loops infinitos de re-muestreo - Limitar número máximo de re-muestreos por análisis - Considerar impacto en facturación (¿se cobra el re-muestreo?) - Mantener compatibilidad con flujo actual
Author
Owner

Iniciando desarrollo del issue #60: Automatización configurable de re-muestreo y reorganización de estados

Iniciando desarrollo del issue #60: Automatización configurable de re-muestreo y reorganización de estados
Author
Owner

Avance del desarrollo

Se ha implementado exitosamente la funcionalidad de automatización configurable de re-muestreo y reorganización de estados:

Funcionalidades implementadas:

  1. Re-muestreo automático:

    • Cuando una muestra es rechazada, se puede generar automáticamente una nueva muestra (re-muestra)
    • Las re-muestras se vinculan a la muestra original para mantener trazabilidad
    • Se incluye un contador de re-muestreos y un límite configurable
  2. Configuración del laboratorio:

    • Nuevo modelo de configuración (lims.config.settings) accesible desde el menú Configuración
    • Opciones configurables:
      • Activar/desactivar re-muestreo automático
      • Estado inicial para re-muestras (pendiente de recolección o recolectada)
      • Prefijo para códigos de re-muestras (por defecto: RE-)
      • Límite máximo de re-muestreos por muestra
      • Notificaciones automáticas a recepcionistas
  3. Mejoras en las vistas:

    • Nuevo botón 'Crear Re-muestra' en muestras rechazadas
    • Indicador visual de si una muestra es re-muestra
    • Contador de re-muestreos en la vista de lista
    • Pestaña de re-muestreo en el formulario mostrando historial
  4. Automatización del flujo:

    • Al rechazar una muestra, si está habilitado, se crea automáticamente una re-muestra
    • Se notifica a los recepcionistas mediante actividades
    • Se actualiza la orden de laboratorio con la nueva muestra

Pruebas sugeridas:

  1. Acceder como administrador y configurar el re-muestreo desde Laboratorio > Configuración > Configuración del Laboratorio
  2. Crear una orden de laboratorio y confirmarla para generar muestras
  3. Rechazar una muestra y verificar que se genera automáticamente una re-muestra
  4. Verificar que los recepcionistas reciben notificaciones de las nuevas re-muestras

La instancia está levantada y lista para pruebas manuales.

## Avance del desarrollo Se ha implementado exitosamente la funcionalidad de automatización configurable de re-muestreo y reorganización de estados: ### Funcionalidades implementadas: 1. **Re-muestreo automático**: - Cuando una muestra es rechazada, se puede generar automáticamente una nueva muestra (re-muestra) - Las re-muestras se vinculan a la muestra original para mantener trazabilidad - Se incluye un contador de re-muestreos y un límite configurable 2. **Configuración del laboratorio**: - Nuevo modelo de configuración (lims.config.settings) accesible desde el menú Configuración - Opciones configurables: - Activar/desactivar re-muestreo automático - Estado inicial para re-muestras (pendiente de recolección o recolectada) - Prefijo para códigos de re-muestras (por defecto: RE-) - Límite máximo de re-muestreos por muestra - Notificaciones automáticas a recepcionistas 3. **Mejoras en las vistas**: - Nuevo botón 'Crear Re-muestra' en muestras rechazadas - Indicador visual de si una muestra es re-muestra - Contador de re-muestreos en la vista de lista - Pestaña de re-muestreo en el formulario mostrando historial 4. **Automatización del flujo**: - Al rechazar una muestra, si está habilitado, se crea automáticamente una re-muestra - Se notifica a los recepcionistas mediante actividades - Se actualiza la orden de laboratorio con la nueva muestra ### Pruebas sugeridas: 1. Acceder como administrador y configurar el re-muestreo desde Laboratorio > Configuración > Configuración del Laboratorio 2. Crear una orden de laboratorio y confirmarla para generar muestras 3. Rechazar una muestra y verificar que se genera automáticamente una re-muestra 4. Verificar que los recepcionistas reciben notificaciones de las nuevas re-muestras La instancia está levantada y lista para pruebas manuales.
Author
Owner

Desarrollo Completado

Se ha completado exitosamente la implementación de la automatización configurable de re-muestreo y reorganización de estados.

Funcionalidades implementadas:

1. Configuración del Laboratorio

  • Nuevo modelo con opciones:
    • Activar/desactivar re-muestreo automático
    • Estado inicial para re-muestras
    • Prefijo personalizable (por defecto: RE-)
    • Límite máximo de re-muestreos
    • Notificaciones automáticas

2. Control de Re-muestreo

  • Respeta la configuración del wizard (checkbox crear re-muestra)
  • Previene múltiples re-muestras activas
  • Estructura plana: re-muestras son siempre hermanas (evita RE-RE-RE...)
  • Validación de límite máximo por cadena completa

3. Trazabilidad Mejorada

  • Campo : muestra original de la cadena
  • Campo : total de re-muestreos
  • Mensajes claros indicando origen y motivo
  • Vista mejorada con información completa de trazabilidad

4. Integración con Órdenes

  • Vista de órdenes muestra todas las muestras (incluyendo re-muestras)
  • Impresión de etiquetas solo para muestras activas
  • Indicadores visuales de estado y tipo

5. Correcciones

  • Error de en actividades
  • Usuario admin asignado automáticamente al grupo de laboratorio

Pruebas realizadas:

  • Creación de órdenes y generación de muestras
  • Rechazo de muestras con y sin re-muestreo automático
  • Re-muestreo de re-muestras (mantiene estructura plana)
  • Impresión de etiquetas excluyendo rechazadas
  • Configuración desde menú de administración

La instancia está funcionando correctamente con todas las mejoras implementadas.

## Desarrollo Completado ✅ Se ha completado exitosamente la implementación de la automatización configurable de re-muestreo y reorganización de estados. ### Funcionalidades implementadas: #### 1. **Configuración del Laboratorio** - Nuevo modelo con opciones: - ✅ Activar/desactivar re-muestreo automático - ✅ Estado inicial para re-muestras - ✅ Prefijo personalizable (por defecto: RE-) - ✅ Límite máximo de re-muestreos - ✅ Notificaciones automáticas #### 2. **Control de Re-muestreo** - ✅ Respeta la configuración del wizard (checkbox crear re-muestra) - ✅ Previene múltiples re-muestras activas - ✅ Estructura plana: re-muestras son siempre hermanas (evita RE-RE-RE...) - ✅ Validación de límite máximo por cadena completa #### 3. **Trazabilidad Mejorada** - ✅ Campo : muestra original de la cadena - ✅ Campo : total de re-muestreos - ✅ Mensajes claros indicando origen y motivo - ✅ Vista mejorada con información completa de trazabilidad #### 4. **Integración con Órdenes** - ✅ Vista de órdenes muestra todas las muestras (incluyendo re-muestras) - ✅ Impresión de etiquetas solo para muestras activas - ✅ Indicadores visuales de estado y tipo #### 5. **Correcciones** - ✅ Error de en actividades - ✅ Usuario admin asignado automáticamente al grupo de laboratorio ### Pruebas realizadas: - Creación de órdenes y generación de muestras - Rechazo de muestras con y sin re-muestreo automático - Re-muestreo de re-muestras (mantiene estructura plana) - Impresión de etiquetas excluyendo rechazadas - Configuración desde menú de administración La instancia está funcionando correctamente con todas las mejoras implementadas.
Author
Owner

Issue Completado

El desarrollo ha sido completado exitosamente y mergeado a la rama dev mediante el PR #62.

Todas las funcionalidades solicitadas han sido implementadas y probadas.

Cerrando este issue.

## Issue Completado ✅ El desarrollo ha sido completado exitosamente y mergeado a la rama dev mediante el PR #62. Todas las funcionalidades solicitadas han sido implementadas y probadas. Cerrando este issue.
Sign in to join this conversation.
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#60
No description provided.