clinical_laboratory/documents/plans/ISSUE5_PLAN.md
2025-07-14 00:34:54 -06:00

6.1 KiB
Raw Blame History

Plan de Actividades: Issue #5 - Catálogo de Análisis Clínicos

TODO

  • Extender el Modelo de Productos (product.template):

    • Crear lims_management/models/product.py.
    • Heredar de product.template.
    • Añadir campo booleano is_analysis.
    • Añadir campo de selección analysis_type.
    • Añadir campo de texto technical_specifications.
    • Crear campo value_range (One2many) que enlace al nuevo modelo lims.analysis.range.
  • Crear el Modelo para Rangos de Referencia (lims.analysis.range):

    • Crear lims_management/models/analysis_range.py.
    • Definir campos: analysis_id (Many2one), gender, age_min, age_max, min_value, max_value, unit_of_measure.
  • Definir Permisos de Seguridad:

    • Modificar lims_management/security/ir.model.access.csv.
    • Añadir permisos para el modelo lims.analysis.range.
  • Crear las Vistas para el Catálogo de Análisis:

    • Crear lims_management/views/analysis_views.xml.
    • Crear vista de lista/Kanban para análisis clínicos.
    • Heredar de la vista de formulario de productos para añadir la pestaña "Configuración de Análisis".
    • Mostrar campos condicionalmente (is_analysis = True).
    • Crear una vista de árbol independiente para los rangos de referencia (lims.analysis.range).
    • En la vista de formulario del producto, referenciar la nueva vista de árbol para el campo value_range_ids.
    • (Nuevo) Modificar las etiquetas en la acción de ventana para que se muestre "Análisis Clinico" en lugar de "Producto".
  • Crear el Menú "Catálogo de Análisis":

    • Modificar lims_management/views/menus.xml.
    • Crear una nueva acción de ventana (ir.actions.act_window).
    • (Nuevo) Definir valores por defecto en el context de la acción para: type, purchase_ok, categ_id.
    • (Nuevo) Crear la categoría de producto "Análisis Clínico" mediante un archivo de datos.
    • Crear un menuitem para "Catálogo de Análisis".
  • Actualizar el Manifiesto (__manifest__.py):

    • Añadir los nuevos modelos al __init__.py de la carpeta models.
    • Añadir el nuevo archivo de vistas a la lista data en __manifest__.py.
  • Verificación Final:

    • Reiniciar la instancia de Odoo (docker-compose down -v y docker-compose up -d).
    • Revisar logs de odoo_init.
    • Verificar la funcionalidad en la interfaz de Odoo.
  • (Nuevo) Crear Datos de Demostración:

    • Crear el archivo demo/analysis_demo.xml.
    • Definir registros de ejemplo para análisis clínicos (Hemograma, Perfil Lipídico, etc.).
    • Asegurarse de que los datos de demostración incluyan la configuración de los rangos de referencia.
    • Añadir el archivo analysis_demo.xml a la clave demo en __manifest__.py.

Consideraciones Adicionales para Valores por Defecto

1. Análisis y Justificación

Para mejorar la experiencia de usuario y asegurar la consistencia de los datos, se realizó un análisis para determinar qué campos del modelo product.template deberían tener valores por defecto al crear un nuevo "Análisis Clínico". Esta decisión se basa en el estudio del código fuente de Odoo 18 (product.template.py) y los documentos de requerimientos y diseño del proyecto.

  • Análisis del Modelo product.template: La revisión del modelo base de productos en Odoo 18 revel<65><6C> campos clave que definen el comportamiento de un producto en el sistema, tales como type, sale_ok, purchase_ok, y categ_id. Estos campos son fundamentales para que un producto se integre correctamente con los módulos de Ventas, Compras e Inventario.

  • Relación con los Requerimientos y Diseño Técnico:

    • El documento RequerimientoInicial.md especifica que los análisis clínicos deben ser considerados servicios facturables. Esto justifica la necesidad de configurar los análisis como productos de tipo "Servicio" (type='service') que se puedan vender (sale_ok=True).
    • El documento ToBeDesing.md enfatiza la importancia de categorizar la información para mantener el sistema organizado y facilitar los filtros. Esto respalda la creación de una categoría de producto específica, "Análisis Clínico", para agrupar todos estos servicios y separarlos de otros productos que la empresa pueda manejar.
    • Ambos documentos dejan claro que el laboratorio presta estos servicios, pero no los compra. Por lo tanto, deshabilitar la opción de compra (purchase_ok=False) es coherente con el flujo de negocio, evitando que los análisis aparezcan en contextos de compra.

2. Propuesta de Valores por Defecto

Basado en el análisis anterior, se implementarán los siguientes valores por defecto al crear un nuevo análisis clínico desde su menú correspondiente:

Campo en product.template Valor por Defecto Recomendado Justificación
type (Tipo de Producto) 'service' (Servicio) Un análisis es un servicio prestado, no un bien físico. Esto evita que Odoo intente gestionar su stock.
purchase_ok (Se puede Comprar) False (Falso) El laboratorio vende análisis, no los compra. Esto limpia la interfaz en los flujos de compra.
categ_id (Categoría de Producto) Análisis Clínico Permite agrupar, filtrar y aplicar reglas contables específicas a todos los análisis clínicos.
sale_ok (Se puede Vender) True (Verdadero) Esencial para que los análisis puedan ser añadidos a las órdenes de laboratorio (órdenes de venta).

Estos valores se configurarán en el context de la acción de ventana (ir.actions.act_window) que gestiona la creación de nuevos análisis, asegurando que cada nuevo registro se cree con la configuración correcta de forma automática.