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


Hepatite C: empresa brasileira está desenvolvendo teste inovador

A eficácia do teste será testado em amostras clínicas do Instituto Adolfo Lutz  - iStock
A eficácia do teste será testado em amostras clínicas do Instituto Adolfo Lutz Imagem: iStock

Do UOL VivaBem*, em São Paulo

23/10/2018 10h10

Empresas brasileira e canadense se uniram para desenvolver um novo teste simples e de baixo custo, utilizando apenas amostras de sangue, para diagnosticar a hepatite C.

Atualmente, os testes para a doença seguem, basicamente, duas opções técnicas. Os imunoensaios são rápidos e de baixo custo, mas não têm precisão para subsidiar decisões sobre cuidados com pacientes. As tecnologias baseadas no método de reação em cadeia da polimerase (PCR), por sua vez, têm excelente sensibilidade e desempenho, mas são demoradas e caras, segundo Daniel Mamelak, CEO da Custom Biologics, empresa canadense que está desenvolvendo uma nova opção, junto à DGLab, startup incubada no Supera Parque de Inovação Tecnológica de Ribeirão Preto, em São Paulo.

Veja também:

Chamado de NAT, o exame é de ácido nucleico e promete ser mais fácil de ser executado, gerando resultados num período de tempo mais curto e a um custo menor do que o PCR. A ideia é que ele seja credenciado para se transformar em rotina de saúde pública.

A eficácia da plataforma diagnóstica será testada com a utilização de amostras clínicas do Instituto Adolfo Lutz (IAL). “Assim, poderemos comparar nossa tecnologia com o PCR, o teste padrão ouro atual”, diz Mamelak.

Apesar de o teste para o diagnóstico da hepatite C viral em desenvolvimento pelas duas empresas ser baseado em uma nova tecnologia isotérmica de amplificação de ácido nucleico protegida por patente, Mamelak reconhece que tecnologias concorrentes estão em desenvolvimento. “No entanto, por meio da colaboração com a DGLab no Brasil, devemos ser os primeiros a desenvolver com sucesso um NAT rápido para a hepatite C viral.

O Brasil, aliás, será o primeiro mercado global a testar e validar essa nova tecnologia. “Acreditamos que a Custom Biologics pode ajudar a DGLab a emergir como líder em NATs rápidos e econômicos para o HCV (vírus que causa a hepatite C) e muitos outros organismos.”

*Com informações da Agência FAPESP

UOL VIVABEM NAS REDES SOCIAIS
Facebook • Instagram • YouTube