3.6 KiB
3.6 KiB
Plan de Actividades: Issue #31 - Ciclo de Vida de la Muestra
Objetivo
Implementar una máquina de estados completa para el modelo stock.lot
con el fin de gestionar y trazar el ciclo de vida de una muestra de laboratorio, desde su recolección hasta su descarte.
Plan de Ejecución
1. Modificación del Modelo (stock.lot
)
- Archivo:
lims_management/models/stock_lot.py
- Tareas:
- Añadir campo
state
:- Tipo:
Selection
- Nombre técnico:
state
- String: "Estado"
- Opciones:
collected
: 'Recolectada' (Estado por defecto)received
: 'Recibida en Laboratorio'in_process
: 'En Proceso'analyzed
: 'Analizada'stored
: 'Almacenada'disposed
: 'Desechada'
- Atributos:
tracking=True
para registrar cambios en el chatter.
- Tipo:
- Definir métodos para transiciones:
action_receive()
: Cambia el estado areceived
.action_start_analysis()
: Cambia el estado ain_process
.action_complete_analysis()
: Cambia el estado aanalyzed
.action_store()
: Cambia el estado astored
.action_dispose()
: Cambia el estado adisposed
.- Cada método debe realizar una transición de estado simple y registrar un mensaje en el chatter.
- Añadir campo
2. Adaptación de las Vistas (stock_lot_views.xml
)
- Archivo:
lims_management/views/stock_lot_views.xml
- Tareas:
- Vista de Formulario:
- Añadir
header
:- Incorporar botones para las acciones (
action_receive
,action_start_analysis
, etc.). - Controlar la visibilidad de los botones según el estado actual (ej. el botón "Recibir" solo debe ser visible si el estado es 'Recolectada').
- Incorporar botones para las acciones (
- Añadir
statusbar
:- Visualizar el campo
state
usando el widgetstatusbar
. - Definir el
statusbar_visible
para mostrar los estados clave del flujo principal.
- Visualizar el campo
- Hacer campos
readonly
:- Campos como
patient_id
,request_id
,collection_date
deben volverse de solo lectura después de que la muestra es recibida para asegurar la integridad de los datos. Se usará el atributoattrs
con el nuevo formatoinvisible
oreadonly
basado en el campostate
.
- Campos como
- Añadir
- Vista de Lista:
- Añadir el campo
state
para que sea visible. - Añadir el campo
state
a los filtros por defecto en elsearch
para poder agrupar por estado fácilmente.
- Añadir el campo
- Vista de Formulario:
3. Seguridad (Opcional, si es necesario)
- Archivo:
lims_management/security/lims_security.xml
oir.model.access.csv
- Tareas:
- Evaluar si se necesitan reglas de seguridad específicas para controlar quién puede ejecutar las transiciones de estado. Por ahora, se asumirá que los grupos existentes (
group_lims_technician
,group_lims_admin
) tienen los permisos.
- Evaluar si se necesitan reglas de seguridad específicas para controlar quién puede ejecutar las transiciones de estado. Por ahora, se asumirá que los grupos existentes (
4. Verificación y Pruebas
- Pasos:
- Reiniciar la instancia de Odoo con el módulo actualizado.
- Crear una nueva muestra de laboratorio manualmente.
- Verificar que el estado por defecto sea 'Recolectada'.
- Probar cada uno de los botones de transición de estado en la vista de formulario.
- Confirmar que el
statusbar
se actualiza correctamente. - Revisar el chatter para asegurarse de que los cambios de estado se están registrando.
- Verificar la visibilidad condicional de los botones y el modo de solo lectura de los campos.
- Filtrar y agrupar por estado en la vista de lista.