68 lines
2.5 KiB
Python
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.")
|