$fecha = date("Y-m-d", strtotime($_REQUEST["ft"])); if( $fecha < date("Y-m-d") ) { $fecha = date("Y-m-d"); } } else { $fecha = date("Y-m-d"); if( isset($_REQUEST["ft"]) && !empty($_REQUEST["ft"]) && !is_null($_REQUEST["ft"]) ) { $fecha = date("Y-m-d", strtotime($_REQUEST["ft"])); } if( $fecha < date("Y-m-d") ) { $fecha = date("Y-m-d"); } } //print_r("f[".$fecha."]");print_r("\n"); //die("mmmmm"); $mesActual = date("m",strtotime($fecha)); $anoActual = date("Y",strtotime($fecha)); $diaSemana = date('N',strtotime($fecha)); //print_r("f[".$fecha."]");die("fr"); //print_r("ds[".$diaSemana."]");die(" <<<< "); $dias = array(); $dias[0] = ""; $dias[1] = ""; $dias[2] = ""; $dias[3] = ""; $dias[4] = ""; $dias[5] = ""; $dias[6] = ""; $diasF = array(); $diasF[0] = ""; $diasF[1] = ""; $diasF[2] = ""; $diasF[3] = ""; $diasF[4] = ""; $diasF[5] = ""; $diasF[6] = ""; switch( $diaSemana ) { case LUNES: { $dias[0] = date('d/m/Y', strtotime($fecha. ' - 1 days'));//D $dias[1] = date('d/m/Y', strtotime($fecha)); //L $dias[2] = date('d/m/Y', strtotime($fecha. ' + 1 days'));//M $dias[3] = date('d/m/Y', strtotime($fecha. ' + 2 days'));//M $dias[4] = date('d/m/Y', strtotime($fecha. ' + 3 days'));//J $dias[5] = date('d/m/Y', strtotime($fecha. ' + 4 days'));//V $dias[6] = date('d/m/Y', strtotime($fecha. ' + 5 days'));//S $diasF[0] = date('Y-m-d', strtotime($fecha. ' - 1 days'));//D $diasF[1] = date('Y-m-d', strtotime($fecha)); //L $diasF[2] = date('Y-m-d', strtotime($fecha. ' + 1 days'));//M $diasF[3] = date('Y-m-d', strtotime($fecha. ' + 2 days'));//M $diasF[4] = date('Y-m-d', strtotime($fecha. ' + 3 days'));//J $diasF[5] = date('Y-m-d', strtotime($fecha. ' + 4 days'));//V $diasF[6] = date('Y-m-d', strtotime($fecha. ' + 5 days'));//S } break; case MARTES: { $dias[0] = date('d/m/Y', strtotime($fecha. ' - 2 days'));//D $dias[1] = date('d/m/Y', strtotime($fecha. ' - 1 days')); //L $dias[2] = date('d/m/Y', strtotime($fecha));//M $dias[3] = date('d/m/Y', strtotime($fecha. ' + 1 days'));//M $dias[4] = date('d/m/Y', strtotime($fecha. ' + 2 days'));//J $dias[5] = date('d/m/Y', strtotime($fecha. ' + 3 days'));//V $dias[6] = date('d/m/Y', strtotime($fecha. ' + 4 days'));//S $diasF[0] = date('Y-m-d', strtotime($fecha. ' - 2 days'));//D $diasF[1] = date('Y-m-d', strtotime($fecha. ' - 1 days')); //L $diasF[2] = date('Y-m-d', strtotime($fecha));//M $diasF[3] = date('Y-m-d', strtotime($fecha. ' + 1 days'));//M $diasF[4] = date('Y-m-d', strtotime($fecha. ' + 2 days'));//J $diasF[5] = date('Y-m-d', strtotime($fecha. ' + 3 days'));//V $diasF[6] = date('Y-m-d', strtotime($fecha. ' + 4 days'));//S } break; case MIERCOLES: { $dias[0] = date('d/m/Y', strtotime($fecha. ' - 3 days'));//D $dias[1] = date('d/m/Y', strtotime($fecha. ' - 2 days')); //L $dias[2] = date('d/m/Y', strtotime($fecha. ' - 1 days'));//M $dias[3] = date('d/m/Y', strtotime($fecha));//M $dias[4] = date('d/m/Y', strtotime($fecha. ' + 1 days'));//J $dias[5] = date('d/m/Y', strtotime($fecha. ' + 2 days'));//V $dias[6] = date('d/m/Y', strtotime($fecha. ' + 3 days'));//S $diasF[0] = date('Y-m-d', strtotime($fecha. ' - 3 days'));//D $diasF[1] = date('Y-m-d', strtotime($fecha. ' - 2 days')); //L $diasF[2] = date('Y-m-d', strtotime($fecha. ' - 1 days'));//M $diasF[3] = date('Y-m-d', strtotime($fecha));//M $diasF[4] = date('Y-m-d', strtotime($fecha. ' + 1 days'));//J $diasF[5] = date('Y-m-d', strtotime($fecha. ' + 2 days'));//V $diasF[6] = date('Y-m-d', strtotime($fecha. ' + 3 days'));//S } break; case JUEVES: { $dias[0] = date('d/m/Y', strtotime($fecha. ' - 4 days'));//D $dias[1] = date('d/m/Y', strtotime($fecha. ' - 3 days')); //L $dias[2] = date('d/m/Y', strtotime($fecha. ' - 2 days'));//M $dias[3] = date('d/m/Y', strtotime($fecha. ' - 1 days'));//M $dias[4] = date('d/m/Y', strtotime($fecha));//J $dias[5] = date('d/m/Y', strtotime($fecha. ' + 1 days'));//V $dias[6] = date('d/m/Y', strtotime($fecha. ' + 2 days'));//S $diasF[0] = date('Y-m-d', strtotime($fecha. ' - 4 days'));//D $diasF[1] = date('Y-m-d', strtotime($fecha. ' - 3 days')); //L $diasF[2] = date('Y-m-d', strtotime($fecha. ' - 2 days'));//M $diasF[3] = date('Y-m-d', strtotime($fecha. ' - 1 days'));//M $diasF[4] = date('Y-m-d', strtotime($fecha));//J $diasF[5] = date('Y-m-d', strtotime($fecha. ' + 1 days'));//V $diasF[6] = date('Y-m-d', strtotime($fecha. ' + 2 days'));//S } break; case VIERNES: { $dias[0] = date('d/m/Y', strtotime($fecha. ' - 5 days'));//D $dias[1] = date('d/m/Y', strtotime($fecha. ' - 4 days')); //L $dias[2] = date('d/m/Y', strtotime($fecha. ' - 3 days'));//M $dias[3] = date('d/m/Y', strtotime($fecha. ' - 2 days'));//M $dias[4] = date('d/m/Y', strtotime($fecha. ' - 1 days'));//J $dias[5] = date('d/m/Y', strtotime($fecha));//V $dias[6] = date('d/m/Y', strtotime($fecha. ' + 1 days'));//S $diasF[0] = date('Y-m-d', strtotime($fecha. ' - 5 days'));//D $diasF[1] = date('Y-m-d', strtotime($fecha. ' - 4 days')); //L $diasF[2] = date('Y-m-d', strtotime($fecha. ' - 3 days'));//M $diasF[3] = date('Y-m-d', strtotime($fecha. ' - 2 days'));//M $diasF[4] = date('Y-m-d', strtotime($fecha. ' - 1 days'));//J $diasF[5] = date('Y-m-d', strtotime($fecha));//V $diasF[6] = date('Y-m-d', strtotime($fecha. ' + 1 days'));//S } break; case SABADO: { $dias[0] = date('d/m/Y', strtotime($fecha. ' - 6 days'));//D $dias[1] = date('d/m/Y', strtotime($fecha. ' - 5 days')); //L $dias[2] = date('d/m/Y', strtotime($fecha. ' - 4 days'));//M $dias[3] = date('d/m/Y', strtotime($fecha. ' - 3 days'));//M $dias[4] = date('d/m/Y', strtotime($fecha. ' - 2 days'));//J $dias[5] = date('d/m/Y', strtotime($fecha. ' - 1 days'));//V $dias[6] = date('d/m/Y', strtotime($fecha));//S $diasF[0] = date('Y-m-d', strtotime($fecha. ' - 6 days'));//D $diasF[1] = date('Y-m-d', strtotime($fecha. ' - 5 days')); //L $diasF[2] = date('Y-m-d', strtotime($fecha. ' - 4 days'));//M $diasF[3] = date('Y-m-d', strtotime($fecha. ' - 3 days'));//M $diasF[4] = date('Y-m-d', strtotime($fecha. ' - 2 days'));//J $diasF[5] = date('Y-m-d', strtotime($fecha. ' - 1 days'));//V $diasF[6] = date('Y-m-d', strtotime($fecha));//S } break; case DOMINGO: { $dias[0] = date('d/m/Y', strtotime($fecha));//D $dias[1] = date('d/m/Y', strtotime($fecha. ' + 1 days')); //L $dias[2] = date('d/m/Y', strtotime($fecha. ' + 2 days'));//M $dias[3] = date('d/m/Y', strtotime($fecha. ' + 3 days'));//M $dias[4] = date('d/m/Y', strtotime($fecha. ' + 4 days'));//J $dias[5] = date('d/m/Y', strtotime($fecha. ' + 5 days'));//V $dias[6] = date('d/m/Y', strtotime($fecha. ' + 6 days'));//S $diasF[0] = date('Y-m-d', strtotime($fecha));//D $diasF[1] = date('Y-m-d', strtotime($fecha. ' + 1 days')); //L $diasF[2] = date('Y-m-d', strtotime($fecha. ' + 2 days'));//M $diasF[3] = date('Y-m-d', strtotime($fecha. ' + 3 days'));//M $diasF[4] = date('Y-m-d', strtotime($fecha. ' + 4 days'));//J $diasF[5] = date('Y-m-d', strtotime($fecha. ' + 5 days'));//V $diasF[6] = date('Y-m-d', strtotime($fecha. ' + 6 days'));//S } break; } $calendario['fechasSemana'] = $dias; $calendario['fechasSemanaF'] = $diasF; $calendario['mesActual'] = $mesActual; $calendario['anoActual'] = $anoActual; return true; } function validateMedico($idMed) { //med_web => muestra horarios //med_turnos_web => permite sacar turnos $sql = "SELECT m.* FROM medicos AS m WHERE m.med_codigo = ".$idMed; //die($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { return array($rs[0]['med_web'],$rs[0]['med_turnos_web']); } else { return array(false,false); } /* Array ( [0] => Array ( [med_codigo] => 119 [med_nombre] => ALVAREZ SOLEDAD [med_dni] => 28430716 [med_mp] => 4706 [med_fecnto] => [esp_codigo] => 5 [med_dir] => TEMISRTOCLES CASTELLANOS 1776 [med_tel] => 3513758716 [med_observ] => Particular $200 [pro_codigo] => 2 [loc_codigo] => 1 [med_email] => [mp_codigo] => 2 [med_web] => 1 [tit_codigo] => 3 [med_turnos_web] => 0 [med_retencion] => [MED_MPESP] => [med_cuit] => [dgi_codigo] => 4 [med_ingbr] => ) ) */ //print_r($rs);die; //if(count($rs)==0){return true;} //return $rs; } function validarProfesional($idMed) { $sql = "SELECT m.[med_codigo] ,m.[med_dni] ,m.[med_web] ,m.[med_turnos_web] ,m.[med_bloqueado] ,m.[med_webcoment] FROM medicos AS m WHERE m.med_codigo = ".$idMed; //die($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { if( ( !empty($rs[0]['med_bloqueado']) && !is_null($rs[0]['med_bloqueado']) && ( $rs[0]['med_bloqueado']=="1" || $rs[0]['med_bloqueado']===1 ) ) || ( !empty($rs[0]['med_web']) && !is_null($rs[0]['med_web']) && ( $rs[0]['med_web']=="0" || $rs[0]['med_web']===0 ) ) || ( !empty($rs[0]['med_turnos_web']) && !is_null($rs[0]['med_turnos_web']) && ( $rs[0]['med_turnos_web']=="0" || $rs[0]['med_turnos_web']===0 ) ) ) { return false; } return true; } return false; } function validarExisteHorarioMedico($idMed) { $sql = "SELECT COUNT(*) AS total FROM medhora WHERE med_codigo = ".$idMed; //die($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { if(isset($rs[0]["total"])&&intval(($rs[0]["total"]))>0) { return true; } } return false; } function calcularHoras($intervalo_,$fecha,$hDesde,$hHasta) { $continue=true; $intervalo = intval($intervalo_); $turno = $fecha." ".$hDesde.":00"; $turnoFinalStr = $fecha." ".$hHasta.":00"; $turnoFinal = date("Y-m-d H:i:s",strtotime($turnoFinalStr)); $turnos_=array(); $turnosf_=array(); while( $continue ) { $ii=array_push($turnos_, date("H:i",strtotime($turno))); $rr=array_push($turnosf_, date("Gi",strtotime($turno))); $turno = date('Y-m-d H:i:s', strtotime('+' . $intervalo . ' minutes',strtotime($turno))); if( $turno > $turnoFinal ) { $continue = false; } } return array($turnos_,$turnosf_); } function getObraSocialCliente($idCliente) { //-------------------- //Cliente //-------------------- $sql = "SELECT obs_codigo FROM clientes WHERE cli_codigo = '".addslashes($idCliente)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 2; //return true;//error al leer el cliente return false;//error al leer el cliente } $clienteInfo = $GLOBALS['dbSQL']->getAll(); //if(count($clienteInfo)==0){$error = 2;return true;}//error cliente no existe o esta bloqueado if(count($clienteInfo)==0){$error = 2;return false;}//error cliente no existe o esta bloqueado return $clienteInfo[0]["obs_codigo"]; } function getProfesionalHorariosFrecuentes($med,$rangoMed,&$calendario,&$turnero,$userId=false) { $calendario['turnos'] = false; $calendario['horarios'] = false; $turnero = false; $turnosexistentes = false; if( $rangoMed!==false && $rangoMed > 0 ) { $rango = $rangoMed; } else { $rango = getRangoTurnero(); } $fechaDesde = date("Y-m-d"); $fechaHasta = date("Y-m-d",strtotime('+' . $rango . ' days',strtotime($fechaDesde)));//TODO $fechaIni = date("Y-m-d 00:00:00.000",strtotime($fechaDesde)); $fechaFin = date("Y-m-d 23:59:59.000",strtotime($fechaHasta)); //Consulta de los dias de atencion del medico para los dias habilitados $sql = "SELECT [med_codigo] ,[mh_dia] ,[mh_desde1] ,[mh_hasta1] ,[mh_desde2] ,[mh_hasta2] ,[mh_int1] ,[mh_int2] FROM dbo.[medhora] WHERE [med_codigo] = " . $med ." ORDER BY [mh_dia] ASC, [mh_desde1] ASC, [mh_desde2] ASC"; $rs = $GLOBALS['dbSQL']->Query($sql); $horarioGral = array(); $horarioOrg = array(); $lstIntervalos = array(); if ( $rs ) { $flagPrimeElemento=true; $diaActual=0; $counter=1; $counterT=1; //$uu=0; for($i=1;$i<8;$i++) { $horarioGral[$i] = ""; } $horarioOrg = array(); for($h=0;$h<2;$h++) { $ini[$h] = false; $fin[$h] = false; } $rs = $GLOBALS['dbSQL']->getAll(); foreach($rs as $row) { //$uu++; $diaSemana = $row["mh_dia"]; $hDesde_m = $row["mh_desde1"]; $hHasta_m = $row["mh_hasta1"]; $hDesde_t = $row["mh_desde2"]; $hHasta_t = $row["mh_hasta2"]; $hDesde_m_ = $row["mh_desde1"]; $hHasta_m_ = $row["mh_hasta1"]; $hDesde_t_ = $row["mh_desde2"]; $hHasta_t_ = $row["mh_hasta2"]; $intervalM = $row["mh_int1"]; $intervalT = $row["mh_int2"]; $indexCalActual = array_push($horarioOrg,$row); $intervaloManana = false; $intervaloTarde = false; $tipo = 0; // Solo Mañana if($hDesde_m!=0 && $hHasta_m!=0 && $intervalM!=0) { $intervaloManana = true; //Parseo los horarios if(strlen($hDesde_m)<4) { $hDesde_m = '0'.substr($hDesde_m,0,1).':'.substr($hDesde_m,1,2); } else { $hDesde_m = substr($hDesde_m,0,2).':'.substr($hDesde_m,2,2); } if(strlen($hHasta_m)<4) { $hHasta_m = '0'.substr($hHasta_m,0,1).':'.substr($hHasta_m,1,2); } else { $hHasta_m = substr($hHasta_m,0,2).':'.substr($hHasta_m,2,2); } $turnos_ = false; $turnosf_= false; list($turnos_,$turnosf_) = calcularHoras($intervalM,$fechaDesde,$hDesde_m,$hHasta_m); $k = array_push($lstIntervalos, array( 0=> $diaSemana, 1=> $hDesde_m, 2=> $hHasta_m, 3=> $intervalM, 4=> $hDesde_m_, 5=> $hHasta_m_, 6=> $turnos_, 7=> $turnosf_ )); } if($hDesde_t!=0 && $hHasta_t!=0 && $intervalT!=0) { $intervaloTarde = true; //Parseo los horarios if(strlen($hDesde_t)<4) { $hDesde_t = '0'.substr($hDesde_t,0,1).':'.substr($hDesde_t,1,2); } else { $hDesde_t = substr($hDesde_t,0,2).':'.substr($hDesde_t,2,2); } if(strlen($hHasta_t)<4) { $hHasta_t = '0'.substr($hHasta_t,0,1).':'.substr($hHasta_t,1,2); } else { $hHasta_t = substr($hHasta_t,0,2).':'.substr($hHasta_t,2,2); } $turnos_ = false; $turnosf_= false; list($turnos_,$turnosf_) = calcularHoras($intervalT,$fechaDesde,$hDesde_t,$hHasta_t); $k = array_push($lstIntervalos, array( 0=> $diaSemana, 1=> $hDesde_t, 2=> $hHasta_t, 3=> $intervalT, 4=> $hDesde_t_, 5=> $hHasta_t_, 6=> $turnos_, 7=> $turnosf_) ); } } //--------------------------------------------- //Buscar turnos existentes del período //--------------------------------------------- // $sql = "SELECT FORMAT( [tur_fecha], 'yyyy-MM-dd' ) as men_fecha $sql = "SELECT LEFT(CONVERT(VARCHAR, [tur_fecha], 120), 10) as men_fecha ,[tur_hora] FROM dbo.[turnos] WHERE [med_codigo] = " . $med ." AND CONVERT(VARCHAR,[tur_fecha],120) BETWEEN LEFT(CONVERT(VARCHAR, '".$fechaIni."', 120), 10) AND LEFT(CONVERT(VARCHAR, '".$fechaFin."', 120), 10) ORDER BY 1,2"; //die($sql); $result = $GLOBALS['dbSQL']->Query($sql); if( $result ) { $turnosexistentes = $GLOBALS['dbSQL']->getAll(); if( count($turnosexistentes) <= 0 ) { $turnosexistentes = false; } } //--------------------------------------------- //--------------------------------------------- // Si esta definido que solo se retorna el calendario para: usuarios logueados, umbral validado (ex), // obtener la obra social del cliente //--------------------------------------------- $flagParticular = false; if( $GLOBALS['UMBRALTURPROF'] && $GLOBALS['USERLOGINTURNOS'] //&& //$GLOBALS['UMBRALTURPROFPARTICULAR'] //&& false // <=RETOMAR EL DESARROLLO DE: AGENDA SOLO PARA USUARIOS LOGUEADOS ) { $obscliente = getObraSocialCliente($userId); } //--------------------------------------------- //Armar la agenda //--------------------------------------------- $turnero = array(); $continue = true; $fDesde = $fechaDesde; $feriados = getDiasFeriadosNew(); $feriadosXMedico = getDiasFeriadosXMedicoNew($med); while( $continue ) { $dSTurno = intval(date("N",strtotime($fDesde))); switch( $dSTurno ) { case LUNES: { $dSTurno = F_LUNES; } break; case MARTES: { $dSTurno = F_MARTES; } break; case MIERCOLES: { $dSTurno = F_MIERCOLES; } break; case JUEVES: { $dSTurno = F_JUEVES; } break; case VIERNES: { $dSTurno = F_VIERNES; } break; case SABADO: { $dSTurno = F_SABADO; } break; case DOMINGO: { $dSTurno = F_DOMINGO; } break; } $flagdia=false; //Quito dìa Feriado $flagFeriado = false; //if(isset($_REQUEST['pepe'])){print_r('---------------------');print_r("\n");} //if(isset($_REQUEST['pepe'])){print_r($fDesde);print_r("\n");} if( excluirDia( $fDesde, $feriados ) || excluirDiaFeriadoXMedico( $fDesde, $feriadosXMedico ) ) { $flagFeriado = true; } //------------------------------------------------- //Quitar turnos existentes por umbral si esta definido //------------------------------------------------- //--------------------------------------------- //Si esta definido el filtrado de turnos por umbral, obtener la obra social del cliente y el umbral del profesional //--------------------------------------------- $flagUmbralObsCliente=false; if( $GLOBALS['UMBRALTURPROF'] && $GLOBALS['USERLOGINTURNOS'] ) { //print_r($fDesde);print_r("\n"); if ( !ValidarUmbralWs($med, $obscliente, $fDesde) ) { $flagUmbralObsCliente = true; } } if( !$flagFeriado && !$flagUmbralObsCliente ) { //Busco el dia de la semana para la fecha actual, en el listado de días //for( $i=0; $i 0 ) { if( isset($turnero[$fDesde]) && count($turnero[$fDesde])>0) { //$turnero[$fDesde] = array_merge($turnero[$fDesde], $turtmpaux); if($turnero[$fDesde]===false||$turnero[$fDesde]===0) { $turnero[$fDesde] = $turtmpaux; } else { $turnero[$fDesde] = array_merge($turnero[$fDesde], $turtmpaux); } } else { $turnero[$fDesde] = $turtmpaux; } //$turnero[$fDesde] = $turtmpaux; } else { $turnero[$fDesde] = 0; } $flagdia = true; } } } //Dia sin atencion if( !$flagdia ) { $turnero[$fDesde] = 1; } $fDesde = date("Y-m-d",strtotime('+' . 1 . ' days',strtotime($fDesde))); $flagdia = false; if( $fDesde > $fechaHasta ) { $continue = false; } } if( count($turnero) <= 0 ) { $turnero = false; return false; } return true; } else { //El profesional no tiene definida la agenda de horarios return false; } } function getProfesionalHorariosEventuales($med,$rangoMed,&$calendario,&$turnero) { $calendario['turnos'] = false; $calendario['horarios'] = false; $turnero = false; $turnosexistentes = false; //$rango = getRangoTurnero(); if( $rangoMed!==false && $rangoMed > 0 ) { $rango = $rangoMed; } else { $rango = getRangoTurnero(); } $fechaDesde = date("Y-m-d"); $fechaHasta = date("Y-m-d",strtotime('+' . $rango . ' days',strtotime($fechaDesde)));//TODO $fechaIni = date("Y-m-d 00:00:00.000",strtotime($fechaDesde)); $fechaFin = date("Y-m-d 23:59:59.000",strtotime($fechaHasta)); //Consulta de los dias de atencion del medico para los dias habilitados $sql = "SELECT [med_codigo] ,[mhe_fecha] ,[mhe_desde1] ,[mhe_hasta1] ,[mhe_int1] FROM dbo.[medhora_eventual] WHERE [med_codigo] = " . $med ." AND CONVERT(VARCHAR,[mhe_fecha], 120) >= LEFT(CONVERT(VARCHAR, '".date("Y-m-d 00:00:00.000",strtotime($fechaIni))."', 120), 10) ORDER BY [mhe_fecha] ASC, [mhe_desde1] ASC"; $rs = $GLOBALS['dbSQL']->Query($sql); $horarioGral = array(); $horarioOrg = array(); $lstIntervalos = array(); if ( $rs ) { $flagPrimeElemento=true; $diaActual=0; $counter=1; $counterT=1; for($i=1;$i<8;$i++) { $horarioGral[$i] = ""; } $horarioOrg = array(); for($h=0;$h<2;$h++) { $ini[$h] = false; $fin[$h] = false; } $rs = $GLOBALS['dbSQL']->getAll(); foreach($rs as $row) { $diaSemana = intval(date("w",strtotime($row["mhe_fecha"]))) + 1; $hDesde_m = $row["mhe_desde1"]; $hHasta_m = $row["mhe_hasta1"]; $hDesde_m_ = $row["mhe_desde1"]; $hHasta_m_ = $row["mhe_hasta1"]; $intervalM = $row["mhe_int1"]; $indexCalActual = array_push($horarioOrg,$row); if($hDesde_m!=0 && $hHasta_m!=0 && $intervalM!=0) { //Parseo los horarios if(strlen($hDesde_m)<4) { $hDesde_m = '0'.substr($hDesde_m,0,1).':'.substr($hDesde_m,1,2); } else { $hDesde_m = substr($hDesde_m,0,2).':'.substr($hDesde_m,2,2); } if(strlen($hHasta_m)<4) { $hHasta_m = '0'.substr($hHasta_m,0,1).':'.substr($hHasta_m,1,2); } else { $hHasta_m = substr($hHasta_m,0,2).':'.substr($hHasta_m,2,2); } $turnos_ = false; $turnosf_= false; list($turnos_,$turnosf_) = calcularHoras($intervalM,$fechaDesde,$hDesde_m,$hHasta_m); $k = array_push($lstIntervalos, array( 0=> $diaSemana, 1=> $hDesde_m, 2=> $hHasta_m, 3=> $intervalM, 4=> $hDesde_m_, 5=> $hHasta_m_, 6=> $turnos_, 7=> $turnosf_, 8=> date("Y-m-d",strtotime($row["mhe_fecha"])) )); } } //--------------------------------------------- //Buscar turnos existentes del período //--------------------------------------------- $sql = "SELECT LEFT(CONVERT(VARCHAR, [tur_fecha], 120), 10) as men_fecha ,[tur_hora] FROM dbo.[turnos] WHERE [med_codigo] = " . $med ." AND CONVERT(VARCHAR,[tur_fecha], 120) BETWEEN LEFT(CONVERT(VARCHAR, '".$fechaIni."', 120), 10) AND LEFT(CONVERT(VARCHAR, '".$fechaFin."', 120), 10) ORDER BY 1,2"; $result = $GLOBALS['dbSQL']->Query($sql); if( $result ) { $turnosexistentes = $GLOBALS['dbSQL']->getAll(); if( count($turnosexistentes) <= 0 ) { $turnosexistentes = false; } } //--------------------------------------------- //--------------------------------------------- //Armar la agenda //--------------------------------------------- $turnero = array(); //Busco el dia de la semana para la fecha actual, en el listado de días for( $i=0; $i 0 ) { $turnero[$lstIntervalos[$i][8]] = $turtmpaux; } else { $turnero[$lstIntervalos[$i][8]] = 0; } $flagdia = true; } if( count($turnero) <= 0 ) { $turnero = false; return false; } return true; } else { //El profesional no tiene definida la agenda de horarios return false; } } function calendarioProfesional($med,&$calendario,&$turnero,&$calendarios,$userId=false) { $calendario = array(); $calendario['turnos'] = false; $calendario['horarios'] = false; $turneroFrec = false; $turneroEven = false; $turnero = false; $rangoMed = getRangoTurneroMedico($_REQUEST["idMed"]); $resultadoF = getProfesionalHorariosFrecuentes($_REQUEST["idMed"],$rangoMed,$calendario,$turneroFrec,$userId); $resultadoE = getProfesionalHorariosEventuales($_REQUEST["idMed"],$rangoMed,$calendario,$turneroEven); $calendarios = false; if( $rangoMed!==false && $rangoMed > 0 ) { $resultInfo = false; $result = obtenerTurneroCalendarioo($resultInfo,$_REQUEST["idMed"]); $calendarios = $resultInfo['data']['calendarios']; } if( $resultadoF || $resultadoE ) { if( is_array($turneroFrec) && is_array($turneroEven) ) { $turnero = array_merge($turneroFrec, $turneroEven); } elseif( is_array($turneroFrec) && !is_array($turneroEven) ) { $turnero = $turneroFrec; } elseif( !is_array($turneroFrec) && is_array($turneroEven) ) { $turnero = $turneroEven; } } return $turnero; } function prepareOutputByWhatsapp($tipo,$resultado) { //print_r($resultado);die; $output = array(); switch( $tipo ) { case 'agendaMed': { if(isset($_REQUEST["of"])) { foreach($resultado as $key=>$value) { //print_r($value);print_r("\n"); if( !($value===1)&&!($value===0) ) { $fecha = date("Y-m-d",strtotime($key)); $x = array_push($output,date("d/m/Y",strtotime($fecha))); } } } if(isset($_REQUEST["oh"])) { //$fecha = date("d/m/Y",strtotime($_REQUEST["fs"])); $fecha = substr($_REQUEST["fs"],6) ."-".substr($_REQUEST["fs"],3,2) ."-".substr($_REQUEST["fs"],0,2); foreach($resultado as $key=>$value) { if( $key == $fecha ) { $totalHoras = count($value); for($i=0;$i<$totalHoras;$i++) { if( strlen($value[$i])<4 ) { $aux = "0" . substr($value[$i],0, 1) . ":" . substr($value[$i],1); } else { $aux = substr($value[$i],0, 2) . ":" . substr($value[$i],2); } $x = array_push($output,$aux); } } } } } break; } return $output; } function getTurneroMedico(&$resultInfo) { if( isset($_REQUEST["idMed"]) && !empty($_REQUEST["idMed"]) && !is_null($_REQUEST["idMed"]) ) { $continue = true; $userId=false; $flagWHBoot=false; if(isset($_REQUEST["wbinterface"])){$flagWHBoot=true;} if( $GLOBALS['USERLOGINTURNOS'] && !$flagWHBoot ) { if( isset($_REQUEST["token"]) && !is_null($_REQUEST["token"]) ) { //Validar el Token $tokenInfo = false; $result = false; $userId = false; $continue = Acl::validateToken($_REQUEST["token"],$tokenInfo,$result); if( $result == Acl::TOKEN_VALID ) { $userId = $tokenInfo->uid; $continue = true; } elseif( $result == Acl::TOKEN_EXPIRED ) { $defaultErrorMsj = 'SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE'; $continue = false; $resultInfo['code'] = -1; $resultInfo['errorDes'] = "SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE"; } else { $defaultErrorMsj = 'SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE'; $continue = false; $resultInfo['code'] = -1; $resultInfo['errorDes'] = "SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE"; } } else { //Error $defaultErrorMsj = 'SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE'; $continue = false; $resultInfo['code'] = -1; $resultInfo['errorDes'] = "SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE"; } } if($continue) { if( !validarExisteHorarioMedico($_REQUEST["idMed"]) ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "El profesional no esta habilitado para tomar turnos via web."; } else { if( !validarProfesional($_REQUEST["idMed"]) ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "El profesional no esta habilitado para tomar turnos via web."; } else { $desde = date("Y-m-d H:i:s"); $hasta = date("Y-m-d H:i:s"); } $turnero = false; $calendario = array(); $calendarios= array(); $resultado = calendarioProfesional($_REQUEST["idMed"], $calendario, $turnero, $calendarios,$userId); if( $turnero ) { if( $flagWHBoot ) { $turnero = prepareOutputByWhatsapp('agendaMed',$turnero); $calendarios='';//NO ME HACE FALTA EN WHATSAPP } $resultInfo['code'] = 0; $resultInfo['data'] = array( "turnero" => $turnero ,"calendarios" => $calendarios ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } } } else { $resultInfo['code'] = 4; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } function getMedicoCalendarioYTurnos($med,&$calendario,&$turnero) { $calendario = array(); $calendario['turnos'] = false; $calendario['horarios'] = false; $turnero = false; $turnosexistentes = false; $rango = getRangoTurnero(); $fechaDesde = date("Y-m-d"); $fechaHasta = date("Y-m-d",strtotime('+' . $rango . ' days',strtotime($fechaDesde)));//TODO $fechaIni = date("Y-m-d 00:00:00.000",strtotime($fechaDesde)); $fechaFin = date("Y-m-d 23:59:59.000",strtotime($fechaHasta)); //Consulta de los dias de atencion del medico para los dias habilitados $sql = "SELECT [med_codigo] ,[mh_dia] ,[mh_desde1] ,[mh_hasta1] ,[mh_desde2] ,[mh_hasta2] ,[mh_int1] ,[mh_int2] FROM dbo.[medhora] WHERE [med_codigo] = " . $med ." ORDER BY [mh_dia] ASC, [mh_desde1] ASC, [mh_desde2] ASC"; $rs = $GLOBALS['dbSQL']->Query($sql); $horarioGral = array(); $horarioOrg = array(); $lstIntervalos = array(); if ( $rs ) { $flagPrimeElemento=true; $diaActual=0; $counter=1; $counterT=1; //$uu=0; for($i=1;$i<8;$i++) { $horarioGral[$i] = ""; } $horarioOrg = array(); for($h=0;$h<2;$h++) { $ini[$h] = false; $fin[$h] = false; } $rs = $GLOBALS['dbSQL']->getAll(); foreach($rs as $row) { //$uu++; $diaSemana = $row["mh_dia"]; $hDesde_m = $row["mh_desde1"]; $hHasta_m = $row["mh_hasta1"]; $hDesde_t = $row["mh_desde2"]; $hHasta_t = $row["mh_hasta2"]; $hDesde_m_ = $row["mh_desde1"]; $hHasta_m_ = $row["mh_hasta1"]; $hDesde_t_ = $row["mh_desde2"]; $hHasta_t_ = $row["mh_hasta2"]; $intervalM = $row["mh_int1"]; $intervalT = $row["mh_int2"]; $indexCalActual = array_push($horarioOrg,$row); $intervaloManana = false; $intervaloTarde = false; $tipo = 0; // Solo Mañana if($hDesde_m!=0 && $hHasta_m!=0 && $intervalM!=0) { $intervaloManana = true; //Parseo los horarios if(strlen($hDesde_m)<4) { $hDesde_m = '0'.substr($hDesde_m,0,1).':'.substr($hDesde_m,1,2); } else { $hDesde_m = substr($hDesde_m,0,2).':'.substr($hDesde_m,2,2); } if(strlen($hHasta_m)<4) { $hHasta_m = '0'.substr($hHasta_m,0,1).':'.substr($hHasta_m,1,2); } else { $hHasta_m = substr($hHasta_m,0,2).':'.substr($hHasta_m,2,2); } $turnos_ = false; $turnosf_= false; list($turnos_,$turnosf_) = calcularHoras($intervalM,$fechaDesde,$hDesde_m,$hHasta_m); $k = array_push($lstIntervalos, array( 0=> $diaSemana, 1=> $hDesde_m, 2=> $hHasta_m, 3=> $intervalM, 4=> $hDesde_m_, 5=> $hHasta_m_, 6=> $turnos_, 7=> $turnosf_ )); } if($hDesde_t!=0 && $hHasta_t!=0 && $intervalT!=0) { $intervaloTarde = true; //Parseo los horarios if(strlen($hDesde_t)<4) { $hDesde_t = '0'.substr($hDesde_t,0,1).':'.substr($hDesde_t,1,2); } else { $hDesde_t = substr($hDesde_t,0,2).':'.substr($hDesde_t,2,2); } if(strlen($hHasta_t)<4) { $hHasta_t = '0'.substr($hHasta_t,0,1).':'.substr($hHasta_t,1,2); } else { $hHasta_t = substr($hHasta_t,0,2).':'.substr($hHasta_t,2,2); } $turnos_ = false; $turnosf_= false; list($turnos_,$turnosf_) = calcularHoras($intervalT,$fechaDesde,$hDesde_t,$hHasta_t); $k = array_push($lstIntervalos, array( 0=> $diaSemana, 1=> $hDesde_t, 2=> $hHasta_t, 3=> $intervalT, 4=> $hDesde_t_, 5=> $hHasta_t_, 6=> $turnos_, 7=> $turnosf_) ); } } //--------------------------------------------- //Buscar turnos existentes del período //--------------------------------------------- // $sql = "SELECT FORMAT( [tur_fecha], 'yyyy-MM-dd' ) as men_fecha $sql = "SELECT LEFT(CONVERT(VARCHAR, [tur_fecha], 120), 10) as men_fecha ,[tur_hora] FROM dbo.[turnos] WHERE [med_codigo] = " . $med ." AND [cli_codigo] <> 1 AND [tur_fecha] BETWEEN LEFT(CONVERT(VARCHAR, '".$fechaIni."', 120), 10) AND LEFT(CONVERT(VARCHAR, '".$fechaFin."', 120), 10) ORDER BY 1,2"; //die($sql); $result = $GLOBALS['dbSQL']->Query($sql); if( $result ) { $turnosexistentes = $GLOBALS['dbSQL']->getAll(); if( count($turnosexistentes) <= 0 ) { $turnosexistentes = false; } } //--------------------------------------------- // print_r('--------------------');print_r("\n"); // print_r(' INTERVALOS ');print_r("\n"); // print_r('--------------------');print_r("\n"); // print_r($lstIntervalos);print_r("\n"); // print_r('--------------------');print_r("\n"); // print_r(' TURNOS EXISTENTES');print_r("\n"); // print_r('--------------------');print_r("\n"); // print_r($turnosexistentes);print_r("\n"); //--------------------------------------------- //Armar la agenda //--------------------------------------------- $turnero = array(); $continue = true; $fDesde = $fechaDesde; while( $continue ) { $dSTurno = intval(date("N",strtotime($fDesde))); switch( $dSTurno ) { case LUNES: { $dSTurno = F_LUNES; } break; case MARTES: { $dSTurno = F_MARTES; } break; case MIERCOLES: { $dSTurno = F_MIERCOLES; } break; case JUEVES: { $dSTurno = F_JUEVES; } break; case VIERNES: { $dSTurno = F_VIERNES; } break; case SABADO: { $dSTurno = F_SABADO; } break; case DOMINGO: { $dSTurno = F_DOMINGO; } break; } $flagdia=false; //Busco el dia de la semana para la fecha actual, en el listado de días for( $i=0; $i 0 ) { // $turnero[$fDesde] = $turtmpaux; $turnero[$fDesde] = 2;//TIENE TURNOS } else { $turnero[$fDesde] = 0;//NO TIENE TURNOS } // print_r('TURNO AGREGADO');print_r("\n"); // print_r($turnero[$fDesde]);print_r("\n"); $flagdia = true; } } //Dia sin atencion if( !$flagdia ) { $turnero[$fDesde] = 1; }//NO TRABAJA ESE DIA $fDesde = date("Y-m-d",strtotime('+' . 1 . ' days',strtotime($fDesde))); $flagdia = false; if( $fDesde > $fechaHasta ) { $continue = false; } } // print_r('--------------------');print_r("\n"); // print_r(' TURNERO FINAL ');print_r("\n"); // print_r('--------------------');print_r("\n"); // print_r($turnero);print_r("\n");die; if( count($turnero) <= 0 ) { $turnero = false; return false; } return true; } else { //El profesional no tiene definida la agenda de horarios return false; } } function getTurneroProfesional(&$resultInfo) { if( isset($_REQUEST["idMed"]) && !empty($_REQUEST["idMed"]) && !is_null($_REQUEST["idMed"]) ) { if( !validarProfesional($_REQUEST["idMed"]) ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "El profesional no esta habilitado para tomar turnos via web."; } else { $desde = date("Y-m-d H:i:s"); $hasta = date("Y-m-d H:i:s"); } $turnero = false; $calendario = array(); $resultado = getMedicoCalendarioYTurnos($_REQUEST["idMed"], $calendario, $turnero); if( $turnero ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "turnero" => $turnero ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } else { $resultInfo['code'] = 4; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } function getNombrePacientesPorDNI($lstPacientes) { $clienteWhere = "cli_dni IN (".addslashes($lstPacientes).")"; $sql = "SELECT DISTINCT cli_codigo ,cli_nombre ,cli_dni FROM clientes WHERE ".$clienteWhere." ORDER BY cli_dni"; //print_r($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $outPut = array(); $counter=0; $pacientes = $GLOBALS['dbSQL']->getAll(); if(count($pacientes)>0) { return $pacientes; } return -1; } function getPacientesByDoc(&$resultInfo) { if( isset($_REQUEST["lst"]) && !empty($_REQUEST["lst"]) && !is_null($_REQUEST["lst"]) ) { $estudios = false; $archivos = getProcesarLstArchivos($_REQUEST["lst"]); //$files = json_decode($lstFiles ,true); //if( $estudios || $estudiosF) if( $archivos ) { $total = (is_array($archivos)?count($archivos):0); $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => $total ,"archivos"=> (is_array($archivos)?$archivos:array()) ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al procesar los archivos"; } } else { $resultInfo['code'] = 4; $resultInfo['errorDes'] = "Se produjo un error al procesar los archivos"; } } function getTurnero(&$resultInfo) { if( isset($_REQUEST["idMed"]) && !empty($_REQUEST["idMed"]) && !is_null($_REQUEST["idMed"]) ) { $resultado = getHorarioGral($_REQUEST["idMed"],$calendario); list($showWeb,$showTurnero) = validateMedico($_REQUEST["idMed"]); if( $resultado ) { $resultado = getFechasSemanaSel($calendario); if( $resultado ) { $resultado = getTurnos($calendario); if( $resultado ) { $resultInfo['code'] = 0; $calendario['soloHorario'] = "0"; if( $showTurnero != 1 ) { //$calendario['fechasSemana'] = ""; //$calendario['fechasSemanaF']= ""; $calendario['turnero'] = ""; //$calendario['turDisp'] $calendario['mesActual'] = ""; $calendario['anoActual'] = ""; $calendario['soloHorario'] = "1"; } /*$resultInfo['data'] = array( "listHorarios" => $calendario['horarios'] ,"listHorariosF" => $calendario['horariosOrg'] ,"listTurnos" => $calendario['turnos'] ,"listDias" => $calendario['fechasSemana'] ,"listDiasF" => $calendario['fechasSemanaF'] ,"listTurnero" => $calendario['turnero'] );*/ $resultInfo['data'] = array( //"listHorarios" => $calendario['horarios'] "listDias" => $calendario['fechasSemana'] ,"listDiasF" => $calendario['fechasSemanaF'] ,"listTurnero" => $calendario['turnero'] ,"listTotTurDisp" => $calendario['turDisp'] ,"listMesActual" => $calendario['mesActual'] ,"listAnoActual" => $calendario['anoActual'] ,"tipoturnero" => $calendario['soloHorario'] ,"listHorarios" => $calendario['horarios'] ); } else { $resultInfo['code'] = 3; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } else { $resultInfo['code'] = 4; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } function getHorariosAtencion(&$resultInfo) { if( isset($_REQUEST["idMed"]) && !empty($_REQUEST["idMed"]) && !is_null($_REQUEST["idMed"]) ) { $resultado = getHorarioGral($_REQUEST["idMed"],$calendario); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "listHorarios" => $calendario['horarios'] ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } else { $resultInfo['code'] = 4; $resultInfo['errorDes'] = "Se produjo un error al consultar el turnero del profesional"; } } function confirmarTurnoPaciente(&$resultInfo) { if( isset($_REQUEST["dni"]) && !empty($_REQUEST["dni"]) && !is_null($_REQUEST["dni"]) && trim($_REQUEST["dni"])!="" && is_numeric($_REQUEST["dni"]) && isset($_REQUEST["fecha"]) && !empty($_REQUEST["fecha"]) && !is_null($_REQUEST["fecha"]) && trim($_REQUEST["fecha"])!="" && isset($_REQUEST["hora"]) && !empty($_REQUEST["hora"]) && !is_null($_REQUEST["hora"]) && trim($_REQUEST["hora"])!="" && is_numeric($_REQUEST["hora"])&& isset($_REQUEST["idMed"]) && !empty($_REQUEST["idMed"]) && !is_null($_REQUEST["idMed"]) && trim($_REQUEST["idMed"])!="" && is_numeric($_REQUEST["idMed"])&& isset($_REQUEST["idobs"]) && !empty($_REQUEST["idobs"]) && !is_null($_REQUEST["idobs"]) && trim($_REQUEST["idobs"])!="" && is_numeric($_REQUEST["idobs"])&& isset($_REQUEST["idplan"]) && !empty($_REQUEST["idplan"]) && !is_null($_REQUEST["idplan"]) && trim($_REQUEST["idplan"])!="" && is_numeric($_REQUEST["idplan"]) ) { $turnoInfo = array(); $turnoInfo["dni"] = $_REQUEST["dni"]; $turnoInfo["fecha"] = $_REQUEST["fecha"]; $turnoInfo["hora"] = $_REQUEST["hora"]; $turnoInfo["medico"] = $_REQUEST["idMed"]; $turnoInfo["obs"] = $_REQUEST["idobs"]; $turnoInfo["plan"] = $_REQUEST["idplan"]; $turnoInfo["turcosto"] = false; if( isset($_REQUEST["flagtc"]) && !empty($_REQUEST["flagtc"]) && !is_null($_REQUEST["flagtc"]) && is_numeric($_REQUEST["flagtc"]) && $_REQUEST["flagtc"]==1 ) { $turnoInfo["turcosto"] = true; } $turnoInfo["telemed"] = (isset($_REQUEST["tml"])?(intval($_REQUEST["tml"])==1?true:false):false); if(!$turnoInfo["telemed"]){$turnoInfo["telemed"]= (isset($_REQUEST["tlm"])?(intval($_REQUEST["tlm"])==1?true:false):false);} if( isset($_REQUEST["familiar"]) && !empty($_REQUEST["familiar"]) && !is_null($_REQUEST["familiar"]) && trim($_REQUEST["familiar"])!="" ) { $turnoInfo["familiar"] = ($_REQUEST["familiar"]==1||$_REQUEST["familiar"]=="1"?true:false); } $resultado = registrarTurnoWs($turnoInfo); //print_r("r[".$resultado."]");die; if( $resultado!==false ) { if( $resultado === 0 ) { $mpid = ''; $token = ''; $errorMP = false; if( $turnoInfo["turcosto"] ) { list($mpid,$token) = getTurnoInfoMP($turnoInfo['idTurno'],$errorMP); } $resultInfo['code'] = 0; //$resultInfo['data'] = array( "idTurno" => $turnoInfo['idTurno'] ); $resultInfo['data'] = array( "idTurno" => $turnoInfo['idTurno'] ,"email" => $turnoInfo['email'] ,"mpp" => $mpid ,"mpperror" => 0 ,"token" => $token ); if( $turnoInfo["turcosto"] ) { if( !$errorMP ) { $error = false; $result = saveTurnoCostoMPInfo($turnoInfo['idTurno'],$mpid,$token,$error); $resultInfo['data']["mpperror"] = ($result?0:$error); } else { // Se produjo un error al obtener el MP PID: // - Boorar el turno // - Actualizar el estado del registro del la compra $resultInfo['code'] = 10; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno, con MercadoPago"; $error = false; $result = updateTurnoCostoMPInfoError($idTurno,ESTADO_TURNOCT_ERROR_OBTENER_MPID,print_r($errorMP,true),$token,$error); $resultInfo['data']["mpperror"] = $errorMP; } } } elseif( $resultado === 10 ) { $resultInfo['code'] = 10; $resultInfo['errorDes'] = "Obra social no disponible para reservar Turnos via Web"; } elseif( $resultado === 9 ) { $resultInfo['code'] = 9; $resultInfo['errorDes'] = "Obra social momentaneamente suspendida"; } elseif( $resultado === 8 ) { $resultInfo['code'] = 8; $resultInfo['errorDes'] = "Profesional sin convenio"; } elseif( $resultado === 7 ) { $resultInfo['code'] = 7; //$resultInfo['errorDes'] = "Umbral alcanzado"; $resultInfo['errorDes'] = "Sin turnos disponibles"; } elseif( $resultado === 6 ) { $resultInfo['code'] = 6; $resultInfo['errorDes'] = "Turno ocupado"; } elseif( $resultado === -1 ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "DNI no registrado"; } elseif( $resultado === 1 || $resultado === 2 || $resultado === 3 || $resultado === 4 ) { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Error en la aplicación"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno"; } } function getDatosFamiliar($dni) { $faminf = array( "nombre"=> '' ,"dni" => $dni ); $sql = "SELECT TOP 1 c.cli_dni AS DNI , cli_codigo , c.cli_nombre AS PACIENTE , o.obs_denom AS OBRA_SOCIAL , p.obsp_denom AS PLAN_ , o.obs_codigo AS ID_OBRA_SOCIAL , c.obsp_cod , c.cli_email AS EMAIL , c.cli_fecnto AS FacN , c.cli_sexo AS Sexo , c.cli_tel AS Telefono , c.cli_carnet AS carnet , o.obs_lock , c.cli_revalidaweb AS ValEmail , c.cli_tel_cod_area AS TelArea , c.cli_tel_numero AS TelNro , c.cli_revalidawebtel AS ValTelefono , c.cli_validapass AS ValPass , (CASE WHEN o.obs_telemed IS NULL THEN 0 ELSE 1 END) AS ObsTelemed FROM clientes AS c , obrasoc AS o , obsplan AS p WHERE c.cli_dni = '".$dni."' AND c.obs_codigo = o.obs_codigo AND p.obs_codigo = o.obs_codigo AND p.obsp_cod = c.obsp_cod ORDER BY cli_registracion"; //die($sql); debug($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $result = $GLOBALS['dbSQL']->getAll(); if( count($result)>0 ) { $faminf = array( "nombre" => trim($result[0]['PACIENTE']) ,"dni" => $dni ,"sexo" => $result[0]['Sexo'] ,"facn" => $result[0]['FacN'] ,"carnet" => $result[0]['carnet'] ,"nameObS"=> $result[0]['OBRA_SOCIAL'] ,"planObS"=> $result[0]['PLAN_'] ); } } return $faminf; } function registrarTurno(&$dataTurno) { $res = null; $debug=''; $familiar = false; $name = ""; $codP = -1; $idObS = false; $nameObS = false; $planObS = false; $idPlanObS = false; $email = -3; $sexo = false; $facn = false; $fechaOrg = $dataTurno["fecha"]; $horaOrg = $dataTurno["hora"]; $tursql = ''; $tel = false; $carnet = ''; $obsflag = false; $validaemail= false; $telarea = false; $telnumero = false; $validatel = false; $obstelemed = 0; $password = -3; $validaPass = false; $clienteBloqueado = false; $resultado = getValidarDNIFast($dataTurno["dni"], $password,$name,$codP,$idObS,$nameObS,$planObS,$idPlanObS,$email,$sexo,$facn,$tel,$carnet,$obsflag,$validaemail,$validatel,$telarea,$telnumero,$obstelemed,$validaPass,$clienteBloqueado); if( $resultado ) { if( $obsflag ) { //Error obrasocial bloqueada return 9; } if( !ValidarObraSocialWeb($idObS) ) { //Error obra social no valida vía WEB return 12; } if( $clienteBloqueado ) { //Error Cliente bloqueado return 14; } //Obtener el id del paciente $dataTurno["idPaciente"] = $codP; //Formatear la fecha al formato correcto $dataTurno["fecha"] = $dataTurno["fecha"] ." 00:00:00"; /*if( isset($dataTurno["familiar"]) && $dataTurno["familiar"] ) { $familiar = true; } if( $familiar ) { $dataTurno["obs"] = $idObS; $dataTurno["plan"] = $idPlanObS; }*/ $dataTurno["obs"] = $idObS; $dataTurno["plan"] = $idPlanObS; //Es particular // $flagParticular = false; // $flagParticular = ValidarConvenioWs($dataTurno["medico"], $idObS ); $flagParticular = false; $flagParticular = getObsParticular($idObS ); $flagConvenio = false; $flagConvenio = ValidarConvenioWs($dataTurno["medico"], $idObS ); if( !$flagConvenio ) { // Sin convenio // Guardar como particular $flagParticular = true; //return 8; } if( !ValidarFeriado($dataTurno["medico"], $fechaOrg ) ) { //Dia Feriado return 11; } /*//if( $dataTurno["obs"] == -1 && $dataTurno["plan"]==-1 ) if( !$resultadoParticular ) { $flagParticular = true; }*/ //print_r("f[".$flagParticular."]");die; //Validar convenio /*if( !$flagParticular && !ValidarConvenioWs($dataTurno["medico"], $dataTurno["obs"] ) ) { //Error medico-obrasocial sin convenio return 8; } else {*/ //Validar Umbral if ( !$flagParticular && !ValidarUmbralWs($dataTurno["medico"], $dataTurno["obs"], $dataTurno["fecha"]) ) { //Error umbral alcanzado return 7; } else { if ( !ValidarTurnoWs($dataTurno["medico"], $dataTurno["fecha"], $dataTurno["hora"]) ) { //Error turno ocupado return 6; } else { //Actualizacion del numerador de Turnos $sql = "UPDATE [codigos] SET [num_ultimo] = [num_ultimo] + 1, [num_fecha] = GETDATE() WHERE [num_codigo] = 4"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { $sql = "SELECT [num_ultimo] FROM dbo.[codigos] WHERE num_codigo = 4"; $rsN = $GLOBALS['dbSQL']->Query($sql); if ( $rsN ) { $conta=0; $rsN = $GLOBALS['dbSQL']->getAll(); foreach($rsN as $row) { $idTurno = $row["num_ultimo"]; $conta++; } if( $conta > 0 ) { if( $flagParticular ) { $dataTurno["obs"] = '(SELECT [par_obsp] FROM dbo.[empresa])'; $dataTurno["plan"] = '(SELECT [par_obpp] FROM dbo.[empresa])'; } else { $dataTurno["obs"] = $idObS; $dataTurno["plan"] = $idPlanObS; } $fecha = date("Y-m-d.H:i:s",strtotime($dataTurno["fecha"])); $fecha = str_replace(".","T",$fecha).".000"; //Insertar el turno $sql = 'INSERT INTO [turnos] ( [tur_numero] ,[tur_fecha] ,[tur_hora] ,[med_codigo] ,[cli_codigo] ,[cli_dni] ,[obs_codigo] ,[obsp_cod] ,[usu_codigo] ,[tur_asiste] ,[tur_impobs] ,[tur_impart] ,[tur_cupon] ,[inos_cod] ,[nom_codigo] ,[tur_telemed] ,[tur_costo] ,[tur_token] ,[cli_codigo_padre] ) VALUES ( '. $idTurno .' ,'. "'".$fecha ."'".' ,convert(smallint, '. $dataTurno["hora"] .') ,'. $dataTurno["medico"] .' ,'. $dataTurno["idPaciente"] .' ,'. $dataTurno["dni"] .' ,'. $dataTurno["obs"] .' ,'. $dataTurno["plan"] .' ,99 ,0 ,0 ,0 ,'."''".' ,(SELECT [pra_codigo] FROM dbo.[empresa]) ,(SELECT [nom_codigo] FROM dbo.[empresa]) ,'.($dataTurno["telemed"]?'1':'NULL').' ,'.($dataTurno["turcosto"]?1:0).' ,'."'".getComTurnoToken($idTurno,$dataTurno)."'".' ,'.($dataTurno["ff"]?$dataTurno["cliecod"]:'NULL').' )'; $tursql = $sql; //print_r($sql);die(" spider "); $rsI = $GLOBALS['dbSQL']->Query($sql,true); if ( $rsI ) { /* if(isset($_SESSION['obsNoCoincide'])) { unset($_SESSION['obsNoCoincide']);} if(isset($_SESSION['obsUmbralAlcanzado'])) { unset($_SESSION['obsUmbralAlcanzado']);} if(isset($_SESSION['obsOBS_Bloqueada'])) { unset($_SESSION['obsOBS_Bloqueada']);} */ //Actualizar el ultimo acceso del cliente $sql = "UPDATE [clientes] SET [cli_utlimoingresoweb] = GETDATE() WHERE [cli_dni] = " . $dataTurno["dni"]; $rsC = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsC ) { //Warning //Fallo actualizacion de Ultimo Acceso } /* if($GLOBALS['EMAIL_DEBUG']&&false)//spider { $data=array(); $data['paciente']='['.($familiar ? $_SESSION['GF']['codP'] : $_SESSION['codP']).'] '.($familiar ? $_SESSION['GF']['name'] : $_SESSION['name']); $data['dni']=($familiar ? $_SESSION['GF']['dni'] : $_SESSION['dni']); $data['familiar']=($familiar ? 'SI' : 'NO'); $data['email']=(isset($_SESSION['email']) && trim($_SESSION['email'])!='' ? $_SESSION['email'] : ''); $data['turnoId']=$idTurno; $data['medico']='['.$medData[0].']'.$medData[3].' '.$medData[1]; $data['osocial']=$dataTurno[2]; $data['plan']=$dataTurno[3]; $data['fechaT']=str_replace('00:00:00',$dataTurno[1],$fecha); sendDebugEmail($data,CONFIRMAR_TURNO_OK,true); } */ $dataTurno["idTurno"] = $idTurno; $dataTurno["email"] = $email; //Enviar Email de Confirmacion if( $GLOBALS['EMAIL_CUSTOMER'] ) { //if( $dataTurno["dni"]=='27249289' ) //{ sendEmailConfirmacionWs(TYPE_EMAIL_CT, $idTurno); //} } //print_r($dataTurno);die; $res = 0; //return 0; } else { //Error insertar turno [3] $res = 4; //return 4; } } else { //Error recuperar numerador $res = 3; //return 3; } } else { //Error recuperar numerador $res = 2; //return 2; } } else { //Error al actualizar numerador $res = 1; //return 1; } } } /*}*/ } else { //error dni inexistente $res = -1; //return -1; } if( is_null($res) ) { $res = -1; } //print_r($dataTurno);die(" ------- "); $pacienteData = getPacienteInfo((isset($dataTurno["idPaciente"])?$dataTurno["idPaciente"]:0)); $medData = getMedicoInfo((isset($dataTurno["medico"])?$dataTurno["medico"]:0)); $obsData = getNombreObraSocial((isset($dataTurno["obs"])?$dataTurno["obs"]:0)); $planData = getNombrePlan((isset($dataTurno["obs"])?$dataTurno["obs"]:0),(isset($dataTurno["plan"])?$dataTurno["plan"]:0)); if( $res !== 0 ) { if($GLOBALS['LOG_ERROR']) { $data=array(); $data['paciente'] = '['. (isset($dataTurno["idPaciente"])?$dataTurno["idPaciente"]:0).'] '. $pacienteData[1]; $data['dni'] = $pacienteData[0]; $data['familiar'] = 'NO'; $data['email'] = $pacienteData[2]; $data['turnoId'] = (isset($idTurno) ? $idTurno : ''); $data['medico'] = '['.$medData[0].']'.$medData[3].' '.$medData[1]; $data['osocial'] = '['.$dataTurno["obs"].']'. $obsData; $data['plan'] = '['.$dataTurno["plan"].']'. $planData; $data['fechaT'] = $dataTurno['fecha']; $data['error'] = $res; if($GLOBALS['EMAIL_DEBUG']&&false) { sendDebugEmail($data,CONFIRMAR_TURNO_ERROR,false); }//spider if( $GLOBALS['LOG_SPECIAL'] ) { //Log Especial $resultLogEspecial = registrarLogSpecial($data, __FUNCTION__, true,(isset($tursql) ? $tursql : '')); } } } else { $msj = ''; $msj.= 'TIPO EMAIL:[ '. CONFIRMAR_TURNO_OK . " ]

". "\n"; $msj.= 'Paciente: '. '['. $dataTurno["idPaciente"].'] '. $pacienteData[1] . "

". "\n"; $msj.= 'DNI: '. $pacienteData[0] . "

". "\n"; $msj.= 'Email: '. $pacienteData[2] . "

". "\n"; $msj.= 'Es Familiar:'. ' - ' . "

". "\n"; $msj.= 'Id Turno: '. $idTurno . "

". "\n"; $msj.= 'Medico: '. '['.$medData[0].']'.$medData[3].' '.$medData[1] . "

". "\n"; $msj.= 'O. Social: '. '['.$dataTurno["obs"].']'. $obsData . "

". "\n"; $msj.= 'Plan: '. '['.$dataTurno["plan"].']'. $planData . "

". "\n"; $msj.= 'Fecha Turno:'. $dataTurno['fecha'] . "

". "\n"; $msj.= 'Fecha: '. date('d/m/Y H:i:s') . "

". "\n"; $msj.= 'Resultado:[ OK ]

'. "\n"; $resultLog = registrarLogTurnosEnArchivo($msj); } return $res; //return false; } function confirmarTurno(&$resultInfo) { if( isset($_REQUEST["dni"]) && !empty($_REQUEST["dni"]) && !is_null($_REQUEST["dni"]) && trim($_REQUEST["dni"])!="" && is_numeric($_REQUEST["dni"]) && isset($_REQUEST["fecha"]) && !empty($_REQUEST["fecha"]) && !is_null($_REQUEST["fecha"]) && trim($_REQUEST["fecha"])!="" && isset($_REQUEST["hora"]) && !empty($_REQUEST["hora"]) && !is_null($_REQUEST["hora"]) && trim($_REQUEST["hora"])!="" && isset($_REQUEST["idMed"]) && !empty($_REQUEST["idMed"]) && !is_null($_REQUEST["idMed"]) && trim($_REQUEST["idMed"])!="" && is_numeric($_REQUEST["idMed"]) ) { $turnoInfo = array(); $turnoInfo["dni"] = $_REQUEST["dni"]; $turnoInfo["fecha"] = $_REQUEST["fecha"]; //$turnoInfo["hora"] = $_REQUEST["hora"]; $turnoInfo["hora"] = str_replace(":", "", $_REQUEST["hora"]); if( substr($turnoInfo["hora"], 0, 1) == "0" ) { $turnoInfo["hora"] = substr($turnoInfo["hora"], 1); } $turnoInfo["medico"] = $_REQUEST["idMed"]; $turnoInfo["obs"] = false;//$_REQUEST["idobs"]; $turnoInfo["plan"] = false;//$_REQUEST["idplan"]; $turnoInfo["telemed"] = (isset($_REQUEST["tlm"])?($_REQUEST["tlm"]=="true"?true:false):false); //print_r($turnoInfo);die; // if( // isset($_REQUEST["familiar"]) && // !empty($_REQUEST["familiar"]) && // !is_null($_REQUEST["familiar"]) && // trim($_REQUEST["familiar"])!="" // ) // { // $turnoInfo["familiar"] = ($_REQUEST["familiar"]==1||$_REQUEST["familiar"]=="1"?true:false); // } $turnoInfo["turcosto"] = false; if( isset($_REQUEST["flagtc"]) && !empty($_REQUEST["flagtc"]) && !is_null($_REQUEST["flagtc"]) && is_numeric($_REQUEST["flagtc"]) && $_REQUEST["flagtc"]==1 ) { $turnoInfo["turcosto"] = true; } $turnoInfo["ff"] = false; $turnoInfo["cliecod"]= false; $continue = true; if( isset($_REQUEST["ff"]) && isset($_REQUEST["token"]) ) { //Validar el Token $tokenInfo = false; $result = false; $continue = Acl::validateToken($_REQUEST["token"],$tokenInfo,$result); if( $result == Acl::TOKEN_VALID ) { $clienteId = $tokenInfo->uid; $continue = true; } elseif( $result == Acl::TOKEN_EXPIRED ) { $resultInfo['code'] = 3; $resultInfo['data'] = array("res"=>"SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE"); $resultInfo['errorDes'] = "SU SESION HA EXPIRADO. REINGRESE E INTENTE NUEVAMENTE"; $continue = false; } $turnoInfo["ff"] = true; $turnoInfo["cliecod"]= $tokenInfo->uid; } if( $continue ) { $resultado = registrarTurno($turnoInfo); //print_r("r[".$resultado."]");die; if( $resultado!==false ) { if( $resultado === 0 ) { if( isset($_REQUEST['rt']) ) { //Cancelar Turno Reasignado } $mpid = ''; $token = ''; $errorMP = false; if( $turnoInfo["turcosto"] ) { list($mpid,$token) = getTurnoInfoMP($turnoInfo['idTurno'],$errorMP); } $resultInfo['code'] = 0; //$resultInfo['data'] = array( "idTurno" => $turnoInfo['idTurno'] ); $resultInfo['data'] = array( "idTurno" => $turnoInfo['idTurno'] ,"email" => $turnoInfo['email'] ,"telemedicina" => ($turnoInfo["telemed"]?'s':'n') ,"mpp" => $mpid ,"mpperror" => 0 ,"token" => $token ,"finf" => ($turnoInfo["ff"]?getDatosFamiliar($_REQUEST["dni"]):'') ); if( $turnoInfo["turcosto"] ) { if( !$errorMP ) { $error = false; $result = saveTurnoCostoMPInfo($turnoInfo['idTurno'],$mpid,$token,$error); $resultInfo['data']["mpperror"] = ($result?0:$error); } else { // Se produjo un error al obtener el MP PID: // - Boorar el turno // - Actualizar el estado del registro del la compra $resultInfo['code'] = 10; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno, con MercadoPago"; $error = false; $result = updateTurnoCostoMPInfoError($idTurno,ESTADO_TURNOCT_ERROR_OBTENER_MPID,print_r($errorMP,true),$token,$error); $resultInfo['data']["mpperror"] = $errorMP; } } } elseif( $resultado === 14 ) { $resultInfo['code'] = 14; $resultInfo['errorDes'] = "El paciente se encuentra inhabilitado para reservar turnos"; } elseif( $resultado === 12 ) { $resultInfo['code'] = 12; $resultInfo['errorDes'] = "Obra social no disponible para reservar Turnos via Web"; } elseif( $resultado === 11 ) { $resultInfo['code'] = 11; $resultInfo['errorDes'] = "La fecha seleccionada se corresponde a un día feriado"; } elseif( $resultado === 9 ) { $resultInfo['code'] = 9; $resultInfo['errorDes'] = "Obra social momentaneamente suspendida"; } elseif( $resultado === 8 ) { $resultInfo['code'] = 8; $resultInfo['errorDes'] = "Profesional sin convenio"; } elseif( $resultado === 7 ) { $resultInfo['code'] = 7; //$resultInfo['errorDes'] = "Umbral alcanzado"; $resultInfo['errorDes'] = "Sin turnos disponibles"; } elseif( $resultado === 6 ) { $resultInfo['code'] = 6; $resultInfo['errorDes'] = "Turno ocupado"; } elseif( $resultado === -1 ) { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "DNI no registrado"; } elseif( $resultado === 1 || $resultado === 2 || $resultado === 3 || $resultado === 4 ) { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Error en la aplicación"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al registrar el turno"; } } function getRangoTurnero() { $sql = '(SELECT [tur_dias] FROM dbo.[empresa])'; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $empresa = $GLOBALS['dbSQL']->getAll(); return $empresa[0]["tur_dias"]; } return false; } function getRangoTurneroMedico($idMed) { // DESHABILITE EL RANGO POR MEDICO, YA QUE ME RETORNABA UNA FILA PERO VACIA Y LA INTERPRETABA COMO UNA FILA MAS /*$sql = 'SELECT med_rango_dias FROM dbo.[medicos] WHERE med_codigo = ' . $idMed; $resultado = $GLOBALS['dbSQL']->Query($sql); if ( $resultado ) { $medico = $GLOBALS['dbSQL']->getAll(); //print_r($medico);die; //if(isset($_REQUEST["idMed"])&&intval($_REQUEST["idMed"])==563){print_r($medico);die;} if(count($medico)>0) { return intval($medico[0]["med_rango_dias"]); } else {*/ return getRangoTurnero(); /*} } return false;*/ } function obtenerTurneroCalendarioo(&$resultInfo) { date_default_timezone_set('America/Argentina/Buenos_Aires'); $mes = date("j:n:Y:D:t:d:m"); //if(isset($_REQUEST["idMed"])&&intval($_REQUEST["idMed"])==563)print_r($mes);die; // j Día del mes sin ceros iniciales 1 a 31 // n Representación numérica de un mes, sin ceros iniciales 1 hasta 12 // Y Una representación numérica completa de un año, 4 dígitos Ejemplos: 1999 o 2003 // D Una representación textual de un día, tres letras Mon hasta Sun // t Número de días del mes dado 28 hasta 31 // d Día del mes, 2 dígitos con ceros iniciales 01 a 31 // m Representación numérica de una mes, con ceros iniciales 01 hasta 12 // $fechasInfo[0] j Día del mes sin ceros // $fechasInfo[1] n Representación numérica de un mes // $fechasInfo[2] Y Una representación numérica completa de un año // $fechasInfo[3] D Una representación textual de un día, tres letras // $fechasInfo[4] t Número de días del mes dado // $fechasInfo[5] d Día del mes, 2 dígitos con ceros // $fechasInfo[6] m Representación numérica de una mes, con ceros iniciales /* [code] => 0 [data] => Array ( [primerdia] => Mon [ultimodiames] => 31 [hoyNumero] => 25 [diasemanaPD] => 5 [fechaHoy] => 2019-03-25 [mesNumero] => 3 [fechaTope] => 2019-05-24 [mesSiguienteNumero]=> 4 [diastope] => 60 [mesano] => 2019-03- [ano] => 2019 [mes] => Marzo [calendarios] => Array ( [0] => Array ( [primerdia] => Mon [ultimodiames] => 30 [hoyNumero] => 1 [fechaHoy] => 01:04:2019 [mesNumero] => 4 ) [1] => Array ( [primerdia] => Wed [ultimodiames] => 31 [hoyNumero] => 1 [fechaHoy] => 01:05:2019 [mesNumero] => 5 ) ) ) */ $fechasInfo = explode(':',$mes); $rango = getRangoTurnero(); if( $rango ) { $hoy = $fechasInfo[2]."-".$fechasInfo[6]."-".$fechasInfo[5]; $tope = explode(':',date("j:n:Y:D:t:d:m", strtotime($hoy. ' + '.$rango.' days'))); $topeF = date("Ymd", strtotime($hoy. ' + '.$rango.' days')); $calendarios = array(); $infonext = array( "primerdia" => $fechasInfo[3] ,"ultimodiames" => intval($fechasInfo[4]) ,"hoy" => intval($fechasInfo[0]) ,"fechaHoy" => $fechasInfo[2]."-". $fechasInfo[6]."-". $fechasInfo[5] ,"mesNumero" => intval($fechasInfo[1]) ,"diasemanaprimerdiames"=> intval(date("N", strtotime($fechasInfo[2]."-". $fechasInfo[6]."-01"))) ,"fechaTope" => date("Y-m-d", strtotime($hoy. ' + '.$rango.' days')) ,"mesSiguienteNumero" => (($fechasInfo[1]==12)?(1):($fechasInfo[1]+1)) ,"diastope" => $rango ,"mesano" => date("Y-m-", strtotime($hoy)) ,"ano" => date("Y", strtotime($hoy)) ,"mes" => getMesNombre(date("n", strtotime($hoy))) ); $index = array_push($calendarios,$infonext); $nextday = $hoy; $meses = array(); for($i=1;$i<=$rango;$i++) { $nextday = explode(':',date("j:n:Y:D:t:d:m", strtotime($hoy. ' + '.$i.' days'))); $nextdayF = $nextday[2]."-".$nextday[6]."-".$nextday[5]; if( date("Ymd",strtotime($nextdayF)) <= date("Ymd",strtotime($topeF)) ) { if( intval($nextday[1])!= intval($fechasInfo[1]) || ( intval($nextday[1])== intval($fechasInfo[1]) && intval($nextday[2])!= intval($fechasInfo[2]) ) ) { if(array_search($nextday[1], $meses)===false) { $x = array_push($meses,$nextday[1]); $mesnextInfo = explode(':',date("j:n:Y:D:t:d:m", strtotime($nextdayF))); $infonext = array( "primerdia" => $mesnextInfo[3] ,"ultimodiames" => intval($mesnextInfo[4]) ,"hoy" => intval($mesnextInfo[0]) ,"fechaHoy" => $mesnextInfo[2]."-".$mesnextInfo[6]."-".$mesnextInfo[5] ,"mesNumero" => intval($mesnextInfo[1]) ,"diasemanaprimerdiames"=> intval(date("N", strtotime($mesnextInfo[2]."-". $mesnextInfo[6]."-01"))) ,"fechaTope" => date("Y-m-d", strtotime($hoy. ' + '.$rango.' days')) ,"mesSiguienteNumero" => (($mesnextInfo[1]==12)?(1):($mesnextInfo[1]+1)) ,"diastope" => $rango ,"mesano" => $mesnextInfo[2]."-".$mesnextInfo[6]."-" ,"ano" => $mesnextInfo[2] ,"mes" => getMesNombre($mesnextInfo[1]) ); $index = array_push($calendarios,$infonext); } } } } $resultInfo['code'] = 0; $resultInfo['data'] = array( "calendarios" => $calendarios ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Sistema no disponible"; } } function obtenerTurneroCalendario(&$resultInfo,$med=false) { date_default_timezone_set('America/Argentina/Buenos_Aires'); $mes = date("j:n:Y:D:t:d:m"); // j Día del mes sin ceros iniciales 1 a 31 // n Representación numérica de un mes, sin ceros iniciales 1 hasta 12 // Y Una representación numérica completa de un año, 4 dígitos Ejemplos: 1999 o 2003 // D Una representación textual de un día, tres letras Mon hasta Sun // t Número de días del mes dado 28 hasta 31 // d Día del mes, 2 dígitos con ceros iniciales 01 a 31 // m Representación numérica de una mes, con ceros iniciales 01 hasta 12 // $fechasInfo[0] j Día del mes sin ceros // $fechasInfo[1] n Representación numérica de un mes // $fechasInfo[2] Y Una representación numérica completa de un año // $fechasInfo[3] D Una representación textual de un día, tres letras // $fechasInfo[4] t Número de días del mes dado // $fechasInfo[5] d Día del mes, 2 dígitos con ceros // $fechasInfo[6] m Representación numérica de una mes, con ceros iniciales /* [code] => 0 [data] => Array ( [primerdia] => Mon [ultimodiames] => 31 [hoyNumero] => 25 [diasemanaPD] => 5 [fechaHoy] => 2019-03-25 [mesNumero] => 3 [fechaTope] => 2019-05-24 [mesSiguienteNumero]=> 4 [diastope] => 60 [mesano] => 2019-03- [ano] => 2019 [mes] => Marzo [calendarios] => Array ( [0] => Array ( [primerdia] => Mon [ultimodiames] => 30 [hoyNumero] => 1 [fechaHoy] => 01:04:2019 [mesNumero] => 4 ) [1] => Array ( [primerdia] => Wed [ultimodiames] => 31 [hoyNumero] => 1 [fechaHoy] => 01:05:2019 [mesNumero] => 5 ) ) ) */ $fechasInfo = explode(':',$mes); //$rango = getRangoTurnero(); if( $med ) { $rango = getRangoTurneroMedico($med); } else { $rango = getRangoTurnero(false); } if( $rango ) { $hoy = $fechasInfo[2]."-".$fechasInfo[6]."-".$fechasInfo[5]; $tope = explode(':',date("j:n:Y:D:t:d:m", strtotime($hoy. ' + '.$rango.' days'))); $calendarios = array(); $infonext = array( "primerdia" => $fechasInfo[3] ,"ultimodiames" => intval($fechasInfo[4]) ,"hoy" => intval($fechasInfo[0]) ,"fechaHoy" => $fechasInfo[2]."-". $fechasInfo[6]."-". $fechasInfo[5] ,"mesNumero" => intval($fechasInfo[1]) ,"diasemanaprimerdiames"=> intval(date("N", strtotime($fechasInfo[2]."-". $fechasInfo[6]."-01"))) ,"fechaTope" => date("Y-m-d", strtotime($hoy. ' + '.$rango.' days')) ,"mesSiguienteNumero" => (($fechasInfo[1]==12)?(1):($fechasInfo[1]+1)) ,"diastope" => $rango ,"mesano" => date("Y-m-", strtotime($hoy)) ,"ano" => date("Y", strtotime($hoy)) ,"mes" => getMesNombre(date("n", strtotime($hoy))) ); $index = array_push($calendarios,$infonext); if( $tope[1] > $fechasInfo[1] ) { $total = $tope[1] - $fechasInfo[1]; $conta = 1; $hoyBase = $fechasInfo[2]."-".$fechasInfo[6]."-01"; for($i=0;$i<$total;$i++) { //$mesnext = date("Y-m-d", strtotime($hoyBase. ' + '.$conta.' month')); //print_r("m n[".$mesnext."]");print_r("\n"); $mesnextInfo = explode(':',date("j:n:Y:D:t:d:m", strtotime($hoyBase. ' + '.$conta.' month'))); $conta++; $infonext = array( "primerdia" => $mesnextInfo[3] ,"ultimodiames" => intval($mesnextInfo[4]) ,"hoy" => intval($mesnextInfo[0]) ,"fechaHoy" => $mesnextInfo[2]."-".$mesnextInfo[6]."-".$mesnextInfo[5] ,"mesNumero" => intval($mesnextInfo[1]) ,"diasemanaprimerdiames"=> intval(date("N", strtotime($mesnextInfo[2]."-". $mesnextInfo[6]."-01"))) ,"fechaTope" => date("Y-m-d", strtotime($hoy. ' + '.$rango.' days')) ,"mesSiguienteNumero" => (($mesnextInfo[1]==12)?(1):($mesnextInfo[1]+1)) ,"diastope" => $rango ,"mesano" => $mesnextInfo[2]."-".$mesnextInfo[6]."-" ,"ano" => $mesnextInfo[2] ,"mes" => getMesNombre($mesnextInfo[1]) ); $index = array_push($calendarios,$infonext); } } $resultInfo['code'] = 0; $resultInfo['data'] = array( "calendarios" => $calendarios ); } else { $resultInfo = responseGerenicError(); } } // -------------------------------------------- // FAMILIAR // -------------------------------------------- function getValidarDNIFamiliar($dni,&$clienteInfo=false) { $sql = "SELECT TOP 1 c.cli_dni AS DNI , cli_codigo , c.cli_nombre AS PACIENTE , o.obs_denom AS OBRA_SOCIAL , p.obsp_denom AS PLAN_ , o.obs_codigo AS ID_OBRA_SOCIAL , c.obsp_cod , c.cli_email AS EMAIL , c.cli_fecnto AS FacN , c.cli_sexo AS Sexo , c.cli_tel AS Telefono , c.cli_carnet AS carnet , o.obs_lock ,cli_bloqueado , (CASE WHEN o.obs_telemed IS NULL THEN 0 ELSE 1 END) AS ObsTelemed FROM clientes AS c , obrasoc AS o , obsplan AS p WHERE c.cli_dni = '".$dni."' AND c.obs_codigo = o.obs_codigo AND p.obs_codigo = o.obs_codigo AND p.obsp_cod = c.obsp_cod ORDER BY cli_registracion"; //die($sql); debug($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $result = $GLOBALS['dbSQL']->getAll(); if( count($result)>0 ) { $clienteInfo = $result; } return true; } return false; } function validarDNIFamiliar(&$resultInfo) { if( isset($_REQUEST["dni"]) && !empty($_REQUEST["dni"]) && !is_null($_REQUEST["dni"]) && trim($_REQUEST["dni"])!="" && is_numeric($_REQUEST["dni"]) ) { $dni = $_REQUEST["dni"]; $clienteInfo = false; $resultado = getValidarDNIFamiliar($dni, $clienteInfo); if( $resultado ) { if( $clienteInfo && count($clienteInfo)>0 ) { if( intval($clienteInfo[0]["cli_bloqueado"])===0 ) { $resultInfo['code'] = 0; $resultInfo['data'] = $clienteInfo; } else { $resultInfo['code'] = 4; $resultInfo['errorDes'] = "El Paciente esta bloquedado. Consulte con la administración."; } } else { $resultInfo['code'] = 3; $resultInfo['errorDes'] = "El Documento no esta registrado"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Error en la aplicación"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } } // -------------------------------------------- // END FAMILIAR // -------------------------------------------- function getLstObsPlanes(&$resultInfo) { if( isset($_REQUEST["id"]) && !empty($_REQUEST["id"]) && !is_null($_REQUEST["id"]) ) { $idObraSocial = $_REQUEST["id"]; $resultado = getListObraSocialesPlanes($idObraSocial); if( $resultado ) { //Listar Obras Sociales $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => count($resultado) ,"listObsPlanes" => $resultado ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar los planes de la obra social"; } } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "El código de la obra social no fue recibido"; } } ?>