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

Vacina contra covid: Butantan entrega novos dados da ButanVac à Anvisa

A caixa da vacina Butanvac, desenvolvida pelo Instituto Butantan - Divulgação/Governo de São Paulo
A caixa da vacina Butanvac, desenvolvida pelo Instituto Butantan Imagem: Divulgação/Governo de São Paulo

Leonardo Martins

Do UOL, em São Paulo

24/05/2021 15h15Atualizada em 24/05/2021 17h04

O Instituto Butantan enviou na manhã de hoje à Anvisa (Agência Nacional de Vigilância Sanitária) a última remessa de informações sobre o início dos testes em humanos da vacina contra a covid-19 ButanVac, segundo apurou o UOL. A ButanVac está sendo desenvolvida pelo laboratório do governo paulista em parceria com um consórcio internacional e já começou a ser produzida no Butantan.

Em nota à reportagem, a Anvisa confirmou o recebimento do protocolo clínico — que descreve como os testes em humanos irá ocorrer — da Butanvac, mas ressaltou que "estão pendentes os dados referentes a parte de qualidade da vacina". O Butantan afirma que esses dados serão entregues até o final desta semana.

O instituto entrou com pedido de início dos testes em março. Mas, depois de idas e vindas de documentações e trocas de informações, o laboratório enviou o último pedido requisitado pela agência e ainda aguarda a autorização para dar início às testagens de fase 1.

Mesmo sem o aval, o laboratório já tem mais de 6 milhões de doses prontas da ButanVac, que é obtida por meio de ovos de galinha. A ideia do governo estadual é finalizar a produção de 18 milhões de doses até 30 de julho.

O suposto atraso na liberação da Anvisa foi motivo de cobrança pública do governador de São Paulo, João Doria (PSDB), que pediu "senso de urgência" ao órgão federal.

Nas coletivas do governo estadual, Doria e sua equipe têm reclamado constantemente da demora do governo em adquirir vacinas e criticado a atuação do Ministério da Saúde. O governador paulista é apontado como concorrente do presidente Jair Bolsonaro (sem partido) nas eleições de 2022. Em 2018, entretanto, os dois se apoiaram.

A Butanvac é alvo de grandes expectativas dos cientistas paulistas porque, caso aprovada pela Anvisa em última etapa, será fabricada em larga escala no Brasil, o que aumentaria o o às vacinas contra a covid-19 e faria com que o Butantan não dependesse mais de insumos da China.

Apesar de o governo de São Paulo anunciar publicamente que a vacina poderá ser aplicada em setembro deste ano, especialistas acreditam que não é possível trabalhar com um prazo.