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

Fui convencido de que um monitor de xixi é tudo o que precisamos em casa

iStock
Imagem: iStock

De Tilt,* em Las Vegas (EUA)

07/01/2023 04h00

Essa história de fazer exame de urina uma vez por ano (e olhe lá) para monitorar a saúde pode estar com os dias contados.

Se depender de duas empresas na CES 2023, maior feira de tecnologia do mundo, o seu xixi será analisado todos os dias e você terá o aos resultados em questão de segundos. Basta usar um simples dispositivo inteligente colocado no vaso sanitário.

Tudo o que você precisará fazer é urinar sobre ele. A ideia parece maluca, mas faz todo sentido: o poder do xixi em fornecer dados e alertar sobre doenças já convenceu a medicina há anos.

Decidi ir até os estandes das duas empresas para entender exatamente o plano delas para o futuro da análise do xixi diário.

De modo geral, achei os produtos bem interessantes. Minha aposta é que devem se popularizar nos próximos anos. Eu usaria facilmente se tivesse um preço ível.

Como funciona

As empresas Withings e a norte-americana Vivoo têm sistemas semelhantes.

Sensor da Vivoo - Guilherme Tagiarol/Tilt - Guilherme Tagiarol/Tilt
Sensor da Vivoo
Imagem: Guilherme Tagiarol/Tilt

Um sensor é colocado no vaso sanitário e você precisa mirar no local. Dentro dele, há cartuchos com uma série de análises laboratoriais que podem ser feitas.

Infelizmente, não pude testar nenhuma das soluções na prática, mas aparentemente o funcionamento é simples. Só fico curioso imaginando como será a experiência de mirar no aparelho enquanto a pessoa faz xixi. E como será isso para mulheres? Me pareceu algo mais prático para quem urina em pé e em frente para o vaso sanitário.

Enfim, o resultado da análise sai em até 5 minutos no aparelho da Withings (chega uma notificação no app da empresa enviada via wi-fi), enquanto no da Vivoo a companhia diz que leva até 90 segundos.

A Withings venderá seu dispositivo, chamado U-scan, na Europa ainda no segundo trimestre com preço sugerido de 500 dólares (cerca de R$ 2.626 na conversão atual e sem impostos).

A companhia venderá opções com dois tipos de cartuchos, um para análise nutricional e outro com exames de ciclo — dessa forma, mulheres conseguem ter detalhes sobre a ovulação baseada na urina.

Já a Vivoo ainda não tem data para começar a vender para os consumidores. Por ora, a empresa planeja comercializar o aparelho para companhias do ramo de vasos sanitários.

Sensor da Withings U-Scan lembra desodorizador de vaso sanitário - Guilherme Tagiaroli/Tilt - Guilherme Tagiaroli/Tilt
Sensor da Withings U-Scan lembra desodorizador de vaso sanitário
Imagem: Guilherme Tagiaroli/Tilt

Pelo que pude ver a instalação é superfácil. O dispositivo da Withings é o mais discreto — se a fácil por um desodorizador de ambiente.

Talvez seja um pouco nojenta a troca de cartucho (a cada três meses), mas, com certeza, já tocamos coisas piores nas últimas semanas do que um gadget que recebeu urina. Na dúvida, sempre existem luvas de proteção.

Que tipo de dados eles mostram?

  • Cálcio
  • pH (nível de acidez)
  • Coloração
  • Vitamina C
  • Proteína
  • Nível de hidratação

As duas empresas fazem questão de ressaltar que os resultados da análise da urina não são diagnósticos médicos. A proposta é fornecer indicativos sobre déficit de algum dos índices analisados.

Sensor da Vivoo - Guilherme Tagiaroli/Tilt - Guilherme Tagiaroli/Tilt
Sensor da Vivoo
Imagem: Guilherme Tagiaroli/Tilt

É mais ou menos o que as empresas de outros aparelhos vestíveis (como relógios) fazem com recursos de medição de batimento cardíaco: os resultados servem como referência e indicadores de algo.

Ainda não é possível determinar o nível de precisão desses dispositivos comparados com exames feitos em laboratórios ou hospitais. Mas imagino que seja o começo de um futuro em que isso será possível.

*O jornalista viajou a convite da Samsung