diff --git a/debug_paciente.py b/debug_paciente.py new file mode 100644 index 0000000..e3cece9 --- /dev/null +++ b/debug_paciente.py @@ -0,0 +1,67 @@ +""" +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.")