clinical_laboratory/lims_management/views/menus.xml
Luis Ernesto Portillo Zaldivar d51d3b5d69 feat(#71): Implementar dashboards para administrador del laboratorio
- Dashboard de Estado de Órdenes: Vista gráfica y pivot de órdenes por estado
- Dashboard de Productividad de Técnicos: Análisis de pruebas por técnico
- Dashboard de Muestras: Estado y distribución de muestras por tipo
- Dashboard de Parámetros Fuera de Rango: Identificación de resultados críticos
- Dashboard de Análisis Más Solicitados: Top de análisis por período
- Dashboard de Distribución Demográfica: Tests por género y rango de edad
- Agregar campos computed age_range, patient_gender y patient_age_range
- Configurar menú de Dashboards solo para administradores

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-17 11:17:26 -06:00

336 lines
13 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<!-- Menú Principal -->
<menuitem
id="lims_menu_root"
name="Laboratorio"
sequence="10"/>
<!-- Acción de Ventana para Pacientes -->
<record id="action_lims_patient" model="ir.actions.act_window">
<field name="name">Pacientes</field>
<field name="res_model">res.partner</field>
<field name="view_mode">list,form</field>
<field name="view_id" ref="lims_management.view_patient_tree"/>
<field name="domain">[('is_patient', '=', True)]</field>
<field name="context">{'default_is_patient': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo paciente
</p>
</field>
</record>
<!-- Submenú de Pacientes -->
<menuitem
id="lims_menu_patients"
name="Pacientes"
parent="lims_menu_root"
action="action_lims_patient"
sequence="20"/>
<!-- Acción de Ventana para Doctores -->
<record id="action_lims_doctor" model="ir.actions.act_window">
<field name="name">Doctores</field>
<field name="res_model">res.partner</field>
<field name="view_mode">list,form</field>
<field name="view_id" ref="lims_management.view_doctor_tree"/>
<field name="domain">[('is_doctor', '=', True)]</field>
<field name="context">{'default_is_doctor': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo doctor
</p>
</field>
</record>
<!-- Submenú de Doctores -->
<menuitem
id="lims_menu_doctors"
name="Doctores"
parent="lims_menu_root"
action="action_lims_doctor"
sequence="30"/>
<!-- Acción de Ventana para Solicitudes de Laboratorio -->
<record id="action_lims_lab_request" model="ir.actions.act_window">
<field name="name">Solicitudes de Laboratorio</field>
<field name="res_model">sale.order</field>
<field name="view_mode">list,form</field>
<field name="domain">[('is_lab_request', '=', True)]</field>
<field name="context">{'default_is_lab_request': True}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea una nueva solicitud de laboratorio
</p>
</field>
</record>
<!-- Menú para Solicitudes de Laboratorio -->
<menuitem
id="lims_menu_lab_requests"
name="Solicitudes de Laboratorio"
parent="lims_menu_root"
action="action_lims_lab_request"
sequence="15"/>
<!-- Acción de Ventana para Muestras de Laboratorio -->
<record id="action_lims_lab_sample" model="ir.actions.act_window">
<field name="name">Muestras de Laboratorio</field>
<field name="res_model">stock.lot</field>
<field name="view_mode">list,form</field>
<field name="view_ids" eval="[(5, 0, 0),
(0, 0, {'view_mode': 'list', 'view_id': ref('view_lab_sample_list')}),
(0, 0, {'view_mode': 'form', 'view_id': ref('view_lab_sample_form')})]"/>
<field name="domain">[('is_lab_sample', '=', True)]</field>
<field name="context" eval="{
'default_is_lab_sample': True
}"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea una nueva muestra de laboratorio
</p>
</field>
</record>
<!-- Menú para Muestras de Laboratorio -->
<menuitem
id="lims_menu_lab_samples"
name="Muestras"
parent="lims_menu_root"
action="action_lims_lab_sample"
sequence="16"/>
<!-- Menú para Muestras Rechazadas -->
<menuitem
id="lims_menu_lab_samples_rejected"
name="Muestras Rechazadas"
parent="lims_menu_root"
action="action_lab_sample_rejected"
sequence="17"/>
<!-- Submenú de Laboratorio -->
<menuitem
id="lims_menu_laboratory"
name="Laboratorio"
parent="lims_menu_root"
sequence="20"/>
<!-- Acción para lims.test -->
<record id="action_lims_test" model="ir.actions.act_window">
<field name="name">Pruebas de Laboratorio</field>
<field name="res_model">lims.test</field>
<field name="view_mode">list,kanban,form</field>
<field name="context">{'search_default_my_tests': 1}</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crear primera prueba de laboratorio
</p>
<p>
Aquí podrá gestionar las pruebas de laboratorio,
ingresar resultados y validarlos.
</p>
</field>
</record>
<!-- Menú para Pruebas -->
<menuitem id="menu_lims_tests"
name="Pruebas"
parent="lims_menu_laboratory"
action="action_lims_test"
sequence="10"/>
<!-- Menú para Ingreso de Resultados -->
<menuitem id="menu_lims_result_entry"
name="Ingreso de Resultados"
parent="lims_menu_laboratory"
action="action_lims_result_entry"
sequence="25"/>
<!-- Menú para Resultados -->
<menuitem id="menu_lims_result"
name="Resultados"
parent="lims_menu_laboratory"
action="action_lims_result"
sequence="30"/>
<!-- Submenú de Dashboards -->
<menuitem
id="menu_lims_dashboards"
name="Dashboards"
parent="lims_menu_root"
sequence="85"
groups="lims_management.group_lims_admin"/>
<!-- Dashboards individuales -->
<menuitem id="menu_lab_order_dashboard"
name="Estado de &#211;rdenes"
parent="menu_lims_dashboards"
action="action_lab_order_dashboard"
sequence="10"/>
<menuitem id="menu_technician_productivity_dashboard"
name="Productividad de T&#233;cnicos"
parent="menu_lims_dashboards"
action="action_technician_productivity_dashboard"
sequence="20"/>
<menuitem id="menu_sample_dashboard"
name="Dashboard de Muestras"
parent="menu_lims_dashboards"
action="action_sample_dashboard"
sequence="30"/>
<menuitem id="menu_out_of_range_dashboard"
name="Par&#225;metros Fuera de Rango"
parent="menu_lims_dashboards"
action="action_out_of_range_dashboard"
sequence="40"/>
<menuitem id="menu_top_analysis_dashboard"
name="An&#225;lisis M&#225;s Solicitados"
parent="menu_lims_dashboards"
action="action_top_analysis_dashboard"
sequence="50"/>
<menuitem id="menu_test_demographics_dashboard"
name="Distribuci&#243;n Demogr&#225;fica"
parent="menu_lims_dashboards"
action="action_test_demographics_dashboard"
sequence="60"/>
<!-- Submenú de Reportes -->
<menuitem
id="lims_menu_reports"
name="Reportes"
parent="lims_menu_root"
sequence="90"/>
<!-- Menú para Análisis de Resultados en Reportes -->
<menuitem id="menu_lims_result_analysis"
name="Análisis de Resultados"
parent="lims_menu_reports"
action="action_lims_result_analysis"
sequence="20"/>
<!-- Submenú de Configuración -->
<menuitem
id="lims_menu_config"
name="Configuración"
parent="lims_menu_root"
sequence="100"/>
<!-- Acción de Ventana para Catálogo de Análisis -->
<record id="action_lims_analysis_catalog" model="ir.actions.act_window">
<field name="name">Análisis Clínicos</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,form</field>
<field name="domain">[('is_analysis', '=', True)]</field>
<field name="context" eval="{
'default_is_analysis': True,
'default_type': 'service',
'default_purchase_ok': False,
'default_categ_id': ref('lims_management.product_category_analysis')
}"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo análisis clínico
</p>
</field>
</record>
<!-- Menú para Catálogo de Análisis -->
<menuitem
id="lims_menu_analysis_catalog"
name="Análisis Clínicos"
parent="lims_menu_config"
action="action_lims_analysis_catalog"
sequence="10"/>
<!-- Acción de Ventana para Tipos de Muestra -->
<record id="action_lims_sample_type_catalog" model="ir.actions.act_window">
<field name="name">Tipos de Muestra</field>
<field name="res_model">product.template</field>
<field name="view_mode">kanban,form</field>
<field name="domain">[('is_sample_type', '=', True)]</field>
<field name="context" eval="{
'default_is_sample_type': True,
'default_type': 'service'
}"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Crea un nuevo tipo de muestra
</p>
</field>
</record>
<!-- Menú para Tipos de Muestra -->
<menuitem
id="lims_menu_sample_type_catalog"
name="Tipos de Muestra"
parent="lims_menu_config"
action="action_lims_sample_type_catalog"
sequence="20"/>
<!-- Acción para abrir configuración de laboratorio -->
<record id="action_lims_config_settings" model="ir.actions.act_window">
<field name="name">Configuración</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.config.settings</field>
<field name="view_mode">form</field>
<field name="target">inline</field>
<field name="context">{'module' : 'lims_management'}</field>
</record>
<!-- Menú de Panel de Parámetros -->
<menuitem id="menu_lims_parameter_dashboard"
name="Panel de Parámetros"
parent="lims_menu_config"
action="action_lims_parameter_dashboard"
sequence="10"/>
<!-- Menú de Parámetros de Análisis -->
<menuitem id="menu_lims_analysis_parameter"
name="Parámetros de Análisis"
parent="lims_menu_config"
action="action_lims_analysis_parameter"
sequence="20"/>
<!-- Menú de Rangos de Referencia -->
<menuitem id="menu_lims_parameter_range"
name="Rangos de Referencia"
parent="lims_menu_config"
action="action_lims_parameter_range"
sequence="25"/>
<!-- Menú de Config. Parámetros-Análisis -->
<menuitem id="menu_product_template_parameter_config"
name="Config. Parámetros-Análisis"
parent="lims_menu_config"
action="action_product_template_parameter_config"
sequence="30"/>
<!-- Menú de Estadísticas -->
<menuitem id="menu_lims_parameter_statistics"
name="Estadísticas"
parent="lims_menu_config"
action="action_lims_parameter_statistics"
sequence="40"/>
<!-- Menú de Motivos de Rechazo -->
<menuitem id="menu_lims_rejection_reason"
name="Motivos de Rechazo"
parent="lims_menu_config"
action="action_lims_rejection_reason"
sequence="50"/>
<!-- Menú de configuración de ajustes -->
<menuitem id="menu_lims_config_settings"
name="Ajustes"
parent="lims_menu_config"
action="action_lims_config_settings"
sequence="100"/>
</data>
</odoo>