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

Capitais brasileiras concentram 80% dos casos de novo coronavírus no Brasil

Maior número de casos oficiais confirmados está na capital paulista: 1.044 até o momento - iStock
Maior número de casos oficiais confirmados está na capital paulista: 1.044 até o momento Imagem: iStock

Judite Cypreste*

Do UOL, em São Paulo

31/03/2020 04h00

Resumo da notícia

  • São Paulo, Rio de Janeiro e Fortaleza são as capitais com maior número de casos
  • Se capitais forem excluídas, cidades metropolitanas lideram em volume de casos
  • Isolamento é defendido como essencial para impedir avanço para zonas rurais e periferias

As capitais dos estados e o Distrito Federal concentram 80% dos casos confirmados do novo coronavírus no Brasil. O maior número de ocorrências se concentra em São Paulo, com 1.044 casos oficiais até o momento, seguida pelo Rio de Janeiro, com 489 confirmados.

O levantamento foi feito pela reportagem do UOL utilizando os dados disponibilizados na tarde de ontem pela plataforma colaborativa Brasil.IO e os números fornecidos pelas secretarias estaduais de Saúde. Cabe ressaltar que os dados disponibilizados pelo Ministério da Saúde estão defasados com relação aos informados pelos estados e não contêm nível de detalhamento por municípios, o que pode gerar discrepâncias em algumas comparações.

Após São Paulo e Rio de Janeiro, a lista das dez cidades com maior número de casos oficiais segue com Fortaleza (338), Brasília (298), Belo Horizonte (163), Porto Alegre (143), Manaus (140), Salvador (117), Curitiba (73) e Recife (52).

Ao todo, são 355 cidades que registraram a ocorrência de pelo menos um caso. Nas cidades que não são capitais, a campeã em ocorrências é Niterói, cidade metropolitana do Rio de Janeiro, com 37 casos confirmados. Vila Velha, município do Espírito Santo, vem em seguida com 21 ocorrências.

No levantamento que considera os dez municípios com maior índice de casos confirmados, há quatro no estado paulista: Santo André (17), São Caetano do Sul (16), São Bernardo do Campo (15) e Guarulhos (13). O estado concentra o maior número de casos do país.

Segundo o médico Evaldo Stanislau Araújo, infectologista do Hospital das Clínicas da Faculdade de Medicina da USP e Diretor da Sociedade Paulista de Infectologia, um dos grandes desafios do Brasil será a disseminação do vírus para as periferias e cidades do interior do Brasil.

"Se nessas regiões não conseguirmos lidar com a disseminação, vamos ter que lidar com um pico de contaminados em uma população extremamente vulnerável e pobre que não tem o mesmo o à saúde", avalia.

Para o especialista, as medidas de restrição, como os decretos de quarentena adotados em algumas cidades do país, estão retardando o contágio em cidades menores. Autoridades mundiais em saúde recomendam o isolamento social como estratégia para a contenção da epidemia.

Apesar de o discurso oficial do presidente Jair Bolsonaro (sem partido) ser o de questionar a efetividade dessas medidas, ela é reforçada pelo próprio Ministério da Saúde.

"O isolamento social é a única medida cientificamente comprovada que impacta a disseminação do vírus. E ela não serve apenas para regiões urbanas, mas para o Brasil inteiro", ressalta Araújo.

*Colaborou Carolina Marins, do UOL em São Paulo