;(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 entrega 700 mil doses da CoronaVac e recebe insumo para mais 5 milhões

Lucas Borges Teixeira

Do UOL, em São Paulo

19/04/2021 06h31Atualizada em 19/04/2021 15h05

O estado de São Paulo enviou hoje mais um lote de 700 mil doses da CoronaVac ao Ministério da Saúde. Ao todo, 41,4 milhões de doses foram readas ao PNI (Programa Nacional de Imunizações).

Este é o último lote a ser remetido neste mês pelo Instituto Butantan. Mais cedo, o voo com um novo lote de 3 mil litros de IFA (Insumo Farmacêutico Ativo) chegou ao Aeroporto de Guarulhos (SP) vindo da China e deverá garantir a próxima remessa em maio.

Segundo o Butantan, a quantidade é suficiente para produzir mais 5 milhões de doses da CoronaVac. Essas doses deverão fechar com atraso o primeiro ciclo de envio de 46 milhões de doses ao PNI previsto para abril.

"Com essas 5 milhões de doses, que começam a ser processadas imediatamente, chegamos a 46,4 milhões de doses", afirmou o governador João Doria (PSDB), em coletiva no Butantan.

Segundo Doria, as 400 mil doses a mais já deverão integrar o novo contrato do Butantan com a Saúde, que prevê a entrega de mais 54 milhões de doses até 30 de setembro.

Este é o terceiro carregamento da matéria-prima fornecida pela farmacêutica chinesa Sinovac para a produção do imunizante e estava previsto para chegar há cerca de duas semanas. Incialmente, também estava prevista a chegada de 6 mil litros, mas, segundo o instituto, foi dividida por uma questão burocrática e a segunda metade ainda "aguarda autorização de liberação".

"Isso foi por decisão do próprio sistema de exportação da China. Estamos trabalhando para vencer essa burocracia, mas existe uma demanda muito grande de vacinas", afirmou Dimas Covas, diretor do Instituto Butantan.

O ciclo de produção é de cerca de 20 dias, mas Covas prometeu a retomada das entregas para o dia 3 de maio.

Com a nova remessa ao PNI, o Butantan chega a 41,4 milhões de doses das 46 milhões de doses previstas até 30 de abril. O instituto já havia informado, com o atraso, que a entrega completa deverá atrasar para a primeira quinzena de maio.

Voo da companhia aérea Turkish Airlines pousa no Aeroporto de Guarulhos com 3 mil litros de insumos para a produção de 5 milhões de doses da CoronaVac - Reprodução/CNN - Reprodução/CNN
Voo da companhia aérea Turkish Airlines pousa no Aeroporto de Guarulhos com 3 mil litros de insumos para a produção de 5 milhões de doses da CoronaVac
Imagem: Reprodução/CNN