clinical_laboratory/test/check_patient_data.py
Luis Ernesto Portillo Zaldivar aa8a0571fc feat(#11): Implementar informe PDF de resultados de laboratorio
- Agregar QWeb template para generar PDF profesional con:
  - Encabezado con datos del laboratorio y logo
  - Información completa del paciente y orden
  - Tabla de resultados con indicadores visuales para valores fuera de rango
  - Sección de observaciones y notas
  - Información del validador y fecha de validación

- Agregar campo computado reference_text en parameter_range para mostrar rangos formateados
- Agregar botón "Imprimir Informe de Resultados" en vista de órdenes (solo visible cuando hay pruebas validadas)
- Agregar campo lab_notes en sale.order para observaciones generales
- Reorganizar vista de lims.test con pestañas para mejor UX
- Corregir manejo de employee_ids en el reporte para casos donde no existe el módulo HR
- Incluir scripts de prueba para generar datos de demostración

El informe resalta valores críticos y fuera de rango con colores distintivos,
facilitando la interpretación rápida de los resultados por parte del médico.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-16 18:03:06 -06:00

62 lines
2.0 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Script para verificar los datos de pacientes en las órdenes de laboratorio
"""
import odoo
def check_patient_data(env):
"""Verificar datos de pacientes en órdenes recientes"""
# Buscar órdenes de laboratorio recientes
orders = env['sale.order'].search([
('is_lab_request', '=', True),
('name', 'in', ['S00032', 'S00033'])
], order='id desc', limit=5)
if not orders:
orders = env['sale.order'].search([
('is_lab_request', '=', True)
], order='id desc', limit=5)
print(f"Verificando {len(orders)} órdenes de laboratorio...")
for order in orders:
patient = order.partner_id
print(f"\nOrden: {order.name}")
print(f" Paciente: {patient.name}")
print(f" ID Paciente: {patient.id}")
print(f" Fecha de nacimiento: {patient.birthdate_date}")
print(f" Edad: {patient.age if patient.birthdate_date else 'N/A'}")
print(f" Género: {patient.gender or 'No especificado'}")
print(f" ¿Tiene campo age?: {hasattr(patient, 'age')}")
print(f" ¿Tiene campo birthdate_date?: {hasattr(patient, 'birthdate_date')}")
# Verificar si podemos acceder a los campos
try:
age_value = patient.age
print(f" Valor de age: {age_value}")
except Exception as e:
print(f" Error al acceder a age: {str(e)}")
if __name__ == '__main__':
# Configuración
db_name = 'lims_demo'
# Conectar a Odoo
odoo.tools.config.parse_config(['--database', db_name])
# Obtener el registro de la base de datos
registry = odoo.registry(db_name)
# Crear cursor y environment
with registry.cursor() as cr:
env = odoo.api.Environment(cr, odoo.SUPERUSER_ID, {})
try:
# Verificar datos
check_patient_data(env)
except Exception as e:
print(f"\n❌ Error: {str(e)}")