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

Saúde

Sintomas, prevenção e tratamentos para uma vida melhor


O que é e como surge o derrame pleural, quadro que afetou Bruno Cardoso

Vocalista do grupo Sorriso Maroto ou por procedimento ontem (9) - Reprodução Instagram/@bcbrunocardoso
Vocalista do grupo Sorriso Maroto ou por procedimento ontem (9) Imagem: Reprodução Instagram/@bcbrunocardoso

Giulia Granchi

Do VivaBem, em São Paulo

09/08/2019 19h57

Sentindo fortes dores musculares constantes, que atrapalhavam as apresentações do grupo musical Sorriso Maroto, o cantor Bruno Cardoso, de 38 anos, foi diagnosticado com derrame pleural e ará por um procedimento simples para tratar a condição, de acordo com informações da assessoria de imprensa da banda.

O problema é originado na pleura, que é composta por duas membranas que recobrem os pulmões — uma fica grudada ao órgão e a outra na parede do tórax, formando o espaço pleural, que conta com uma quantidade e mínima de líquido só para evitar atrito. O aumento do volume de água costuma indicar doenças extremamente variadas, podendo originar-se por quadros inflamatórios como a pneumonia, até causas mais graves, como o câncer.

"A cor do líquido já dá uma boa ideia da causa. Se for claro, geralmente indica doenças não relacionadas ao pulmão, como a insuficiência renal ou insuficiência cardíaca. Nesses casos, só é necessário a retirada se o volume for muito grande. Quando há pus ou sangue, é sinal de infecção, inflamação ou neoplasia e pode ser indicado o uso de dreno", explica Elie Fiss, pneumologista do Hospital Alemão Oswaldo Cruz.

Entre os sintomas, que podem variar de acordo com a causa, estão a dor torácica pleurítica, tosse e dispneia (falta de ar) -- os pacientes podem sentir "pontadas" que pioram com a inspiração profunda e com a tosse.

Conforme informações divulgadas no Instagram do grupo, de acordo com Rafael Pottes, médico pneumologista o cantor realizou um procedimento simples com sucesso ontem (9), mas as causas de sua condição ou o motivo da intervenção não foram mencionados -- apenas que o quadro não tem relação com a miocardite recém-tratada e o repouso recomendado será de aproximadamente um mês.

"O tempo de recuperação é rápido e eu estou muito feliz em poder resolver essas dores que tanto me incomodam, ainda mais com as recentes notícias de evolução na melhora do coração. Em breve estou de volta aos palcos, melhor que antes", afirmou Bruno.