""" Verifica si el paciente 88272630 aparece en las queries de automation para una fecha dada. Uso: python debug_paciente.py 2026-07-22 """ import sys from app.database import get_connection from app.services.firebird_service import get_firebird_from_config fecha = sys.argv[1] if len(sys.argv) > 1 else "2026-07-22" fecha_ini = f"{fecha} 00:00:00" fecha_fin = f"{fecha} 23:59:59" conn = get_connection() cfg = {r["key"]: r["value"] for r in conn.execute("SELECT * FROM config").fetchall()} conn.close() fb, ok, msg = get_firebird_from_config(cfg) if not ok: print(f"Error Firebird: {msg}") exit(1) print(f"=== Buscando paciente 88272630 para fecha {fecha} ===\n") # 1. Query pacientes regulares ok1, err1, rows = fb.execute_query(""" SELECT DISTINCT p.CODIGO, p.DOCIDENT, p.NOMBRES, p.APELLIDOS FROM PACIENTE p JOIN RECEPCION r ON r.COD_PACIENTE = p.CODIGO WHERE r.FECHA_RECEPCION BETWEEN :fi AND :ff AND r.NUM_FACTURA > 0 AND r.PS_NUM IS NULL AND TRIM(p.DOCIDENT) = '88272630' """, {"fi": fecha_ini, "ff": fecha_fin}) print(f"_SQL_PACIENTES (regulares, PS_NUM IS NULL): {len(rows) if ok1 else 'ERROR: '+err1} resultados") for r in (rows or []): print(f" CODIGO={r['CODIGO']} DOC={r['DOCIDENT']} NOMBRE={r['NOMBRES']} {r['APELLIDOS']}") # 2. Query pacientes EPS (via PRESSERV_DIAN) ok2, err2, rows2 = fb.execute_query(""" SELECT DISTINCT p.CODIGO, p.DOCIDENT, p.NOMBRES, p.APELLIDOS FROM PACIENTE p JOIN RECEPCION r ON r.COD_PACIENTE = p.CODIGO JOIN PRESSERV_DIAN ps ON ps.ID_RECEP = r.IDRECEPCION WHERE r.FECHA_RECEPCION BETWEEN :fi AND :ff AND (ps.PS_ANULADA IS NULL OR ps.PS_ANULADA = 'F') AND TRIM(p.DOCIDENT) = '88272630' """, {"fi": fecha_ini, "ff": fecha_fin}) print(f"\n_SQL_PACIENTES_EPS (via PRESSERV_DIAN): {len(rows2) if ok2 else 'ERROR: '+err2} resultados") for r in (rows2 or []): print(f" CODIGO={r['CODIGO']} DOC={r['DOCIDENT']} NOMBRE={r['NOMBRES']} {r['APELLIDOS']}") # 3. Query preserv ok3, err3, rows3 = fb.execute_query(""" SELECT ps.ID_PS, ps.PS_NUMERO, ps.PS_PREFIJO, r.COD_PACIENTE, p.DOCIDENT FROM PRESSERV_DIAN ps JOIN RECEPCION r ON r.IDRECEPCION = ps.ID_RECEP JOIN PACIENTE p ON p.CODIGO = r.COD_PACIENTE WHERE r.FECHA_RECEPCION BETWEEN :fi AND :ff AND (ps.PS_ANULADA IS NULL OR ps.PS_ANULADA = 'F') AND TRIM(p.DOCIDENT) = '88272630' """, {"fi": fecha_ini, "ff": fecha_fin}) print(f"\n_SQL_PRESERV (pre-servicios): {len(rows3) if ok3 else 'ERROR: '+err3} resultados") for r in (rows3 or []): print(f" ID_PS={r['ID_PS']} PREFIJO={r['PS_PREFIJO']} NUM={r['PS_NUMERO']} COD_PAC={r['COD_PACIENTE']}") fb.disconnect() print("\nFin.")