Query($sql); if ( !$rsC ) { $error = 1; return false; } else { $registros = $GLOBALS['dbSQL']->getAll(); if( count($registros)<=0 ) { //Grabar el MP Preference Id en el turno $sql = "UPDATE turnos SET tur_mercadopago_preferencia = '".$mpid."' WHERE tur_numero = " . $idTurno; $rsC = $GLOBALS['dbSQL']->Query($sql); if ( !$rsC ) { $error = 3; return false; } //Grabar un registro en la tabala de transacciones de Turnos con Costo-MP $sql = "INSERT INTO turnos_compras_mp ( tur_numero ,tcmp_token ,tcmp_mpid ,tcmp_estado ,tcmp_fecha ,tcmp_fecha_respuesta ,tcmp_respuesta ) VALUES( ".$idTurno." ,'".$token."' ,'".$mpid."' ,".ESTADO_TURNOCT_PENDIENTE." ,GETDATE() ,NULL ,NULL )"; $rsC = $GLOBALS['dbSQL']->Query($sql); if ( !$rsC ) { $error = 4; return false; } } else { $error = 2; return false; } } return true; } function updateTurnoCostoMPInfoSuccess($turnoId,$mppid,$response,$token,&$error=false) { //Actualizar el MP Preference Id en el turno $sql = "UPDATE turnos SET tur_mercadopago_preferencia = '".$mppid."' WHERE tur_numero = ". $turnoId; $rsC = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsC ) { $error = 1; return false; } //Alctualizar el registro de transacion de MP - TC $sql = "UPDATE turnos_compras_mp SET tcmp_estado = ".ESTADO_TURNOCT_EXITO." ,tcmp_respuesta = '".$response."' ,tcmp_fecha_respuesta = GETDATE() WHERE tur_numero = ". $turnoId." AND tcmp_token = '".$token."'"; $rsC = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsC ) { $error = 2; return false; } return true; } function updateTurnoCostoMPInfoError($idTurno,$estado,$response,$token,&$error=false) { // Borrar el turno (No enviar email de cancelacion) $sql = "DELETE FROM turnos WHERE tur_numero = " . $idTurno; $rsC = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsC ) { $error = 1; return false; } else { //Grabar el MP Preference Id en el turno $sql = "UPDATE turnos_compras_mp SET tcmp_estado = ". ESTADO_TURNOCT_ERROR_RETORNO_MP ." ,tcmp_respuesta = '".$response."' ,tcmp_fecha_respuesta = GETDATE() WHERE tur_numero = ". $idTurno." AND tcmp_token = '".$token."'"; $rsC = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rsC ) { $error = 2; return false; } } return true; } function getIsProfesionalLDOnline($profesional) { $resultado = false; $sql = "SELECT m.med_codigo FROM medicos AS m WHERE m.med_codigo = '".addslashes($profesional)."' AND m.med_web = 1 AND m.med_bloqueado = 0 AND EXISTS ( SELECT 1 FROM dbo.[ldoc_medico_atencion] AS TT2 WHERE TT2.med_codigo = m.med_codigo AND TT2.matn_disponible = 1 AND TT2.matn_fechafin IS NULL )"; //die($sql); //debug($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } else { $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { $resultado = true; } } return $resultado; } function getLDListEspecialidadesTotalMedicos() { //AND TT2.matn_fechainicio >= GETDATE() //AND TT3.matn_fechainicio >= GETDATE() $sql = "SELECT TT0.Cod ,TT0.Esp ,(TT0.totMed + (CASE WHEN TT0.totMedEspecialidades IS NULL THEN 0 ELSE TT0.totMedEspecialidades END)) AS totMed FROM ( SELECT T0.[esp_codigo] AS Cod ,T0.[esp_denom] AS Esp ,(SELECT COUNT(T1.esp_codigo) FROM dbo.[medicos] AS T1 WHERE T1.esp_codigo = T0.esp_codigo AND T1.med_bloqueado = 0 AND EXISTS ( SELECT 1 FROM dbo.[ldoc_medico_atencion] AS TT2 WHERE TT2.med_codigo = T1.med_codigo AND TT2.matn_disponible = 1 AND TT2.matn_fechafin IS NULL ) GROUP BY T1.esp_codigo ) AS totMed ,(SELECT COUNT(T2.esp_codigo) FROM dbo.[med_especialidades] AS T2 INNER JOIN dbo.[medicos] AS T3 ON T2.med_codigo=T3.med_codigo WHERE T2.esp_codigo = T0.esp_codigo AND T3.med_bloqueado = 0 AND EXISTS ( SELECT 1 FROM dbo.[ldoc_medico_atencion] AS TT3 WHERE TT3.med_codigo = T3.med_codigo AND TT3.matn_disponible = 1 AND TT3.matn_fechafin IS NULL ) GROUP BY T2.esp_codigo ) AS totMedEspecialidades FROM dbo.[especial] AS T0 ) TT0 WHERE TT0.totMed IS NOT NULL ORDER BY TT0.Esp"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)===0){return true;} return $rs; } function getLDLstEspecialidadesTotXMed(&$resultInfo) { $resultado = getLDListEspecialidadesTotalMedicos(); if( $resultado ) { //Listar Medicos Disponibles x Especialidad $resultInfo['code'] = 0; $resultInfo['data'] = array( "total" => count($resultado) ,"listEsp" => $resultado ); } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar el listado de especialidades"; } } function getLD_ListProfesionales(&$profesionales,$flagRecientes=false,$especialidad=false,$idCliente=false) { $sqlFR = array(); $sqlFR[0] = ""; $sqlFR[1] = ""; $sqlSub = ""; if( $flagRecientes ) { $sqlSub = " INNER JOIN ( SELECT DISTINCT med_codigo FROM dbo.turnos WHERE tur_asiste = 1 AND cli_codigo = ".$idCliente." AND tur_fecha >= DATEADD(month, -6, (DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0))) AND tur_fecha < (DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)) ) AS mr ON m.med_codigo = mr.med_codigo "; } if( $especialidad ) { $sqlSub = " SELECT m.med_codigo AS CodM ,m.med_nombre AS NomM ,e.esp_denom AS EspM ,t.tit_abrev AS TitM ,m.med_webcoment AS MedMsg ,m.med_turnos_web AS turnero ,m.med_rango_dias AS rango ,m.med_mp AS Mat FROM medicos AS m INNER JOIN especial AS e ON m.esp_codigo = e.esp_codigo INNER JOIN tbl_titulos as t ON m.tit_codigo = t.tit_codigo WHERE m.med_web = 1 AND m.med_bloqueado = 0 AND m.esp_codigo = ".$especialidad; $sqlSub.= " UNION "; $sqlSub.= " SELECT m.med_codigo AS CodM ,m.med_nombre AS NomM ,e.esp_denom AS EspM ,t.tit_abrev AS TitM ,m.med_webcoment AS MedMsg ,m.med_turnos_web AS turnero ,m.med_rango_dias AS rango ,m.med_mp AS Mat FROM medicos AS m INNER JOIN especial AS e ON m.esp_codigo = e.esp_codigo INNER JOIN tbl_titulos as t ON m.tit_codigo = t.tit_codigo LEFT JOIN med_especialidades AS me ON m.med_codigo = me.med_codigo WHERE m.med_web = 1 AND m.med_bloqueado = 0 AND me.esp_codigo = ".$especialidad; $sql = " SELECT TIN.CodM ,TIN.NomM ,TIN.EspM ,TIN.TitM ,TIN.MedMsg ,TIN.turnero ,TIN.rango ,TIN.Mat ,(SELECT (COUNT(*) * 10) FROM ldoc_paciente_tokens as tld WHERE tld.med_codigo = TIN.CodM AND ptock_finalizado = 0) AS TotME ,(CASE WHEN PI.medf_src IS NULL THEN '' ELSE PI.medf_src END) AS Fot ,(SELECT TMP.mpre_precio FROM dbo.ldoc_medico_precios AS TMP WHERE TMP.med_codigo = TIN.CodM AND TMP.mpre_vigente = 1 AND TMP.mpre_fechafin IS NULL) As MTar FROM (".$sqlSub.") AS TIN LEFT JOIN medico_foto AS PI ON TIN.CodM = PI.med_codigo WHERE EXISTS ( SELECT 1 FROM dbo.[ldoc_medico_atencion] AS TT2 WHERE TT2.med_codigo = TIN.CodM AND TT2.matn_disponible = 1 AND TT2.matn_fechafin IS NULL ) ORDER BY TIN.NomM ASC"; } else { $sql = "SELECT m.med_codigo AS CodM ,m.med_nombre AS NomM ,e.esp_denom AS EspM ,t.tit_abrev AS TitM ,m.med_webcoment AS MedMsg ,m.med_turnos_web AS turnero ,m.med_rango_dias AS rango ,m.med_mp AS Mat ,(SELECT (COUNT(*) * 10) FROM ldoc_paciente_tokens as tld WHERE tld.med_codigo = m.med_codigo AND ptock_finalizado = 0) AS TotME ,(CASE WHEN PI.medf_src IS NULL THEN '' ELSE PI.medf_src END) AS Fot ,(SELECT TMP.mpre_precio FROM dbo.ldoc_medico_precios AS TMP WHERE TMP.med_codigo = m.med_codigo AND TMP.mpre_vigente = 1 AND TMP.mpre_fechafin IS NULL) As MTar FROM medicos AS m INNER JOIN especial AS e ON m.esp_codigo = e.esp_codigo INNER JOIN tbl_titulos AS t ON m.tit_codigo = t.tit_codigo LEFT JOIN medico_foto AS PI ON PI.med_codigo = m.med_codigo ".$sqlSub." WHERE m.med_web = 1 AND m.med_bloqueado = 0 AND EXISTS ( SELECT 1 FROM dbo.[ldoc_medico_atencion] AS TT2 WHERE TT2.med_codigo = m.med_codigo AND TT2.matn_disponible = 1 AND TT2.matn_fechafin IS NULL ) ORDER BY m.med_nombre ASC"; } //die($sql); debug($sql); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $profesionales = $GLOBALS['dbSQL']->getAll(); for($i=0;$i count($profesionales) ,"listProf" => $profesionales ); return true; } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Se produjo un error al consultar el listado de profesionales"; } } function getLD_SalaVirtualProfesional($profesional,&$pacientes,&$pacientesRC,&$estado) { $pacientes = array(); $estado = false; //estado $sql = "SELECT * FROM dbo.ldoc_medico_atencion WHERE med_codigo = '".addslashes($profesional)."' AND matn_disponible = 1 AND matn_fechafin IS NULL"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) > 0) { $estado = true; } // $cortesia = "(CASE // WHEN datepart(hour, GETDATE()) BETWEEN 5 and 12 // THEN 'Buenos días' // WHEN datepart(hour, GETDATE()) BETWEEN 13 and 20 // THEN 'Buenas tardes' // WHEN datepart(hour, GETDATE()) > 21 // THEN 'Buenas noches' // END)"; $cortesia = "(datepart(hour, GETDATE()))"; //pacientes $sql = "SELECT tld.ptock_numero AS REF ,tld.med_codigo AS MCOD ,tld.cli_codigo AS CCOD ,tld.ptock_token AS TOKEN ,tld.ptock_finalizado AS FIN ,tld.ptock_importe AS IMPORTE ,tld.ptock_fecha AS FECHA ,tld.ptock_fecha_vto AS FVTO ,tld.ptock_satisfaccion AS SATIS ,cl.cli_dni AS DNI ,cl.cli_nombre AS NOMBRE ,cl.cli_sexo AS SEXO ,CONCAT(cl.cli_tel_cod_area,cl.cli_tel_numero) AS TEL ,cl.cli_tel2 AS TEL2 ,(DATEDIFF(hour, ptock_fecha, GETDATE())) AS MEspH ,(DATEDIFF(minute, ptock_fecha, GETDATE())) AS MEspM ,'m' as TE ,'0' as TEV ,".$cortesia." AS MCor ,ptock_triaje AS Triaje FROM ldoc_paciente_tokens as tld INNER JOIN clientes as cl ON cl.cli_codigo = tld.cli_codigo WHERE tld.med_codigo = '".addslashes($profesional)."' AND tld.ptock_finalizado = 0"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $pacientes = false; } else { $pacientes = $GLOBALS['dbSQL']->getAll(); } //pacientes reconsulta $sql = "SELECT tld.ptock_numero AS REF ,tld.med_codigo AS MCOD ,tld.cli_codigo AS CCOD ,tld.ptock_token AS TOKEN ,tld.ptock_finalizado AS FIN ,tld.ptock_importe AS IMPORTE ,tld.ptock_fecha AS FECHA ,tld.ptock_fecha_vto AS FVTO ,tld.ptock_satisfaccion AS SATIS ,cl.cli_dni AS DNI ,cl.cli_nombre AS NOMBRE ,cl.cli_sexo AS SEXO ,CONCAT(cl.cli_tel_cod_area,cl.cli_tel_numero) AS TEL ,cl.cli_tel2 AS TEL2 ,(DATEDIFF(hour, ptock_fecha, GETDATE())) AS MEspH ,(DATEDIFF(minute, ptock_fecha, GETDATE())) AS MEspM ,'m' as TE ,'0' as TEV ,".$cortesia." AS MCor ,t2.ptockrc_numero AS REFRC ,'' AS Triaje FROM ldoc_paciente_tokens as tld INNER JOIN clientes as cl ON cl.cli_codigo = tld.cli_codigo INNER JOIN ldoc_paciente_token_reconsulta as t2 ON tld.ptock_numero = t2.ptock_numero WHERE tld.med_codigo = '".addslashes($profesional)."' AND ptockrc_fecha_uso IS NULL"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $pacientesRC = false; } else { $pacientesRC = $GLOBALS['dbSQL']->getAll(); } return true; } function getLDSalaVirtual(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"]) ) { $profesional = $_REQUEST["idpro"]; $resultado = getLD_SalaVirtualProfesional($profesional,$pacientes,$pacientesRC,$estado); if( $resultado ) { //Listar Obras Sociales $resultInfo['code'] = 0; $resultInfo['data'] = array( "listPacientes" => $pacientes ,"listPacientesRC" => $pacientesRC ,"estadoSala" => $estado ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function validarLDPacienteConvenioUmbral($profesional,$paciente,&$estado,&$flagSG,&$error) { $error = 0; $estado = LD_CONSULTA_INVALIDA; //-------------------- //Medico //-------------------- $sql = "SELECT med_codigo ,med_nombre ,med_dni FROM medicos m WHERE m.med_codigo = '".addslashes($profesional)."' AND m.med_web = 1 AND m.med_bloqueado = 0"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 1;return true;//error al leer el medico } $medicoInfo = $GLOBALS['dbSQL']->getAll(); if(count($medicoInfo)==0){$error = 1;return true;}//error medico no existe o esta bloqueado //-------------------- //Cliente //-------------------- $sql = "SELECT cli_codigo ,tid_codigo ,cli_dni ,obs_codigo ,obsp_cod FROM clientes WHERE cli_codigo = '".addslashes($paciente)."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 2; return true;//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( $GLOBALS['LD_TELEMEDICINA_COBERTURA_SEGUROMEDICO'] ) { //-------------------- //Obra Social //-------------------- // $sql = "SELECT obs_lock // FROM obrasoc // WHERE obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."'"; $sql = "SELECT ldsmtel_vigente FROM ldoc_seguro_medico_telemedicina WHERE obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 3;return true;//error al leer la obra social } $obrasocialInfo = $GLOBALS['dbSQL']->getAll(); if(count($obrasocialInfo)==0){$error = 3;return true;}//error Obra Social no existe if( intval($obrasocialInfo[0]["ldsmtel_vigente"]) !== 1 ) { $error = 4; $estado = LD_CONSULTA_C_COSTO; return true;//error obra social bloqueada } else { $flagSG = array("sg"=>$clienteInfo[0]["obs_codigo"],"st"=>true); } //-------------------- //-------------------- //Obra Social - Plan //-------------------- $sql = "SELECT obs_codigo, obsp_cod FROM obsplan WHERE obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."' AND obsp_cod = '".addslashes($clienteInfo[0]["obsp_cod"])."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 5;return true;//error al leer el plan de la obra social } $obrasocialPlanInfo = $GLOBALS['dbSQL']->getAll(); if(count($obrasocialPlanInfo)==0) { $error = 5; $estado = LD_CONSULTA_C_COSTO; return true; }//error Plan de la Obra Social no existe //-------------------- //-------------------- //medico convenio //-------------------- $sql = "SELECT med_codigo ,obs_codigo ,(CASE WHEN obm_maxdia IS NULL THEN 0 ELSE obm_maxdia END) as umbral FROM obsmed WHERE med_codigo = '".addslashes($profesional)."' AND obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."'"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 6; $estado = LD_CONSULTA_C_COSTO; return true;//error al leer el convenio del profesional } $medicoConvenioInfo = $GLOBALS['dbSQL']->getAll(); if(count($medicoConvenioInfo)==0) { $error = 6; $estado = LD_CONSULTA_C_COSTO; return true; }//error profesinal no tiene convenio con la OS del cliente else { $umbral = intval($medicoConvenioInfo[0]["umbral"]); if( $umbral > 0 ) { //Validar Umbral $sql = "SELECT COUNT([tur_numero]) As TotTur FROM [turnos] WHERE [med_codigo] = '".addslashes($profesional)."' AND [obs_codigo] = '".addslashes($clienteInfo[0]["obs_codigo"])."' AND [tur_fecha] = '". date("Y-m-d")." 00:00:00.000"."'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $conta=0; $TotTur=0; $rs = $GLOBALS['dbSQL']->getAll(); $totalTurnosObs = count($rs); if($totalTurnosObs > 0) { if( $totalTurnosObs >= $umbral) { //El medico si tiene convenio pero supero el umbral $estado = LD_CONSULTA_C_COSTO; $error = 8; $estado = LD_CONSULTA_C_COSTO; return true; } else { //El medico si tiene convenio y no supero el umbral $estado = LD_CONSULTA_S_COSTO; } } else { //El medico si tiene convenio y no supero el umbral $estado = LD_CONSULTA_S_COSTO; } } } else { //El medico si tiene convenio $estado = LD_CONSULTA_S_COSTO; } } //-------------------- //paciente primer consulta //-------------------- if( $GLOBALS['LD_PRIMER_CONSULTA_CON_COSTO'] ) { $sql = "SELECT SUM(TF.TOTAL) AS TOTALF FROM (SELECT COUNT(tur_numero) AS TOTAL FROM turnos WHERE cli_codigo = '".addslashes($paciente)."' AND tur_asiste = 1 UNION SELECT COUNT(pra_numero) AS TOTAL FROM practica WHERE cli_codigo = '".addslashes($paciente)."' )AS TF"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 7; $estado = LD_CONSULTA_C_COSTO; return true;//error al leer la cantidad de turnos/praciticas previas del paciente } $turnosInfo = $GLOBALS['dbSQL']->getAll(); if(count($turnosInfo)==0) { $error = 7; $estado = LD_CONSULTA_C_COSTO; return true; }//El paciente no tiene turnos/praciticas previas, es la primera else { if( intval($turnosInfo[0]["TOTALF"]) <= 0 ) { $error = 7; $estado = LD_CONSULTA_C_COSTO; } else { //El paciente tiene turnos/praciticas previas $estado = LD_CONSULTA_S_COSTO; } } } } else { if( $error === 0) { $estado = LD_CONSULTA_C_COSTO; } } return true; } function validarLDPacienteConvenioUmbral_old($profesional,$paciente,&$estado,&$error) { $error = 0; $estado = LD_CONSULTA_INVALIDA; //-------------------- //Medico //-------------------- $sql = "SELECT med_codigo ,med_nombre ,med_dni FROM medicos m WHERE m.med_codigo = '".addslashes($profesional)."' AND m.med_web = 1 AND m.med_bloqueado = 0"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 1;return true;//error al leer el medico } $medicoInfo = $GLOBALS['dbSQL']->getAll(); if(count($medicoInfo)==0){$error = 1;return true;}//error medico no existe o esta bloqueado //-------------------- //Cliente //-------------------- $sql = "SELECT cli_codigo ,tid_codigo ,cli_dni ,obs_codigo ,obsp_cod FROM clientes WHERE cli_codigo = '".addslashes($paciente)."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 2; return true;//error al leer el cliente } $clienteInfo = $GLOBALS['dbSQL']->getAll(); if(count($clienteInfo)==0){$error = 2;return true;}//error cliente no existe o esta bloqueado //-------------------- //-------------------- //Obra Social //-------------------- $sql = "SELECT obs_lock FROM obrasoc WHERE obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 3;return true;//error al leer la obra social } $obrasocialInfo = $GLOBALS['dbSQL']->getAll(); if(count($obrasocialInfo)==0){$error = 3;return true;}//error Obra Social no existe if( intval($obrasocialInfo[0]["obs_lock"]) === 1 ) { $error = 4; $estado = LD_CONSULTA_C_COSTO; return true;//error obra social bloqueada } //-------------------- //-------------------- //Obra Social - Plan //-------------------- $sql = "SELECT obs_codigo, obsp_cod FROM obsplan WHERE obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."' AND obsp_cod = '".addslashes($clienteInfo[0]["obsp_cod"])."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 5;return true;//error al leer el plan de la obra social } $obrasocialPlanInfo = $GLOBALS['dbSQL']->getAll(); if(count($obrasocialPlanInfo)==0) { $error = 5; $estado = LD_CONSULTA_C_COSTO; return true; }//error Plan de la Obra Social no existe //-------------------- //-------------------- //medico convenio //-------------------- if( $GLOBALS['LD_TELEMEDICINA_COBERTURA_SEGUROMEDICO'] ) { $sql = "SELECT med_codigo ,obs_codigo ,(CASE WHEN obm_maxdia IS NULL THEN 0 ELSE obm_maxdia END) as umbral FROM obsmed WHERE med_codigo = '".addslashes($profesional)."' AND obs_codigo = '".addslashes($clienteInfo[0]["obs_codigo"])."'"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 6; $estado = LD_CONSULTA_C_COSTO; return true;//error al leer el convenio del profesional } $medicoConvenioInfo = $GLOBALS['dbSQL']->getAll(); if(count($medicoConvenioInfo)==0) { $error = 6; $estado = LD_CONSULTA_C_COSTO; return true; }//error profesinal no tiene convenio con la OS del cliente else { $umbral = intval($medicoConvenioInfo[0]["umbral"]); if( $umbral > 0 ) { //Validar Umbral $sql = "SELECT COUNT([tur_numero]) As TotTur FROM [turnos] WHERE [med_codigo] = '".addslashes($profesional)."' AND [obs_codigo] = '".addslashes($clienteInfo[0]["obs_codigo"])."' AND [tur_fecha] = '". date("Y-m-d")." 00:00:00.000"."'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $conta=0; $TotTur=0; $rs = $GLOBALS['dbSQL']->getAll(); $totalTurnosObs = count($rs); if($totalTurnosObs > 0) { if( $totalTurnosObs >= $umbral) { //El medico si tiene convenio pero supero el umbral $estado = LD_CONSULTA_C_COSTO; $error = 8; $estado = LD_CONSULTA_C_COSTO; return true; } else { //El medico si tiene convenio y no supero el umbral $estado = LD_CONSULTA_S_COSTO; } } else { //El medico si tiene convenio y no supero el umbral $estado = LD_CONSULTA_S_COSTO; } } } else { //El medico si tiene convenio $estado = LD_CONSULTA_S_COSTO; } } } //-------------------- //paciente primer consulta //-------------------- if( $GLOBALS['LD_PRIMER_CONSULTA_CON_COSTO'] ) { $sql = "SELECT SUM(TF.TOTAL) AS TOTALF FROM (SELECT COUNT(tur_numero) AS TOTAL FROM turnos WHERE cli_codigo = '".addslashes($paciente)."' AND tur_asiste = 1 UNION SELECT COUNT(pra_numero) AS TOTAL FROM practica WHERE cli_codigo = '".addslashes($paciente)."' )AS TF"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 7; $estado = LD_CONSULTA_C_COSTO; return true;//error al leer la cantidad de turnos/praciticas previas del paciente } $turnosInfo = $GLOBALS['dbSQL']->getAll(); if(count($turnosInfo)==0) { $error = 7; $estado = LD_CONSULTA_C_COSTO; return true; }//El paciente no tiene turnos/praciticas previas, es la primera else { if( intval($turnosInfo[0]["TOTALF"]) <= 0 ) { $error = 7; $estado = LD_CONSULTA_C_COSTO; } else { //El paciente tiene turnos/praciticas previas $estado = LD_CONSULTA_S_COSTO; } } } return true; } function getLDValidarPaciente(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"])&& isset($_REQUEST["idpac"]) && !empty($_REQUEST["idpac"]) && !is_null($_REQUEST["idpac"]) ) { $paciente = $_REQUEST["idpac"]; $profesional = $_REQUEST["idpro"]; $flagSG = false; $estado = false; $error = false; $resultado = validarLDPacienteConvenioUmbral($profesional,$paciente,$estado,$flagSG,$error); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "estado" => $estado ,"resSG" => $flagSG ,"error" => $error ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function saveAuditoria($parametros,$type) { $sql = "INSERT INTO ldoc_auditoria ( tpau_codigo, aud_values, aud_fecha ) VALUES ( (SELECT tpau_codigo FROM dbo.ldoc_tipoauditoria WHERE tpau_abrev = '$type') ,'$parametros' , GETDATE() )"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la insercion return false; } return true; } function umbralHorasCierreSesion($fechaRecord) { $date1 = new DateTime($fechaRecord); $date2 = new DateTime("now"); $diff = $date1->diff($date2); $mins = $diff->y * ((24*60) *365); $mins+= $diff->m * ((24*60) *30); $mins+= $diff->d * (24*60); $mins+= $diff->h * 60; $mins+= $diff->i; // DateInterval Object // ( // [y] => 0 // [m] => 0 // [d] => 1 // [h] => 4 // [i] => 15 // [s] => 9 // [weekday] => 0 // [weekday_behavior] => 0 // [first_last_day_of] => 0 // [invert] => 0 // [days] => 1 // [special_type] => 0 // [special_amount] => 0 // [have_weekday_relative] => 0 // [have_special_relative] => 0 // ) if($mins >= UMBRAL_MAX_SESION_LD_OPEN) { return true; } return false; } function sv_action_prof_status($profesional,$flagStatus) { $disponible = 0; if( $flagStatus ){ $disponible = 1; } if( $disponible === 1 ) { //buscar si existe un registro abierto $sql = "SELECT * FROM dbo.ldoc_medico_atencion WHERE med_codigo = '".addslashes($profesional)."' AND matn_disponible = 1 AND matn_fechafin IS NULL"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda return ERROR_SEARCH_OPENRECORD_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) > 0) { $auditValores = http_build_query($rs[0]); saveAuditoria($auditValores, SASCP); /* Array ( [0] => Array ( [matn_numero] => 1 [med_codigo] => 925 [matn_disponible] => 1 [matn_fechainicio] => 2020-03-24 12:13:51.177 [matn_fechafin] => ) ) */ //Cierro el registro abierto $sql = "UPDATE dbo.ldoc_medico_atencion SET matn_disponible = 0, matn_fechafin = GETDATE() WHERE matn_numero = '".addslashes($rs[0]['matn_numero'])."' AND matn_disponible = 1 AND matn_fechafin IS NULL"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_UPDATE_OPENRECORD_LD; } } //Inserto un nuevo registro abierto $sql = "INSERT INTO dbo.ldoc_medico_atencion ( med_codigo ,matn_disponible ,matn_fechainicio ,matn_fechafin ) VALUES ( '".addslashes($profesional)."' ,1 ,GETDATE() ,NULL )"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_UPDATE_OPENRECORD_LD; } } else { //buscar si existe un registro abierto $sql = "SELECT * FROM dbo.ldoc_medico_atencion WHERE med_codigo = '".addslashes($profesional)."' AND matn_disponible = 1 AND matn_fechafin IS NULL"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda return ERROR_SEARCH_OPENRECORD_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) <= 0) { $auditValores = 'med_codigo='.$profesional.'&fecha='.date("Y-m-d H:i:s"); saveAuditoria($auditValores, CSSSAP); } elseif(count($rs) > 0) { $fechaRecord = substr($rs[0]['matn_fechainicio'], 0, 19); if( umbralHorasCierreSesion($fechaRecord) ) { $auditValores = http_build_query($rs[0]); saveAuditoria($auditValores, SCLE); } //Cierro el registro abierto $sql = "UPDATE dbo.ldoc_medico_atencion SET matn_disponible = 0, matn_fechafin = GETDATE() WHERE matn_numero = '".addslashes($rs[0]['matn_numero'])."'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_UPDATE_OPENRECORD_LD; } } } return true; } function handleSVAccion($accion,$accionParametro,$profesional) { $res = false; switch($accion) { case SV_ACTION_PROF_ONLINE: { $res = sv_action_prof_status($profesional,true); } break; case SV_ACTION_PROF_OFFLINE: { $res = sv_action_prof_status($profesional,false); } break; } return $res; } function getLDSalaVirtualAccion(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"])&& isset($_REQUEST["tac"]) && !empty($_REQUEST["tac"]) && !is_null($_REQUEST["tac"]) ) { $accion = $_REQUEST["tac"]; $accionParametro = false; $profesional = $_REQUEST["idpro"]; if( isset($_REQUEST["tacp"]) && !empty($_REQUEST["tacp"]) && !is_null($_REQUEST["tacp"]) ) { $accionParametro = $_REQUEST["tacp"]; } $accionRes = handleSVAccion($accion,$accionParametro,$profesional); $resultado = getLD_SalaVirtualProfesional($profesional,$pacientes,$pacientesRC,$estado); if( $resultado ) { //Listar Obras Sociales $resultInfo['code'] = 0; $resultInfo['data'] = array( "acres" => $accionRes ,"listPacientes" => $pacientes ,"listPacientesRC" => $pacientesRC ,"estadoSala" => $estado ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function getLD_GuardarReconsulta($profesional,$referencia) { //buscar si existe un registro $sql = "SELECT 1 FROM dbo.ldoc_paciente_tokens WHERE med_codigo = '".addslashes($profesional)."' AND ptock_numero = '".addslashes($referencia)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda return ERROR_SEARCH_OPENRECORDRC_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) <= 0) { $auditValores = 'med_codigo='.$profesional.'&referencia='.$referencia; saveAuditoria($auditValores, RSCO); } else { //Inserto un nuevo por posible reconsulta $sql = "INSERT INTO dbo.ldoc_paciente_token_reconsulta ( ptock_numero ,ptockrc_fecha ,ptockrc_fecha_uso ,ptockrc_satisfaccion ) VALUES ( '".addslashes($referencia)."' ,GETDATE() ,NULL ,NULL )"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_INSERT_OPENRECORDRC_LD; } return true; } return false; } function getLDGuardarReconsulta(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"])&& isset($_REQUEST["ref"]) && !empty($_REQUEST["ref"]) && !is_null($_REQUEST["ref"]) ) { $referencia = $_REQUEST["ref"]; $profesional = $_REQUEST["idpro"]; $resultadoRC = getLD_GuardarReconsulta($profesional,$referencia); if( $resultadoRC ) { $resultado = getLD_SalaVirtualProfesional($profesional,$pacientes,$pacientesRC,$estado); $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultadoRC ,"listPacientes" => $pacientes ,"listPacientesRC" => $pacientesRC ,"estadoSala" => $estado ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function getLD_FinalizarReconsulta($profesional,$referencia,$idreconsulta) { //buscar si existe un registro $sql = "SELECT 1 FROM dbo.ldoc_paciente_tokens as t1 INNER JOIN dbo.ldoc_paciente_token_reconsulta as t2 ON t1.ptock_numero = t2.ptock_numero WHERE t1.med_codigo = '".addslashes($profesional)."' AND t1.ptock_numero = '".addslashes($referencia)."' AND t2.ptockrc_numero = '".addslashes($idreconsulta)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda return ERROR_SEARCH_OPENRECORDRCF_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) <= 0) { $auditValores = 'med_codigo='.$profesional.'&referencia='.$referencia.'&idreconsulta='.$idreconsulta; saveAuditoria($auditValores, RSCO); } else { //Cierro la reconsulta $sql = "UPDATE dbo.ldoc_paciente_token_reconsulta SET ptockrc_fecha_uso = GETDATE() WHERE ptockrc_numero '".addslashes($idreconsulta)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_UPDATE_OPENRECORDRC_LD; } return true; } return false; } //No implementada function getLDFinalizarReconsulta(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"])&& isset($_REQUEST["ref"]) && !empty($_REQUEST["ref"]) && !is_null($_REQUEST["ref"]) && isset($_REQUEST["idrec"]) && !empty($_REQUEST["idrec"]) && !is_null($_REQUEST["idrec"]) ) { $referencia = $_REQUEST["ref"]; $profesional = $_REQUEST["idpro"]; $idreconsulta = $_REQUEST["idrec"]; $resultadoRC = getLD_FinalizarReconsulta($profesional,$referencia,$idreconsulta); if( $resultadoRC ) { $resultado = getLD_SalaVirtualProfesional($profesional,$pacientes,$pacientesRC,$estado); $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultadoRC ,"listPacientes" => $pacientes ,"listPacientesRC" => $pacientesRC ,"estadoSala" => $estado ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function setLD_FinalizarConsulta($referencia,$comentario,$comentariop,$profesional) { //buscar si existe un registro $sql = "SELECT t1.med_codigo as MED, t1.cli_codigo as CLI FROM dbo.ldoc_paciente_tokens as t1 WHERE t1.ptock_numero = '".addslashes($referencia)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda return ERROR_SEARCH_OPENRECORD_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) <= 0) { $auditValores = 'referencia='.$referencia; saveAuditoria($auditValores, CACNE); } else { $profesional = $rs[0]['MED']; $cliente = $rs[0]['CLI']; //Cierro la consulta $sql = "UPDATE dbo.ldoc_paciente_tokens SET ptock_finalizado = 1, ptock_fecha_confirmacion = GETDATE(), ptock_observacion = '".addslashes($comentario)."' WHERE ptock_numero = '".addslashes($referencia)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_UPDATE_OPENRECORD_LD; } //Grabar Hx Resumida $sql = " INSERT INTO dbo.[cli_diagnosticos] ( [cli_codigo] ,[cd_item] ,[cd_fecha] ,[cd_observ] ,[cd_tratam] ,[med_codigo] ,[cd_motivo] ) VALUES ( '".addslashes($cliente)."' ,(SELECT (CASE WHEN TT1.ITEM IS NULL THEN 1 ELSE TT1.ITEM + 1 END) FROM (SELECT MAX(cd_item) AS ITEM FROM cli_diagnosticos WHERE cli_codigo = '".addslashes($cliente)."') AS TT1) ,GETDATE() ,'".addslashes($comentario)."' ,NULL ,'".addslashes($profesional)."' ,NULL )"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_INSERT_COMENTMEDHX_LD; } //Grabar Comentario para el paciente $sql = " INSERT INTO dbo.[ldoc_comentario_medico_paciente_token] ( [ptock_numero] ,[cmpt_fecha] ,[cmpt_observacion] ) VALUES ( '".addslashes($referencia)."' ,GETDATE() ,'".addslashes($comentariop)."' )"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización return ERROR_INSERT_COMENTMEDPAC_LD; } return true; } return false; } function setLDConfirmarConsulta(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["ref"]) && !empty($_REQUEST["ref"]) && !is_null($_REQUEST["ref"]) ) { $referencia = $_REQUEST["ref"]; $comentario = ""; $comentariop = ""; if( isset($_REQUEST["obs"]) && !empty($_REQUEST["obs"]) && !is_null($_REQUEST["obs"]) ) { $comentario = $_REQUEST["obs"]; } if( isset($_REQUEST["obsp"]) && !empty($_REQUEST["obsp"]) && !is_null($_REQUEST["obsp"]) ) { $comentariop = $_REQUEST["obsp"]; } $resultadoRC = setLD_FinalizarConsulta($referencia,$comentario,$comentariop,$profesional); if( $resultadoRC ) { $resultado = getLD_SalaVirtualProfesional($profesional,$pacientes,$pacientesRC,$estado); $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultadoRC ,"listPacientes" => $pacientes ,"listPacientesRC" => $pacientesRC ,"estadoSala" => $estado ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function getLD_ProfPacientesAtendidos($profesional,&$pacientes,$rango=false) { $pacientes = array(); if(!$rango) { //Por defecto las ultimas 24hrs $rango = " AND DATEDIFF(minute, ptock_fecha_confirmacion, GETDATE()) <= " . LAST_N_HOURS; } else if(is_array($rango)) { $rango = " AND ptock_fecha_confirmacion BETWEEN ".$rango["desde"]." AND ". $rango["hasta"]; } else { // define ('LAST_24_HOURS', 1440); // 24 HORAS // define ('LAST_36_HOURS', 2160); // 36 HORAS // define ('LAST_48_HOURS', 2880); // 48 HORAS // define ('LAST_72_HOURS', 4320); // 72 HORAS $r = LAST_N_HOURS; switch($rango) { case LAST_24_HOURS: case LAST_36_HOURS: case LAST_48_HOURS: case LAST_72_HOURS: {$r = $rango;}break; } $rango = " AND DATEDIFF(minute, ptock_fecha_confirmacion, GETDATE()) <= " . $r; } //pacientes $sql = "SELECT tld.ptock_numero AS REF ,tld.med_codigo AS MCOD ,tld.cli_codigo AS CCOD ,tld.ptock_token AS TOKEN ,tld.ptock_finalizado AS FIN ,tld.ptock_importe AS IMPORTE ,tld.ptock_fecha AS FECHA ,CONVERT(VARCHAR(10),tld.ptock_fecha_confirmacion,103) AS FCONF ,CONVERT(VARCHAR(10),tld.ptock_fecha_confirmacion,108) AS HCONF ,tld.ptock_fecha_vto AS FVTO ,tld.ptock_satisfaccion AS SATIS ,cl.cli_dni AS DNI ,cl.cli_nombre AS NOMBRE ,cl.cli_sexo AS SEXO ,CONCAT(cl.cli_tel_cod_area,cl.cli_tel_numero) AS TEL ,cl.cli_tel2 AS TEL2 FROM ldoc_paciente_tokens as tld INNER JOIN clientes as cl ON cl.cli_codigo = tld.cli_codigo WHERE tld.med_codigo = '".addslashes($profesional)."' AND tld.ptock_finalizado = 1" . $rango; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $pacientes = false; } else { $pacientes = $GLOBALS['dbSQL']->getAll(); } return true; } function getLDAntendidos(&$resultInfo) { $profesional = false; $pacientes = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"]) ) { $profesional = $_REQUEST["idpro"]; $rango = false; if( isset($_REQUEST["rdes"]) && !empty($_REQUEST["rdes"]) && !is_null($_REQUEST["rdes"]) && isset($_REQUEST["rhasta"]) && !empty($_REQUEST["rhasta"]) && !is_null($_REQUEST["rhasta"]) ) { $rango = array( "desde" => $_REQUEST["rdes"] ,"hasta" => $_REQUEST["rhasta"] ); } if( isset($_REQUEST["fpre"]) && !empty($_REQUEST["fpre"]) && !is_null($_REQUEST["fpre"]) ) { $rango = $_REQUEST["fpre"]; } $resultado = getLD_ProfPacientesAtendidos($profesional,$pacientes,$rango); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado ,"listPacientes" => $pacientes ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function getLD_Hx($cliente,&$diagnosticos,&$diagnosticosFL) { $pacientes = array(); //diagnosticos $sql = "SELECT cd.cli_id AS HXID ,cd.cli_codigo AS CLIID ,cd.cd_item AS ITEM ,CONVERT(VARCHAR(10),cd.cd_fecha,103) AS FCONF ,CONVERT(VARCHAR(10),cd.cd_fecha,108) AS HCONF ,cd.cd_observ AS CMT ,cd.cd_observ AS CMTenc ,cd.cd_tratam AS TRAT ,cd.med_codigo AS MEDID ,cd.cd_motivo AS MOTIV ,m.med_nombre as MED ,t.tit_abrev AS TitM ,ISNULL(cd_encode,0) as flagencode ,ISNULL(cd_derivacion,0) as flagderivacion FROM cli_diagnosticos as cd INNER JOIN medicos as m ON m.med_codigo = cd.med_codigo INNER JOIN tbl_titulos as t ON m.tit_codigo = t.tit_codigo WHERE cd.cli_codigo = '".addslashes($cliente)."' ORDER BY cd.cd_fecha DESC, cd_item DESC"; /* $sql = "SELECT tld.ptock_numero AS REF ,tld.med_codigo AS MCOD ,me.med_nombre AS MNOMBRE ,tld.cli_codigo AS CCOD ,tld.ptock_token AS TOKEN ,tld.ptock_finalizado AS FIN ,tld.ptock_importe AS IMPORTE ,tld.ptock_fecha AS FECHA ,tld.ptock_fecha_vto AS FVTO ,tld.ptock_satisfaccion AS SATIS ,cl.cli_dni AS DNI ,cl.cli_nombre AS NOMBRE ,cl.cli_sexo AS SEXO ,CONCAT(cl.cli_tel_cod_area,cl.cli_tel_numero) AS TEL ,cl.cli_tel2 AS TEL2 ,(DATEDIFF(hour, ptock_fecha, GETDATE())) AS MEspH ,(DATEDIFF(minute, ptock_fecha, GETDATE())) AS MEspM ,'m' as TE ,'0' as TEV ,t.tit_abrev AS TitM ,me.med_mp AS Mat ,e.esp_denom AS EspM ,(CASE WHEN tld.ptock_finalizado = 0 THEN 'PENDIENTE' ELSE 'FINALIZADO' END) AS Estadon ,tld.ptock_finalizado AS Estado FROM ldoc_paciente_tokens as tld INNER JOIN clientes as cl ON cl.cli_codigo = tld.cli_codigo INNER JOIN medicos as me ON me.med_codigo = tld.med_codigo INNER JOIN tbl_titulos as t ON me.tit_codigo = t.tit_codigo INNER JOIN especial AS e ON me.esp_codigo = e.esp_codigo WHERE tld.cli_codigo = '".addslashes($paciente)."' */ //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $diagnosticos = false; } else { $diagnosticos = $GLOBALS['dbSQL']->getAll(); } //diagnosticos $sql = "SELECT cli_id AS HXID ,CONVERT(VARCHAR(10),cd_fecha,103) AS FCONF FROM cli_diagnosticos WHERE cli_codigo = '".addslashes($cliente)."' ORDER BY cd_fecha DESC, cd_item DESC"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $diagnosticosFL = false; } else { $diagnosticosFL = $GLOBALS['dbSQL']->getAll(); } return true; } function gethX(&$resultInfo) { $cliente = false; $diagnosticos = array(); $diagnosticosFL = array(); if( isset($_REQUEST["cli"]) && !empty($_REQUEST["cli"]) && !is_null($_REQUEST["cli"]) ) { $cliente = $_REQUEST["cli"]; $rango = false; $resultado = getLD_Hx($cliente,$diagnosticos,$diagnosticosFL); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado ,"listDiagnosticos" => $diagnosticos ,"listDiagFL" => $diagnosticosFL ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la Hx del paciente"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function save_Hx($cliente,$profesional,$hx) { $pacientes = array(); //diagnosticos $sql = "INSERT INTO cli_diagnosticos ( cli_codigo ,med_codigo ,cd_item ,cd_fecha ,cd_observ ) VALUES ( '".addslashes($cliente)."' ,'".addslashes($profesional)."' ,(SELECT (CASE WHEN TT1.ITEM IS NULL THEN 1 ELSE TT1.ITEM + 1 END) FROM (SELECT MAX(cd_item) AS ITEM FROM cli_diagnosticos WHERE cli_codigo = '".addslashes($cliente)."') AS TT1) ,GETDATE() ,'".addslashes($hx)."' )"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { return false; } return true; } function savehX(&$resultInfo) { $cliente = false; $diagnosticos = array(); $diagnosticosFL = array(); if( isset($_REQUEST["cli"]) && !empty($_REQUEST["cli"]) && !is_null($_REQUEST["cli"])&& isset($_REQUEST["med"]) && !empty($_REQUEST["med"]) && !is_null($_REQUEST["med"])&& isset($_REQUEST["hx"]) && !empty($_REQUEST["hx"]) && !is_null($_REQUEST["hx"]) ) { $cliente = $_REQUEST["cli"]; $profesional = $_REQUEST["med"]; $hx = $_REQUEST["hx"]; $resultado = save_Hx($cliente,$profesional,$hx); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al grabar la Hx del paciente"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function getLD_ProfPerfil($profesional,$profesionalInfo) { /* $datastring = file_get_contents("someimage.JPG"); $data = unpack("H*hex", $datastring); mssql_query("insert into sometable values ('someimage.JPG', 0x".$data['hex'].")"); */ //buscar si existe un registro $sql = "SELECT 1 FROM dbo.ldoc_paciente_tokens as t1 WHERE t1.med_codigo = '".addslashes($profesional)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda return ERROR_SEARCH_OPENRECORDRCF_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) <= 0) { //$auditValores = 'med_codigo='.$profesional.'&referencia='.$referencia.'&idreconsulta='.$idreconsulta; //saveAuditoria($auditValores, RSCO); } else { return $rs[0]; } return false; } function getLDProfPerfil(&$resultInfo) { $profesional = false; $profesionalInfo = array(); if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"]) ) { $profesional = $_REQUEST["idpro"]; $rango = false; $resultado = getLD_ProfPerfil($profesional,$profesionalInfo); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado ,"profPerfil" => $profesionalInfo ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar el perfil del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function mssql_escape($data) { if(is_numeric($data)) return $data; $unpacked = unpack('H*hex', $data); return '0x' . $unpacked['hex']; } function saveLD_ProfFoto($profesional,&$imgsrc) { try { $resultado = false; $update = false; $sql = "SELECT 1 FROM medico_foto WHERE med_codigo = '".addslashes($profesional)."'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } else { $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { $update = true; } } $imgsrc = md5( $_FILES["file"]["name"] . date("YmdHis") . md5(date("YmdHis")) ); $imgSize = getimagesize($_FILES["file"]["tmp_name"]); $width = $imgSize[0]; $height = $imgSize[1]; //Usamos el sistema de archivos para gaurdar la fot , hasta q se resuelva leerlo de la base // // Subimos el archivo $target_path = "../images/profiles/"; $fileName = "prof_".$profesional.'_'.date("YmdHis").'_'.str_replace(' ','_',basename( $_FILES['file']['name'])); $target_path = $target_path . $fileName; $continue_ = move_uploaded_file($_FILES['file']['tmp_name'], $target_path); $imStr = file_get_contents($_FILES["file"]["tmp_name"]); $imOutput = unpack("H*hex", $imStr); //,'".addslashes($_FILES["file"]["tmp_name"])."' //,'".addslashes($imgsrc)."' // ,0x".$imOutput['hex']." if( !$update ) { $sql = "INSERT INTO medico_foto ( med_codigo ,medf_tipo ,medf_size_w ,medf_size_h ,medf_tamano ,medf_file_name ,medf_src ,medf_fecha ,medf_foto ) VALUES ( '".addslashes($profesional)."' ,'".addslashes($_FILES["file"]["type"])."' ,'".addslashes($width)."' ,'".addslashes($height)."' ,'".addslashes($_FILES["file"]["size"])."' ,'".addslashes($_FILES["file"]["name"])."' ,'".addslashes($fileName)."' , GETDATE() ,CAST ((".mssql_escape(file_get_contents($_FILES["file"]["tmp_name"])).") AS varbinary(max)) )"; //,'".addslashes(file_get_contents($_FILES["file"]["tmp_name"]))."' // ,'".addslashes(file_get_contents($_FILES["file"]["tmp_name"]))."' } else { $sql = "UPDATE medico_foto SET medf_foto = CAST ((".mssql_escape(file_get_contents($_FILES["file"]["tmp_name"])).") AS varbinary(max)) ,medf_tipo = '".addslashes($_FILES["file"]["type"])."' ,medf_size_w = '".addslashes($width)."' ,medf_size_h = '".addslashes($height)."' ,medf_tamano = '".addslashes($_FILES["file"]["size"])."' ,medf_file_name = '".addslashes($_FILES["file"]["tmp_name"])."' ,medf_src = '".addslashes($fileName)."' ,medf_fecha = GETDATE() WHERE med_codigo = '".addslashes($profesional)."'"; } $imgsrc = $fileName; //,'".addslashes(file_get_contents($_FILES["file"]["tmp_name"]))."' // $fp = fopen('im2.sql', 'w'); // fwrite($fp, $sql); // fclose($fp); //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la insercion print_r("<<>>"); return false; } return true; } catch (Exception $e) { print_r($e->__toString()); return false; } } function setLDProfFoto(&$resultInfo) { //print_r($_FILES);die; /* Array ( [file] => Array ( [name] => orcarroldan.jpg [type] => image/jpeg [tmp_name] => D:\xampp\tmp\phpEEE.tmp [error] => 0 [size] => 53514 ) ) */ $profesional = false; if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"])&& isset($_FILES) && !empty($_FILES) && !is_null($_FILES) && count($_FILES)>0 ) { $profesional = $_REQUEST["idpro"]; $error = false; //validation $mimetypes = array("image/jpeg", "image/pjpeg", "image/gif", "image/png"); $name = $_FILES["file"]["name"]; $type = $_FILES["file"]["type"]; $tmp_name = $_FILES["file"]["tmp_name"]; $size = $_FILES["file"]["size"]; if( ($size/1024) > SIZE_MAX_PROF_IMG ) { $error = 'La imagen no debe superar los '.(SIZE_MAX_PROF_IMG/1024).'MB'; } if( !in_array($type, $mimetypes)) { $error = 'El archivo que intenta subir no es una imagen válida'; } if(!$error) { $resultado = saveLD_ProfFoto($profesional,$imgsrc); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado ,"imgsrc" => $imgsrc ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar el perfil del profesional"; } } else { $resultInfo['code'] = 3; $resultInfo['errorDes'] = $error; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function defaultImg() { try { $resultado = false; $update = false; $sql = "SELECT foto FROM medico_foto WHERE medf_src = '0"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } else { $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { return $rs[0]["foto"]; } } return false; } catch (Exception $e) { return false; } } function getProfesionalLDPicture($profesional) { try { $resultado = false; $update = false; $sql = "SELECT medf_src FROM medico_foto WHERE med_codigo = '".addslashes($profesional)."'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } else { $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { return $rs[0]["medf_src"]; } else { return defaultImg(); } } } catch (Exception $e) { return false; } } function getLDProfFoto_ProfFoto($src) { try { $resultado = false; $update = false; $sql = "SELECT medf_foto, medf_src,medf_tipo FROM medico_foto WHERE medf_src = '".addslashes($src)."'"; // if(isset($_GET['d']) && is_numeric($_GET['d'])) { // $sth = $medi_conn->prepare("SELECT Symbol FROM Dienstart WHERE DienstartID = :id") or die("Invalid query: " . $sth->errorInfo()); // $sth->bindParam(':id', $_GET['d']); // $sth->execute(); // $sth->bindColumn(1, $image, PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY); // $sth->fetch(PDO::FETCH_ASSOC); // echo ''; // $sth = $GLOBALS['dbSQL']->conn->prepare("SELECT medf_foto FROM medico_foto WHERE medf_src = :id") or die("Invalid query: " . $sth->errorInfo()); // $GLOBALS['dbSQL']->conn->bindParam(':id', $src); // $GLOBALS['dbSQL']->conn->execute(); // $GLOBALS['dbSQL']->conn->bindColumn(1, $image, PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY); // $GLOBALS['dbSQL']->conn->fetch(PDO::FETCH_ASSOC); // //echo ''; // print_r('---spider---'); // print_r("\n"); // print_r($image); // print_r("\n"); // print_r('---spider end---');die; // return $image; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { return false; } else { $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs)>0) { //print_r($rs);die; //return $rs[0]["medf_foto"]; return $rs[0]; } else { return defaultImg(); } } } catch (Exception $e) { return false; } } function getLDProfFoto(&$resultInfo) { ///ESTE FUNCION NO ESTA LISTA $src = false; if( isset($_REQUEST["src"]) && !empty($_REQUEST["src"]) && !is_null($_REQUEST["src"]) ) { $src = $_REQUEST["src"]; $resultado = getLDProfFoto_ProfFoto($src); if( $resultado ) { // $resultado = str_replace('\0', "\0", $resultado); // $resultado = str_replace('\'\'', "'", (str_replace('\0', "\0", $resultado))); //header("Content-type: image/jpeg;"); //echo utf8_decode($resultado); //echo $resultado; // echo (str_replace('\'\'', "'", (str_replace('\0', "\0", $resultado)))); //$resultado["medf_foto"] //$resultado["medf_src"] //print_r($resultado);die; //header('Content-Type: image/png'); switch(strtolower($resultado["medf_tipo"])) { case 'image/png': { header('Content-Type: image/png'); $im = imagecreatefrompng('./profiles/'.$imagen['medf_src']); if ($im !== false) { imagepng($im); } } break; case 'image/gif': { header('Content-Type: image/gif'); $im = imagecreatefromgif('./profiles/'.$imagen['medf_src']); if ($im !== false) { imagegif($im); } } break; case 'image/bmp': { header('Content-Type: image/bmp'); $im = imagecreatefrombmp('./profiles/'.$imagen['medf_src']); if ($im !== false) { imagebmp($im); } } break; case 'image/jpg': case 'image/jpeg': { header('Content-Type: image/jpeg'); $im = imagecreatefromjpeg('./profiles/'.$imagen['medf_src']); if ($im !== false) { imagejpeg($im); } } break; } if ($im !== false) { imagedestroy($im); } // echo ''; die; /*$im = imagecreatefromjpeg($resultado); if ($im !== false) { imagejpeg($im); imagedestroy($im); } die;*/ } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la fotografía"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } header( "Content-Type: text/xml; charset=\"iso-8859-15\""); echo $resultInfo['errorDes']; die; //return false; } function getMPInitPoint() { try { // SDK de Mercado Pago ///-->require __DIR__ . './vendor/autoload.php'; // Agrega credenciales MercadoPago\SDK::setAccessToken('TEST-2942853184477126-112607-8b5ac0ebcd5ec36b006e4923d42d0772-114804544'); // Crea un objeto de preferencia $preference = new MercadoPago\Preference(); // Crea un ítem en la preferencia $item = new MercadoPago\Item(); $item->title = 'Consulta Telemedicina'; $item->quantity = 1; $item->unit_price = 500; $preference->items = array($item); $preference->save(); $preference->id; require_once ('externalLibs/vendor/mercadopago/sdk/lib/mercadopago.php'); //$mp = new MP($GLOBALS['ECOMMERCE']['MP']['ID'], $GLOBALS['ECOMMERCE']['MP']['SECRET']); // sandbox // SHORT_NAME: mp-app-279824574 // CLIENT_ID: 1909033396902417 // CLIENT_SECRET: NsLtS7CrD3VdLsuDuXg7dJkCgaPTU742 $mp = new MP("1909033396902417", "NsLtS7CrD3VdLsuDuXg7dJkCgaPTU742"); //------------------------------------ //ITEMS //------------------------------------ $itemTemplate = array( "id" => '' //"item-ID-1234", ,"title" => '' //"Title of what you are paying for. It will be displayed in the payment process.", ,"currency_id" => 'ARS' //"ARS", ,"picture_url" => '' //"https://www.mercadopago.com/org-img/MP3/home/logomp3.gif", ,"description" => '' //"Item description", ,"category_id" => 'fashion'//"art", // Available categories at https://api.mercadopago.com/item_categories ,"quantity" => '' //1, ,"unit_price" => '' //100 ); $totalItems = count( $_SESSION['carrito']['items'] ); //sp($_SESSION['carrito']['items']); $items=array(); for($i=0;$i<$totalItems;$i++) { $item = $itemTemplate; $item["id"] = $_SESSION['carrito']['items'][$i]['id_producto']; $item["title"] = $_SESSION['carrito']['items'][$i]['nombre']; $item["picture_url"] = $_SESSION['carrito']['items'][$i]['imgurl']; $item["description"] = $_SESSION['carrito']['items'][$i]['descripcion']; $item["quantity"] = intval($_SESSION['carrito']['items'][$i]['cantidad']); $item["unit_price"] = floatval($_SESSION['carrito']['items'][$i]['precio']); $index = array_push($items,$item); } //------------------------------------ //------------------------------------ // Payer //------------------------------------ $CUSTOMER = new User($GLOBALS['db'], $GLOBALS['USUARIOS_WEB']); $customerinfo = $CUSTOMER->getRecordInfo($_SESSION['carrito']['info_cliente']['customerid']); $payerInfo = array( "name" => $_SESSION['carrito']['info_cliente']['nombre'] // "user-name", ,"surname" => $_SESSION['carrito']['info_cliente']['apellido'] // "user-surname", ,"email" => $_SESSION['carrito']['info_cliente']['email'] // "user@email.com", ,"date_created" => date("Y-m-dTH:i:s.000-04:00",strtotime($customerinfo['fecha_alta']))// "2015-06-02T12:58:41.425-04:00", ,"phone" => array( "area_code" => $_SESSION['carrito']['info_cliente']['areatel'] //"11", ,"number" => $_SESSION['carrito']['info_cliente']['tel'] //"4444-4444" ) ,"identification" => array( "type" => 'DNI' // Available ID types at https://api.mercadopago.com/v1/identification_types ,"number" => $_SESSION['carrito']['info_cliente']['dni'] //"12345678" ) ); //------------------------------------ //------------------------------------ // Back //------------------------------------ $backUrl = array( "success"=> 'http://www.carthago.com.ar/site_carthago/site/front/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_SUCCESS.'&t='.$_SESSION['carrito']['info_token']//"https://www.success.com" ,"failure"=> 'http://www.carthago.com.ar/site_carthago/site/front/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_FAIL.'&t='.$_SESSION['carrito']['info_token']//"http://www.failure.com" ,"pending"=> 'http://www.carthago.com.ar/site_carthago/site/front/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_PENDING.'&t='.$_SESSION['carrito']['info_token']//"http://www.pending.com" ); //------------------------------------ //------------------------------------ // Ship c/ME //------------------------------------ $flagME = $this->useME(); // <== Verifica si se selecciono MercadoEnvio if( $flagME ) { $shipments = $this->getShipArray(false,true); // $shipments = array( // "receiver_address" => array( // "zip_code" => $_SESSION['carrito']['info_ship']['zip'] // "5700", // ,"street_number" => $_SESSION['carrito']['info_ship']['dirnumber'] // 123, // ,"street_name" => $_SESSION['carrito']['info_ship']['address'] // "Street", // ,"floor" => $_SESSION['carrito']['info_ship']['dirfloor'] // 4, // ,"apartment" => $_SESSION['carrito']['info_ship']['dirdpto'] // "C" // ) // ); //Agrego al 'payer' la informacion de domicilio, cuando tengo el dato $payerInfo["address"] = array( "street_name" => $_SESSION['carrito']['info_ship']['address'] //"Street", ,"street_number" => $_SESSION['carrito']['info_ship']['dirnumber'] //123, ,"zip_code" => $_SESSION['carrito']['info_ship']['zip'] //"5700" ); } //------------------------------------ //------------------------------------ // Ship c/Encomeinda //------------------------------------ $flagEncomienda = $this->useEncomienda(); // <== Verifica si se selecciono MercadoEnvio if( $flagEncomienda ) { //Agrego al 'payer' la informacion de domicilio, cuando tengo el dato $payerInfo["address"] = array( "street_name" => $_SESSION['carrito']['info_ship']['address'] //"Street", ,"street_number" => $_SESSION['carrito']['info_ship']['dirnumber'] //123, ,"zip_code" => $_SESSION['carrito']['info_ship']['zip'] //"5700" ); } //------------------------------------ // $paymentmethods = array() // "excluded_payment_methods"=> // array( // 0=>array("id"=> "master") // ), // "excluded_payment_types": // [ // { // "id": "ticket" // } // ], // "installments": 12, // "default_payment_method_id": null, // "default_installments": null // ); //------------------------------------ // INIT-POINT //------------------------------------ if( $flagME ) { $mpinfo = array( "items" => $items ,"payer" => $payerInfo ,"back_urls" => $backUrl //,"auto_return" => "approved" ,"shipments" => $shipments //,"notification_url" => "https://www.your-site.com/ipn" ,"notification_url" => "http://www.carthago.com.ar/site_carthago/ipn/" ,"external_reference" => $_SESSION['carrito']['info_token'] //,"payment_methods" => $paymentmethods //,"expires" => true //,"expiration_date_from" => date("Y-m-dT00:00:00.000-04:00") //"2016-02-01T12:00:00.000-04:00" //,"expiration_date_to" => date("Y-m-dT23:59:59.000-04:00") //"2016-02-28T12:00:00.000-04:00" ); } else { $mpinfo = array( "items" => $items ,"payer" => $payerInfo ,"back_urls" => $backUrl //,"auto_return" => "approved" //,"notification_url" => "https://www.your-site.com/ipn" ,"notification_url" => "http://www.carthago.com.ar/site_carthago/ipn/" ,"external_reference" => $_SESSION['carrito']['info_token'] //,"payment_methods" => $paymentmethods //,"expires" => true //,"expiration_date_from" => date("Y-m-dT00:00:00.000-04:00") //"2016-02-01T12:00:00.000-04:00" //,"expiration_date_to" => date("Y-m-dT23:59:59.000-04:00") //"2016-02-28T12:00:00.000-04:00" ); } // $preference_data = array( // "items" => array( // array( // "title" => "Multicolor kite", // "quantity" => 1, // "currency_id" => "ARS", // Available currencies at: https://api.mercadopago.com/currencies // "unit_price" => 10.00 // ) // ) // ); //$preference = $mp->create_preference($preference_data); $preference = $mp->create_preference($mpinfo); return $preference['response']['init_point']; //return $preference['response']['sandbox_init_point']; } catch ( Exception $e ) { //Error: al ejecutar el metodo print_r($e->__toString()); } } function getTurnoInfoMP($idTurno,&$error=false) { try { $sql = "SELECT CONVERT(VARCHAR(10),t.tur_fecha,120) AS fecha_alta , cl.cli_nombre as clinombre , cl.cli_email as email , cl.cli_tel_cod_area as areatel , cl.cli_tel_numero as tel , cl.cli_dni as dni FROM turnos AS t INNER JOIN clientes as cl ON cl.cli_codigo = t.cli_codigo WHERE t.tur_numero = ".$idTurno; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error=array("cod"=>1,"d"=>"Error al buscar informacion del turno"); return array(false,false); } $res = $GLOBALS['dbSQL']->getAll(); //print_r($rs);die; $tunoInfo = array ( "name" => getNombreCliente($res[0]['clinombre'],false) ,"surname" => getNombreCliente($res[0]['clinombre'],true) ,"email" => $res[0]['email'] ,"date_created" => date("Y-m-dTH:i:s.000-04:00",strtotime($res[0]['fecha_alta'].' 00:00:00')) ,"area_code" => $res[0]['areatel'] ,"tel" => $res[0]['tel'] ,"number" => $res[0]['dni'] ,"trid" => $idTurno ); $mpid = ''; $token = ''; list($mpid,$token) = getMPInitPointTurnoCosto($tunoInfo,$error); return array($mpid,$token); } catch ( Exception $e ) { //Error: al ejecutar el metodo //print_r($e->__toString());die; $error=array("cod"=>2,"f"=>"getTurnoInfoMP","d"=>$e->__toString()); return array(false,false); } } function getMPInitPointTurnoCosto($tunoInfo,&$error=false) { try { $url = $GLOBALS['WS_MPTC_PREFERENCEID'] . "/index.php?importe=1&trid=".$tunoInfo["trid"]; $fichero = 'test_curl_getmpid_parmas_'.date("YmdHis").'.log'; $myfile = fopen($fichero, "w") or die("Unable to open file!"); fwrite($myfile, print_r(json_encode($tunoInfo),true)); fclose($myfile); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode($tunoInfo), CURLOPT_HTTPHEADER => array( "accept: application/json", "content-type: application/json" ), )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if( $err ) { $fichero = 'test_curl_getmpid_error_'.date("YmdHis").'.log'; $myfile = fopen($fichero, "w") or die("Unable to open file!"); fwrite($myfile, print_r($tunoInfo,true)); fwrite($myfile, print_r($err,true)); fclose($myfile); $error=array("cod"=>1,"f"=>"getMPInitPointTurnoCosto","d"=>$err); return array(false,false); } else { $resultado = json_decode($response); $fichero = 'test_curl_getmpid_ok_'.date("YmdHis").'.log'; $myfile = fopen($fichero, "w") or die("Unable to open file!"); fwrite($myfile, print_r($resultado->data->preference,true)); fwrite($myfile, print_r($resultado->data->token,true)); fclose($myfile); return array($resultado->data->preference,$resultado->data->token); } } catch ( Exception $e ) { //Error: al ejecutar el metodo //print_r($e->__toString()); $error=array("cod"=>2,"f"=>"getMPInitPointTurnoCosto","d"=>$e->__toString()); return array(false,false); } } function getMPInitPointTurnoCosto_($tunoInfo) { try { // SDK de Mercado Pago //-->require './vendor/autoload.php'; // Agrega credenciales MercadoPago\SDK::setAccessToken(MP_TEST_ACCESS_TOKEN); // Crea un objeto de preferencia $preference = new MercadoPago\Preference(); // Crea un ítem en la preferencia $item = new MercadoPago\Item(); $item->title = 'Consulta Medica'; $item->quantity = 1; $item->unit_price = $GLOBALS['TUR_COSTO']; //500; $preference->items = array($item); $preference->save(); $preference->id; //-->require_once ('externalLibs/vendor/mercadopago/sdk/lib/mercadopago.php'); //$mp = new MP($GLOBALS['ECOMMERCE']['MP']['ID'], $GLOBALS['ECOMMERCE']['MP']['SECRET']); // sandbox // SHORT_NAME: mp-app-279824574 // CLIENT_ID: 1909033396902417 // CLIENT_SECRET: NsLtS7CrD3VdLsuDuXg7dJkCgaPTU742 //-->$mp = new MP("1909033396902417", "NsLtS7CrD3VdLsuDuXg7dJkCgaPTU742"); $mp = new MP(CLIENT_ID, CLIENT_SECRET); //------------------------------------ //ITEMS //------------------------------------ $itemTemplate = array( "id" => '' //"item-ID-1234", ,"title" => '' //"Title of what you are paying for. It will be displayed in the payment process.", ,"currency_id" => 'ARS' //"ARS", ,"picture_url" => '' //"https://www.mercadopago.com/org-img/MP3/home/logomp3.gif", ,"description" => '' //"Item description", ,"category_id" => 'fashion'//"art", // Available categories at https://api.mercadopago.com/item_categories ,"quantity" => '' //1, ,"unit_price" => '' //100 ); $items=array(); $item = $itemTemplate; $item["id"] = '99'; $item["title"] = 'RESERVA_CONSULTA_MEDICINA'; $item["picture_url"] = ''; $item["description"] = 'RESERVA DE TURNO DE MEDICINA'; $item["quantity"] = 1; $item["unit_price"] = floatval($GLOBALS['TUR_COSTO']); $index = array_push($items,$item); //------------------------------------ //------------------------------------ // Payer //------------------------------------ $payerInfo = array( "name" => $tunoInfo['nombre'] // "user-name", ,"surname" => $tunoInfo['apellido'] // "user-surname", ,"email" => $tunoInfo['email'] // "user@email.com", ,"date_created" => date("Y-m-dTH:i:s.000-04:00",strtotime($tunoInfo['fecha_alta']))// "2015-06-02T12:58:41.425-04:00", ,"phone" => array( "area_code" => $tunoInfo['areatel'] //"11", ,"number" => $tunoInfo['tel'] //"4444-4444" ) ,"identification" => array( "type" => 'DNI' // Available ID types at https://api.mercadopago.com/v1/identification_types ,"number" => $tunoInfo['dni'] //"12345678" ) ); //------------------------------------ //------------------------------------ // Back //------------------------------------ /*$backUrl = array( "success"=> 'http://www.carthago.com.ar/site_carthago/site/front/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_SUCCESS.'&t='.$_SESSION['carrito']['info_token']//"https://www.success.com" ,"failure"=> 'http://www.carthago.com.ar/site_carthago/site/front/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_FAIL.'&t='.$_SESSION['carrito']['info_token']//"http://www.failure.com" ,"pending"=> 'http://www.carthago.com.ar/site_carthago/site/front/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_PENDING.'&t='.$_SESSION['carrito']['info_token']//"http://www.pending.com" );*/ $backUrl = array( "success"=> 'http://centromedicocer.ddns.net/mobile/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_SUCCESS.'&t='.$tunoInfo['idturno'] ,"failure"=> 'http://centromedicocer.ddns.net/mobile/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_FAIL.'&t='.$tunoInfo['idturno'] ,"pending"=> 'http://centromedicocer.ddns.net/mobile/processmp.php?bkmp=3&s='.Ecommerce::BACK_MP_PENDING.'&t='.$tunoInfo['idturno'] ); //------------------------------------ //------------------------------------ // INIT-POINT //------------------------------------ $mpinfo = array( "items" => $items ,"payer" => $payerInfo ,"back_urls" => $backUrl //,"auto_return" => "approved" //,"notification_url" => "http://www.carthago.com.ar/site_carthago/ipn/" ,"notification_url" => "http://centromedicocer.ddns.net/server/ipn/" ,"external_reference" => $tunoInfo['idturno'] //,"payment_methods" => $paymentmethods //,"expires" => true //,"expiration_date_from" => date("Y-m-dT00:00:00.000-04:00") //"2016-02-01T12:00:00.000-04:00" //,"expiration_date_to" => date("Y-m-dT23:59:59.000-04:00") //"2016-02-28T12:00:00.000-04:00" ); $preference = $mp->create_preference($mpinfo); return $preference['response']['init_point']; //return $preference['response']['sandbox_init_point']; } catch ( Exception $e ) { //Error: al ejecutar el metodo print_r($e->__toString()); } } function getMPInitPoint_new() { require './LandaDocMP.php'; $output = array(); $output['resultCode'] = LandaDocMP::RESULT_ERROR_GENERIC; $output["errorDes"] = ""; $ldMP = new LandaDocMP(); $ldMP->cors(); if( $ldMP->init ) { if( isset($_REQUEST["importe"]) && !empty($_REQUEST["importe"]) && !is_null($_REQUEST["importe"]) && is_numeric($_REQUEST["importe"]) && floatval($_REQUEST["importe"]) > 0 && floatval($_REQUEST["importe"]) < 2000 && isset($_REQUEST["echo"]) && !empty($_REQUEST["echo"]) && !is_null($_REQUEST["echo"]) ) { $importe = $_REQUEST["importe"]; $items = 1; if( isset($_REQUEST["items"]) && !empty($_REQUEST["items"]) && !is_null($_REQUEST["items"]) && is_numeric($_REQUEST["items"]) && intval($_REQUEST["items"]) > 0 && intval($_REQUEST["items"]) < 4 ) { $items = $_REQUEST["items"]; } $sessionToken = $ldMP->getTokenSesion(); $resultado = $ldMP->getMPInitPoint($_REQUEST["echo"],$importe,$items,$sessionToken,$url); if( $resultado ) { if( $ldMP->preference->id ) { $resultadoSMPP = $ldMP->saveMPInitPoint($importe,$items,$ldMP->preference->id,$_REQUEST["echo"],$sessionToken); $output['resultCode'] = LandaDocMP::RESULT_SUCCESS; $output['data'] = array( "resultado" => $resultado ,"preference" => $ldMP->preference->id ,"echo" => $_REQUEST["echo"] ,'token' => $sessionToken ,'urlmp' => $url ,'rsmmpp' => $resultadoSMPP ); $formatOutput = $ldMP->getOutputFormetd($output); } else { $formatOutput = $ldMP->responseGeneric(LandaDocMP::RESULT_ERROR_ON_GET_MP_PREF); } } else { $formatOutput = $ldMP->responseGeneric(LandaDocMP::RESULT_ERROR_ON_CREATE_MP_P,$ldMP->error); } } else { $formatOutput = $ldMP->responseGeneric(LandaDocMP::RESULT_ERROR_ON_PARAMS_MISSING); } } else { $formatOutput = $ldMP->responseGeneric(LandaDocMP::RESULT_ERROR_ON_INIT_OBJ); } echo $formatOutput; die; } function saveMPPoint($data) { $sql = "INSERT INTO ldoc_mp_points ( med_codigo ,cli_codigo ,mpp_point ,mpp_token ,mpp_items ,mpp_importe ,mpp_status ,mpp_date_insert ) VALUES ( '".addslashes($data["prof"])."' ,'".addslashes($data["clie"])."' ,'".addslashes($data["point"])."' ,'".addslashes($data["token"])."' ,'".addslashes($data["items"])."' ,'".addslashes($data["importe"])."' ,0 ,GETDATE() )"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la insercion return false; } return true; } function saveLDMPPoint(&$resultInfo) { $cliente = false; $profesionalInfo = array(); if( isset($_REQUEST["data"]) && !empty($_REQUEST["data"]) && !is_null($_REQUEST["data"]) ) { $mpInfo = json_decode($_REQUEST["data"],true); $resultado = saveMPPoint($mpInfo); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al registra el Point de MP"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function saveLDMPPointCurl(&$resultInfo) { $cliente = false; $profesionalInfo = array(); $request = json_decode(file_get_contents('php://input'), true); if( isset($request["data"]) && !empty($request["data"]) && !is_null($request["data"]) ) { $mpInfo = $request["data"]; $resultado = saveMPPoint($mpInfo); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al registra el Point de MP"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function updateStatusMPPoint($mpInfo) { $mpInfo = array( "token" => $_REQUEST["token"] ,"tokenG" => $_REQUEST["tokenG"] ,"status" => $_REQUEST["st"] ,"resultado" => $_REQUEST["rmp"] ); if ( $mpInfo["token"] != $mpInfo["tokenG"] ) { //El token almacenado en la app es diferente al recibido desde MP $auditValores = 'token='.$mpInfo["token"].'&tokenG='.$mpInfo["tokenG"].'&status='.$mpInfo["status"]; saveAuditoria($auditValores, TNMTAPP); return ERROR_MP_POINT_NOT_MATCH; } //Obtener mp point //buscar si existe un registro $sql = "SELECT mpp_numero ,med_codigo ,cli_codigo ,mpp_items ,mpp_importe ,mpp_point ,mpp_token ,mpp_status ,mpp_date_insert ,mpp_date_update ,mpp_tstamp FROM dbo.ldoc_mp_points WHERE mpp_token = '".addslashes($mpInfo["token"])."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la actualizacion del MP POINT $auditValores = 'token='.$mpInfo["token"].'&tokenG='.$mpInfo["tokenG"].'&status='.$mpInfo["status"]; saveAuditoria($auditValores, EBMPP); return ERROR_DB_SEARCH_MP_POINT_LD; } $tokenInfo = $GLOBALS['dbSQL']->getAll(); if(count($tokenInfo) <= 0) { $auditValores = 'token='.$mpInfo["token"].'&tokenG='.$mpInfo["tokenG"].'&status='.$mpInfo["status"]; saveAuditoria($auditValores, BMPPNE); return ERROR_SEARCH_MP_POINT_LD; } else { if( $tokenInfo[0]["mpp_status"]=="1" || intval($tokenInfo[0]["mpp_status"])==1 ) { $auditValores = 'token='.$mpInfo["token"].'&tokenG='.$mpInfo["tokenG"].'&status='.$mpInfo["status"]; saveAuditoria($auditValores, MPAC); return ERROR_MP_POINT_ALREADY_UP_LD; } else { $sql = "UPDATE ldoc_mp_points SET mpp_date_update = GETDATE(), mpp_status = '".addslashes($mpInfo["status"])."', mpp_result = '".addslashes($result)."' WHERE mpp_token = '".addslashes($token)."'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la actualización $auditValores = 'token='.$mpInfo["token"].'&tokenG='.$mpInfo["tokenG"].'&status='.$mpInfo["status"]; saveAuditoria($auditValores, BMPPNE); return ERROR_UPDATE_MP_POINT_LD; } else { //Insertar el token // function insertLDConfirmarConsula($profesional,$paciente,$tipoPago) $resultado = insertLDConfirmarConsula( $tokenInfo[0]["med_codigo"] ,$tokenInfo[0]["cli_codigo"] ,LD_CONSULTA_C_COSTO ,$tokenInfo[0]["mpp_token"] ,$tokenInfo[0]["mpp_importe"] ); if( $resultado!==true ) { $auditValores = 'token='.$mpInfo["token"].'&tokenG='.$mpInfo["tokenG"].'&status='.$mpInfo["status"]; saveAuditoria($auditValores, EITAMPPUP); return ERROR_INSERT_TOKEN_AFTER_MPP_UP_LD; } } } } return true; } function updateStatusMPPoint_old($token,$status,$result) { //Obtener mp point //buscar si existe un registro $sql = "SELECT mpp_numero ,med_codigo ,cli_codigo ,mpp_items ,mpp_importe ,mpp_point ,mpp_token ,mpp_status ,mpp_date_insert ,mpp_date_update ,mpp_tstamp FROM dbo.ldoc_mp_points WHERE mpp_token = '".addslashes($token)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la actualizacion del MP POIN $auditValores = 'token='.$token.'&status='.$status; saveAuditoria($auditValores, EBMPP); return ERROR_DB_SEARCH_MP_POINT_LD; } $tokenInfo = $GLOBALS['dbSQL']->getAll(); if(count($tokenInfo) <= 0) { $auditValores = 'token='.$token.'&status='.$status; saveAuditoria($auditValores, BMPPNE); return ERROR_SEARCH_MP_POINT_LD; } else { if( $tokenInfo[0]["mpp_status"]=="1" || intval($tokenInfo[0]["mpp_status"])==1 ) { $auditValores = 'token='.$token.'&status='.$status; saveAuditoria($auditValores, MPAC); return ERROR_MP_POINT_ALREADY_UP_LD; } else { $sql = "UPDATE ldoc_mp_points SET mpp_date_update = GETDATE(), mpp_status = '".addslashes($status)."', mpp_result = '".addslashes($result)."' WHERE mpp_token = '".addslashes($token)."'"; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la actualización $auditValores = 'token='.$token.'&status='.$status; saveAuditoria($auditValores, BMPPNE); return ERROR_UPDATE_MP_POINT_LD; } else { //Insertar el token // function insertLDConfirmarConsula($profesional,$paciente,$tipoPago) $resultado = insertLDConfirmarConsula( $tokenInfo[0]["med_codigo"] ,$tokenInfo[0]["cli_codigo"] ,LD_CONSULTA_C_COSTO ,$tokenInfo[0]["mpp_token"] ,$tokenInfo[0]["mpp_importe"] ); if( $resultado!==true ) { $auditValores = 'token='.$token.'&status='.$status; saveAuditoria($auditValores, EITAMPPUP); return ERROR_INSERT_TOKEN_AFTER_MPP_UP_LD; } } } } return true; } function updateLDMPPoint(&$resultInfo) { $cliente = false; $profesionalInfo = array(); /* token: $scope.mp.token ,tokenG: MP_TOKEN ,st: 1 ,rmp: mptype ,request: 'MP_REQUEST' ,collection_id: MP_COLLECTION_ID ,collection_status: MP_COLLECTION_STATUS ,external_reference: MP_EXTERNAL_REFERENCE ,payment_type: MP_PAYMENT_TYPE ,merchant_order_id: MP_MERCHANT_ORDER_ID ,preference_id: MP_PREFERENCE_ID ,site_id: MP_SITE_ID ,processing_mode: MP_PROCESSING_MODE ,merchant_account_id: MP_MERCHANT_ACCOUNT_ID */ if( isset($_REQUEST["token"]) && !empty($_REQUEST["token"]) && !is_null($_REQUEST["token"]) && isset($_REQUEST["tokenG"]) && !empty($_REQUEST["tokenG"]) && !is_null($_REQUEST["tokenG"]) && isset($_REQUEST["st"]) && !empty($_REQUEST["st"]) && !is_null($_REQUEST["st"]) && isset($_REQUEST["rmp"]) && !empty($_REQUEST["rmp"]) && !is_null($_REQUEST["rmp"]) ) { $token = $_REQUEST["token"]; $status = $_REQUEST["st"]; $resultado = $_REQUEST["rmp"]; $mpInfo = array( "token" => $_REQUEST["token"] ,"tokenG" => $_REQUEST["tokenG"] ,"status" => $_REQUEST["st"] ,"resultado" => $_REQUEST["rmp"] ); $saldo = false; //-->$resultado = updateStatusMPPoint($token,$status,$resultado); $resultado = updateStatusMPPoint($mpInfo); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al actualizar el estado del pago"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function getLD_ProfSaldo($profesional,&$saldo) { //buscar si existe un registro $sql = "SELECT mbal_saldo as saldo ,mbal_actualizado as actualizado FROM dbo.ldoc_medico_balance WHERE med_codigo = '".addslashes($profesional)."'"; //print_r($sql);print_r("\n"); $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { //Fallo la busqueda saveAuditoria("prof=".$profesional, CSPNE); return ERROR_SEARCH_PROF_SALDO_LD; } $rs = $GLOBALS['dbSQL']->getAll(); if(count($rs) > 0) { $signo = 1; $saldo = number_format(floatval($rs[0]["saldo"]),2); if( $saldo >= 0 ) { $saldoD = intval($saldo); $decimales = floatval($saldo-$saldoD); //print_r("s[".$saldo."] sD[".$saldoD."]de[".$decimales."]");die; $decimalesT = ''; $pos = stripos($decimales, '.'); if($pos!==false) { $aux = substr($decimales, 2); if(strlen($aux)<2) { $decimalesT = $aux . '0'; } else { $decimalesT = $aux; } } else { if(strlen($decimales)<2) { $decimalesT = $decimales . '0'; } else { $decimalesT = $decimales; } } } else { $saldoD = intval($saldo); $decimales = floatval($saldo-$saldoD); $signo = -1; //print_r("s[".$saldo."] sD[".$saldoD."]de[".$decimales."]");die; $decimalesT = ''; $pos = stripos($decimales, '.'); if($pos!==false) { $aux = substr($decimales, 3); if(strlen($aux)<2) { $decimalesT = $aux . '0'; } else { $decimalesT = $aux; } } else { if(strlen($decimales)<2) { $decimalesT = $decimales . '0'; } else { $decimalesT = $decimales; } } } $saldo = array( "saldo" => $saldo ,"signo" => $signo ,"saldoI" => $saldoD ,"saldoD" => $decimalesT ,"actualizado" => $rs[0]["actualizado"] ); } else { $saldo = array( "saldo" => 0 ,"signo" => 1 ,"saldoI" => 0 ,"saldoD" => '00' ,"actualizado" => '' ); } return true; } function getLDProfSaldo(&$resultInfo) { $profesional = false; $profesionalInfo = array(); if( isset($_REQUEST["idpro"]) && !empty($_REQUEST["idpro"]) && !is_null($_REQUEST["idpro"]) ) { $profesional = $_REQUEST["idpro"]; $saldo = 0; $resultado = getLD_ProfSaldo($profesional,$saldo); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado ,"saldo" => $saldo["saldo"] ,"signo" => $saldo["signo"] ,"salint" => $saldo["saldoI"] ,"saldec" => $saldo["saldoD"] ,"actualizado" => $saldo["actualizado"] ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar el saldo del profesional"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function getLDClieSaldo(&$resultInfo) { $cliente = false; $profesionalInfo = array(); if( isset($_REQUEST["idclie"]) && !empty($_REQUEST["idclie"]) && !is_null($_REQUEST["idclie"]) ) { $cliente = $_REQUEST["idclie"]; $saldo = false; $resultado = getClienteSaldo($cliente,$saldo); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado ,"saldo" => $saldo["saldo"] ,"signo" => $saldo["signo"] ,"salint" => $saldo["salint"] ,"saldec" => $saldo["saldec"] ,"actualizado" => $saldo["actualizado"] ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar el saldo del paciente"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function prepararTriaje($triaje) { /* Array ( [fiebre] => 1 [fiebreg] => 36 [tos] => 1 [nausea] => 1 [dolorca] => 1 [diarrea] => 1 [edad] => 45 [comentario] => laslasdla asld aalsd lasd alsd alsdasd ) */ $triajeTxt = "Edad: ". $triaje["edad"] ." años". "\n"; $triajeTxt.= "Fiebre: ". (intval($triaje["fiebre"])==1?'SI':'NO') . "\n"; $triajeTxt.= "Tos: ". (intval($triaje["tos"])==1?'SI':'NO'). "\n"; $triajeTxt.= "Nausea/Vómitos: ". (intval($triaje["nausea"])==1?'SI':'NO'). "\n"; $triajeTxt.= "Dolor Cabeza: ". (intval($triaje["dolorca"])==1?'SI':'NO'). "\n"; $triajeTxt.= "Diarrea: ". (intval($triaje["diarrea"])==1?'SI':'NO'). "\n"; $triajeTxt.= "Comentario: ". "\n"; $triajeTxt.= $triaje["comentario"]. "\n"; return $triajeTxt; } function insertLDConfirmarConsula($profesional,$paciente,$tipoPago,$token_=false,$importe_=false,$triaje_=false) { $sql = "SELECT cli_codigo ,tid_codigo ,cli_dni ,obs_codigo ,obsp_cod FROM clientes WHERE cli_codigo = '".addslashes($paciente)."'"; //print_r("$sql");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $error = 100; return true;//error al leer el cliente } $clienteInfo = $GLOBALS['dbSQL']->getAll(); if(count($clienteInfo)==0){$error = 101;return false;}//error cliente no existe o esta bloqueado //print_r("tp-$tipoPago");die; if( intval($tipoPago) === LD_CONSULTA_S_COSTO ) { //COBERTURA OBRA SOCIAL $fecha = date("Y-m-d.H:i:s"); $fecha = str_replace(".","T",$fecha).".000"; $token = MD5(MD5($fecha.$profesional.$paciente)); if($token_){$token =$token_;} $triaje = ''; //print_r($triaje_["fiebre"]);die; if( $triaje_ ){$triaje = prepararTriaje($triaje_);} $sql = "INSERT INTO dbo.[ldoc_paciente_tokens] ([med_codigo] ,[cli_codigo] ,[ptock_token] ,[ptock_finalizado] ,[ptock_importe] ,[ptock_fecha] ,[ptock_fecha_confirmacion] ,[ptock_fecha_vto] ,[ptock_satisfaccion] ,[ptock_observacion] ,[obs_codigo] ,[obsp_cod] ,[ptock_triaje] ) VALUES ('".addslashes($profesional)."' ,'".addslashes($paciente)."' ,'".addslashes($token)."' ,0 ,0 ,'".$fecha."' ,NULL ,NULL ,NULL ,NULL ,".$clienteInfo[0]["obs_codigo"]." ,".$clienteInfo[0]["obsp_cod"]." ,'".addslashes($triaje)."' )"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //Fallo la insercion $auditValores = 'med_codigo='.$profesional.'&paciente='.$paciente.'&fecha='.$fecha.'&referencia='.$token; saveAuditoria($auditValores, EITLDSC); return ERROR_INSERT_TURNO_LD; } else { return true; } } else { //PARTICULAR $fecha = date("Y-m-d.H:i:s"); $fecha = str_replace(".","T",$fecha).".000"; $token = MD5(MD5($fecha.$profesional.$paciente)); if($token_){$token =$token_;} $importe = 0; if($importe_){$importe =$importe_;} $triaje = ''; if( $triaje_ ){$triaje = prepararTriaje($triaje_);} $sql = "INSERT INTO dbo.[ldoc_paciente_tokens] ( [med_codigo] ,[cli_codigo] ,[ptock_token] ,[ptock_finalizado] ,[ptock_importe] ,[ptock_fecha] ,[ptock_fecha_confirmacion] ,[ptock_fecha_vto] ,[ptock_satisfaccion] ,[ptock_observacion] ,[ptock_triaje] ) VALUES ( '".addslashes($profesional)."' ,'".addslashes($paciente)."' ,'".addslashes($token)."' ,0 ,'".addslashes($importe)."' ,'".$fecha."' ,NULL ,NULL ,NULL ,NULL ,'".addslashes($triaje)."' )"; //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( !$rs ) { //print_r($GLOBALS['dbSQL']->GetLastError());die; //Fallo la insercion $auditValores = 'med_codigo='.$profesional.'&paciente='.$paciente.'&fecha='.$fecha.'&referencia='.$token; saveAuditoria($auditValores, EITLDCC); return ERROR_INSERT_TURNO_LD; } else { return true; } } } function validarTurnoLDBefore($profesional,$paciente,$tipoPago,&$res) { $estado = false; $error = false; $flagSG = false; $resultado = validarLDPacienteConvenioUmbral($profesional,$paciente,$estado,$flagSG,$error); //print_r("es[$estado]er[$error]");die; if($error===0) { //Validar si ya tiene un turno virtual para la misma fecha $res = true; } else { $res = $error; } return true; } function confirmarTurnoLD(&$resultInfo) { $cliente = false; $profesionalInfo = array(); if( isset($_REQUEST["idprof"]) && !empty($_REQUEST["idprof"]) && !is_null($_REQUEST["idprof"])&& isset($_REQUEST["idclie"]) && !empty($_REQUEST["idclie"]) && !is_null($_REQUEST["idclie"])&& isset($_REQUEST["ptp"]) && !empty($_REQUEST["ptp"]) && !is_null($_REQUEST["ptp"]) ) { $paciente = $_REQUEST["idclie"]; $profesional = $_REQUEST["idprof"]; $tipoPago = $_REQUEST["ptp"]; $id = false; $triaje = (isset($_REQUEST["triaje"])?$_REQUEST["triaje"]:false); //print_r($triaje);die; $resultado = true; $resultadoVal = validarTurnoLDBefore($profesional,$paciente,$tipoPago,$res); if( $resultadoVal ) { $resultado = insertLDConfirmarConsula($profesional,$paciente,$tipoPago,$id,false,$triaje); } else { $resultado = $res; } if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado"=> $resultado ,"id" => $id ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar el saldo del paciente"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } function getLD_SalaVirtualPacienteComentarios($turnos,&$comentarios) { $comentarios = array(); $lst = ''; for($i=0;$iQuery($sql); if ( !$rs ) { $comentarios = false; return false; } else { $comentarios = $GLOBALS['dbSQL']->getAll(); } return true; } function getLD_SalaVirtualPaciente($paciente,$flagAtendidos=true,&$turnos) { $pacientes = array(); $estado = false; //LEFT JOIN med_especialidades AS mes ON me.med_codigo = mes.med_codigo //turnos $sql = "SELECT tld.ptock_numero AS REF ,tld.med_codigo AS MCOD ,me.med_nombre AS MNOMBRE ,tld.cli_codigo AS CCOD ,tld.ptock_token AS TOKEN ,tld.ptock_finalizado AS FIN ,tld.ptock_importe AS IMPORTE ,tld.ptock_fecha AS FECHA ,tld.ptock_fecha_vto AS FVTO ,tld.ptock_satisfaccion AS SATIS ,cl.cli_dni AS DNI ,cl.cli_nombre AS NOMBRE ,cl.cli_sexo AS SEXO ,CONCAT(cl.cli_tel_cod_area,cl.cli_tel_numero) AS TEL ,cl.cli_tel2 AS TEL2 ,(DATEDIFF(hour, ptock_fecha, GETDATE())) AS MEspH ,(DATEDIFF(minute, ptock_fecha, GETDATE())) AS MEspM ,'m' as TE ,'0' as TEV ,t.tit_abrev AS TitM ,me.med_mp AS Mat ,e.esp_denom AS EspM ,(CASE WHEN tld.ptock_finalizado = 0 THEN 'PENDIENTE' ELSE 'FINALIZADO' END) AS Estadon ,tld.ptock_finalizado AS Estado FROM ldoc_paciente_tokens as tld INNER JOIN clientes as cl ON cl.cli_codigo = tld.cli_codigo INNER JOIN medicos as me ON me.med_codigo = tld.med_codigo INNER JOIN tbl_titulos as t ON me.tit_codigo = t.tit_codigo INNER JOIN especial AS e ON me.esp_codigo = e.esp_codigo WHERE tld.cli_codigo = '".addslashes($paciente)."' ".($flagAtendidos?' AND tld.ptock_finalizado = 0':''); //print_r($sql);die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( !$rs ) { $turnos = false; } else { $turnos = $GLOBALS['dbSQL']->getAll(); } return true; } function getLDSalaVirtualPaciente(&$resultInfo) { $paciente = false; $turnos = array(); $pacientesRC = array(); $estado = false; if( isset($_REQUEST["idcli"]) && !empty($_REQUEST["idcli"]) && !is_null($_REQUEST["idcli"]) ) { $paciente = $_REQUEST["idcli"]; $resultado = getLD_SalaVirtualPaciente($paciente,false,$turnos); if( $resultado ) { $comentarios = false; $res=false; if(count($turnos)>0) { $res = getLD_SalaVirtualPacienteComentarios($turnos,$comentarios); } //Listar Turnos $resultInfo['code'] = 0; $resultInfo['data'] = array( "listTurnos" => $turnos ,"listComentarios" => ($res?$comentarios:array()) ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al consultar la sala virtual del paciente"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros incompletos"; } return false; } function getTunoIdMPTCByToken($token) { // Obtener el id del turno $sql = "SELECT tur_numero FROM turnos_compras_mp WHERE tcmp_token = '" . $token."'"; //print_r($sql);die; $rsC = $GLOBALS['dbSQL']->Query($sql); if ( $rsC ) { $turnoInfo = $GLOBALS['dbSQL']->getAll(); if( count($turnoInfo)>0 ) { return $turnoInfo[0]["tur_numero"]; } } return false; } //Turno con costo. Actualizar la respuesta function saveMPRespuesta() { /* Array ( [a] => svmpctc [st] => mpsuccess [mpid] => 449616676-68121e2a-156f-476e-a0cf-34dd05e65fbb [tk] => 3f2395c2709b589d60fdd4418350f657 [rp] => WVRveE5EcDdjem8wT2lKaWEyMXdJanR6T2pFNklqTWlPM002TVRvaWN5STdjem81T2lKdGNITjFZMk5sYzNNaU8zTTZNVG9pZENJN2N6b3dPaUlpTzNNNk1UTTZJbU52Ykd4bFkzUnBiMjVmYVdRaU8zTTZNVEE2SWpFeU5ERTJOekEzTlRZaU8zTTZNVGM2SW1OdmJHeGxZM1JwYjI1ZmMzUmhkSFZ6SWp0ek9qZzZJbUZ3Y0hKdmRtVmtJanR6T2pFd09pSndZWGx0Wlc1MFgybGtJanR6T2pFd09pSXhNalF4Tmpjd056VTJJanR6T2pZNkluTjBZWFIxY3lJN2N6bzRPaUpoY0hCeWIzWmxaQ0k3Y3pveE9Eb2laWGgwWlhKdVlXeGZjbVZtWlhKbGJtTmxJanR6T2pNeU9pSXpaakl6T1RWak1qY3dPV0kxT0Rsa05qQm1aR1EwTkRFNE16VXdaalkxTnlJN2N6b3hNam9pY0dGNWJXVnVkRjkwZVhCbElqdHpPakV4T2lKamNtVmthWFJmWTJGeVpDSTdjem94TnpvaWJXVnlZMmhoYm5SZmIzSmtaWEpmYVdRaU8zTTZNVEE2SWpNek1UZ3lPREUwTVRNaU8zTTZNVE02SW5CeVpXWmxjbVZ1WTJWZmFXUWlPM002TkRZNklqUTBPVFl4TmpZM05pMDJPREV5TVdVeVlTMHhOVFptTFRRM05tVXRZVEJqWmkwek5HUmtNRFZsTmpWbVltSWlPM002TnpvaWMybDBaVjlwWkNJN2N6b3pPaUpOVEVFaU8zTTZNVFU2SW5CeWIyTmxjM05wYm1kZmJXOWtaU0k3Y3pveE1Eb2lZV2RuY21WbllYUnZjaUk3Y3pveE9Ub2liV1Z5WTJoaGJuUmZZV05qYjNWdWRGOXBaQ0k3Y3pvME9pSnVkV3hzSWp0OQ== ) */ $turnoId = getTunoIdMPTCByToken($_REQUEST["tk"]); if( $turnoId ) { //Si el resultado es ok if( $_REQUEST["st"] == BACK_MP_SUCCESS ) { //Actualizar el turno y tabla de transacciones de MP $error = false; $result = updateTurnoCostoMPInfoSuccess($turnoId,$_REQUEST["mpid"],$_REQUEST["rp"],$_REQUEST["tk"],$error); if( $result ) { //Enviar Email de confirmacion if( $GLOBALS['EMAIL_CUSTOMER'] ) { //-->sendEmailConfirmacionWs(TYPE_EMAIL_CT, $turnoId); //Enviar Email de transación ok } } } else { //Borrar el turno y actualizar la tabla de transacciones de MP $error = false; //$result = updateTurnoCostoMPInfoError($turnoId,$_REQUEST["mpid"],$_REQUEST["rp"],$_REQUEST["tk"],$error); $result = updateTurnoCostoMPInfoError($turnoId,ESTADO_TURNOCT_ERROR_RETORNO_MP,$_REQUEST["rp"],$_REQUEST["tk"],$error); if( $result ) { //Enviar Email de confirmacion if( $GLOBALS['EMAIL_CUSTOMER'] ) { sendEmailConfirmacionWs(TYPE_EMAIL_CT, $turnoId); //Enviar Email de fallo de transaccion } } } } else { //Error no se encontro el turno } return true; } function updateTurnoCostoMPRespuesta(&$resultInfo) { $cliente = false; $profesionalInfo= array(); /* Array ( [a] => svmpctc [st] => mpsuccess [mpid] => 449616676-68121e2a-156f-476e-a0cf-34dd05e65fbb [tk] => 3f2395c2709b589d60fdd4418350f657 [rp] => WVRveE5EcDdjem8wT2lKaWEyMXdJanR6T2pFNklqTWlPM002TVRvaWN5STdjem81T2lKdGNITjFZMk5sYzNNaU8zTTZNVG9pZENJN2N6b3dPaUlpTzNNNk1UTTZJbU52Ykd4bFkzUnBiMjVmYVdRaU8zTTZNVEE2SWpFeU5ERTJOekEzTlRZaU8zTTZNVGM2SW1OdmJHeGxZM1JwYjI1ZmMzUmhkSFZ6SWp0ek9qZzZJbUZ3Y0hKdmRtVmtJanR6T2pFd09pSndZWGx0Wlc1MFgybGtJanR6T2pFd09pSXhNalF4Tmpjd056VTJJanR6T2pZNkluTjBZWFIxY3lJN2N6bzRPaUpoY0hCeWIzWmxaQ0k3Y3pveE9Eb2laWGgwWlhKdVlXeGZjbVZtWlhKbGJtTmxJanR6T2pNeU9pSXpaakl6T1RWak1qY3dPV0kxT0Rsa05qQm1aR1EwTkRFNE16VXdaalkxTnlJN2N6b3hNam9pY0dGNWJXVnVkRjkwZVhCbElqdHpPakV4T2lKamNtVmthWFJmWTJGeVpDSTdjem94TnpvaWJXVnlZMmhoYm5SZmIzSmtaWEpmYVdRaU8zTTZNVEE2SWpNek1UZ3lPREUwTVRNaU8zTTZNVE02SW5CeVpXWmxjbVZ1WTJWZmFXUWlPM002TkRZNklqUTBPVFl4TmpZM05pMDJPREV5TVdVeVlTMHhOVFptTFRRM05tVXRZVEJqWmkwek5HUmtNRFZsTmpWbVltSWlPM002TnpvaWMybDBaVjlwWkNJN2N6b3pPaUpOVEVFaU8zTTZNVFU2SW5CeWIyTmxjM05wYm1kZmJXOWtaU0k3Y3pveE1Eb2lZV2RuY21WbllYUnZjaUk3Y3pveE9Ub2liV1Z5WTJoaGJuUmZZV05qYjNWdWRGOXBaQ0k3Y3pvME9pSnVkV3hzSWp0OQ== ) */ if( isset($_REQUEST["st"]) && !empty($_REQUEST["st"]) && !is_null($_REQUEST["st"])&& isset($_REQUEST["mpid"]) && !empty($_REQUEST["mpid"]) && !is_null($_REQUEST["mpid"])&& isset($_REQUEST["tk"]) && !empty($_REQUEST["tk"]) && !is_null($_REQUEST["tk"]) ) { $resultado = saveMPRespuesta(); if( $resultado ) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $resultado); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al registrar la respuesta de MP - Turnos Costos"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parámetros incompletos"; } return false; } // function isTurnosEmailTelemedicinaInProgress() { $sql = " SELECT COUNT(*) as total FROM dbo.[mensajes_in_process] WHERE [msgprc_estado] IS NULL AND msgprc_type = 'TUR_TELEMED'"; $rs = $GLOBALS['dbSQL']->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 openTurnosEmailTelemedicinaProgress() { $sql = " INSERT INTO dbo.[mensajes_in_process] (msgprc_estado,msgprc_tstamp_init,msgprc_type) VALUES (NULL,GETDATE(),'TUR_TELEMED')"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function closeTurnosEmailTelemedicinaProgress() { $sql = " UPDATE dbo.[mensajes_in_process] SET msgprc_estado = 1, msgprc_tstamp = GETDATE() WHERE msgprc_estado IS NULL AND msgprc_type = 'TUR_TELEMED'"; $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } function updateTurnosEmailTelemedicinaState($id,$flag,$debug=true) { try { $sql = " UPDATE dbo.turnos SET tur_telemedicina_sendemail = 1 ,tur_telemedicina_sendemail_excluido = ".(!$flag?1:0)." ,tur_telemedicina_sendemail_fecha = GETDATE() WHERE tur_numero = ".$id; if($debug){print_r($sql);print_r("\n");} $rs = $GLOBALS['dbSQL']->Query($sql,true); if ( $rs ) { return true; } return false; } catch (Exception $e) { //print_r("updateEmailMessagesState >>>>>> Error:".($e->__toString())); return false; } } function processTurnosEmailTelemedicinaQueue() { closeTurnosEmailTelemedicinaProgress(); if(!isTurnosEmailTelemedicinaInProgress()) { try { openTurnosEmailTelemedicinaProgress(); $sql = " SELECT tur_numero AS tnumero ,tur_token AS token ,cli_email AS cli_email ,cli_nombre AS cli_nombre ,CONCAT(CONVERT(VARCHAR(10),tur_fecha,103),' ',STUFF(RIGHT('0000' + CAST(tur_hora AS VARCHAR(4)), 4), 3, 0, ':')) as fecha FROM turnos AS t INNER JOIN clientes AS c ON c.cli_codigo = t.cli_codigo WHERE LEFT(CONVERT(VARCHAR,tur_fecha, 120), 10) >= LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10) AND tur_telemed = 1 AND tur_telemedicina_sendemail = 0"; // AND cli_email = 'juarezgustavoa@gmail.com' print_r($sql);print_r("\n");//die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $clientes = $GLOBALS['dbSQL']->getAll(); print_r($clientes);print_r("\n");//die; $lstTurnos = array(); for($i=0;$i$customer = getTurnoTMClienteEmail($_REQUEST["tnro"]); //$customer = array(); //$x = array_push($customer,array("cli_nombre"=>$clientes[$i]['cli_nombre'],"cli_email"=>$clientes[$i]['cli_email'])); $customer = array("cli_nombre"=>$clientes[$i]['cli_nombre'],"cli_email"=>$clientes[$i]['cli_email']); print_r($customer);print_r("\n"); print_r($params);print_r("\n"); $resultinfoemail=false; $resultado = sendVideoSesionCienteArcos($customer,$params,$resultinfoemail); print_r($resultinfoemail);print_r("\n"); if(!$resultado) { //savelogEmailError $resultInfo['code'] = 2; //$resultInfo['errorDes'] = "Se produjo un error al limpiar la clave y enviar por email: [".$e->getMessage()."]"; } //$resultado = true; $r = updateTurnosEmailTelemedicinaState($clientes[$i]['tnumero'],($resultado?1:0)); } } else { print_r("email invalido 2[".$clientes[$i]['cli_email']."]");print_r("\n"); $r = updateTurnosEmailTelemedicinaState($clientes[$i]['tnumero'],1); } } } closeTurnosEmailTelemedicinaProgress(); } catch (Exception $e) { closeTurnosEmailTelemedicinaProgress(); } } else { print_r("Envio en progreso. Se cancela hilo de ejecucion"); } } function sendVideoSesionCienteArcos($customer,$params,&$resultInfo) { try { if( $customer ) { //---------------------------------------------- //Enviar email //---------------------------------------------- //$clienteInfo = $clienteInfo[0]["cli_email"]; //-----!!!!!!!----- $email=$customer["cli_email"];//TEST!!!! COMENTAR EN PRODUCCION if(false&&$GLOBALS['SMI_TEST_MODE']) { $email="gustavojuarez@gmail.com";//TEST!!!! COMENTAR EN PRODUCCION } //-----!!!!!!!----- $paramsEmail = array(); $paramsEmail["email"] = $email; $paramsEmail["turTok"] = $params["tokentur"]; $paramsEmail["tfecha"] = $params["fecha"]; $paramsEmail["nombre"] = encodeDataB64($customer["cli_nombre"]); $paramsEmail["cusN"] = encodeDataB64($customer["cli_nombre"]); $paramsEmail["subject"] = "ACCESO TURNO CONSULTA VIDEO LLAMADA"; $paramsEmail['customer']= $GLOBALS['WS_WHATSAPP_CUSTOMER'];//SPIDER//"1576dd8687342d79d0906e1a12570907";//"e23ca1e4e92fdc29b4d4af7d4d33263b";// $paramsEmail['template']= 52; //OBTENER DE LA BASE $paramsEmail['tipo'] = 36; //VALIDACION DE CORREO SMI $paramsEmail['testmode']= ($GLOBALS['SMI_TEST_MODE']?1:0); //LLAMADA PREPARADA //grabarLogErrorAfip($paramsEmail,"ENVIAR_EMAIL_FAC","_enviar_email_params"); $paramsEmail["fromn"] = $GLOBALS['FROMN']; $paramsEmail["from"] = $GLOBALS['FROM']; //print_r($paramsEmail);die(" <<<<<<<<< "); $result = false; try { $res = callWebServiceSendEmail($paramsEmail,$result); if($res) { $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => $res ); return true; } else { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al enviar el email de atencion: [".$e->getMessage()."]"; } } catch (Exception $e) { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al enviar el email de atencion: [".$e->getMessage()."]"; } //grabarLogErrorAfip(array("res"=>$res),"ENVIAR_EMAIL_CMP","_enviar_email_cmp_".($res?'ok':'error')); //return ($res?true:false); //---------------------------------------------- } else { $resultInfo['code'] = 3; $resultInfo['errorDes'] = "Se produjo un error al limpiar la clave-1"; } return false; } catch (Exception $e) { $resultInfo['code'] = 2; $resultInfo['errorDes'] = "Se produjo un error al limpiar la clave y enviar por email: [".$e->getMessage()."]"; return false; } } function sendEmailTurnoArcos(&$resultInfo) { if( isset($_REQUEST["tur"]) && !empty($_REQUEST["tur"]) && !is_null($_REQUEST["tur"]) && is_numeric($_REQUEST["tur"]) ) { $email = ''; if( isset($_REQUEST["email"]) && !empty($_REQUEST["email"]) && !is_null($_REQUEST["email"]) && is_numeric($_REQUEST["email"]) ) { $email = $_REQUEST["email"]; } $resultado = sendTurnosEmailTelemedicina($_REQUEST["tur"],$email); if( $resultado ) { //Listar turnos pendientes del profesional $resultInfo['code'] = 0; $resultInfo['data'] = array( "resultado" => 0 ); } else { $resultInfo['code'] = 0; $resultInfo['errorDes'] = "Se produjo un error al enviar el email"; } } else { $resultInfo['code'] = 1; $resultInfo['errorDes'] = "Parametros faltantes"; } } function sendTurnosEmailTelemedicina($turnoNro,$email='') { // closeTurnosEmailTelemedicinaProgress(); // if(!isTurnosEmailTelemedicinaInProgress()) // { try { //openTurnosEmailTelemedicinaProgress(); $sql = " SELECT tur_numero AS tnumero ,tur_token AS token ,cli_email AS cli_email ,cli_nombre AS cli_nombre ,CONCAT(CONVERT(VARCHAR(10),tur_fecha,103),' ',STUFF(RIGHT('0000' + CAST(tur_hora AS VARCHAR(4)), 4), 3, 0, ':')) as fecha FROM turnos AS t INNER JOIN clientes AS c ON c.cli_codigo = t.cli_codigo WHERE tur_numero = '".addslashes($turnoNro)."'"; //print_r($sql);print_r("\n");die; $rs = $GLOBALS['dbSQL']->Query($sql); if ( $rs ) { $clientes = $GLOBALS['dbSQL']->getAll(); print_r($clientes);print_r("\n");die; $lstTurnos = array(); for($i=0;$i$customer = getTurnoTMClienteEmail($_REQUEST["tnro"]); //$customer = array(); //$x = array_push($customer,array("cli_nombre"=>$clientes[$i]['cli_nombre'],"cli_email"=>$clientes[$i]['cli_email'])); $customer = array("cli_nombre"=>$clientes[$i]['cli_nombre'],"cli_email"=>$emailFinal); //print_r($customer);print_r("\n"); //print_r($params);print_r("\n"); $resultinfoemail=false; $resultado = sendVideoSesionCienteArcos($customer,$params,$resultinfoemail); //print_r($resultinfoemail);print_r("\n"); if(!$resultado) { //savelogEmailError $resultInfo['code'] = 2; //$resultInfo['errorDes'] = "Se produjo un error al limpiar la clave y enviar por email: [".$e->getMessage()."]"; } //$resultado = true; $r = updateTurnosEmailTelemedicinaState($clientes[$i]['tnumero'],($resultado?1:0),false); } } else { //print_r("email invalido 2[".$clientes[$i]['cli_email']."]");print_r("\n"); $r = updateTurnosEmailTelemedicinaState($clientes[$i]['tnumero'],1,false); } } } //closeTurnosEmailTelemedicinaProgress(); return true; } catch (Exception $e) { //closeTurnosEmailTelemedicinaProgress(); return false; } // } // else // { // //print_r("Envio en progreso. Se cancela hilo de ejecucion"); // return false; // } } ?>