feat(#7): Crear plan de desarrollo para gestion de muestras

This commit is contained in:
Luis Ernesto Portillo Zaldivar 2025-07-14 08:03:25 -06:00
parent c557014cac
commit 291ceb9bfd

View File

@ -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`.