Query($sql); if ( $rs ) { $rs = $GLOBALS['dbSQL']->getAll(); if(intval($rs[0]["total"])>=1) { return true; // Hay un proceso activo de envio de mensajes } } return false; //No hay un preoceso activo de envio de mensajes } function openMessagesWpSDQProgress() { $sql = " INSERT INTO [dbo].[mensajes_in_process] (msgprc_estado,msgprc_tstamp_init,msgprc_type) VALUES (NULL,GETDATE(),'WPSDQ')"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function closeMessagesWpSDQProgress() { $sql = " UPDATE [dbo].[mensajes_in_process] SET msgprc_estado = 1, msgprc_tstamp = GETDATE() WHERE msgprc_estado IS NULL AND msgprc_type = 'WPSDQ'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function processCmpWhatsappQueueSDQ($horas,$flagRecordatorio=false) { //setTest(); //closeMessagesWpSDQProgress(); if(!isMessagesWpSDQInProgress()) //if(true) { //Set in progress try { $debug='<>'."\n"; openMessagesWpSDQProgress(); $lstMenssagesQueue = array(); $lstMesagesFlowQueue = array(); $flagPodUso=false; $contadorError=0; $fecha = date("Y-m-d"); $fechaProcesar = date('Y-m-d', strtotime($fecha. ' + '.($horas/24).' days')); //DESTINATARIOS A PROCESAR if(!$flagRecordatorio) { $sql = " SELECT TOP 3 tur_numero ,c.cli_tel as telefono ,c.cli_nombre as nombre, c.cli_dni as doc ,m.med_nombre AS Med ,tt.tit_abrev AS Tit ,DATEPART(dw,tur_fecha) as diaSemana ,DATEPART(dd,tur_fecha) as diaFecha ,DATEPART(mm,tur_fecha) as mesFecha ,t.tur_hora AS Hora ,ISNULL(t.tur_confirmado,0) as confirmado FROM dbo.turnos as t INNER JOIN dbo.clientes as c ON c.cli_codigo = t.cli_codigo INNER JOIN dbo.medicos as m ON m.med_codigo = t.med_codigo INNER JOIN dbo.tbl_titulos tt ON tt.tit_codigo = m.tit_codigo WHERE t.cli_codigo > 1 AND t.turRecoWht = 0 AND FORMAT (t.tur_fecha, 'yyyy-MM-dd')= '".$fechaProcesar."'"; //and t.cli_codigo in (181841,142333,145719,132292) } else { $sql = " SELECT TOP 3 tur_numero ,c.cli_tel as telefono ,c.cli_nombre as nombre, c.cli_dni as doc ,m.med_nombre AS Med ,tt.tit_abrev AS Tit ,DATEPART(dw,tur_fecha) as diaSemana ,DATEPART(dd,tur_fecha) as diaFecha ,DATEPART(mm,tur_fecha) as mesFecha ,t.tur_hora AS Hora ,ISNULL(t.tur_confirmado,0) as confirmado FROM dbo.turnos as t INNER JOIN dbo.clientes as c ON c.cli_codigo = t.cli_codigo INNER JOIN dbo.medicos as m ON m.med_codigo = t.med_codigo INNER JOIN dbo.tbl_titulos tt ON tt.tit_codigo = m.tit_codigo WHERE t.cli_codigo > 1 AND t.turRecoWht = 1 AND ISNULL(t.tur_confirmado,0) = 1 AND t.turRecoConfirm = 0 AND FORMAT (t.tur_fecha, 'yyyy-MM-dd')= '".$fechaProcesar."'"; //and t.cli_codigo in(142333) } //,145719,132292 //and t.cli_codigo in (181841,142333,145719,132292) //print_r($sql);closeMessagesWpSDQProgress();die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $turnos = $GLOBALS['dbSQL']->getAll(); $cantidadTurnos = count($turnos); $debug.=">> TURNOS A PROCESAR[".$cantidadTurnos."]"."\n"; $debug.=$sql."\n"; if( $cantidadTurnos > 0 ) { $conta=0; $saldo=false; $flagactivo =false; //------------------------------------- $indexPod = 0; $counterPods = 0; $podsActivos = getPodsBalanceador(); $totalPods = count($podsActivos); // print_r("-----------------");print_r("\n"); // print_r("POD TOTAL[".totalPods."]");print_r("\n"); // print_r($podsActivos);print_r("\n"); // print_r("-----------------");print_r("\n"); // die; $debug.=">>POD TOTAL[".$totalPods."]"."\n"; require './templatesWhatsappSDQ.php'; for($i=0;$i<$cantidadTurnos;$i++) { $turCod = $turnos[$i]["tur_numero"]; $continue=true; $telefono = str_replace(" ","",trim($turnos[$i]["telefono"])); if( $telefono ) { $flagTelInvalido=true; $continuetel=false; if(substr($telefono,0,1)==="+") { $tmp = substr($telefono,1); if(is_numeric($tmp)) { $continuetel=true; } } else { if(is_numeric($telefono)) { $continuetel=true; } } if($continuetel) { if(strlen($telefono)>=9 && strlen($telefono)<=13) { if(!$flagRecordatorio) { $template = $GLOBALS['TEMPLATES_WHTASAPP']["SDQ"]["CONFIRMACION48HR"]; } else { $template = $GLOBALS['TEMPLATES_WHTASAPP']["SDQ"]["RECORDATORIO48HR"]; } $mensaje = $template; $turCod = $turnos[$i]["tur_numero"]; $fechaDiaSem = $turnos[$i]["diaSemana"]; switch(intval($fechaDiaSem)) { case 0:{$diaS = 'lunes';}break; case 1:{$diaS = 'martes';}break; case 2:{$diaS = 'miércoles';}break; case 3:{$diaS = 'jueves';}break; case 4:{$diaS = 'viernes';}break; case 5:{$diaS = 'sábado';}break; case 6:{$diaS = 'domingo';}break; } $fechaDia = $turnos[$i]["diaFecha"]; $fechaMes = $turnos[$i]["mesFecha"]; switch(intval($fechaMes)) { case 1:{$mes = 'enero';}break; case 2:{$mes = 'febrero';}break; case 3:{$mes = 'marzo';}break; case 4:{$mes = 'abril';}break; case 5:{$mes = 'mayo';}break; case 6:{$mes = 'junio';}break; case 7:{$mes = 'julio';}break; case 8:{$mes = 'agosto';}break; case 9:{$mes = 'septiembre';}break; case 10:{$mes = 'octubre';}break; case 11:{$mes = 'noviembre';}break; case 12:{$mes = 'diciembre';}break; } //$fechaTurno = $diaS." ".$fechaDia." de ".$mes; $fechaTurno = " ".$fechaDia." de ".$mes; $hora = $turnos[$i]["Hora"]; if(strlen($hora)<4) { $hora = '0'.substr($hora,0,1).':'.substr($hora,1,2); } else { $hora = substr($hora,0,2).':'.substr($hora,2,2); } $medico = $turnos[$i]["Tit"]." ".trim($turnos[$i]["Med"]); $mensaje = str_replace("{{CLIENTE}}",trim($turnos[$i]["nombre"]),$mensaje); $mensaje = str_replace("{{FECHA}}",$fechaTurno,$mensaje); $mensaje = str_replace("{{HORA}}",$hora,$mensaje); $mensaje = str_replace("{{MEDICO}}",$medico,$mensaje); $telefono = getCmpNroWhatsapp($telefono); $rowId = $telefono; $destino = getNumberFormat($telefono); if(strlen($destino)==13) { //print_r("ARCHIVO [".$campanias[$i]["cmp_file"]."]");print_r("\n"); $x = array_push($lstMenssagesQueue, array( "men_id" => $rowId ,"msg" => base64_encode($mensaje) ,"destiny" => $destino //getNumberFormat($telefono) ,"customer" => $GLOBALS['WS_WHATSAPP_CUSTOMER'] ,"k" => $GLOBALS['WS_WHATSAPP_KEY'] ,"token" => "00000000000000000000" //$row["token"] ,"flagFlowCreated"=>false )); $y = array_push($lstMesagesFlowQueue, array( "tid" => $turCod ,"destiny" => $destino //getNumberFormat($telefono) ,"doc" => $turnos[$i]["doc"] )); $conta++; $flagTelInvalido=false; } else { //actualizarRegistroError($row["men_id"]); $contadorError++; $flagTelInvalido=true; } } else { //actualizarRegistroError($row["men_id"]); $contadorError++; $flagTelInvalido=true; } } else { //actualizarRegistroError($row["men_id"]); $contadorError++; $flagTelInvalido=true; } } else { //actualizarRegistroError($row["men_id"]); $contadorError++; $flagTelInvalido=true; } //Marcar turno como enviado, y si fue rechazado por el numero $sql = " UPDATE dbo.turnos SET turRecoWht = 1 ,tur_RecoWhtFechaEnvio=GETDATE() ,turRecoWhtRechazado=".($flagTelInvalido?1:0)." ,turRecoConfirm = ".($flagRecordatorio?1:0)." WHERE tur_numero = ".$turCod; //print_r($sql);die; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { //dummy } } //print_r($lstMenssagesQueue);die; //print_r($lstMenssagesQueue);closeMessagesWpSDQProgress();die; if(is_array($lstMenssagesQueue) && count($lstMenssagesQueue)>0) { $flagPodUso=true; $totalMensajes = count($lstMenssagesQueue); //PRIMERO GENERAR LOS FLOW EN LA BASE MySQL //EXCLUIR RECORDATORIOS if(!$flagRecordatorio) { for($k=0;$k<$totalMensajes;$k++) { $resInfo=false; $resultado = enviarFlow($lstMesagesFlowQueue[$k],$resInfo); if( $resultado ) { if( $resInfo && isset($resInfo['data']) && isset($resInfo['data']['res']) ) { $lstMenssagesQueue[$k]["flagFlowCreated"] = true; } } } } else { for($k=0;$k<$totalMensajes;$k++) { $lstMenssagesQueue[$k]["flagFlowCreated"] = true; } } //print_r($lstMenssagesQueue);die; //SEGUNDO ENVIAR WHATSAPP A DESTINATARIOS CON FLOW CREADO $debug.=">>TOTAL MENSAJES[".$totalMensajes."]"."\n"; $debug.=">>POSD ACTIVOS"."\n"; $debug.=print_r($podsActivos,true)."\n"; if( $GLOBALS['WS_WHATSAPP_ACTIVE'] ) //FEATUTRE DE CONTROL { for($k=0;$k<$totalMensajes;$k++) { if( $lstMenssagesQueue[$k]["flagFlowCreated"] ) { $cmpdesnro = 0; if(!$flagRecordatorio) { $cmpdesnro = $lstMenssagesQueue[$k]["men_id"]; } //---------------------------- $indexPod=0;//SOLO UN POD ACTIVO FIJADO EN 0!!!!!! $debug.=">> indexPod[".$indexPod."]"."\n"; $lstMenssagesQueue[$k]["podpto"]=$podsActivos[$indexPod]; //print_r("POD USAR[".$podsActivos[$indexPod]."]");print_r("\n"); $debug.=">>POD USAR[".$podsActivos[$indexPod]."]"."\n"; //-->$balanceadoresEst[$i]["RESTO"]=$balanceadoresEst[$i]["RESTO"]-1; $continue=true; //---------------------------- if($continue) { $resinfo=false; $debugCmp=""; if(!$GLOBALS['WS_TEST']) { sleep(5); $res = sendWhatsappCmpMessage($lstMenssagesQueue[$k],$resinfo,$debugCmp); } else { $res = true; if(!$GLOBALS['WS_WHATSAPP_NODEJS']) { $resinfo = array( "result"=>1 ,"inf" =>array("id"=>-100) ); } else { $resinfo = array( "result"=>1 ); } } // try // { // $podResultado = validatePODStatus($lstMenssagesQueue[$k]["podpto"]); // if(!$podResultado){desactivarPod($lstMenssagesQueue[$k]["podpto"]);} // } // catch ( Exception $e ){} // $debug.=$debugCmp; // //$res = true; // $cuotaConsumida+=($res?1:0); // if(!$GLOBALS['WS_WHATSAPP_NODEJS']) // { // setEstadoResultadoDestinatario($cmpdesnro,($res?1:0),(!$res?"error":""),$resinfo); // } // else // { // setEstadoResultadoDestinatarioNodejs($cmpdesnro,$podsActivos[$indexPod],($res?1:0),(!$res?"error":""),$resinfo); // } //---------------------------- $counterPods++; if($counterPods==$totalPods) { $indexPod = 0; } else { $indexPod++; } //---------------------------- } } } } } } else { //NO HAY TURNOS A PROCESAR print_r("NO SE ENCONRARON TURNOS PARA PROCESAR");print_r("\n"); } //-->cleanWhatsappRecoverTelefonoErrorQueue(); saveDebugProcessCmp($debug); closeMessagesWpSDQProgress(); //---------------------------- if($flagPodUso) { if($counterPods==$totalPods) { $indexPod = ($totalPods-1); } //print_r("ULTIMO POD[".$podsActivos[$indexPod]."]");print_r("\n"); //-->$debug.="ULTIMO POD[".$podsActivos[$indexPod]."]"."\n"; //-->savePodsBalanceador($podsActivos[$indexPod]); } //---------------------------- } else { //print_r(">> !!ERROR AL BUSCAR DESTINATARIOS PENDIENTES");print_r("\n"); $debug.=">> !!ERROR AL BUSCAR DESTINATARIOS PENDIENTES"."\n"; //saveDebugProcessCmp($debug); closeMessagesWpSDQProgress(); } } catch (Exception $e) { saveDebugProcessCmp($e->__toString()); closeMessagesWpSDQProgress(); } } else { //print_r("Envio en progreso. Se cancela hilo de ejecucion"); saveDebugProcessCmp("Envio en progreso. Se cancela hilo de ejecucion"); } } // -------------------------------------------- // END - SDQ WHATSAPP RECORDATORIO // -------------------------------------------- // -------------------------------------------- // SDQ ESTADISTICAS // -------------------------------------------- function getCenso($turno,$rango,$flagDetalle=false,$idServicio=false) { $rango_flag_w = true; $rango_w = '= cast(getdate() AS date)'; if( $rango ) { $rango_w = " BETWEEN '". getFechaFormateada($rango[0]) ."' AND '". getFechaFormateada($rango[1]) ."'"; $rango_flag_w = false; } $detalle = 'i.oi_numero ,i.int_fecing ,i.hab_codigo ,i.hbc_codigo ,o.cli_codigo ,o.obs_codigo ,o.obsp_cod ,o.med_codigo ,m.med_nombre ,o.oi_diagnos ,c.cli_dni ,c.cli_nombre ,c.cli_sexo ,c.cli_carnet ,h.hab_denom ,s.ser_denom ,ob.obs_denom'; $turno_w = ""; switch($turno) { case 2: { /*$turno_w.= " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) BETWEEN 600 AND 1400)";*/ $turno_w.= " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) ) BETWEEN 600 AND 1400"; } break; case 3: { /*$turno_w.= " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) BETWEEN 1401 AND 2000)";*/ $turno_w.= " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) ) BETWEEN 1401 AND 2000"; } break; case 4: { /*$turno_w.= " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) BETWEEN 2001 AND 559)";*/ $turno_w.= " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) ) BETWEEN 2001 AND 559"; } break; } //Total de Camas $sql = "SELECT T0.ser_codigo, T2.ser_denom, T2.ser_orden, sum(T1.totalCamas) as TotalCamas FROM dbo.habitaciones AS T0, ( SELECT hab_codigo,count(*) AS totalCamas FROM dbo.hab_camas GROUP BY hab_codigo) AS T1, tbl_internado_servicio T2 WHERE T0.hab_codigo = T1.hab_codigo AND T0.ser_codigo = T2.ser_codigo GROUP BY T0.ser_codigo, T2.ser_denom,T2.ser_orden ORDER BY T2.ser_orden, T0.ser_codigo"; //print_r($sql);die; $servicios = $GLOBALS['dbSQL']->Query($sql); if ( $servicios ) { //return false; $servicios = $GLOBALS['dbSQL']->getAll(); //print_r($servicios);die; /*$sql = "SELECT h.ser_codigo as cod_servicio, s.ser_denom, ob.obs_denom, count(*) as totalCamasOcupadas FROM internacion i, orden_internacion o, clientes c, habitaciones h, tbl_internado_servicio s, obrasoc ob WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo ".($rango_flag_w?' AND int_feceg IS NULL ':'')." ". $turno_w ." group by h.ser_codigo,s.ser_denom,ob.obs_denom order by 2";*/ if( !$flagDetalle ) { //Camas ocupadas x obs social y x servicios $sql = "SELECT h.ser_codigo as cod_servicio, s.ser_denom, ob.obs_denom, count(*) as totalCamasOcupadas FROM internacion i, orden_internacion o, clientes c, habitaciones h, tbl_internado_servicio s, obrasoc ob WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo AND int_feceg IS NULL ". $turno_w ." group by h.ser_codigo,s.ser_denom,ob.obs_denom order by 4 desc"; //print_r($sql);die; $internados = $GLOBALS['dbSQL']->Query($sql); if ( $internados ) { $internados = $GLOBALS['dbSQL']->getAll(); } //print_r($internados);die; //Preparar el resultado /* ser_codigo ser_denom TotalCamas ---------- -------------- ---------- 1 GUARDIA 2 2 SHOCK ROOM 1 3 UTI 8 4 UCO 8 5 PISO 101 A 111 30 6 PISO 100 A 111 2 ------------ -------------- ------------------------------------ ------------------ cod_servicio ser_denom obs_denom totalCamasOcupadas ------------ -------------- ------------------------------------ ------------------ 3 UTI PAMI 3 4 UCO APROSS 2 4 UCO PAMI 5 5 PISO 101 A 111 APROSS 3 5 PISO 101 A 111 PAMI 3 5 PISO 101 A 111 PAMI- MODULO MENSUAL REHABILITACION 18 */ $sql = "SELECT TT.cod_servicio, SUM(totalCamasOcupadas) as totalOcupadas FROM ( SELECT h.ser_codigo as cod_servicio, s.ser_denom, ob.obs_denom, count(*) as totalCamasOcupadas FROM internacion i, orden_internacion o, clientes c, habitaciones h, tbl_internado_servicio s, obrasoc ob WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo AND int_feceg IS NULL GROUP BY h.ser_codigo,s.ser_denom,ob.obs_denom )AS TT GROUP BY TT.cod_servicio ORDER BY 2 DESC"; //print_r($sql);die; $camasSort = $GLOBALS['dbSQL']->Query($sql); if ( $camasSort ) { //Ordenar $camasSort = $GLOBALS['dbSQL']->getAll(); /* Array ( [0] => Array ( [cod_servicio] => 6 [totalOcupadas] => 1 ) [1] => Array ( [cod_servicio] => 3 [totalOcupadas] => 7 ) [2] => Array ( [cod_servicio] => 4 [totalOcupadas] => 7 ) [3] => Array ( [cod_servicio] => 5 [totalOcupadas] => 23 ) ) */ } //print_r($camasSort);die; //print_r($servicios);die; /* Array ( [0] => Array ( [ser_codigo] => 1 [ser_denom] => GUARDIA [TotalCamas] => 2 ) [1] => Array ( [ser_codigo] => 2 [ser_denom] => SHOCK ROOM [TotalCamas] => 1 ) [2] => Array ( [ser_codigo] => 3 [ser_denom] => UTI [TotalCamas] => 8 ) [3] => Array ( [ser_codigo] => 4 [ser_denom] => UCO [TotalCamas] => 8 ) [4] => Array ( [ser_codigo] => 5 [ser_denom] => PISO 101 A 111 [TotalCamas] => 30 ) [5] => Array ( [ser_codigo] => 6 [ser_denom] => PISO 100 A 111 [TotalCamas] => 2 ) ) ------------ ------------- cod_servicio totalOcupadas ------------ ------------- 5 23 3 7 4 7 6 1 */ /* $serviciosOrd = array(); for($k=0;$k Array ( [ser_codigo] => 1 [ser_denom] => GUARDIA [TotalCamas] => 2 ) [1] => Array ( [ser_codigo] => 2 [ser_denom] => SHOCK ROOM [TotalCamas] => 1 ) [2] => Array ( [ser_codigo] => 3 [ser_denom] => UTI [TotalCamas] => 8 ) [3] => Array ( [ser_codigo] => 4 [ser_denom] => UCO [TotalCamas] => 8 ) [4] => Array ( [ser_codigo] => 5 [ser_denom] => PISO 101 A 111 [TotalCamas] => 30 ) [5] => Array ( [ser_codigo] => 6 [ser_denom] => PISO 100 A 111 [TotalCamas] => 2 ) ) ----------Array ( [0] => Array ( [ser_codigo] => 5 [ser_denom] => PISO 101 A 111 [TotalCamas] => 30 ) [1] => Array ( [ser_codigo] => 3 [ser_denom] => UTI [TotalCamas] => 8 ) [2] => Array ( [ser_codigo] => 4 [ser_denom] => UCO [TotalCamas] => 8 ) [3] => Array ( [ser_codigo] => 6 [ser_denom] => PISO 100 A 111 [TotalCamas] => 2 ) ) */ $ocupacion = array(); $servicios_ = array(); for($i=0;$i trim($internados[$j]['obs_denom']) ,'total' => $internados[$j]['totalCamasOcupadas'])); } } $porcentajeOcupacion = (($totalocupadas*100)/$servicios[$i]['TotalCamas']); $ocupacion[$servicios[$i]['ser_denom']] = array( 'total' => $servicios[$i]['TotalCamas'] ,'ocupadas' => $totalocupadas ,'detallexobs' => $detallexobs ,'avgocupacion' => round($porcentajeOcupacion,2) ,'idservicio' => $servicios[$i]['ser_codigo'] ,'internadoshoy'=> getCensoXTurno($servicios[$i]['ser_codigo']) ,'altashoy' => getCensoXTurno($servicios[$i]['ser_codigo'],true) ); $index = array_push($servicios_,$servicios[$i]['ser_denom']); } //print_r($ocupacion);die; /* Array ( [GUARDIA] => Array ( [total] => 2 [ocupadas] => 0 [detallexobs] => Array ( ) [avgocupacion] => 0 [idservicio] => 1 ) [SHOCK ROOM] => Array ( [total] => 1 [ocupadas] => 0 [detallexobs] => Array ( ) [avgocupacion] => 0 [idservicio] => 2 ) [UTI] => Array ( [total] => 8 [ocupadas] => 7 [detallexobs] => Array ( [0] => Array ( [obs] => PAMI [total] => 7 ) ) [avgocupacion] => 87.5 [idservicio] => 3 ) [UCO] => Array ( [total] => 8 [ocupadas] => 7 [detallexobs] => Array ( [0] => Array ( [obs] => PAMI [total] => 6 ) [1] => Array ( [obs] => PAMI- MODULO MENSUAL REHABILITACION [total] => 1 ) ) [avgocupacion] => 87.5 [idservicio] => 4 ) [PISO 101 A 111] => Array ( [total] => 30 [ocupadas] => 23 [detallexobs] => Array ( [0] => Array ( [obs] => PAMI- MODULO MENSUAL REHABILITACION [total] => 15 ) [1] => Array ( [obs] => PAMI [total] => 4 ) [2] => Array ( [obs] => APROSS [total] => 4 ) ) [avgocupacion] => 76.666666666667 [idservicio] => 5 ) [PISO 100 A 111] => Array ( [total] => 2 [ocupadas] => 1 [detallexobs] => Array ( [0] => Array ( [obs] => PAMI [total] => 1 ) ) [avgocupacion] => 50 [idservicio] => 6 ) ) */ $reporte = array( 'servicios' => $servicios ,'censo' => $ocupacion ,'fecha' => date("d/m/Y H:i:s") ); //print_r($reporte);die; } else { $servicio = ''; if( $idServicio ) { $servicio = ' AND s.ser_codigo = ' . $idServicio; } //,CONVERT(varchar, i.int_fecing,103) as int_fecing $sql = "SELECT i.oi_numero ,FORMAT ( i.int_fecing, 'dd/MM/yyyy HH:mm' ) as int_fecing ,(cast(datediff(dd,c.cli_fecnto,GETDATE()) / 365.25 as int)) as edad ,i.hab_codigo ,s.ser_denom ,h.hab_denom ,i.hbc_codigo ,ca.hbc_denom ,o.cli_codigo ,o.obs_codigo ,ob.obs_denom ,o.obsp_cod ,p.obsp_denom ,o.med_codigo ,m.med_nombre ,c.cli_dni ,c.cli_nombre ,c.cli_sexo ,c.cli_carnet ,o.oi_diagnos ,o.oi_respnom ,o.oi_resptel FROM internacion i, orden_internacion o, clientes c, habitaciones h, hab_camas ca, tbl_internado_servicio s, obrasoc ob, obsplan p, medicos m WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo AND o.obs_codigo = p.obs_codigo AND o.obsp_cod = p.obsp_cod AND o.med_codigo = m.med_codigo AND i.hab_codigo = ca.hab_codigo AND i.hbc_codigo = ca.hbc_codigo AND int_feceg IS NULL ". $turno_w ." ". $servicio ." order by h.hab_denom, ca.hbc_denom"; //print_r($sql);die; $internados = $GLOBALS['dbSQL']->Query($sql); if ( $internados ) { $internados = $GLOBALS['dbSQL']->getAll(); } $reporte = array( 'detalle' => $internados ); } if(count($reporte)==0){return true;} return $reporte; } return false; } function getCensoTurno(&$resultInfo) { $turno = 1; if( isset($_REQUEST["turno"]) && !empty($_REQUEST["turno"]) && !is_null($_REQUEST["turno"]) && ( $_REQUEST["turno"]=='m' || $_REQUEST["turno"]=='t' || $_REQUEST["turno"]=='n' ) ) { switch($_REQUEST["turno"]) { case 'm':{$turno = 2;} break; case 't':{$turno = 3;} break; case 'n':{$turno = 4;} break; } } $rango = false; if( isset($_REQUEST["desde"]) && !empty($_REQUEST["desde"]) && !is_null($_REQUEST["desde"]) && isset($_REQUEST["hasta"]) && !empty($_REQUEST["hasta"]) && !is_null($_REQUEST["hasta"]) ) { $rango = array($_REQUEST["desde"],$_REQUEST["hasta"]); } $detalle = false; if( isset($_REQUEST["detalle"]) && !empty($_REQUEST["detalle"]) && !is_null($_REQUEST["detalle"]) ) { $detalle = true; } $servicio = false; if( isset($_REQUEST["serv"]) && !empty($_REQUEST["serv"]) && !is_null($_REQUEST["serv"]) ) { $servicio = $_REQUEST["serv"]; } $resultado = getCenso($turno,$rango,$detalle,$servicio); if( $resultado ) { //Listar Obras Sociales $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => count($resultado) ,"info" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al consultar el censo del turno mañana"; } } function getEstadisticas(&$resultInfo) { $resultado = getEstadisticasTurnos(); if( $resultado ) { //Listar Obras Sociales $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => count($resultado) ,"info" => $resultado ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al consultar las estadisticas"; } } function getCensoXTurno($idServicio,$altas=false) { $internados_m_result = false; $internados_t_result = false; $internados_n_result = false; $internados_m_d_result = false; $internados_t_d_result = false; $internados_n_d_result = false; $turno_m = " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) ) BETWEEN 600 AND 1400 "; $turno_t = " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) ) BETWEEN 1401 AND 2000 "; $turno_n = " AND (CONVERT (SMALLINT, RIGHT(100 + DATEPART(HOUR, i.int_fecing) , 2) + RIGHT(100 + DATEPART(MINUTE, i.int_fecing) , 2) ) ) BETWEEN 2001 AND 559 "; if(!$altas) { /* //Camas ocupadas x obs social y x servicios $sql = "SELECT h.ser_codigo as cod_servicio, s.ser_denom, ob.obs_denom, count(*) as totalCamasOcupadas FROM internacion i, orden_internacion o, clientes c, habitaciones h, tbl_internado_servicio s, obrasoc ob WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo AND cast(i.int_fecing as date) = cast(getdate() as date) AND s.ser_codigo = ".$idServicio." {TURNO} group by h.ser_codigo,s.ser_denom,ob.obs_denom order by 4 desc"; $internados_m = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_m, $sql) ); if ( $internados_m ){ $internados_m_result = $GLOBALS['dbSQL']->getAll(); } $internados_t = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_t, $sql) ); if ( $internados_t ){ $internados_t_result = $GLOBALS['dbSQL']->getAll(); } $internados_n = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_n, $sql) ); if ( $internados_n ){ $internados_n_result = $GLOBALS['dbSQL']->getAll(); } */ $sql = "SELECT i.oi_numero ,FORMAT ( i.int_fecing, 'dd/MM/yyyy HH:mm' ) as int_fecing ,(cast(datediff(dd,c.cli_fecnto,GETDATE()) / 365.25 as int)) as edad ,i.hab_codigo ,s.ser_denom ,h.hab_denom ,i.hbc_codigo ,ca.hbc_denom ,o.cli_codigo ,o.obs_codigo ,ob.obs_denom ,o.obsp_cod ,p.obsp_denom ,o.med_codigo ,m.med_nombre ,c.cli_dni ,c.cli_nombre ,c.cli_sexo ,c.cli_carnet ,o.oi_diagnos ,o.oi_respnom ,o.oi_resptel FROM internacion i, orden_internacion o, clientes c, habitaciones h, hab_camas ca, tbl_internado_servicio s, obrasoc ob, obsplan p, medicos m WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo AND o.obs_codigo = p.obs_codigo AND o.obsp_cod = p.obsp_cod AND o.med_codigo = m.med_codigo AND i.hab_codigo = ca.hab_codigo AND i.hbc_codigo = ca.hbc_codigo AND cast(i.int_fecing as date) = cast(getdate() as date) AND s.ser_codigo = ".$idServicio." {TURNO} order by 2 desc"; $internados_m_d = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_m, $sql) ); if ( $internados_m_d ){ $internados_m_d_result = $GLOBALS['dbSQL']->getAll(); } $internados_t_d = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_t, $sql) ); if ( $internados_t_d ){ $internados_t_d_result = $GLOBALS['dbSQL']->getAll(); } $internados_n_d = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_n, $sql) ); if ( $internados_n_d ){ $internados_n_d_result = $GLOBALS['dbSQL']->getAll(); } $resultado = array( "m" => array("total"=>(count($internados_m_d_result)>0?count($internados_m_d_result):0), "detalle"=> $internados_m_d_result) ,"t" => array("total"=>(count($internados_t_d_result)>0?count($internados_m_d_result):0), "detalle"=> $internados_t_d_result) ,"n" => array("total"=>(count($internados_n_d_result)>0?count($internados_m_d_result):0), "detalle"=> $internados_n_d_result) ); } else { $sql = "SELECT * FROM internacion i, orden_internacion o, clientes c, habitaciones h, hab_camas ca WHERE CAST (int_feceg AS DATE)= CAST(getdate() AS DATE) AND i.oi_numero = o.oi_numero AND c.cli_codigo = o.cli_codigo AND ca.hab_codigo = i.hab_codigo AND ca.hbc_codigo = i.hbc_codigo AND h.hab_codigo = ca.hab_codigo"; $sql = "SELECT i.oi_numero ,FORMAT ( i.int_fecing, 'dd/MM/yyyy HH:mm' ) as int_fecing ,(cast(datediff(dd,c.cli_fecnto,GETDATE()) / 365.25 as int)) as edad ,i.hab_codigo ,s.ser_denom ,h.hab_denom ,i.hbc_codigo ,ca.hbc_denom ,o.cli_codigo ,o.obs_codigo ,ob.obs_denom ,o.obsp_cod ,p.obsp_denom ,o.med_codigo ,m.med_nombre ,c.cli_dni ,c.cli_nombre ,c.cli_sexo ,c.cli_carnet ,o.oi_diagnos ,o.oi_respnom ,o.oi_resptel FROM internacion i, orden_internacion o, clientes c, habitaciones h, hab_camas ca, tbl_internado_servicio s, obrasoc ob, obsplan p, medicos m WHERE o.oi_numero = i.oi_numero AND c.cli_codigo = o.cli_codigo AND h.hab_codigo = i.hab_codigo AND s.ser_codigo = h.ser_codigo AND ob.obs_codigo = o.obs_codigo AND o.obs_codigo = p.obs_codigo AND o.obsp_cod = p.obsp_cod AND o.med_codigo = m.med_codigo AND i.hab_codigo = ca.hab_codigo AND i.hbc_codigo = ca.hbc_codigo AND CAST(i.int_feceg as date) = CAST(getdate() as date) AND s.ser_codigo = ".$idServicio." {TURNO} order by 2 desc"; $internados_m_d = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_m, $sql) ); if ( $internados_m_d ){ $internados_m_d_result = $GLOBALS['dbSQL']->getAll(); } $internados_t_d = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_t, $sql) ); if ( $internados_t_d ){ $internados_t_d_result = $GLOBALS['dbSQL']->getAll(); } $internados_n_d = $GLOBALS['dbSQL']->Query( str_replace("{TURNO}", $turno_n, $sql) ); if ( $internados_n_d ){ $internados_n_d_result = $GLOBALS['dbSQL']->getAll(); } $resultado = array( "m" => array("total"=>(count($internados_m_d_result)>0?count($internados_m_d_result):0), "detalle"=> $internados_m_d_result) ,"t" => array("total"=>(count($internados_t_d_result)>0?count($internados_m_d_result):0), "detalle"=> $internados_t_d_result) ,"n" => array("total"=>(count($internados_n_d_result)>0?count($internados_m_d_result):0), "detalle"=> $internados_n_d_result) ); } return $resultado; } function getEstadisticasTurnos() { $turnos = array( "asistencia" => false ,"borrados" => false ,"anulados" => false ,"especialidad" => false ,"turusuarios" => false ,"fecha" => false ); $rango = false; if( isset($_REQUEST["rf"]) ) { $rango = explode(";",$_REQUEST['rf']); //print_r($rango);die; // $rango[0] = date("d/m/Y",strtotime($rango[0])); // $rango[1] = date("d/m/Y",strtotime($rango[1])); $rango[0] = date("Y-m-d",strtotime(substr($rango[0],6,4)."-".substr($rango[0],3,2)."-".substr($rango[0],0,2))); $rango[1] = date("Y-m-d",strtotime(substr($rango[1],6,4)."-".substr($rango[1],3,2)."-".substr($rango[1],0,2))); //print_r($rango);die; // $dateini = date("Y-m-d",strtotime($rango[0])); // $dateend = date("Y-m-d",strtotime($rango[1])); $dateini = $rango[0]; $dateend = $rango[1]; $fecha = "CAST(t.tur_fecha as date) BETWEEN CAST('".$dateini."' as date) AND CAST('".$dateend."' as date)"; $fechaAsis = "CAST(tasis.tur_fecha as date) BETWEEN CAST('".$dateini."' as date) AND CAST('".$dateend."' as date)"; $fechaAuse = "CAST(tause.tur_fecha as date) BETWEEN CAST('".$dateini."' as date) AND CAST('".$dateend."' as date)"; $fechaCancel = "CAST(tcance.tur_fecha as date) BETWEEN CAST('".$dateini."' as date) AND CAST('".$dateend."' as date)"; } else { $fecha = 'CAST(t.tur_fecha as date) = CAST(getdate() as date)'; $fechaAsis = "CAST(tasis.tur_fecha as date) = CAST(getdate() as date)"; $fechaAuse = "CAST(tause.tur_fecha as date) = CAST(getdate() as date)"; $fechaCancel = "CAST(tcance.tur_fecha as date) = CAST(getdate() as date)"; } //------------------------------------------ // Los turnos de hoy segun asistencia //------------------------------------------ /*$sql = "SELECT t.med_codigo, md.med_nombre, SUM(CASE WHEN ISNULL(tur_asiste,0) = 0 THEN 1 ELSE 0 END) AS ausente, SUM(CASE WHEN ISNULL(tur_asiste,0) = 1 THEN 1 ELSE 0 END) AS presente FROM v_turnosvigentes t , obrasoc o, medicos md, clientes c WHERE CAST(t.tur_fecha as date) = CAST(getdate() as date) AND t.obs_codigo = o.obs_Codigo AND t.med_codigo = md.med_codigo AND t.cli_codigo = c.cli_codigo AND ISNULL(c.cli_admin,0) != 1 GROUP BY t.med_codigo, md.med_nombre";*/ $sql = "SELECT t.med_codigo, md.med_nombre, SUM(CASE WHEN ISNULL(tur_asiste,0) = 0 THEN 1 ELSE 0 END) AS ausente, SUM(CASE WHEN ISNULL(tur_asiste,0) = 1 THEN 1 ELSE 0 END) AS presente FROM v_turnosvigentes t , obrasoc o, medicos md, clientes c WHERE ".$fecha." AND t.obs_codigo = o.obs_Codigo AND t.med_codigo = md.med_codigo AND t.cli_codigo = c.cli_codigo AND ISNULL(c.cli_admin,0) != 1 GROUP BY t.med_codigo, md.med_nombre"; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $turnos["asistencia"] = $GLOBALS['dbSQL']->getAll(); for($i=0;$iQuery($sql); if ( $resultado ) { $turnos["borrados"] = $GLOBALS['dbSQL']->getAll(); } //------------------------------------------ // Turnos anulados hoy //------------------------------------------ $sql = "SELECT t.med_codigo, md.med_nombre, COUNT(1) as tanulados FROM turnos t, obrasoc o, medicos md, clientes c WHERE ".$fecha." AND t.cli_codigo = 1 AND t.obs_codigo = o.obs_Codigo AND t.med_codigo = md.med_codigo AND t.cli_codigo = c.cli_codigo GROUP BY t.med_codigo, md.med_nombre"; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $turnos["anulados"] = $GLOBALS['dbSQL']->getAll(); } //------------------------------------------ // Turnos hoy por especialidad //------------------------------------------ $sql = "SELECT esp_denom, COUNT(tur_numero) as tespecialidad FROM turnos t, medicos m, especial e WHERE ".$fecha." AND t.med_codigo = m.med_codigo AND e.esp_codigo = m.esp_codigo GROUP BY esp_denom"; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $turnos["especialidad"] = $GLOBALS['dbSQL']->getAll(); $total=0; for($i=0;$iQuery($sql); if ( $resultado ) { $turnos["turusuarios"] = $GLOBALS['dbSQL']->getAll(); $total=0; for($i=0;$iQuery($sql); if ( $resultado ) { $turnos["asisturusuarios"] = $GLOBALS['dbSQL']->getAll(); /*$total=0; for($i=0;$i