feat(#44): Update demo data with test-sample relationships

- Added required_sample_type_id and sample_volume_ml to all demo analyses
- Updated demo samples to use new sample_type_product_id field
- Added demo_patient_3 for complete demo data
- Mapped analyses to appropriate sample types:
  - Hemograma → EDTA tube (3ml)
  - Perfil Lipídico → Serum tube (2ml)
  - Glucosa → Glucose tube (1ml)
  - Urocultivo → Urine container (20ml)
  - TP → Citrate tube (2.7ml)
  - Hemocultivo → Blood culture bottle (10ml)
  - Coprocultivo → Stool container (5ml)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Luis Ernesto Portillo Zaldivar 2025-07-14 21:06:45 -06:00
parent 40b5dabda7
commit d41f5eed5c
3 changed files with 128 additions and 21 deletions

View File

@ -12,6 +12,8 @@
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_edta_tube"/>
<field name="sample_volume_ml">3.0</field>
<field name="technical_specifications">
El hemograma completo es un análisis de sangre que mide los niveles de los principales componentes sanguíneos: glóbulos rojos, glóbulos blancos y plaquetas.
</field>
@ -46,6 +48,8 @@
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_serum_tube"/>
<field name="sample_volume_ml">2.0</field>
<field name="technical_specifications">
Mide los niveles de colesterol y otros lípidos en la sangre. Incluye Colesterol Total, LDL, HDL y Triglicéridos.
</field>
@ -67,5 +71,86 @@
<field name="unit_of_measure">mg/dL</field>
</record>
<!-- Análisis: Glucosa -->
<record id="analysis_glucosa" model="product.template">
<field name="name">Glucosa</field>
<field name="is_analysis">True</field>
<field name="analysis_type">chemistry</field>
<field name="categ_id" ref="lims_management.product_category_analysis"/>
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_glucose_tube"/>
<field name="sample_volume_ml">1.0</field>
<field name="technical_specifications">
Medición de glucosa en sangre para diagnóstico y control de diabetes.
</field>
</record>
<!-- Análisis: Urocultivo -->
<record id="analysis_urocultivo" model="product.template">
<field name="name">Urocultivo</field>
<field name="is_analysis">True</field>
<field name="analysis_type">microbiology</field>
<field name="categ_id" ref="lims_management.product_category_analysis"/>
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_urine_container"/>
<field name="sample_volume_ml">20.0</field>
<field name="technical_specifications">
Cultivo de orina para identificación de microorganismos patógenos.
</field>
</record>
<!-- Análisis: Tiempo de Protrombina -->
<record id="analysis_tp" model="product.template">
<field name="name">Tiempo de Protrombina (TP)</field>
<field name="is_analysis">True</field>
<field name="analysis_type">hematology</field>
<field name="categ_id" ref="lims_management.product_category_analysis"/>
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_citrate_tube"/>
<field name="sample_volume_ml">2.7</field>
<field name="technical_specifications">
Prueba de coagulación para evaluar la vía extrínseca de la coagulación.
</field>
</record>
<!-- Análisis: Hemocultivo -->
<record id="analysis_hemocultivo" model="product.template">
<field name="name">Hemocultivo</field>
<field name="is_analysis">True</field>
<field name="analysis_type">microbiology</field>
<field name="categ_id" ref="lims_management.product_category_analysis"/>
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_blood_culture"/>
<field name="sample_volume_ml">10.0</field>
<field name="technical_specifications">
Cultivo de sangre para detectar bacteriemia o fungemia.
</field>
</record>
<!-- Análisis: Coprocultivo -->
<record id="analysis_coprocultivo" model="product.template">
<field name="name">Coprocultivo</field>
<field name="is_analysis">True</field>
<field name="analysis_type">microbiology</field>
<field name="categ_id" ref="lims_management.product_category_analysis"/>
<field name="type">service</field>
<field name="purchase_ok" eval="False"/>
<field name="sale_ok" eval="True"/>
<field name="required_sample_type_id" ref="lims_management.sample_type_stool_container"/>
<field name="sample_volume_ml">5.0</field>
<field name="technical_specifications">
Cultivo de heces para identificación de patógenos intestinales.
</field>
</record>
</data>
</odoo>

View File

@ -25,6 +25,17 @@
<field name="email">carlos.ruiz@example.com</field>
</record>
<record id="demo_patient_3" model="res.partner">
<field name="name">María González</field>
<field name="is_patient" eval="True"/>
<field name="patient_identifier">P-M78E03</field>
<field name="origin">Carga Inicial</field>
<field name="birthdate_date">1978-03-10</field>
<field name="gender">female</field>
<field name="phone">+1-202-555-0201</field>
<field name="email">maria.gonzalez@example.com</field>
</record>
<!-- Datos de Demostración para Médicos -->
<record id="demo_doctor_1" model="res.partner">
<field name="name">Dr. Luis Herrera</field>

View File

@ -1,41 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<!-- Tipos de Muestra (Productos) -->
<record id="sample_type_serum" model="product.template">
<field name="name">Tubo de Suero (Tapa Roja)</field>
<field name="is_sample_type" eval="True"/>
<field name="type">service</field>
</record>
<record id="sample_type_edta" model="product.template">
<field name="name">Tubo EDTA (Tapa Morada)</field>
<field name="is_sample_type" eval="True"/>
<field name="type">service</field>
</record>
<record id="sample_type_urine" model="product.template">
<field name="name">Contenedor de Orina</field>
<field name="is_sample_type" eval="True"/>
<field name="type">service</field>
</record>
<!-- Muestras de Laboratorio (Lotes) -->
<data noupdate="1">
<!-- Muestras de Laboratorio (Lotes) con el nuevo campo sample_type_product_id -->
<record id="lab_sample_01" model="stock.lot">
<field name="name">SAM-2025-00001</field>
<field name="product_id" model="product.product" eval="obj().env.ref('lims_management.sample_type_serum').product_variant_id.id"/>
<field name="product_id" model="product.product" eval="obj().env.ref('lims_management.sample_type_serum_tube').product_variant_id.id"/>
<field name="is_lab_sample" eval="True"/>
<field name="patient_id" ref="lims_management.demo_patient_1"/>
<field name="collector_id" ref="base.user_admin"/>
<field name="collection_date" eval="(DateTime.now() - timedelta(days=2)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="sample_type_product_id" ref="lims_management.sample_type_serum_tube"/>
<field name="container_type">serum_tube</field>
<field name="state">received</field>
</record>
<record id="lab_sample_02" model="stock.lot">
<field name="name">SAM-2025-00002</field>
<field name="product_id" model="product.product" eval="obj().env.ref('lims_management.sample_type_edta').product_variant_id.id"/>
<field name="product_id" model="product.product" eval="obj().env.ref('lims_management.sample_type_edta_tube').product_variant_id.id"/>
<field name="is_lab_sample" eval="True"/>
<field name="patient_id" ref="lims_management.demo_patient_2"/>
<field name="collector_id" ref="base.user_admin"/>
<field name="collection_date" eval="(DateTime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="sample_type_product_id" ref="lims_management.sample_type_edta_tube"/>
<field name="container_type">edta_tube</field>
<field name="state">in_process</field>
</record>
<record id="lab_sample_03" model="stock.lot">
<field name="name">SAM-2025-00003</field>
<field name="product_id" model="product.product" eval="obj().env.ref('lims_management.sample_type_urine_container').product_variant_id.id"/>
<field name="is_lab_sample" eval="True"/>
<field name="patient_id" ref="lims_management.demo_patient_3"/>
<field name="collector_id" ref="base.user_admin"/>
<field name="collection_date" eval="(DateTime.now() - timedelta(hours=6)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="sample_type_product_id" ref="lims_management.sample_type_urine_container"/>
<field name="container_type">urine</field>
<field name="state">collected</field>
</record>
<record id="lab_sample_04" model="stock.lot">
<field name="name">SAM-2025-00004</field>
<field name="product_id" model="product.product" eval="obj().env.ref('lims_management.sample_type_citrate_tube').product_variant_id.id"/>
<field name="is_lab_sample" eval="True"/>
<field name="patient_id" ref="lims_management.demo_patient_1"/>
<field name="collector_id" ref="base.user_admin"/>
<field name="collection_date" eval="(DateTime.now() - timedelta(days=3)).strftime('%Y-%m-%d %H:%M:%S')"/>
<field name="sample_type_product_id" ref="lims_management.sample_type_citrate_tube"/>
<field name="state">analyzed</field>
</record>
</data>
</odoo>