clinical_laboratory/documents/plans/ISSUE6_PLAN.md
2025-07-14 03:10:26 -06:00

4.6 KiB
Raw Blame History

Plan de Desarrollo: Issue #6 - Solicitudes de Laboratorio

Análisis

El objetivo de este issue es implementar la funcionalidad para que un recepcionista pueda registrar una "Solicitud de Laboratorio". Esta solicitud debe estar vinculada a un paciente, a un médico remitente (opcional) y debe contener los análisis clínicos que se realizarán.

Basándose en los documentos de diseño (ToBeDesing.md) y los requerimientos, la estrategia principal es reutilizar el modelo de Órdenes de Venta (sale.order) de Odoo para representar las solicitudes de laboratorio. Esta decisión es clave porque aprovecha el flujo de facturación y contabilidad ya existente en Odoo, evitando desarrollar una lógica de cobro paralela y asegurando una integración nativa.

El trabajo realizado en el Issue #5 ya nos proporciona el "Catálogo de Análisis Clínicos" como productos de tipo servicio, que serán los elementos que se añadirán a estas solicitudes.

Por lo tanto, el plan se centrará en adaptar y extender el modelo sale.order para que se comporte y se presente al usuario como una "Solicitud de Laboratorio".


Plan de Actividades

  • 1. Extender el Modelo sale.order:

    • Crear el archivo lims_management/models/sale_order.py.
    • Heredar del modelo sale.order para añadir los siguientes campos:
      • is_lab_request (Booleano): Un campo técnico para identificar que la orden de venta es una solicitud de laboratorio. Será invisible en la interfaz y se usará para filtrar y aplicar lógica específica.
      • doctor_id (Many2one a res.partner): Para seleccionar al médico que remite la solicitud. Se debe aplicar un dominio para que solo muestre los contactos que estén marcados como doctores (is_doctor = True).
    • Añadir el nuevo archivo sale_order.py al __init__.py de la carpeta models.
  • 2. Crear Vistas para Solicitudes de Laboratorio:

    • Crear el archivo de vistas lims_management/views/sale_order_views.xml.
    • Heredar la vista de formulario de sale.order para:
      • Añadir el campo doctor_id cerca del campo del paciente.
      • Cambiar la etiqueta (string) del campo partner_id de "Cliente" a "Paciente".
      • (Nuevo) Aplicar un dominio al campo partner_id para que solo muestre contactos que sean pacientes (is_patient = True).
      • (Nuevo) Corregir y asegurar que el dominio en el campo product_template_id de las líneas de la orden restrinja la selección únicamente a análisis clínicos (is_analysis = True).
    • Heredar la vista de lista (tree/list) de sale.order para:
      • Añadir la columna "Médico Remitente" (doctor_id).
  • 3. Crear Men<65><6E> y Acción de Ventana:

    • Modificar el archivo lims_management/views/menus.xml.
    • Crear una nueva Acción de Ventana (ir.actions.act_window) para las solicitudes de laboratorio:
      • name: "Solicitudes de Laboratorio".
      • res_model: sale.order.
      • view_mode: list,form.
      • domain: [('is_lab_request', '=', True)] para mostrar solo las solicitudes de laboratorio.
      • context: {'default_is_lab_request': True} para que las nuevas solicitudes se marquen correctamente por defecto.
    • Crear un nuevo menuitem llamado "Solicitudes de Laboratorio" bajo el menú principal de "Laboratorio", que dispare la acción anterior.
  • 4. Actualizar Manifiesto y Seguridad:

    • Añadir la dependencia del módulo sale en el archivo __manifest__.py.
    • Añadir el nuevo archivo de vistas sale_order_views.xml a la lista data en __manifest__.py.
    • Asegurar que los grupos de usuarios del laboratorio (ej. Recepcionista) tengan los permisos adecuados para crear y modificar órdenes de venta (sale.order).
  • 5. Crear Datos de Demostración:

    • Crear un nuevo archivo de datos de demostración para las solicitudes de laboratorio.
    • Definir al menos dos solicitudes de ejemplo que incluyan diferentes análisis y pacientes.
    • Añadir el nuevo archivo a la clave demo en __manifest__.py.
  • 6. Verificación Final:

    • Reiniciar la instancia de Odoo para aplicar los cambios.
    • Verificar en la interfaz que el nuevo menú "Solicitudes de Laboratorio" aparece y funciona.
    • Comprobar que al crear una nueva solicitud, solo se puedan añadir análisis del catálogo y que se pueda seleccionar un médico remitente.
    • Revisar los logs para asegurar que no haya errores.