clinical_laboratory/documents/plans/ISSUE7_PLAN.md
2025-07-14 08:03:25 -06:00

3.7 KiB

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.