4.6 KiB
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 ares.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 carpetamodels
.
- Crear el archivo
-
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
).
- Añadir el campo
- Heredar la vista de lista (tree/list) de
sale.order
para:- Añadir la columna "Médico Remitente" (
doctor_id
).
- Añadir la columna "Médico Remitente" (
- Crear el archivo de vistas
-
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.
- Modificar el archivo
-
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 listadata
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
).
- Añadir la dependencia del módulo
-
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.