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

Anvisa diz que deve responder até 6ª sobre novo pedido de uso da CoronaVac

Dose da CoronaVac, desenvolvida pelo Instituto Butantan, de São Paulo - Arthur Stabile/UOL
Dose da CoronaVac, desenvolvida pelo Instituto Butantan, de São Paulo Imagem: Arthur Stabile/UOL

Do UOL, em São Paulo

19/01/2021 15h51Atualizada em 19/01/2021 17h23

O gerente-geral de medicamentos da Anvisa (Agência Nacional de Vigilância Sanitária), Gustavo Mendes, afirmou que o órgão está "trabalhando rápido" e pretende responder até sexta-feira o pedido de uso emergencial feito ontem pelo Instituto Butantan para uso dos 4,8 milhões de doses da CoronaVac produzidas no Brasil.

"Essa análise não será tão extensa quanto foi para os outros lotes, porque muito do que vai ser analisado agora já foi analisado para aqueles lotes que vieram da China. A ideia agora é focar só naquelas diferenças relacionadas à fabricação aqui no Brasil, para a gente ver se tem algum equipamento diferente, algum aspecto de qualidade que possa ser afetado. Estamos trabalhando rápido e para responder até sexta-feira", disse Mendes em entrevista à GloboNews.

Entre outros pontos, a nova análise levará em conta os procedimentos de transporte e envase das vacinas, bem como a temperatura de armazenamento.

Mendes detalhou que nas primeiras 24 horas após o pedido, a Anvisa fez uma triagem para avaliar se todos os documentos e informações necessárias estavam presentes. "A gente ou por esse procedimento de triagem, e agora a gente concluiu isso. Todos os documentos estavam presentes e agora a gente está partindo para a análise", afirmou.

Em nota, a Anvisa informou que o processo foi submetido pelo Butantan com 206 páginas e complementado logo depois com mais 727 páginas, totalizando 933 páginas. A documentação envolve informações e dados que serão analisados pelas três áreas técnicas da Anvisa responsáveis pelo registro, boas práticas de fabricação e monitoramento de medicamentos.

De acordo com Mendes, caso a Anvisa aprove o uso emergencial, o Instituto Butantan não precisará fazer novos pedidos para aplicar a vacina desde que a produção siga as informações do atual lote em avaliação.

"O que nós aprovamos são as condições técnicas e operacionais de fabricação daquele lote. Se o Instituto Butantan está falando que vai pedir autorização, se ele quiser estender isso e mantiver as mesmas características, os mesmos insumos e o mesmo material, basta comunicar. Não tem nenhuma diferença", explicou.

No domingo, a Anvisa aprovou os pedidos de uso emergencial no Brasil das vacinas CoronaVac, produzida pelo Instituto Butantan com o laboratório chinês Sinovac, e AstraZeneca, desenvolvida pela Universidade de Oxford com a Fiocruz. Com a decisão, a distribuição das doses da Coronavac aos estados brasileiros começou já na segunda-feira (18), assim como a vacinação em algumas cidades.

Com relação à vacina da AstraZeneca, o Brasil ainda espera uma resposta do governo da Índia para o envio de 2 milhões de doses do imunizante. Hoje, o Ministério das Relações Exteriores do país asiático confirmou que amanhã vai enviar doses da vacina para seis países e ainda espera análise para realizar o envio a outros três. O Brasil não consta em nenhuma das duas listas.