var onloadCallback = function () { grecaptcha.execute(); }; function setResponse(response) { var elementExists = document.getElementById("captcha-response"); if (elementExists) { document.getElementById('captcha-response').value = response; } } $(function () { $.datepicker.regional['es'] = { closeText: 'Cerrar', prevText: '< Ant', nextText: 'Sig >', currentText: 'Hoy', monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'], monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'], dayNames: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mié', 'Juv', 'Vie', 'Sáb'], dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'], weekHeader: 'Sm', dateFormat: 'dd/mm/yy', firstDay: 1, isRTL: false, showMonthAfterYear: false, yearSuffix: '' }; $.datepicker.setDefaults($.datepicker.regional['es']); $("#fechanacimiento").datepicker( { dateFormat: 'dd/mm/yy', changeMonth: true, changeYear: true, yearRange: "-120:+0", onClose: (dateText, element) => { const span = document.querySelector('#' + element.id + ' + .label_text'); if (!span) return; const { placeholder, alternative } = span.dataset; span.innerHTML = !dateText ? placeholder : alternative; } } ); }); $('#dropdownMenuLink').click(function () { if ($('#dropdownMenu').css('display') == 'none') $('#dropdownMenu').css('display', 'block'); else $('#dropdownMenu').css('display', 'none'); }); window.vld_srv = ''; window.vac_typ = ''; window.veh_typ = ''; window.dbsura = null; window.indexedDB = self.indexedDB || window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; function loadDatabase() { if (window.indexedDB) { return new Promise((resolve, reject) => { let request = window.indexedDB.open('dbsura', 1); request.onsuccess = function (event) { window.dbsura = event.target.result; resolve(event.target.result); } request.onerror = function (event) { reject(request.error); } request.onupgradeneeded = function (event) { window.dbsura = event.target.result; let store = window.dbsura.createObjectStore('client', { keyPath: 'id' }); } }) } } class AccessDatabase { constructor(entity) { this.entity = entity; this.transaction = window.dbsura.transaction(entity, 'readwrite'); this.objectStore = this.transaction.objectStore(entity); } add(params) { return new Promise((resolve, reject) => { const request = this.objectStore.add(params); request.onsuccess = (event) => { resolve(event.target.result); } request.onerror = (event) => { reject(request.error); } }) } get(params) { return new Promise((resolve, reject) => { const request = this.objectStore.get(params); request.onsuccess = (event) => { resolve(event.target.result); } request.onerror = () => { reject(request.error); } }) } put(params) { return new Promise((resolve, reject) => { const request = this.objectStore.put(params); request.onsuccess = (event) => { resolve(event.target.result); } request.onerror = () => { reject(request.error); } }) } delete(params) { return new Promise((resolve, reject) => { const request = this.objectStore.delete(params); request.onsuccess = (event) => { resolve(event.target.result); } request.onerror = () => { reject(request.error); } }) } } $(document).ready(function () { let storage = 'cliente'; //ms * seg * 30 min let expiry = 1000 * 60 * 30; const validacionDocumento = document.getElementById('confirmar_identificacion'); validacionDocumento.oncopy = (e) => e.preventDefault(); validacionDocumento.onpaste = (e) => e.preventDefault(); $('#fpv_form').change(function () { selected_vac_type = 'NO' selected_veh_type = ''; const urlBase = 'https://apisuratest.segurossura.com' window.cnt_srv = urlBase + '/salud/vacunacion/contador/citas/v1'; window.enc_sin = urlBase + '/salud/vacunacion/informacion/sintomas/v1'; window.vld_srv = urlBase + '/salud/vacunacion/validacion/v3'; window.vac_typ = 'sin'; window.veh_typ = ''; selected_veh_type = '' if (document.readyState === 'complete') { const info = { vac_veh: selected_vac_type, tipo_veh: selected_veh_type, tipo_identificacion: $('#tipo_identificacion').val(), numero_identificacion: $('#numero_identificacion').val(), fechaNacimiento: $('#fechanacimiento').val() }; setStorage(storage, info, expiry); } }); const grupos = [ { nombre: "positivoCovid", texto: '¿Actualmente eres positivo confirmado para COVID-19 o lo has sido en los ' + 'últimos 90 días?' }, { nombre: "presentaSintomas", texto: 'Has presentado uno o más de los siguientes síntomas en los últimos 14 días: ' + 'dolor de garganta, malestar general o sensación de cansancio, dolor de cabeza, ' + 'dolor muscular, dificultad para respirar o tos, diarrea, salida de líquido por la nariz ' + '(rinorrea), pérdida del sentido del gusto o del olfato, fiebre (temperatura > 37.5 ºc)' }, { nombre: "contactoConPositivos", texto: '¿Has tenido contacto con personas positivas para COVID-19 a menos de 2 metros de ' + 'distancia y sin el uso adecuado de elementos de protección personal en los ' + 'últimos 14 días?' }, { nombre: "esperaResultadosPruebaCovid", texto: '¿Estás a la espera de prueba confirmatoria para descartar la enfermedad de ' + 'COVID-19? (Si la prueba fue realizada como tamizaje, señalar No)' }, { nombre: "presentaReaccionesAlergicas", texto: '¿Has presentado reacciones alérgicas graves inmediatamente después ' + 'de la administración de vacunas o medicamentos inyectables? (Se requiere una ' + 'aguja para su administración)' } ]; getStorage(storage).then(dataClient => { if (dataClient && Object.keys(dataClient).length > 0) { $('#tipo_identificacion').val(dataClient.tipo_identificacion); $('#numero_identificacion').val(dataClient.numero_identificacion); $('#fechanacimiento').val(dataClient.fechaNacimiento); } }); async function getStorage(key) { let dbStorage = {}; if (!window.dbsura) window.dbsura = await loadDatabase(); if (window.indexedDB && window.dbsura) { const db = new AccessDatabase('client'); dbStorage = await db.get(1); } const itemStr = localStorage.getItem(key); let localStrData = JSON.parse(itemStr); if (!dbStorage && !localStrData) return; const now = new Date(); if (now.getTime() > dbStorage.expiry) { removeStorage(storage); return; } if (dbStorage) { return { vac_veh: dbStorage.vac_veh || localStrData.vac_veh, tipo_veh: dbStorage.tipo_veh || localStrData.tipo_veh, tipo_identificacion: dbStorage.tipo_identificacion || localStrData.tipo_identificacion, numero_identificacion: dbStorage.numero_identificacion || localStrData.numero_identificacion, fechaNacimiento: dbStorage.fechaNacimiento || localStrData.fechaNacimiento } } return localStrData; } async function setStorage(key, value, time) { const now = new Date(); time = parseInt(now.getTime() + time); value = { ...value, expiry: time }; if (window.dbsura) { const db = new AccessDatabase('client'); const clientData = await db.get(1); if (!clientData) { db.add({ ...value, id: 1 }); } else { db.put({ ...value, id: 1 }); } } localStorage.setItem(key, JSON.stringify(value)); } function removeStorage(key) { if (localStorage.getItem(key)) { localStorage.removeItem(key); } if (window.dbsura) { const db = new AccessDatabase('client'); db.get(1).then(dataClient => { if (dataClient) { db.delete(1); } }); } } async function refreshCaptcha() { await grecaptcha.reset(); await grecaptcha.execute(); } function generarPregunta({ texto, nombre }, color) { return ( '
' + '
' + '

' + texto + '

' + '
' + '
' + '
' + '' + '' + '
' + '
' + '' + '' + '
' + '
' + '
' ); } async function generarEncuesta(token) { let respuestas = {}; const resultado = await Swal.fire({ icon: "info", html: '
' + '

Antes de continuar diligencia esta breve encuesta de síntomas para la vacunación contra el COVID-19:

' + (grupos.map((pregunta, index) => generarPregunta(pregunta, index % 2)).join(' ')) + '
', showCancelButton: true, cancelButtonText: "Atrás", confirmButtonText: "Enviar", padding: '0', customClass: 'custom-swal rounded-swal', preConfirm: () => { Swal.resetValidationMessage(); if (grupos.some(pregunta => !$('input[name=' + pregunta.nombre + ']:checked').val())) { Swal.showValidationMessage( "Estimado usuario, es necesario responder todas las preguntas" ); } respuestas = grupos.map( pregunta => $('input[name=' + pregunta.nombre + ']:checked').val() === "si" ); } }); if (resultado.isConfirmed) { const info = { tipoDocumento: $("#tipo_identificacion").val(), numeroDocumento: $("#numero_identificacion").val(), positivoCovid: respuestas[0], presentaSintomas: respuestas[1], contactoConPositivos: respuestas[2], esperaResultadosPruebaCovid: respuestas[3], estadoEmbarazo: false, presentaReaccionesAlergicas: respuestas[4] }; const respuesta = await axios.post( window.enc_sin, info, { headers: { 'Content-Type': 'application/json', }, withCredentials: true, crossDomain: true } ); let { data } = respuesta; if (respuesta.status !== 200) { Swal.fire({ title: 'Estimado usuario', html: 'Ha ocurrido un error. La página se va a refrescar y podrá intentar nuevamente.', icon: 'info', confirmButtonText: 'Aceptar' }).then((result) => { location.reload(); }); } else if (!data.habilitado) { Swal.fire({ icon: "info", title: 'Estimado usuario', text: 'Actualmente no eres apto para la vacuna. Si eres paciente COVID positivo, ' + 'debes esperar 90 días después del diagnóstico para vacunarte.' + '\n' + 'Si tienes inquietudes comunícate con nuestra línea de atención 018000 519 519, opción 4.', confirmButtonText: 'Aceptar', preConfirm: () => { removeStorage(storage); } }).then((result) => { location.reload(); }); } else { $.ajaxSetup({ crossDomain: true, headers: { 'Header-Captcha': $("#g-recaptcha-response").val(), 'Content-Type': 'application/json', } }); refreshCaptcha() .then(() => { removeStorage(storage); Swal.fire({ title: 'Consultando...', html: '
', icon: 'info', showCancelButton: false, showConfirmButton: false }); $('input[name="tokenJwt"]').val(token); $("#form_ag").submit(); }); } } else { return; } } async function iniciarContador(objContador) { try { const requestCont = await axios.post( window.cnt_srv, objContador, { headers: { 'Content-Type': 'application/json', }, withCredentials: true, crossDomain: true } ); let msg = ''; if (requestCont.status == 200) { const { data } = requestCont; if (data.citasDisponibles > 0) { Swal.fire({ title: 'Estimado usuario', html: 'En este momento tenemos la siguiente disponibilidad:' + '
' + '
' + '
' + '
' + '

' + data.citasDisponibles + '

' + 'Citas disponibles' + '
' + '
' + '

' + data.citasTomadas + '

' + 'Citas ya agendadas' + '
' + '
' + '
' + 'En un momento serás redirigido al Sistema de Asignación de citas.', icon: 'success', customClass: 'rounded-swal', showCancelButton: false, showConfirmButton: false }); return true; } else { msg = 'En este momento tenemos la siguiente disponibilidad:' + '

' + '
' + '
' + '

' + data.citasDisponibles + '

' + 'Citas disponibles' + '
' + '
' + '

' + data.citasTomadas + '

' + 'Citas ya agendadas' + '
' + '
' + '
' + 'En la opción de agendamiento seleccionada no contamos con citas disponibles. ' + 'Presiona "Regresar" para elegir otra opción de agendamiento'; } } else { msg = 'En este momento tenemos la siguiente disponibilidad:' + '
' + '
' + '
' + '
' + '

0

' + 'Citas disponibles' + '
' + '
' + '

0

' + 'Citas ya agendadas' + '
' + '
' + '
' + 'En la opción de agendamiento seleccionada no contamos con citas disponibles. ' + 'Presiona "Regresar" para elegir otra opción de agendamiento'; } Swal.fire({ title: 'Estimado usuario', html: msg, icon: 'success', showCancelButton: true, showConfirmButton: false, cancelButtonColor: '#d33', cancelButtonText: 'Regresar' }).then((result) => { if (result.isConfirmed) { } else { location.reload(); } }); } catch (error) { console.error('%c[ERROR] Bad request CC', 'color:red;font-size:1rem'); Swal.fire({ title: 'Estimado usuario', html: 'Ha ocurrido un error. La página se va a refrescar y podrá intentar nuevamente.', icon: 'info', confirmButtonText: 'Aceptar' }).then((result) => { location.reload(); }); } } function redireccionarDatosDemo(data) { let msg; switch (data.razonDatosDemo) { case 'informacionincompleta': case 'actualizarinformacion': case 'sininformacion': msg = '

Antes de solicitar tu cita de vacunación contra el COVID-19 debes actualizar tus datos. ' + 'Te los pediremos una sola vez y éstos serán verificados en la sede.

' + '

Ingresa para completarlos y cuando finalices regresa de nuevo para agendar tu cita.

' break; default: Swal.fire({ title: 'Estimado usuario', html: 'La información no se ha cargado correctamente (redireccionarDatosDemo). Inténtalo de nuevo.', icon: 'info', confirmButtonText: 'Aceptar' }).then((result) => { location.reload(); }); return; } Swal.fire({ title: 'Estimado usuario', html: msg, icon: 'info', confirmButtonText: 'Actualizar datos', }).then((result) => { $('input[name=tipo_identificacionUpd]').val(data.tipoIdentificacion); $('input[name=numero_identificacionUpd]').val(data.numeroIdentificacion); $('#planUpd').val("PARTICULAR"); $('#autoAgendamientoUpd').val(true); $('#tipoAgendamientoUpd').val(data.tipoAgendamiento); $('#codigoIPSVacunadoraUps').val(data.codigoSucursal); $('input[name=oferta_serviciosUpd]').val(data.veh_typ); $("#form_upd").submit(); }); } $("#fpv_form").submit(async function (event) { event.preventDefault(); if (isDate(document.getElementById('fechanacimiento').value) == false) { Swal.fire({ title: 'Estimado usuario', text: 'Fecha de nacimiento incorrecta', icon: 'error', }); return false; } if ($("#confirmar_identificacion").val() !== $("#numero_identificacion").val()) { Swal.fire({ title: 'Estimado usuario', text: "El campo Número de identificación y confirmar número de identificación no coinciden. " + "Por favor verifica la información.", icon: "error", confirmButtonText: 'Aceptar' }); return false; } Swal.fire({ title: 'Consultando', html: 'Recuerda que este beneficio aplica para las ciudades de Bogotá, Cali y Medellín.

', icon: 'info', showCancelButton: false, showConfirmButton: false }); var x = $("#fpv_form").serializeArray(); $.each(x, function (i, field) { if (field.name == 'g-recaptcha-response') { $.ajaxSetup({ crossDomain: true, headers: { 'Header-Captcha': field.value, 'Content-Type': 'application/json', }, xhrFields: { withCredentials: true } }); } }); let tipoAgendamiento = $("input[name='tipo_dos']:checked").val(); const { strDate } = getDate($('#fechanacimiento').val()); let bodyValidation = { tipoDocumento: $("#tipo_identificacion").val(), numeroDocumento: $("#numero_identificacion").val(), fechaNacimiento: strDate }; bodyValidation = { ...bodyValidation, tipoAgendamiento: $("input[name='tipo_dos']:checked").val() }; var posting = $.post( window.vld_srv, JSON.stringify(bodyValidation) ); posting.done(function (data, textStatus, XMLHttpRequest) { // alert(data.habilitado); if (!data.habilitado) { // alert('entra'); if (data.razonDatosDemo == null && data.razon == null) { Swal.fire({ title: 'Estimado usuario', html: 'La información no se ha cargado correctamente (razonDatosDemo). Inténtalo de nuevo.', icon: 'info', confirmButtonText: 'Aceptar', preConfirm: () => { removeStorage(storage); } }).then((result) => { location.reload(); }); return; } let msg = ''; switch (data.razon) { case 'etapa': msg = "

Actualmente no tienes asignación en las etapas vigentes para la vacunación contra el COVID-19 o el Ministerio aún no le ha entregado a EPS Sura el reporte de tu priorización.

Si estás priorizado en la plataforma Mi Vacuna, debes esperar que el Ministerio nos informe de tu priorización y consultar más adelante.

Si no estás priorizado en Mi Vacuna y consideras que debes estarlo, ingresa haciendo clic aquí y postúlate.

"; break; case 'nopriorizado': msg = "

Actualmente no te encuentras priorizado en estas etapas. Una de las razones puede ser:

Si no cumples con ninguna de estas condiciones, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; case 'edad': msg = "

En este momento no es posible agendar tu cita. Esto puede ser por variaciones en la disponibilidad de vacunas entregadas por el Gobierno Nacional o porque no cumples con los criterios definidos para la etapa actual. Te invitamos a intentarlo nuevamente más adelante.

"; break; case 'datosincorrectos': msg = "

Verifica tus datos e intenta nuevamente. Si tienes dudas, por favor comunícate con nuestra línea de atención 018000 519 519, opción 4.

"; break; case 'codigosucursal': msg = "

No es posible agendar tu cita por este medio. Por favor comunícate con nuestra línea de atención 018000 519 519, opción 4.

"; break; case 'excluido': msg = "

Actualmente no te encuentras priorizado en estas etapas. Una de las razones puede ser:

Si no cumples con ninguna de estas condiciones, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; case 'agendadodosis1': msg = "

Actualmente ya tienes una cita de vacunación contra el COVID-19. Por favor verifica.

Consulta aquí la dirección de tu sede vacunadora.

Recuerda asistir a tu cita mínimo con 10 minutos de anticipación.

Si deseas reprogramar tu cita, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; case 'agendadodosis2': msg = "

Actualmente ya tienes una cita de vacunación contra el COVID-19. Por favor verifica.

Consulta aquí la dirección de tu sede vacunadora.

Recuerda asistir a tu cita mínimo con 10 minutos de anticipación.

Si deseas reprogramar tu cita, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; case 'agendado': msg = "

Actualmente ya tienes una cita de vacunación contra el COVID-19. Por favor verifica.

Consulta aquí la dirección de tu sede vacunadora.

Recuerda asistir a tu cita mínimo con 10 minutos de anticipación.

Si deseas reprogramar tu cita, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; case 'vacunadodosis1': msg = "

No es posible agendar tu cita debido a que ya fuiste vacunado contra el COVID-19.

Consulta aquí la dirección de tu sede vacunadora.

Si aún tienes pendiente tu segunda dosis, no olvides llevar a tu cita el carné de vacunación que te entregaron en la sede al aplicarte la primera dosis.

Si tienes dudas, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; case 'vacunado': msg = "

No es posible agendar tu cita debido a que ya fuiste vacunado contra el COVID-19.

Consulta aquí la dirección de tu sede vacunadora.

Si aún tienes pendiente tu segunda dosis, no olvides llevar a tu cita el carné de vacunación que te entregaron en la sede al aplicarte la primera dosis.

Si tienes dudas, comunícate con nuestra línea de atención 01 8000 519 519, opción 4.

"; break; default: msg = ''; break; } if (msg.length > 0) { Swal.fire({ title: 'Estimado usuario', html: msg, icon: 'error', confirmButtonText: 'Aceptar' }).then((result) => { removeStorage(storage); location.reload(); }); return; } } let infoDatosDemo = { razonDatosDemo: data.razonDatosDemo, tipoIdentificacion: $("#tipo_identificacion").val(), numeroIdentificacion: $("#numero_identificacion").val(), plan: "PARTICULAR", tipoAgendamiento, veh_typ: window.veh_typ }; // let objContador = { // numeroDocumento: $("#numero_identificacion").val(), // tipoDocumento: $("#tipo_identificacion").val(), // fechaNacimiento: strDate, // tipoAgendamiento: $("input[name='tipo_dos']:checked").val() // }; // if (data.plan == "PARTICULAR" || data.codigoSucursal == null) { // objContador = { // ...objContador, // codigoMunicipio: data.municipio // }; // } else { // objContador = { // ...objContador, // codigoIPSVacunadora: data.codigoSucursal // }; // } // if (objContador.codigoIPSVacunadora || objContador.codigoMunicipio) { // iniciarContador(objContador) // .then(resultCont => { // if (resultCont) { // let delayInMilliseconds = 5000; // setTimeout(() => { // if (data.habilitadoDatosDemo != null && !data.habilitadoDatosDemo) { // return redireccionarDatosDemo(infoDatosDemo); // }; // generarEncuesta(XMLHttpRequest.getResponseHeader('token')); // }, delayInMilliseconds); // } // }); // } else { // return redireccionarDatosDemo(infoDatosDemo); // } //if (resultCont) { let delayInMilliseconds = 5000; setTimeout(() => { if (data.habilitadoDatosDemo != null && !data.habilitadoDatosDemo) { return redireccionarDatosDemo(infoDatosDemo); }; generarEncuesta(XMLHttpRequest.getResponseHeader('token')); }, delayInMilliseconds); //} //redireccionarDatosDemo(infoDatosDemo) }); posting.fail(function () { Swal.fire({ title: 'Estimado usuario', html: 'La información no se ha cargado correctamente. Inténtalo de nuevo.', icon: 'info', confirmButtonText: 'Aceptar' }).then((result) => { location.reload(); }); }) }); }); function isDate(str) { const { date, year, month, day } = getDate(str); const currentYear = new Date().getFullYear(); const currentMonth = (new Date().getMonth()) + 1; const currentDay = new Date().getDay(); if( ((currentYear - 150) > year) || (year > currentYear) || (currentYear == year && currentMonth > month) || (currentYear == year && currentMonth == month && currentDay >= day) ) return false; return month === (date.getMonth() + 1) && day === date.getDate() && year === date.getFullYear(); } function getDate(str){ const parms = str.split(/[\/]/); const yyyy = parseInt(parms[2], 10); const mm = parseInt(parms[1], 10); const dd = parseInt(parms[0], 10); const date = new Date(yyyy, mm - 1, dd, 0, 0, 0, 0); return { date, strDate: (dd < 10 ? '0' + dd : dd) + '/' + (mm < 10 ? '0' + mm : mm) + '/' + yyyy, year: yyyy, month: mm, day: dd } }