Monitorização remota de doentes em ambiente doméstico
Introdução
À medida que a esperança média de vida aumenta, as pessoas com 65 ou mais anos são a população que mais rapidamente cresce no mundo. Prevê-se que a proporção de pessoas com 65 ou mais anos na população total aumente de 17,1% para 30,0% e que o seu número continue a subir. O sistema de saúde nos países desenvolvidos está sob uma pressão crescente e não será suficientemente eficiente para prestar um serviço fiável de tratamento de saúde a esta população envelhecida. Embora a investigação em redes de sensores sem fios tenha sido inicialmente impulsionada por aplicações militares, mais recentemente é a comunidade médica que mostra mais interesse na aplicabilidade desta tecnologia ao desenvolvimento de sistemas de cuidados de saúde de telemedicina.
Os requisitos de fiabilidade, flexibilidade e portabilidade tornam as tecnologias de sensores sem fios particularmente atrativas para aplicações de telemedicina.
O principal objetivo deste projeto foi criar uma framework de cuidados domiciliários com os seguintes requisitos: simplicidade de conceção, fiabilidade, baixo custo e com a menor interação possível por parte do utilizador.
Conceção de alto nível
O nosso sistema tem quatro elementos: um dispositivo corporal, um aparelho de monitorização ambiental, um gateway sem fios e um servidor. O dispositivo corporal deteta os sinais vitais do doente (temperatura e frequência cardíaca), bem como a sua atividade. O aparelho ambiental mede a temperatura do ambiente do doente e as condições de luminosidade. Todos os dados recolhidos pelos sensores são enviados através de uma ligação sem fios Zigbee para o Gateway. Os dados são depois registados numa base de dados MySQL localizada no servidor. A figura mostra o diagrama de componentes do sistema.

O sistema de monitorização é composto pelos dispositivos sensores, pelo gateway, pelo servidor e por uma interface gráfica de utilizador para visualização e gestão dos dados. Depois de instalar os dispositivos sensores (corporal e ambiental), é necessário ligar ao servidor o gateway USB ZigBee e, em seguida, executar o script python de ligação. A partir daí, todos os dados recebidos pelo gateway são tratados e armazenados na base de dados. A aplicação tem três utilizadores principais: o profissional de saúde, o doente e o familiar. O profissional de saúde pode criar um novo doente, associar um determinado dispositivo corporal e dispositivo ambiental a um doente durante um certo período de tempo, inserir notas de diagnóstico ou de processo para um doente, consultar os dados do doente e criar as credenciais de acesso do doente e do familiar. O doente pode inserir os sintomas que está a sentir no momento e consultar o seu registo em tempo real. O familiar pode consultar os dados do doente em tempo real.

Conceção do hardware
Todos os componentes do sistema foram construídos com hardware de baixo custo. O tamanho e a forma do dispositivo corporal foram tidos em conta para melhorar a usabilidade do dispositivo. Para o processamento de dados e controlo do dispositivo utilizámos uma Sparkfun WEE baseada na plataforma Arduino. Trata-se de uma plataforma de prototipagem baseada em hardware e software flexíveis e fáceis de usar. A WEE tem um microcontrolador ATmega168V a funcionar a 8 MHz e 8Kbytes de memória flash programável no sistema. Para a alimentação utilizámos duas pilhas AA com um conversor DC-DC elevador de 5V. Para a transmissão de dados utilizámos as capacidades de comunicação série da WEE. Este hardware é programado com o ambiente de desenvolvimento Arduino.
Para a medição da temperatura utilizámos um termómetro digital 1-wire Parasite-Power DALLAS DS18B20-PAR. O termómetro digital tem um código de identificação único de 64 bits, fornece medições de temperatura em graus centígrados de 9 a 12 bits, comunica através de um barramento 1-wire, tem uma gama de temperaturas de funcionamento de -55o C a +100o C e tem uma precisão de ±0,5oC numa gama de -10oC a +85oC.

Para a monitorização da atividade do doente utilizámos um acelerómetro micromaquinado de três eixos Low-g ±1.5g-6g MMA7260QT da Freescale Semiconductor. O acelerómetro mede a aceleração e as forças de reação induzidas pela gravidade. O acelerómetro é um sensor analógico que fornece o seu valor de dados como um inteiro de 0 a 1023. Fornece um valor para cada eixo (X, Y, Z), que corresponde à aceleração medida.

Para o sensor de luz utilizamos um circuito simples, um LDR (Light Dependent Resistor) e uma resistência de 4.6 kOhm.

A ligação sem fios entre os dispositivos e o gateway é estabelecida através da tecnologia ZigBee (IEEE 802.15.4). O ZigBee define um conjunto de protocolos de comunicação desenvolvidos para rádios digitais pequenos e de baixo consumo. Escolhemos o rádio MaxStream XBee pro para a comunicação ZigBee.

Dispositivo corporal
O dispositivo corporal foi montado com uma placa de prototipagem e alguns fios para ligar os componentes. É composto por um microcontrolador WEE, um acelerómetro de três eixos, um sensor de temperatura digital, um rádio XBee pro e a alimentação. Com 10x6x2.5 cm e 150g de peso, o dispositivo consegue acomodar todos os componentes e ser usado no corpo sem causar demasiado desconforto ao doente.


O dispositivo corporal deve ser colocado acima da anca direita do doente, virado para cima, porque esta é a localização do corpo humano com menos alterações de posição durante a atividade.

Dispositivo ambiental
O dispositivo ambiental é composto por um microcontrolador, um rádio XBee pro, um sensor de temperatura digital e um LDR – Light Dependent Resistor para detetar as condições de luminosidade. Ao recolher os dados dos sensores do ambiente do doente, é possível enquadrar os sinais vitais e a atividade do doente recebidos no seu meio envolvente. Por exemplo, podemos relacionar estatisticamente a atividade do doente ou algumas alterações fisiológicas com as condições de luminosidade do ambiente.


Gateway USB-ZigBee
O gateway é um rádio XBee pro com uma interface USB ligado a um servidor que recebe os dados enviados pelos dispositivos sensores e os armazena numa base de dados MySQL. O gateway tem uma área de cobertura sem fios de 300 metros em interiores e 1500 metros em exteriores; isto torna-o adequado para monitorização no domicílio.

Conceção do software
Os sensores digitais fornecem um valor formatado; no entanto, os sensores analógicos fornecem um valor de 0 a 1023. Os dados em bruto lidos dos sensores analógicos têm de ser pré-processados para que as leituras façam sentido para a aplicação. Os dados em bruto dos sensores são processados no dispositivo e depois transmitidos para o gateway.
Após uma série de testes, em que os voluntários realizaram as suas atividades de rotina diária, conseguimos selecionar as seguintes atividades principais identificadas pelo acelerómetro:
- De pé
- Sentado
- A andar
- A correr
- Deitado (a dormir)
- Queda
Processar todos estes dados exige muita capacidade de processamento e, sendo a nossa uma abordagem de baixo custo, há menos capacidade de processamento disponível. Assim, o objetivo foi encontrar uma forma de classificar a atividade sem muito processamento.
Para determinar os valores dos padrões de atividade, os voluntários realizaram as suas atividades e registámos os dados em bruto do acelerómetro na base de dados. O acelerómetro reportava um valor para cada eixo a cada 100 milissegundos. Após várias execuções, foram selecionados 200 valores para cada atividade. A análise dos gráficos gerados pelos dados armazenados permitiu-nos compreender que valores isolados não têm significado; no entanto, conjuntos de valores podiam ser usados para determinar padrões de atividade. Ainda assim, atividades diferentes podem por vezes produzir conjuntos de valores semelhantes, pelo que era importante encontrar outra característica que, combinada com o conjunto de valores, pudesse identificar, sem qualquer dúvida, uma determinada atividade. Uma análise gráfica mais aprofundada permitiu-nos reconhecer que o valor de cada eixo também podia determinar uma atividade. Assim, o conjunto de valores e o eixo correspondente podem determinar com precisão a atividade atual.
O desafio seguinte foi decidir qual deveria ser o tamanho do conjunto de valores; se for demasiado pequeno não permitirá identificar um padrão, mas se for demasiado grande aumenta o risco de sobreposição de padrões de atividades diferentes. Assim, um conjunto de valores não pode ser mais longo do que a ocorrência mais rápida de uma atividade. De facto, a atividade que demora menos tempo a ocorrer é uma queda (cerca de um segundo). Com base nisto, selecionámos um conjunto de 10 valores.
Os gráficos seguintes representam os dados em bruto do acelerómetro para diferentes atividades; a queda ocorre apenas entre as leituras 33 e 43; depois disso, o voluntário fica deitado de barriga para baixo.
A andar

Queda

De pé

Tendo os conjuntos de valores, precisávamos de uma fórmula para transformar cada conjunto de valores num único valor sem perder o seu significado. A variância estatística era a melhor forma de o fazer, mas calcular a variância para o conjunto de valores de cada eixo dar-nos-ia três valores distintos. Por isso, a média entre estes valores dar-nos-ia um único valor que poderia ser usado para identificar uma atividade. Chamámos a este valor VAI, que significa Value for Activity Indicator. As fórmulas da variância e do VAI são apresentadas abaixo:

Os valores do acelerómetro variam de pessoa para pessoa e é impossível, por exemplo, andar sempre exatamente da mesma forma, pelo que precisávamos de identificar uma lista de intervalos de valores para cada atividade. Assim, usando a fórmula do VAI e os dados em bruto adquiridos anteriormente, construímos a tabela seguinte.
| De pé, Sentado, Deitado | Andar | Correr | Queda | |
| Mín | 0 | 450 | 50000 | 15000 |
| Máx | 120 | 5000 | – | 48000 |
Pela tabela acima verificamos que as atividades de pé, sentado e deitado têm o mesmo intervalo de VAI. Assim, usamos os valores dos eixos; por exemplo, para deitado de costas, os eixos x e z devem devolver quase o mesmo valor, x deve ser inferior a 420 e o valor do eixo y deve ser inferior ao valor do eixo x. Com esta definição, a maioria das atividades pode ser bem identificada por um algoritmo simples. No entanto, a identificação de uma queda coloca alguns problemas. Por vezes, correr é erradamente identificado como queda e uma queda pode ser erradamente identificada como corrida. Para resolver este problema, acrescentámos ao algoritmo uma matriz de atividades que incorpora situações conhecidas em que ocorre uma queda, e.g., se alguém está a correr e no segundo seguinte está deitado de barriga para baixo, é plausível dizer que sofreu uma queda. Assim, preenchemos a matriz com vários destes cenários. A matriz é composta por: duas atividades passadas, a atividade a analisar, duas atividades futuras e a atividade que pretendemos identificar. Em tempo real, é preenchido um vetor com as atividades identificadas pelas leituras do acelerómetro. Este vetor tem duas atividades passadas, a atividade “presente” a analisar e duas atividades “futuras”. O vetor é depois comparado com a matriz. Se houver correspondência com uma sequência de eventos na matriz, o algoritmo devolve a atividade correspondente. Se não houver correspondência, o algoritmo decide com base apenas na janela de dados da atividade “presente”. Na realidade, a deteção tem um atraso de 3 segundos, porque é necessário esperar por mais duas leituras futuras antes de tomar uma decisão.
Resultados
Testes
O sistema foi testado por quatro pessoas, dois homens e duas mulheres. A tabela seguinte apresenta as características das pessoas.
| Pessoa | Altura | Peso | Idade | Sexo |
| Pessoa 1 | 1,60 m | 65 Kg | 89 | Feminino |
| Pessoa 2 | 1,73 m | 67 Kg | 86 | Masculino |
| Pessoa 3 | 1,71 m | 58 Kg | 25 | Feminino |
| Pessoa 4 | 1,86 m | 80 Kg | 27 | Masculino |
As pessoas em teste realizaram várias tarefas do seu dia a dia e as atividades detetadas foram registadas numa base de dados.
Precisão
A tabela seguinte mostra a precisão na deteção das atividades das pessoas em teste.
| Atividades detetadas | ||||||
| Atividade | De pé | Andar | Sentado | Correr | Deitado | Queda |
| Total | 30 | 40 | 20 | 20 | 20 | 10 |
| Pessoa 1 | 30 | 40 | 20 | NR | 20 | NR |
| Pessoa 2 | 30 | 40 | 20 | NR | 20 | NR |
| Pessoa 3 | 29 | 38 | 20 | 12 | 19 | 3 |
| Pessoa 4 | 30 | 40 | 20 | 14 | 20 | 3 |
NR – Não realizado
Após a utilização da matriz de cenários conhecidos, a deteção de quedas melhorou de 30% para 60%; acrescentar mais casos conhecidos à matriz melhorará ainda mais a deteção. No entanto, isso pode causar algumas deteções de falsos positivos. A deteção da atividade de corrida tem uma taxa de precisão de 70%; estes números podem ser melhorados acrescentando casos conhecidos de corrida à matriz. Todas as outras atividades têm 95% de precisão de deteção. No entanto, quando testada numa pessoa idosa, que é o nosso principal objetivo, devido às suas capacidades motoras degradadas, a deteção de atividades melhora para perto de 100%.
Interface web
As figuras abaixo mostram um exemplo da interface web para visualização dos dados do doente.
Figura web 1
Figura web 2
Figura web 3
Conclusão
Para conceber um sistema de monitorização ambulatória, devem ser tidos em conta vários aspetos: fiabilidade, custo, segurança e facilidade de utilização. Adquirindo equipamento de ECG, de frequência cardíaca e outros sensores médicos, podemos cobrir todos os sinais vitais e aumentar o número de aplicações, mantendo a abordagem de baixo custo. A deteção de quedas pode ser melhorada aumentando o número de posições conhecidas na matriz. Pode ser usada uma abordagem de tentativa e erro para alcançar a máxima fiabilidade de deteção sem demasiados falsos positivos. Deste modo, o sistema pode ser fiável e manter-se de baixo custo.
Anexo
Orçamento e lista de componentes
| Componentes | Preço | Quantidade | Total |
| Arduíno wee | 19$ | 2 | 38$ |
| MMA7260QT | 19,95$ | 1 | 19,95$ |
| DS18B20-PAR | 4,25$ | 2 | 8,50$ |
| XBee Pro 60mW | 37,95$ | 3 | 113,85$ |
| XBee Explorer USB | 24,95$ | 1 | 24,95$ |
| Breakout Board for XBee | 2,95$ | 2 | 5,9$ |
| Pilha AA | 2,95$ | 4 | 11,8$ |
| 5VDCtoDC stepUp 2x AA | 10,95$ | 2 | 21,9$ |
| Sensor de luz | 1,5$ | 1 | 1,5$ |
| Total: | 246,35$ | ||
Referências
http://inmotion.pt/store/
http://www.arduino.cc/
http://www.sparkfun.com/
http://www.zigbee.org/