;(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

Butantan inicia 2º fase de vacinação em massa em Serrana contra covid-19

Voluntários fazem fila em um dos postos de vacinação participantes do estudo do Butantan em Serrana (SP); segunda fase começa hoje - Divulgação/Instituto Butantan
Voluntários fazem fila em um dos postos de vacinação participantes do estudo do Butantan em Serrana (SP); segunda fase começa hoje Imagem: Divulgação/Instituto Butantan

Do UOL, em São Paulo

17/03/2021 15h38

O Instituto Butantan iniciou hoje a segunda fase da vacinação em massa em Serrana, no interior de São Paulo, para um estudo sobre a imunização contra a covid-19.

O cronograma seguirá o processo da primeira fase. Os moradores foram separados em grupos e a vacinação começará pelos moradores da região verde e ando para as regiões amarela, cinza e azul.

A cidade foi escolhida para participar do estudo clínico do Butantan para medir a eficácia da CoronaVac e também a chamada imunidade de rebanho. Toda a população adulta está recebendo a vacina ao mesmo tempo. De acordo com o Butantan, um dos fatores que pesou na escolha da cidade foi a proximidade com Ribeirão Preto, onde trabalham diariamente cerca de um quarto dos moradores de Serrana.

A ação separou a cidade por grupos conhecidos como "clusters" e identificados pelas cores verde, amarelo, cinza e azul. Cada semana um grupo recebia a vacina. A aplicação da segunda dose será seguida pela mesma ordem de cores: verde, a partir de hoje; amarelo, no dia 24; cinza, a partir do dia 31 de março, e azul, em 7 de abril.

Na primeira etapa, encerrada no dia 14 de março, 6.763 pessoas do grupo verde receberam a primeira dose da vacina do Butantan. Na semana do grupo amarelo, 6.480 pessoas foram imunizadas. Entre os inscritos no grupo cinza, 6.049 pessoas receberam o imunizante, e no azul, 8.329.

A vacina é aplicada somente em moradores voluntários, com intervalo de quatro semanas entre as duas doses. Podem participar da pesquisa clínica todos os moradores acima de 18 anos de idade, com exceção de gestantes, lactantes e pessoas com doenças graves ou descontroladas.

Segundo o Instituto Butantan, as primeiras conclusões da pesquisa devem começar a ser divulgadas cerca de um mês após o encerramento da aplicação da segunda dose, ou seja, três meses após o início do estudo clínico. Como a vacinação em massa começou em 17 de fevereiro, os resultados devem sair em meados de maio.