Compare commits
13
Commits
742896704c
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ac762345e | ||
|
|
b6b3d1416b | ||
|
|
d1fc2186eb | ||
|
|
db7a6a35bc | ||
|
|
421441a87a | ||
|
|
98db27209c | ||
|
|
55a5f6b348 | ||
|
|
a33b1bab46 | ||
|
|
86490daa8b | ||
|
|
b05075c900 | ||
|
|
f682652cd6 | ||
|
|
0b3dda43f9 | ||
|
|
23e37f8918 |
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,6 @@
|
|||||||
from flask import Flask, render_template, jsonify, Response
|
from flask import Flask, render_template, jsonify, Response
|
||||||
from conexion import get_connection
|
from conexion import get_connection
|
||||||
|
from conexion import init_pool
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
import os
|
import os
|
||||||
|
|
||||||
@@ -8,12 +9,15 @@ load_dotenv()
|
|||||||
ip = os.getenv("IPSERVER")
|
ip = os.getenv("IPSERVER")
|
||||||
puerto = os.getenv("PORT")
|
puerto = os.getenv("PORT")
|
||||||
modo = os.getenv("MODE", "1")
|
modo = os.getenv("MODE", "1")
|
||||||
|
no_estado1 = os.getenv("NESTADO1","0")
|
||||||
|
no_estado2 = os.getenv("NESTADO2","0")
|
||||||
monitor1 = os.getenv("MONITOR_ID_1")
|
monitor1 = os.getenv("MONITOR_ID_1")
|
||||||
monitor2 = os.getenv("MONITOR_ID_2")
|
monitor2 = os.getenv("MONITOR_ID_2")
|
||||||
es_quirofano_1 = os.getenv("IS_QUIRO_1")
|
es_quirofano_1 = os.getenv("IS_QUIRO_1")
|
||||||
es_quirofano_2 = os.getenv("IS_QUIRO_2")
|
es_quirofano_2 = os.getenv("IS_QUIRO_2")
|
||||||
tema = os.getenv("THEME", "csm")
|
tema = os.getenv("THEME", "csm")
|
||||||
extender = os.getenv("EXTEND")
|
extender = os.getenv("EXTEND")
|
||||||
|
interval_refresh = os.getenv("TIME_REFRESH", 10000)
|
||||||
query = ""
|
query = ""
|
||||||
tema_styles = {
|
tema_styles = {
|
||||||
"csm": {
|
"csm": {
|
||||||
@@ -27,27 +31,28 @@ tema_styles = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
init_pool()
|
||||||
|
|
||||||
def obtener_turnos(mon_id, qry):
|
def obtener_turnos(mon_id, qry):
|
||||||
conn = get_connection()
|
conn = None
|
||||||
if not conn:
|
|
||||||
return []
|
|
||||||
try:
|
try:
|
||||||
|
conn = get_connection()
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
cursor.execute(qry,{'monitor':mon_id})
|
cursor.execute(qry,{'monitor':mon_id})
|
||||||
datos = cursor.fetchall()
|
datos = cursor.fetchall()
|
||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
|
||||||
return datos
|
return datos
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error al conectar: {e}")
|
print(f"Error al conectar: {e}")
|
||||||
return None
|
return None
|
||||||
|
finally:
|
||||||
|
if conn:
|
||||||
|
conn.close()
|
||||||
|
|
||||||
def obtener_pie(mon_id1, mon_id2):
|
def obtener_pie(mon_id1, mon_id2):
|
||||||
conn = get_connection()
|
conn = None
|
||||||
if not conn:
|
|
||||||
return []
|
|
||||||
try:
|
try:
|
||||||
|
conn = get_connection()
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
if modo == "2":
|
if modo == "2":
|
||||||
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})
|
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})
|
||||||
@@ -57,40 +62,55 @@ def obtener_pie(mon_id1, mon_id2):
|
|||||||
mensajes = [fila[0] for fila in cursor.fetchall()]
|
mensajes = [fila[0] for fila in cursor.fetchall()]
|
||||||
mensaje_final = " ".join(mensajes)
|
mensaje_final = " ".join(mensajes)
|
||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
print("Obteniendo el pie bien...")
|
||||||
return mensaje_final
|
return mensaje_final
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error al conectar: {e}")
|
print(f"Error al conectar: {e}")
|
||||||
return None
|
return None
|
||||||
|
finally:
|
||||||
|
if conn:
|
||||||
|
conn.close()
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
tema_colores = tema_styles.get(tema, tema_styles["csm"])
|
tema_colores = tema_styles.get(tema, tema_styles["csm"])
|
||||||
return render_template("index.html", mode=modo, theme=tema, theme_colors=tema_colores, quiro1=es_quirofano_1, quiro2=es_quirofano_2)
|
return render_template("index.html", mode=modo, theme=tema, theme_colors=tema_colores, quiro1=es_quirofano_1, quiro2=es_quirofano_2, refresh_interval = interval_refresh)
|
||||||
|
|
||||||
@app.route('/api/datos1')
|
@app.route('/api/datos1')
|
||||||
def api_datos1():
|
def api_datos1():
|
||||||
|
|
||||||
|
if no_estado1 == "1":
|
||||||
|
cons_estado = "SELECT * FROM (SELECT D.*, ROW_NUMBER () OVER (PARTITION BY ESTANCIA_ID ORDER BY RN) AS ORDEN FROM (SELECT ROW_NUMBER () OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor UNION ALL SELECT 1 AS RN, 1 AS ESTADO_ID, ESTANCIA.* FROM CSMK_ESTANCIA ESTANCIA WHERE ESTANCIA.MONITOR_ID = :monitor) D) WHERE ORDEN = 1"
|
||||||
|
else:
|
||||||
|
cons_estado = "SELECT ROW_NUMBER () OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor"
|
||||||
|
|
||||||
if modo == "2" and extender =="1":
|
if modo == "2" and extender =="1":
|
||||||
query = "WITH BASE AS (SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL (CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM (SELECT ROW_NUMBER () OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor) CONS_ESTADO LEFT JOIN (SELECT t.* FROM (SELECT TM.*, ROW_NUMBER () OVER (PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1, 2) AND TM.MONITOR_ID = :monitor) t WHERE t.RN = 1) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1), numerada AS (SELECT b.*, ROW_NUMBER () OVER (ORDER BY b.CONSULTA ASC) AS rn_global, COUNT (*) OVER () AS total FROM base b) SELECT CONSULTA, ESTADO_CONSULTA, TURNO, ESTADO_TURNO FROM numerada WHERE rn_global <= total / 2 ORDER BY rn_global"
|
query = "WITH BASE AS (SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL (CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM ({cons_estado}) CONS_ESTADO LEFT JOIN (SELECT t.* FROM (SELECT TM.*, ROW_NUMBER () OVER (PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1, 2) AND TM.MONITOR_ID = :monitor) t WHERE t.RN = 1) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1), numerada AS (SELECT b.*, ROW_NUMBER () OVER (ORDER BY b.CONSULTA ASC) AS rn_global, COUNT (*) OVER () AS total FROM base b) SELECT CONSULTA, ESTADO_CONSULTA, TURNO, ESTADO_TURNO FROM numerada WHERE rn_global <= total / 2 ORDER BY rn_global".format(cons_estado=cons_estado)
|
||||||
else:
|
else:
|
||||||
if es_quirofano_1 == "1":
|
if es_quirofano_1 == "1":
|
||||||
query = "SELECT QUIROFANOS.CODIGO_INTERNO AS CONSULTA, 1 AS ESTADO_CONSULTA, NVL (TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM (SELECT DISTINCT(CSMK_TURNO.CODIGO_PERSONAL), FP.CODIGO_INTERNO FROM CSMK_TURNO, NOVAHIS.FPERSONA FP WHERE ESTANCIA_ID = 639 AND FECHA = TRUNC(SYSDATE) AND CSMK_TURNO.CODIGO_PERSONAL = FP.CODIGO_PERSONAL) QUIROFANOS LEFT JOIN (SELECT t.* FROM (SELECT CT.CODIGO_PERSONAL, CTM.*, ROW_NUMBER () OVER (PARTITION BY CT.CODIGO_PERSONAL ORDER BY CTM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON CTM, CSMK_TURNO CT WHERE CTM.FECHA = TRUNC (SYSDATE) AND CTM.ESTADO_ID IN (1, 2) AND CTM.MONITOR_ID = :monitor AND CTM.TURNO_ID = CT.TURNO_ID) t WHERE t.RN = 1) TURNOS ON QUIROFANOS.CODIGO_PERSONAL = TURNOS.CODIGO_PERSONAL ORDER BY QUIROFANOS.CODIGO_INTERNO ASC"
|
query = "SELECT QUIROFANOS.CODIGO_INTERNO AS CONSULTA, 1 AS ESTADO_CONSULTA, NVL (TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM (SELECT DISTINCT(CSMK_TURNO.CODIGO_PERSONAL), FP.CODIGO_INTERNO FROM CSMK_TURNO, NOVAHIS.FPERSONA FP WHERE ESTANCIA_ID = 639 AND FECHA = TRUNC(SYSDATE) AND CSMK_TURNO.CODIGO_PERSONAL = FP.CODIGO_PERSONAL) QUIROFANOS LEFT JOIN (SELECT t.* FROM (SELECT CT.CODIGO_PERSONAL, CTM.*, ROW_NUMBER () OVER (PARTITION BY CT.CODIGO_PERSONAL ORDER BY CTM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON CTM, CSMK_TURNO CT WHERE CTM.FECHA = TRUNC (SYSDATE) AND CTM.ESTADO_ID IN (1, 2) AND CTM.MONITOR_ID = :monitor AND CTM.TURNO_ID = CT.TURNO_ID) t WHERE t.RN = 1) TURNOS ON QUIROFANOS.CODIGO_PERSONAL = TURNOS.CODIGO_PERSONAL ORDER BY QUIROFANOS.CODIGO_INTERNO ASC"
|
||||||
else:
|
else:
|
||||||
query ="SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL(CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL(CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM ( SELECT ROW_NUMBER () OVER ( PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC ) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor ) CONS_ESTADO LEFT JOIN ( SELECT t.* FROM ( SELECT TM.*, ROW_NUMBER() OVER ( PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC ) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1,2) AND TM.MONITOR_ID = :monitor ) t WHERE t.RN = 1 ) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1 ORDER BY CONSULTA ASC"
|
query ="SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL(CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL(CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM ({cons_estado}) CONS_ESTADO LEFT JOIN ( SELECT t.* FROM ( SELECT TM.*, ROW_NUMBER() OVER ( PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC ) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1,2) AND TM.MONITOR_ID = :monitor ) t WHERE t.RN = 1 ) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1 ORDER BY CONSULTA ASC".format(cons_estado=cons_estado)
|
||||||
filas = obtener_turnos(monitor1, query)
|
filas = obtener_turnos(monitor1, query)
|
||||||
return jsonify(filas)
|
return jsonify(filas)
|
||||||
|
|
||||||
@app.route('/api/datos2')
|
@app.route('/api/datos2')
|
||||||
def api_datos2():
|
def api_datos2():
|
||||||
global monitor2
|
global monitor2
|
||||||
|
|
||||||
|
if no_estado2 == "1":
|
||||||
|
cons_estado = "SELECT * FROM (SELECT D.*, ROW_NUMBER () OVER (PARTITION BY ESTANCIA_ID ORDER BY RN) AS ORDEN FROM (SELECT ROW_NUMBER () OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor UNION ALL SELECT 1 AS RN, 1 AS ESTADO_ID, ESTANCIA.* FROM CSMK_ESTANCIA ESTANCIA WHERE ESTANCIA.MONITOR_ID = :monitor) D) WHERE ORDEN = 1"
|
||||||
|
else:
|
||||||
|
cons_estado = "SELECT ROW_NUMBER () OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor"
|
||||||
|
|
||||||
if modo == "2" and extender =="1":
|
if modo == "2" and extender =="1":
|
||||||
monitor2 = monitor1
|
monitor2 = monitor1
|
||||||
query = "WITH BASE AS (SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL (CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM (SELECT ROW_NUMBER () OVER (PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor) CONS_ESTADO LEFT JOIN (SELECT t.* FROM (SELECT TM.*, ROW_NUMBER () OVER (PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1, 2) AND TM.MONITOR_ID = :monitor) t WHERE t.RN = 1) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1), numerada AS (SELECT b.*, ROW_NUMBER () OVER (ORDER BY b.CONSULTA ASC) AS rn_global, COUNT (*) OVER () AS total FROM base b) SELECT CONSULTA, ESTADO_CONSULTA, TURNO, ESTADO_TURNO FROM numerada WHERE rn_global > total / 2 ORDER BY rn_global"
|
query = "WITH BASE AS (SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL (CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM ({cons_estado}) CONS_ESTADO LEFT JOIN (SELECT t.* FROM (SELECT TM.*, ROW_NUMBER () OVER (PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1, 2) AND TM.MONITOR_ID = :monitor) t WHERE t.RN = 1) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1), numerada AS (SELECT b.*, ROW_NUMBER () OVER (ORDER BY b.CONSULTA ASC) AS rn_global, COUNT (*) OVER () AS total FROM base b) SELECT CONSULTA, ESTADO_CONSULTA, TURNO, ESTADO_TURNO FROM numerada WHERE rn_global > total / 2 ORDER BY rn_global".format(cons_estado=cons_estado)
|
||||||
else:
|
else:
|
||||||
if es_quirofano_2 == "1":
|
if es_quirofano_2 == "1":
|
||||||
query = "SELECT QUIROFANOS.CODIGO_INTERNO AS CONSULTA, 1 AS ESTADO_CONSULTA, NVL (TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM (SELECT DISTINCT(CSMK_TURNO.CODIGO_PERSONAL), FP.CODIGO_INTERNO FROM CSMK_TURNO, NOVAHIS.FPERSONA FP WHERE ESTANCIA_ID = 639 AND FECHA = TRUNC(SYSDATE) AND CSMK_TURNO.CODIGO_PERSONAL = FP.CODIGO_PERSONAL) QUIROFANOS LEFT JOIN (SELECT t.* FROM (SELECT CT.CODIGO_PERSONAL, CTM.*, ROW_NUMBER () OVER (PARTITION BY CT.CODIGO_PERSONAL ORDER BY CTM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON CTM, CSMK_TURNO CT WHERE CTM.FECHA = TRUNC (SYSDATE) AND CTM.ESTADO_ID IN (1, 2) AND CTM.MONITOR_ID = :monitor AND CTM.TURNO_ID = CT.TURNO_ID) t WHERE t.RN = 1) TURNOS ON QUIROFANOS.CODIGO_PERSONAL = TURNOS.CODIGO_PERSONAL ORDER BY QUIROFANOS.CODIGO_INTERNO ASC"
|
query = "SELECT QUIROFANOS.CODIGO_INTERNO AS CONSULTA, 1 AS ESTADO_CONSULTA, NVL (TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL (TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM (SELECT DISTINCT(CSMK_TURNO.CODIGO_PERSONAL), FP.CODIGO_INTERNO FROM CSMK_TURNO, NOVAHIS.FPERSONA FP WHERE ESTANCIA_ID = 639 AND FECHA = TRUNC(SYSDATE) AND CSMK_TURNO.CODIGO_PERSONAL = FP.CODIGO_PERSONAL) QUIROFANOS LEFT JOIN (SELECT t.* FROM (SELECT CT.CODIGO_PERSONAL, CTM.*, ROW_NUMBER () OVER (PARTITION BY CT.CODIGO_PERSONAL ORDER BY CTM.TURNO_MON_ID DESC) AS RN FROM CSMK_TURNO_MON CTM, CSMK_TURNO CT WHERE CTM.FECHA = TRUNC (SYSDATE) AND CTM.ESTADO_ID IN (1, 2) AND CTM.MONITOR_ID = :monitor AND CTM.TURNO_ID = CT.TURNO_ID) t WHERE t.RN = 1) TURNOS ON QUIROFANOS.CODIGO_PERSONAL = TURNOS.CODIGO_PERSONAL ORDER BY QUIROFANOS.CODIGO_INTERNO ASC"
|
||||||
else:
|
else:
|
||||||
query ="SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL(CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL(CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM ( SELECT ROW_NUMBER () OVER ( PARTITION BY ESTADO.ESTANCIA_ID ORDER BY ESTADO.CONSULTA_ESTADO_ID DESC ) AS RN, ESTADO.ESTADO_ID, ESTANCIA.* FROM CSMK_CONSULTA_ESTADO ESTADO JOIN CSMK_ESTANCIA ESTANCIA ON ESTADO.ESTANCIA_ID = ESTANCIA.ESTANCIA_ID WHERE ESTADO.FECHA = TRUNC (SYSDATE) AND ESTANCIA.MONITOR_ID = :monitor ) CONS_ESTADO LEFT JOIN ( SELECT t.* FROM ( SELECT TM.*, ROW_NUMBER() OVER ( PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC ) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1,2) AND TM.MONITOR_ID = :monitor ) t WHERE t.RN = 1 ) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1 ORDER BY CONSULTA ASC"
|
query ="SELECT CONS_ESTADO.CODIGO_IMPRESION AS CONSULTA, CONS_ESTADO.ESTADO_ID AS ESTADO_CONSULTA, NVL(CONS_TURNOS.CODIGO_TURNO, NULL) AS TURNO, NVL(CONS_TURNOS.ESTADO_ID, 2) AS ESTADO_TURNO FROM ({cons_estado}) CONS_ESTADO LEFT JOIN ( SELECT t.* FROM ( SELECT TM.*, ROW_NUMBER() OVER ( PARTITION BY TM.ESTANCIA_ID ORDER BY TM.TURNO_MON_ID DESC ) AS RN FROM CSMK_TURNO_MON TM WHERE TM.FECHA = TRUNC (SYSDATE) AND TM.ESTADO_ID IN (1,2) AND TM.MONITOR_ID = :monitor ) t WHERE t.RN = 1 ) CONS_TURNOS ON CONS_ESTADO.ESTANCIA_ID = CONS_TURNOS.ESTANCIA_ID AND CONS_ESTADO.MONITOR_ID = CONS_TURNOS.MONITOR_ID WHERE CONS_ESTADO.RN = 1 ORDER BY CONSULTA ASC".format(cons_estado=cons_estado)
|
||||||
filas = obtener_turnos(monitor2, query)
|
filas = obtener_turnos(monitor2, query)
|
||||||
return jsonify(filas)
|
return jsonify(filas)
|
||||||
|
|
||||||
|
|||||||
+43
-20
@@ -1,27 +1,50 @@
|
|||||||
import os
|
import os
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
#import cx_Oracle
|
import oracledb
|
||||||
import oracledb
|
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
oracledb.init_oracle_client(lib_dir=os.getenv("ORA_DIRECTORY"))
|
# Inicializar el cliente Oracle (Solo una vez al iniciar la app)
|
||||||
|
oracledb.init_oracle_client(lib_dir=os.getenv("ORA_DIRECTORY"))
|
||||||
|
|
||||||
|
# Variable global para almacenar el pool
|
||||||
|
db_pool = None
|
||||||
|
|
||||||
|
def init_pool():
|
||||||
|
"""
|
||||||
|
Esta función debe llamarse una sola vez al arrancar el servidor (ej. en el main)
|
||||||
|
"""
|
||||||
|
global db_pool
|
||||||
|
try:
|
||||||
|
user = os.getenv("DB_USER")
|
||||||
|
password = os.getenv("DB_PASSWORD")
|
||||||
|
host = os.getenv("DB_HOST")
|
||||||
|
port = os.getenv("DB_PORT", "1521")
|
||||||
|
sid = os.getenv("DB_SID")
|
||||||
|
|
||||||
|
dsn = oracledb.makedsn(host, port, sid=sid)
|
||||||
|
|
||||||
|
# Creamos el pool
|
||||||
|
db_pool = oracledb.create_pool(
|
||||||
|
user=user,
|
||||||
|
password=password,
|
||||||
|
dsn=dsn,
|
||||||
|
min=2, # Conexiones mínimas siempre abiertas
|
||||||
|
max=10, # Máximo de conexiones simultáneas permitidas
|
||||||
|
increment=1
|
||||||
|
)
|
||||||
|
print("Pool de conexiones creado exitosamente")
|
||||||
|
except oracledb.DatabaseError as e:
|
||||||
|
print(f"Error al crear el pool: {e}")
|
||||||
|
raise
|
||||||
|
|
||||||
def get_connection():
|
def get_connection():
|
||||||
|
"""
|
||||||
|
Obtiene una conexión del pool.
|
||||||
|
IMPORTANTE: El que llama a esta función DEBE devolver la conexión al pool.
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
user = os.getenv("DB_USER")
|
return db_pool.acquire()
|
||||||
password = os.getenv("DB_PASSWORD")
|
|
||||||
host = os.getenv("DB_HOST")
|
|
||||||
port = os.getenv("DB_PORT", "1521")
|
|
||||||
sid = os.getenv("DB_SID")
|
|
||||||
|
|
||||||
#dsn = cx_Oracle.makedsn(host, port, sid=sid)
|
|
||||||
dsn = oracledb.makedsn(host, port, sid=sid)
|
|
||||||
|
|
||||||
#connection = cx_Oracle.connect(user=user, password=password, dsn=dsn)
|
|
||||||
connection = oracledb.connect(user=user, password=password, dsn=dsn)
|
|
||||||
|
|
||||||
return connection
|
|
||||||
except oracledb.DatabaseError as e:
|
except oracledb.DatabaseError as e:
|
||||||
print(f"Error al conectar a la base de datos: {e}")
|
print(f"Error al adquirir conexión del pool: {e}")
|
||||||
raise
|
raise
|
||||||
+4
-1
@@ -11,5 +11,8 @@ THEME="csm"
|
|||||||
MONITOR_ID_1=0
|
MONITOR_ID_1=0
|
||||||
MONITOR_ID_2=0
|
MONITOR_ID_2=0
|
||||||
EXTEND=0
|
EXTEND=0
|
||||||
|
NESTADO1=0
|
||||||
|
NESTADO2=1
|
||||||
IS_QUIRO_1=0
|
IS_QUIRO_1=0
|
||||||
IS_QUIRO_2=0
|
IS_QUIRO_2=0
|
||||||
|
TIME_REFRESH=10000
|
||||||
@@ -34,6 +34,7 @@ function cargarTabla(endpoint, tablaId, esQuiro) {
|
|||||||
|
|
||||||
const td2 = document.createElement("td");
|
const td2 = document.createElement("td");
|
||||||
const estadoConsulta = fila[1];
|
const estadoConsulta = fila[1];
|
||||||
|
const turno = fila[2];
|
||||||
const estadoTurno = fila[3];
|
const estadoTurno = fila[3];
|
||||||
|
|
||||||
if (estadoConsulta == 0) {
|
if (estadoConsulta == 0) {
|
||||||
@@ -100,12 +101,15 @@ function cargarTabla(endpoint, tablaId, esQuiro) {
|
|||||||
td2.className = `border bg-[#a9a9a9] align-middle ${sizeClass}`;
|
td2.className = `border bg-[#a9a9a9] align-middle ${sizeClass}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (estadoAnterior[id] === 2 && estadoTurno === 1) {
|
if (
|
||||||
|
(estadoAnterior[id]?.estado !== 1 && estadoTurno === 1) ||
|
||||||
|
(estadoAnterior[id]?.turno !== turno && estadoTurno === 1)
|
||||||
|
) {
|
||||||
sonido.currentTime = 0;
|
sonido.currentTime = 0;
|
||||||
sonido.play().catch(err => console.warn("No se pudo reproducir el sonido: ", err));
|
sonido.play().catch(err => console.warn("No se pudo reproducir el sonido: ", err));
|
||||||
}
|
}
|
||||||
|
|
||||||
estadoAnterior[id] = estadoTurno;
|
estadoAnterior[id] = {estado: estadoTurno, turno: turno};
|
||||||
tr.appendChild(td2);
|
tr.appendChild(td2);
|
||||||
tbody.appendChild(tr);
|
tbody.appendChild(tr);
|
||||||
});
|
});
|
||||||
@@ -139,5 +143,5 @@ function actualizarTablas() {
|
|||||||
|
|
||||||
//cargarFooter();
|
//cargarFooter();
|
||||||
actualizarTablas();
|
actualizarTablas();
|
||||||
setInterval(actualizarTablas, 20000);
|
setInterval(actualizarTablas, window.refreshInterval);
|
||||||
//setInterval(cargarFooter, 45000);
|
//setInterval(cargarFooter, 45000);
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
<script>
|
<script>
|
||||||
const quiro1 = "{{ quiro1 }}";
|
const quiro1 = "{{ quiro1 }}";
|
||||||
const quiro2 = "{{ quiro2 }}";
|
const quiro2 = "{{ quiro2 }}";
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<script src="{{ url_for('static', filename='js/utils.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/utils.js') }}"></script>
|
||||||
<script src="{{ url_for('static', filename='js/scripts.js') }}" defer></script>
|
<script src="{{ url_for('static', filename='js/scripts.js') }}" defer></script>
|
||||||
@@ -95,4 +96,5 @@
|
|||||||
</html>
|
</html>
|
||||||
<script>
|
<script>
|
||||||
window.themeColors = JSON.parse(document.getElementById('theme-data').textContent.trim());
|
window.themeColors = JSON.parse(document.getElementById('theme-data').textContent.trim());
|
||||||
|
window.refreshInterval = {{ refresh_interval | safe }};
|
||||||
</script>
|
</script>
|
||||||
Reference in New Issue
Block a user