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

Doria ironiza Ministério da Saúde: 'é o samba do Ministério Louco'

João Doria (PSDB) criticou mudança de orientação do Ministério em poucos dias - Divulgação
João Doria (PSDB) criticou mudança de orientação do Ministério em poucos dias Imagem: Divulgação

Leonardo Martins, Lucas Borges Teixeira, Rafael Bragança e Allan Brito

Do UOL, em São Paulo, e colaboração para o UOL

24/02/2021 14h56

O Ministério da Saúde apresentou duas orientações diferentes sobre vacinação nos últimos dias: na semana ada, indicou que estados e municípios não precisavam reservar a segunda dose das vacinas contra covid-19. Agora essa determinação mudou. O governador de São Paulo, João Doria, foi perguntado sobre o assunto e provocou o governo federal.

"Não resisto a fazer um comentário bem-humorado. É o samba do Ministério Louco. É um ministério que informa em um dia, pelo seu Ministro, que vai privilegiar a primeira dose em detrimento da segunda dose. E o mesmo Ministério, 72 horas depois, volta atrás. Vamos acreditar em quem? No Ministro ou no Ministério? É o samba do Ministério louco. Num dia tem uma posição, no outro dia tem outra. Num dia tem vacina, outro dia não tem. Num dia tem seringa, no outro quer interditar estados que têm. É difícil istrar assim", reclamou Doria, em entrevista coletiva no Palácio dos Bandeirantes.

O Secretário de Saúde, Jean Gorinchteyn, tinha dito, na segunda-feira (22), que estava esperando um posicionamento oficial do Ministério sobre o assunto. Hoje ele afirmou que a mudança não causou qualquer problema para o cronograma da vacinação em São Paulo.

"É importante entendermos que o PNI (Programa Nacional de Imunização) tinha deixado claro o condicionamento de doses intervaladas de 14 a 28 dias para a vacina do Butantan e de 3 meses para a vacina Astrazeneca. A própria Anvisa fez esse condicionamento de uso, seguindo a bula do Butantan. Quando recebemos informação, tínhamos que garantir que, quem recebeu a primeira dose, teria a garantia da segunda. Então vamos ter vacina sim. Seguiremos ritos conforme o definido e teremos vacina para o país", afirmou ele, para depois pedir que o governo federal compre mais imunizantes, o que pode acelerar o processo de imunização.

A orientação sobre a mudança na aplicação de doses foi feita inicialmente pelo Ministro da Saúde, Eduardo Pazuello, em uma reunião com representantes da FNP (Frente Nacional de Prefeitos), na sexta-feira ada.

Mas uma nota técnica do Ministério, divulgada nesta semana, determinou que todos municípios devem reservar a segunda dose dos imunizantes.

A falta de uma definição sobre estocar ou não a segunda dose foi alvo de reclamação de prefeitos, que cobraram de Pazuello a oficialização do que foi negociado na sexta.

"Infelizmente essas idas e vindas de informações prejudicam o planejamento das pessoas e dos gestores lá na ponta. O ministro nos garantiu, na sexta, que poderíamos utilizar plenamente os novos lotes integralmente como primeira dose. E agora, retorna à posição original de reservar metade dos lotes para a segunda dose com uma orientação oficial", disse o presidente da Frente Nacional de Prefeitos, Jonas Donizette (PSB).

Ele afirmou que as decisões precisam se pautar por critérios técnicos, "mas é preciso trabalhar com informações confiáveis, especialmente me momento tão grave".