Files
rips_manager/debug_paciente.py

68 lines
2.5 KiB
Python

"""
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.")