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

Doria enxuga comitê médico de auxílio em decisões contra a covid

28.abr.2021 - João Gabbardo, coordenador-executivo do Centro de Contingência do Coronavírus em São Paulo - Divulgação/Governo do Estado de São Paulo
28.abr.2021 - João Gabbardo, coordenador-executivo do Centro de Contingência do Coronavírus em São Paulo Imagem: Divulgação/Governo do Estado de São Paulo

Lucas Borges Teixeira

Do UOL, em São Paulo

16/08/2021 21h21Atualizada em 17/08/2021 10h37

O governador de São Paulo, João Doria (PSDB), decidiu diminuir a equipe do Centro de Contingência do Coronavírus, grupo de médicos que auxilia a gestão nas decisões sobre o combate à pandemia. Criado em março de 2020, o comitê era formado por 21 médicos e agora deverá ficar com sete membros.

A informação foi confirmada por integrantes do grupo e pela Secretaria Estadual de Saúde. Segundo o UOL apurou, o aviso foi dado na última sexta-feira (13) e causou surpresa entre os médicos, embora grande parte das reuniões semanais já sofresse com a defasagem de mais da metade do grupo.

"Agora, o grupo deverá ser chamado de Comitê Científico e será formado por João Gabbardo, Paulo Menezes, David Uip, José Medina, Geraldo Reple, Carlos Carvalho e Luiz Carlos Pereira, que já compunham o Centro de Contingência. Segundo o governo estadual, a escolha dos representantes foi delegada aos próprios médicos."

"Frente à queda de casos, internações e mortes pela doença, neste novo contexto epidemiológico, estes especialistas que atuam em hospitais e na Academia têm diante de si outras demandas também fundamentais para assistir a população e contribuir com a medicina brasileira e internacional", disse a Secretaria de Saúde, por meio de nota.

Ao UOL, membros do comitê já relatavam, havia alguns meses, que as reuniões semanais, realizadas virtualmente todas as terças, já não tinham frequência regular de mais da metade do grupo. Os motivos seriam variados: de agenda a discordâncias com as decisões tomadas por Doria.

"Assim, atendendo também às necessidades dos integrantes, o grupo técnico de apoio ao estado será mantido com sete profissionais, o que não representa demérito aos demais", diz a pasta.

A equipe era exibida com orgulho por Doria como modelo independente de gestão.

O comitê é responsável, em especial, por analisar os dados semanais da evolução da pandemia no estado e fazer sugestões de flexibilização ou estreitamento das regras da pandemia. Eles foram os responsáveis por criar, junto à Secretaria de Desenvolvimento Econômico, o Plano São Paulo, em maio de 2020.

Os médicos realizam pelo menos uma reunião semanal para debater as medidas a serem implementadas no estado. O coordenador Paulo Menezes e o coordenador-executivo, João Gabbardo, levavam as ideias a Doria e seu secretariado às quartas, pouco antes da coletiva de imprensa.

A última consulta aos especialistas formou as medidas de flexibilização de grandes eventos anunciadas no início de agosto, que deverão valer a partir de amanhã (17).

A composição para este novo grupo ainda não foi anunciada. Não se sabe se Menezes e Gabbardo se manterão em seus cargos. Segundo a nota do governo, a escolha dos representantes foi delegada aos próprios médicos.