;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Esse conteúdo é antigo

SP comemora 35 mil vacinados em um dia e promete mais postos de drive-thru

Grande fila de carros se formou ontem no posto de vacinação drive-thru do Estádio do Pacaembu - Ronaldo Silva/Futura Press/Estadão Conteúdo
Grande fila de carros se formou ontem no posto de vacinação drive-thru do Estádio do Pacaembu Imagem: Ronaldo Silva/Futura Press/Estadão Conteúdo

Colaboração para o UOL

28/02/2021 11h29

O Secretário da Saúde de São Paulo, Jean Gorinchteyn, comemorou a grande quantidade de vacinados contra covid-19 no dia de ontem. Idosos de 80 a 84 anos começaram a ser imunizados, mas houve problemas, principalmente por causa de longas filas. Então o governo do estado prometeu que vai ampliar os postos de vacinação drive-thru, em que as pessoas são imunizadas dentro do carros.

"Amanhã anunciaremos a abertura de novos locais, para que pessoas possam levar os idosos de forma segura e rápida, não como vimos ontem. O sucesso foi tão grande que conseguimos vacinar, só ontem, quase 35 mil pessoas, sendo 9.300 mil no drive-thru", afirmou Jean em entrevista à Globonews.

Para acelerar a vacinação e diminuir filas, São Paulo ou a vacinar neste domingo, o que não era previsto. Também já foi aberto um posto a mais de vacinação drive-thru. Jean foi perguntado se é possível fazer mais alguma coisa para aumentar o ritmo da vacinação. Mas reforçou que precisa receber mais imunizantes.

"Precisamos de mais vacinas, que garantirão celeridade do processo de vacinação. Temos toda estrutura no Brasil. Mas só com mais vacinas conseguiremos ter velocidade para proteger as pessoas", afirmou o Secretário.

Ele também comentou sobre a liminar concedida pelo STF (Supremo Tribunal Federal) que obriga o governo federal a custear mais leitos em São Paulo. Jean mostrou otimismo e disse que esse pagamento deve acontecer até o final da semana.

"São Paulo deixou de receber do Ministério da Saúde R$ 1,4 bilhões nesse custeio relacionado a leitos de UTI. São valores de R$ 210 milhões todos meses. Temos um limite. Precisamos de recursos para continuar fomentando e promovendo saúde. Queremos que a lei se faça prevalecer. Temos certeza que nos próximos 5 dias teremos posicionamento favorável e que esses recursos vão aportar no caixa do estado", concluiu Jean.