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

App do SUS que monitora avanço da covid fracassa por falta de uso

App Coronavirus-SUS - Reprodução/YouTube
App Coronavirus-SUS Imagem: Reprodução/YouTube

Guilherme Tagiaroli

De Tilt, em São Paulo

14/04/2021 04h00

Talvez você nem saiba, porque virou um grande fracasso, mas o app Coronavírus-SUS, criado pelo governo para monitorar casos de covid na população, tem uma função muito importante para conter a propagação da epidemia: o rastreamento de contato. Com ela, daria para saber quando alguém doente chegou perto de você usando o recurso de Bluetooth dos celulares. E virou um grande "flop" basicamente porque ninguém explicou como a ferramenta funcionava.

O governo divulgou o Coronavírus-SUS em dois momentos: no início da pandemia, em meados de março de 2020, quando não havia ainda o recurso de rastreamento de contato —trazia apenas informações da doença, como sintomas — e quando o ministério ou a usar a tecnologia da Apple e do Google, em agosto.

Neste último caso, a divulgação foi feita prioritariamente pela imprensa e em um canal do YouTube do Ministério da Saúde com menos de 10 mil visualizações. Não havia uma campanha de nível nacional explicando os benefícios e sugerindo o do app para ajudar na contenção do coronavírus.

A pouca divulgação pode ter refletido na adesão mínima dos brasileiros ao recurso. O Coronavírus-SUS teve 61,5 milhões de s desde o seu lançamento, em março do ano ado, segundo dados do Ministério da Saúde fornecidos para Tilt. Mas eram apenas 2,3 milhões de usuários ativos até fevereiro deste ano. Ou seja, menos de 1% da população brasileira. Para se ter uma ideia, em apenas uma semana de janeiro o WhatsApp conseguiu 9,2 milhões de s.

Após a instalação no celular, o Coronavírus-SUS pede à pessoa um cadastro no Valida Covid, portal criado para guardar registros de testes positivos de covid. O app também precisa do recurso de Bluetooth ativado para funcionar.

Caso alguém tenha resultado positivo para covid e informe isso no app, este perguntará se deseja comunicar outros usuários sobre sua condição, mas de forma anônima. O sistema informará a essas pessoas para ficarem atentas a sinais de um possível contágio.

App Coronavirus-SUS notifica exposição a pessoas que contraíram o vírus - Reprodução - Reprodução
App Coronavirus-SUS notifica exposição a pessoas que contraíram o vírus
Imagem: Reprodução

Em um pedido de LAI (Lei de o à Informação), o Ministério da Saúde informou que houve apenas 1.573 testes positivos inseridos via app e confirmados no Valida Covid até novembro do ano ado.

A reportagem perguntou ao ministério quantas pessoas testaram positivo para covid-19 dentro do app até o momento. Mas a pasta não soube informar esse dado. Disse que a tecnologia fornecida pelo Google e Apple "não permite armazenar essa informação".

Em resposta, o Google deu detalhes de como seu sistema funciona. Ele compartilha com autoridades uma lista de códigos de identificação de usuários do app que confirmaram positivo para covid. Esses códigos são sequências numéricas geradas de forma aleatória e servem como um número de identificação de cada pessoa cadastrada no app.

Junto a cada um desses códigos, o sistema lista a data de uma possível exposição do usuário a outra pessoa infectada (desde que ela tenha informado isso no Coronavirus-SUS), quanto tempo durou o contato e a força do sinal Bluetooth entre os celulares.

O Google também diz que o sistema foi "desenhado para que nem Google e nem Apple tenham o a informações relacionadas a um indivíduo". Mas explica que os apps do governo que usam o sistema conseguem disparar um pedido aos usuários que estejam em risco de contágio informarem, se desejarem, seus números de telefone, para um agente de saúde ligar e fornecer mais orientações. Já a Apple não quis se pronunciar sobre o assunto.

Poderia ter salvado vidas

A Irlanda também usa a tecnologia da Apple e do Google de exposição de contato em um app chamado Covid Tracker. Ainda que o país europeu seja muito distinto do nosso (é menor e proporcionalmente mais rico), a experiência de lá mostra como a solução poderia ter sido melhor usada aqui.

"Quanto mais pessoas usarem o app, mais pessoas podem ser protegidas", diz o anúncio do governo irlandês no YouTube. Além disso, as autoridades locais têm um site explicando a importância do app e questões sobre privacidade.

O interessante é que o Covid Tracker fornece informações detalhadas atualizadas para todos. Então, no dia 23 de março, por exemplo, o app já tinha contabilizado 14.650 pessoas que notificaram terem testado positivo via app, e 23.496 pessoas foram notificadas por terem estado próximas a doentes. Já no Brasil, para obter dados detalhados sobre o app, foi necessário um pedido de Lei de o à Informação.

App Covid Tracker, da Irlanda, usa tecnologia de notificação de exposição do Google e da Apple, a mesma do app Coronavírus-SUS, do Brasil - Reprodução - Reprodução
App Covid Tracker, da Irlanda, usa tecnologia de notificação de exposição do Google e da Apple, a mesma do app Coronavírus-SUS, do Brasil. Solução traz dados detalhados para a população
Imagem: Reprodução

O SUS (Sistema Único de Saúde) conta com outras ferramentas para tentar ajudar a população. Em abril de 2020, o Ministério da Saúde propagandeou bastante o Telesus, uma espécie de central de dúvidas sobre coronavírus que inclui desde bot do WhatsApp a um serviço telefônico, que orienta as pessoas sobre sintomas e recomendações de ir ao médico, caso seja necessário.

Em pelo menos duas cidades interioranas do Brasil, Jaboticabal (SP) e Araxá (MG), as autoridades fizeram o rastreamento de contato "manual" mesmo. Após alguém testar positivo para covid-19, a pessoa indicava com quem ela esteve e um agente de saúde entrava em contato, informando cuidados e perguntando se necessitava de algum tipo de auxílio.

Nem a divulgação seria suficiente?

Márcia Freitas, professora de bioética e doutora em saúde pública pela USP (Universidade de São Paulo), acha que não fez sentido lançar o app sem que o governo deixasse clara para a população qual seria a sua política nacional para rastrear pessoas com covid. Além disso, diz, faltou mais divulgação da ferramenta. "A impressão que dá é que a população mal sabia da existência do aplicativo", diz.

Para Claudio Miceli, professor de engenharia de sistemas e computação da UFRJ (Universidade Federal do Rio de Janeiro), também falta no público uma cultura de uso de aplicações do governo. Afinal, só recentemente surgiram apps do poder público voltados à população, como o eTitulo [o título de eleitor eletrônico].

Além disso, o rastreamento de contato esbarrou em questões técnicas e hábitos do seu público-alvo. "De modo geral, o brasileiro não costuma deixar o Bluetooth ligado, pois gasta bateria. O app faz sentido do ponto de vista tecnológico, mas na prática, talvez, não fosse o suficiente para o Brasil", explicou. Outro ponto levantado por ele é que todo brasileiro tem smartphone e o app do SUS tem compatibilidade limitada —para usá-lo, é necessário ter um iPhone com no mínimo iOS 13 ou um celular com sistema Android 6.0 ou superior.