from flask import Flask, render_template, jsonify, Response from conexion import get_connection from dotenv import load_dotenv import os load_dotenv() puerto = os.getenv("PORT") monitor1 = os.getenv("MONITOR_ID_1") monitor2 = os.getenv("MONITOR_ID_2") app = Flask(__name__) def obtener_turnos(mon_id): conn = get_connection() if not conn: return [] try: cursor = conn.cursor() cursor.execute("SELECT CONS_ESTAD.CODIGO_IMPRESION CONSULTA, CONS_ESTAD.ESTADO_ID ESTADO_CONSULTA, TM.CODIGO_TURNO TURNO, TM.ESTADO_ID ESTADO_TURNO FROM CSMK_TURNO_MON TM, (SELECT ROW_NUMBER() OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO, CSMK_ESTANCIA ESTANCIA WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID AND ESTANCIA.MONITOR_ID = :monitor ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) CONS_ESTAD WHERE CONS_ESTAD.RN = 1 AND TM.ESTANCIA_ID = CONS_ESTAD.ESTANCIA_ID AND TM.MONITOR_ID = CONS_ESTAD.MONITOR_ID AND TM.ESTADO_ID IN (1,2) AND TM.FECHA = TRUNC(SYSDATE) ORDER BY CONSULTA ASC",{'monitor':mon_id}) datos = cursor.fetchall() cursor.close() conn.close() return datos except Exception as e: print(f"Error al conectar: {e}") return None def obtener_pie(mon_id1, mon_id2): conn = get_connection() if not conn: return [] try: cursor = conn.cursor() cursor.execute("SELECT MENSAJE FROM CSMK_MONITOR_PIE WHERE MONITOR_ID IN (:monitor, :monitor2) AND INACTIVO = 0 ORDER BY MONITOR_ID, MONITOR_PIE_ID ASC",{'monitor':mon_id1, 'monitor2':mon_id2}) mensajes = [fila[0] for fila in cursor.fetchall()] mensaje_final = "       ".join(mensajes) cursor.close() conn.close() return mensaje_final except Exception as e: print(f"Error al conectar: {e}") return None @app.route('/') def index(): return render_template("index.html") @app.route('/api/datos1') def api_datos1(): filas = obtener_turnos(monitor1) return jsonify(filas) @app.route('/api/datos2') def api_datos2(): filas = obtener_turnos(monitor2) return jsonify(filas) @app.route('/api/footer') def api_pie(): mensaje = obtener_pie(monitor1, monitor2) return Response(mensaje, mimetype='text/plain') if __name__ == '__main__': app.run(debug=True,host='192.168.82.156', port=puerto)