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

SP planeja a compra de 9 milhões de kits intubação para pacientes de covid

Pacientes são amarrados em Brasilândia por falta de medicamento para intubação - Reprodução/SPTV
Pacientes são amarrados em Brasilândia por falta de medicamento para intubação Imagem: Reprodução/SPTV

Paula Felix

30/04/2021 14h09

São Paulo - O secretário de Estado da Saúde de São Paulo Jean Gorinchteyn anunciou nesta sexta-feira, 30, que a pasta vai fazer um chamamento junto a municípios da Grande São Paulo e à capital para a aquisição de 9 milhões de kits intubação, que contêm sedativos, analgésicos e bloqueadores musculares. O Estado tem enfrentado momentos de escassez desses medicamentos, utilizados no procedimento de intubação de pacientes graves com covid-19.

"A secretaria de Estado da Saúde está terminando um chamamento junto aos municípios, no qual os municípios da Grande São Paulo e a cidade de São Paulo estão inclusos, para a aquisição dos kits intubação numa compra internacional. Estima-se a compra de 9 milhões de doses desses produtos, lembrando que consumo médio mensal gira em torno de 3,5 milhões para dar a garantia e a segurança de que todos os 645 municípios sejam adequadamente assistidos", informou o secretário.

O anúncio foi feito durante a entrega de 420 mil doses da Coronavac para o Programa Nacional de Imunizações (PNI), do Ministério da Saúde, no Instituto Butantan, na capital. "Com esta remessa, temos um total de 42 milhões e 50 mil doses da vacina do Butantan. Na próxima quinta-feira, estaremos entregando mais 1 milhão de doses", disse o governador João Doria (PSDB).

Na ocasião, o governador também afirmou que, na próxima quarta-feira, dia 5, o governo do Estado vai detalhar como será o cronograma de imunização das pessoas com comorbidades, que está previsto para ter início no dia 10 de maio. Serão imunizadas, inicialmente, pessoas com síndrome de down, pacientes renais em tratamento de diálise e transplantados em uso de imunossupressores. Ao todo, o grupo soma 120 mil pessoas na faixa de 18 a 59 anos no Estado.