clinical_laboratory/test/verify_demo_data.py
Luis Ernesto Portillo Zaldivar 999896f89e feat(#51): Task 11 completada - Datos de demostración con catálogo de parámetros
- Creados 36 parámetros de análisis en parameter_demo.xml
- Creados 31 rangos de referencia en parameter_range_demo.xml
- Creadas 40 configuraciones parámetro-análisis en analysis_parameter_config_demo.xml
- Consolidado script de creación de datos demo en test/create_demo_data.py
- Actualizado init_odoo.py para usar script consolidado
- Eliminados scripts obsoletos (04_demo_lab_orders.sh, create_test_demo_data.py)
- Verificada carga exitosa de todos los datos demo
2025-07-15 13:56:09 -06:00

159 lines
5.1 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script para verificar los datos de demostración cargados.
"""
import odoo
import json
def verify_demo_data(cr):
"""Verificar datos de demostración"""
# Verificar parámetros
cr.execute("""
SELECT COUNT(*) as total,
COUNT(DISTINCT value_type) as tipos
FROM lims_analysis_parameter
""")
params = cr.fetchone()
# Verificar rangos
cr.execute("""
SELECT COUNT(*) as total,
COUNT(DISTINCT parameter_id) as parametros_con_rangos
FROM lims_parameter_range
""")
ranges = cr.fetchone()
# Verificar configuración de parámetros en análisis
cr.execute("""
SELECT pt.name as analisis,
COUNT(ptp.id) as parametros_configurados
FROM product_template pt
LEFT JOIN product_template_parameter ptp ON ptp.product_tmpl_id = pt.id
WHERE pt.is_analysis = true
GROUP BY pt.id, pt.name
ORDER BY pt.name
""")
analysis_config = cr.fetchall()
# Verificar órdenes de laboratorio
cr.execute("""
SELECT COUNT(*) as total_ordenes,
COUNT(DISTINCT partner_id) as pacientes_distintos,
COUNT(CASE WHEN state = 'sale' THEN 1 END) as confirmadas
FROM sale_order
WHERE is_lab_request = true
""")
orders = cr.fetchone()
# Verificar muestras
cr.execute("""
SELECT COUNT(*) as total_muestras,
COUNT(DISTINCT sample_state) as estados_distintos
FROM stock_lot
WHERE is_lab_sample = true
""")
samples = cr.fetchone()
# Verificar pruebas
cr.execute("""
SELECT COUNT(*) as total_pruebas,
COUNT(CASE WHEN state = 'validated' THEN 1 END) as validadas,
COUNT(CASE WHEN state = 'result_entered' THEN 1 END) as con_resultados
FROM lims_test
""")
tests = cr.fetchone()
# Verificar resultados
cr.execute("""
SELECT COUNT(*) as total_resultados,
COUNT(CASE WHEN is_out_of_range = true THEN 1 END) as fuera_rango,
COUNT(CASE WHEN is_critical = true THEN 1 END) as criticos
FROM lims_result
""")
results = cr.fetchone()
return {
'parametros': {
'total': params[0],
'tipos_distintos': params[1]
},
'rangos': {
'total': ranges[0],
'parametros_con_rangos': ranges[1]
},
'analisis_configurados': [
{'analisis': row[0], 'parametros': row[1]}
for row in analysis_config
],
'ordenes': {
'total': orders[0],
'pacientes_distintos': orders[1],
'confirmadas': orders[2]
},
'muestras': {
'total': samples[0],
'estados_distintos': samples[1]
},
'pruebas': {
'total': tests[0],
'validadas': tests[1],
'con_resultados': tests[2]
},
'resultados': {
'total': results[0],
'fuera_rango': results[1],
'criticos': results[2]
}
}
if __name__ == '__main__':
import sys
sys.path.insert(0, '/usr/lib/python3/dist-packages')
db_name = 'lims_demo'
registry = odoo.registry(db_name)
with registry.cursor() as cr:
data = verify_demo_data(cr)
print("\n" + "="*60)
print("VERIFICACIÓN DE DATOS DE DEMOSTRACIÓN")
print("="*60)
print(f"\n📊 PARÁMETROS DE ANÁLISIS:")
print(f" - Total: {data['parametros']['total']}")
print(f" - Tipos distintos: {data['parametros']['tipos_distintos']}")
print(f"\n📏 RANGOS DE REFERENCIA:")
print(f" - Total: {data['rangos']['total']}")
print(f" - Parámetros con rangos: {data['rangos']['parametros_con_rangos']}")
print(f"\n🧪 ANÁLISIS CONFIGURADOS:")
for item in data['analisis_configurados']:
if item['parametros'] > 0:
print(f" - {item['analisis']}: {item['parametros']} parámetros")
print(f"\n📋 ÓRDENES DE LABORATORIO:")
print(f" - Total: {data['ordenes']['total']}")
print(f" - Pacientes distintos: {data['ordenes']['pacientes_distintos']}")
print(f" - Confirmadas: {data['ordenes']['confirmadas']}")
print(f"\n🧪 MUESTRAS:")
print(f" - Total: {data['muestras']['total']}")
print(f" - Estados distintos: {data['muestras']['estados_distintos']}")
print(f"\n🔬 PRUEBAS:")
print(f" - Total: {data['pruebas']['total']}")
print(f" - Validadas: {data['pruebas']['validadas']}")
print(f" - Con resultados: {data['pruebas']['con_resultados']}")
print(f"\n📊 RESULTADOS:")
print(f" - Total: {data['resultados']['total']}")
print(f" - Fuera de rango: {data['resultados']['fuera_rango']}")
print(f" - Críticos: {data['resultados']['criticos']}")
print("\n" + "="*60)