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

Longevidade

Práticas e atitudes para uma vida longa e saudável


Aplicativo de jogos monitora a saúde de idosos em isolamento na pandemia

Istock
Imagem: Istock

Eduardo Geraque

Da Agência Fapesp

29/06/2020 13h01

Um aplicativo de jogos para idosos, desenvolvido com apoio do Programa Fapesp Pesquisa Inovativa em Pequenas Empresas (PIPE) com o objetivo de treinar as habilidades cognitivas, como memória e raciocínio, e de melhorar o condicionamento físico, ganhará uma nova funcionalidade. O programa será utilizado para monitorar a saúde dos usuários em isolamento social em razão da pandemia de covid-19.

O projeto, conduzido pela empresa paulista ISGAME, em São Paulo, foi um dos seis primeiros selecionados em edital lançado pelo PIPE-FAPESP em parceria com a Finep (Financiadora de Estudos e Projetos), para apoiar o desenvolvimento de produtos, serviços ou processos criados por startups e pequenas empresas de base tecnológica no Estado de São Paulo, voltados ao combate da covid-19.

"A ideia é que por meio de uma pulseira ou de um relógio conectados ao aplicativo seja possível registrar os batimentos cardíacos e o número de os dados em casa pelo usuário, por exemplo", diz Fabio Ota, pesquisador responsável pelo projeto.

De acordo com Ota, a partir do histórico de dados de saúde do usuário, o aplicativo, batizado de "Cérebro Ativo", vai gerar um relatório que poderá ser enviado, por exemplo, a um médico ou a familiares do idoso que estiver em confinamento social.

O perfil de cada usuário será analisado por meio de inteligência artificial para monitorar eventuais alterações de comportamento. Todos os processos do aplicativo serão baseados em conceitos do modelo biopsicossocial - que estuda a causa ou o progresso de doenças utilizando fatores biológicos, psicológicos e sociais.

"Todas as informações coletadas vão seguir o que está estabelecido na Lei Geral de Proteção de Dados", ressalta Ota.

Segundo o pesquisador, um dos principais objetivos dos novos módulos do aplicativo será o de ampliar o relacionamento dos idosos confinados por meio de jogo com amigos e familiares.

O game "Árvore Genealógica", por exemplo, busca aumentar as conexões sociais do idoso ao criar uma árvore com os membros da família e adicionar informações sobre o histórico de saúde de cada uma das pessoas adicionadas.

O jogo também fará com que o usuário do aplicativo responda a perguntas que produzirão uma autoavaliação de sua saúde, além de registrar dados sobre energia/disposição, ansiedade, irritação, depressão e tristeza.

As perguntas serão escolhidas por ferramentas artificiais embarcadas no game. No tópico da depressão, por exemplo, poderão surgir questões como "Ao acordar hoje, você se sentiu deprimido (a) ou triste?", "Durante a tarde, você se sentiu deprimido (a) ou triste?", "Ao final do dia, você se sentiu deprimido (a) ou triste?", "No decorrer do dia de hoje, você se sentiu deprimido (a) ou triste?". O jogo, neste caso, oferece cinco alternativas de respostas, que vão de "nem um pouco" até "extremamente" deprimido ou triste.

Além do formato de respostas em escala Likert - de itens com descrições verbais que contemplam extremos -, as respostas específicas para cada questão poderão ser apresentadas por meio de uma escala visual de 0 a 10, em que 0 representa o pior estado imaginável e 10 o melhor estado possível.

Bateria de testes

Antes de entrar na fase comercial, o aplicativo "Cérebro Ativo" será testado por 80 idosos que fizeram parte dos testes nas outras fases de desenvolvimento do aplicativo (leia mais em pesquisaparainovacao.fapesp.br/312).

Para conseguir uma penetração maior, em diferentes faixas de renda, o game será disponibilizado para ser baixado em telefones celulares. A empresa também está tentando fechar parcerias para que as pulseiras ou relógios que serão utilizados no processo de monitoramento dos indicadores de saúde tenham baixo custo.

"Vamos fazer os testes com os idosos que temos cadastrados e tentar disponibilizar o produto em escala comercial no segundo semestre", afirma Ota.

Pelo plano de negócios da empresa, o aplicativo será gratuito. Neste caso, o usuário vai ter o a um número limitado de funcionalidades.

Para ter o ao monitoramento dos dados de saúde e aos módulos mais complexos, como os que estimulam a interação social entre as pessoas de forma remota, será cobrada uma mensal.