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

Chico Alves

Pazuello e Bolsonaro prestes a desperdiçar 6,8 milhões de testes de covid

Jair Bolsonaro e o general Eduardo Pazuello - Reprodução/Youtube
Jair Bolsonaro e o general Eduardo Pazuello Imagem: Reprodução/Youtube

Colunista do UOL

22/11/2020 13h00

Depois de Luiz Henrique Mandetta e Nelson Teich, o presidente Jair Bolsonaro resolveu colocar à frente do Ministério da Saúde um general. Além da subserviência, atributo desejado por Bolsonaro, a única qualidade de Eduardo Pazuello para ocupar a pasta seria o seu conhecimento de logística, adquirido no Exército.

Desde então, o Brasil assiste perplexo a um festival de barbaridades. Tais como a indicação de medicamentos não comprovados cientificamente contra a covid-19, a tentativa de escamotear as estatísticas da pandemia, a ausência de engajamento na campanha pelo isolamento social, o vai-e-vem do acordo do ministério sobre a CoronaVac e coisas do tipo.

Enquanto isso, o coronavírus avançou e chegamos aos 160 mil mortos pela doença, com 6 milhões de casos.

Uma dessas barbeiragens foi a falta de testes. Entre os países mais afetados na pandemia, o Brasil é um dos que menos testam seus cidadãos, dificultando o diagnóstico e o planejamento epidemiológico.

Eis que hoje, graças a matéria do jornalista Mateus Vargas, do jornal Estado de S. Paulo, ficamos todos sabendo que 6,86 milhões de testes para diagnóstico de coronavírus comprados pelo Ministério da Saúde continuam estocados em um armazém do governo federal, em Guarulhos, e perderão a validade entre dezembro e janeiro.

Pazuello, o general que seria craque em logística, está prestes a jogar no lixo R$ 290 milhões, que é o custo desses testes que podem ser desperdiçados.

O prejuízo é ainda pior. Afinal, muitos brasileiros padeceram e padecem sem diagnóstico em meio à maior pandemia da história da humanidade, enquanto o governo mantém testes guardados em um galpão.

O ministério tenta se defender, argumentando que não houve pedidos por parte de governadores e prefeitos, por isso os itens não foram distribuídos.

Já estados e municípios dizem que o material adquirido da União chegou incompleto - foram enviados com poucos reagentes, por exemplo - e por isso não houve novos pedidos.

Seja lá qual o motivo, a solução do problema é uma tarefa para o gênio da logística à frente do Ministério da Saúde. Talvez o general não saiba, mas no governo a logística não se resume a levar insumos de um local para outro, mas também desatar nós políticos e istrativos.

Até agora, informa a matéria, o SUS aplicou a testagem 5 milhões de vezes. Ou seja, o número de testes encalhados é maior do que o de utilizados.

A constatação de mais esse absurdo na istração da pandemia acontece em meio a um aumento exponencial de casos de covid-19 em todo o país. Enquanto isso, o presidente Bolsonaro, seu ministro da Saúde e os militares que os apoiam agem como se a estratégia do governo fosse um verdadeiro sucesso.

O julgamento da história sobre esse estado de coisas chegará um dia, mas, infelizmente, para muitos brasileiros já não adiantará de nada.