diff --git a/documents/plans/ISSUE7_PLAN.md b/documents/plans/ISSUE7_PLAN.md new file mode 100644 index 0000000..297559d --- /dev/null +++ b/documents/plans/ISSUE7_PLAN.md @@ -0,0 +1,50 @@ +# Plan de Actividades: Issue #7 - Gestión de Muestras de Laboratorio + +## Objetivo + +Extender el modelo de Lotes/Números de Serie de Odoo (`stock.lot`) para representar y gestionar las **Muestras de Laboratorio**. Esto permitirá la trazabilidad completa de la muestra desde su recolección hasta el análisis. + +## TODO + +- [ ] **Extender el Modelo de Lote/Número de Serie (`stock.lot`):** + - [ ] Crear el archivo `lims_management/models/stock_lot.py`. + - [ ] Heredar del modelo `stock.lot`. + - [ ] Añadir un campo booleano `is_lab_sample` para identificar los registros que son muestras de laboratorio. + - [ ] Añadir un campo `patient_id` (Many2one a `res.partner`) para vincular la muestra al paciente. + - [ ] Añadir un campo `request_id` (Many2one a `sale.order`) para vincular la muestra a la solicitud de laboratorio correspondiente. + - [ ] Añadir un campo `collection_date` (Datetime) para registrar la fecha y hora de la toma de la muestra. + - [ ] Añadir un campo `container_type` (Selection) para el tipo de recipiente (ej. 'Tubo de suero', 'Tubo EDTA', 'Hisopo', 'Orina'). + +- [ ] **Adaptar las Vistas de Lote/Número de Serie:** + - [ ] Crear el archivo `lims_management/views/stock_lot_views.xml`. + - [ ] Crear una nueva vista de lista (`list`) para las muestras, mostrando campos clave como el número de muestra (`name`), paciente, fecha de recolección y tipo de recipiente. + - [ ] Crear una nueva vista de formulario (`form`) para el registro de muestras, incluyendo todos los campos nuevos. + - [ ] Asegurarse de que el campo `product_id` (requerido por `stock.lot`) se gestione adecuadamente. Se puede crear un producto de servicio genérico llamado "Muestra de Laboratorio" y asignarlo por defecto. + +- [ ] **Crear el Menú "Gestión de Muestras":** + - [ ] Modificar `lims_management/views/menus.xml`. + - [ ] Crear una nueva acción de ventana (`ir.actions.act_window`) para el modelo `stock.lot`. + - [ ] Establecer un dominio en la acción para mostrar solo los registros que son muestras de laboratorio (`is_lab_sample = True`). + - [ ] En el `context` de la acción, establecer `default_is_lab_sample = True` y, si se decide, el `default_product_id`. + - [ ] Crear un `menuitem` para "Muestras" o "Gestión de Muestras" dentro del menú principal del LIMS. + +- [ ] **Establecer Permisos y Reglas de Dominio:** + - [ ] Modificar `lims_management/security/ir.model.access.csv` para asegurar que los usuarios del LIMS tengan permisos para crear, leer, escribir y eliminar registros en `stock.lot`. + - [ ] Aplicar un dominio al campo `patient_id` en la vista de muestra para que solo muestre contactos que estén marcados como pacientes. + +- [ ] **Actualizar el Manifiesto (`__manifest__.py`):** + - [ ] Añadir el nuevo archivo de modelo (`stock_lot.py`) al `__init__.py` correspondiente. + - [ ] Añadir el nuevo archivo de vistas (`stock_lot_views.xml`) a la clave `data` en `__manifest__.py`. + +- [ ] **Verificación Final:** + - [ ] Reiniciar la instancia de Odoo (`docker-compose down -v` y `docker-compose up -d`). + - [ ] Revisar los logs de `odoo_init` en busca de errores de instalación o actualización. + - [ ] Verificar la funcionalidad en la interfaz de Odoo: + - Navegar al nuevo menú "Muestras". + - Crear una nueva muestra, asociarla a un paciente y (si la funcionalidad de solicitud ya existiera) a una solicitud. + - Confirmar que la lista de muestras solo muestra los registros correctos. + +- [ ] **(Opcional) Crear Datos de Demostración:** + - [ ] Crear un archivo `demo/z_sample_demo.xml`. + - [ ] Definir al menos dos muestras de ejemplo, vinculadas a los pacientes de demostración. + - [ ] Añadir el archivo a la clave `demo` en `__manifest__.py`. \ No newline at end of file