UNIVERSIDADE REGIONAL DO NOROESTE DO ESTADO DO RIO GRANDE DO SUL - UNIJUÍ DEPARTAMENTO DE CIÊNCIAS EXATAS E ENGENHARIAS LEANDRO FERREIRA PAZ ACESSO MÓVEL ÀS INFORMAÇÕES DE SAÚDE DO PACIENTE UTILIZANDO COMPUTAÇÃO UBÍQUA Santa Rosa 2012 LEANDRO FERREIRA PAZ ACESSO MÓVEL ÀS INFORMAÇÕES DE SAÚDE DO PACIENTE UTILIZANDO COMPUTAÇÃO UBÍQUA Trabalho de Conclusão de Curso apresentado ao curso de Ciência da Computação, do Departamento de Ciências Exatas e Engenharias, da Universidade Regional do Noroeste do Estado do Rio Grande do Sul, como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação. Orientador: Me. Professor Juliano Gomes Weber Santa Rosa 2012 Dedicatória Aos meus filhos Isadora e João Pedro, luzes da minha vida. Na tentativa de abrandar a ausência destes dias e noites de leitura e escrita, sem poder dar-lhes a atenção ideal e necessária que, espero, um dia não ressintam. À minha esposa Margiane que muito resiliente manteve o nosso cotidiano andando, me encorajando em todo momento de turbulência. AGRADECIMENTOS Agradeço aos meus Pais por me concederem este espaço em suas caminhadas nesta encarnação e sou grato pelos ensinamentos, pois me deram suporte para enfrentar as dificuldades da vida. Saudades, pai! Agradeço ao meu orientador, Professor Juliano que, em paralelo aos seus conselhos técnicos e científicos, soube amenizar as cobranças e entender que temos limites. Obrigado pela parceria e conversas no talk ao longo das madrugadas, pelas distrações, pela disponibilidade, me ajudando não só no desenvolvimento do trabalho, mas principalmente a fugir de todo o estresse. Sua motivação e positividade foram essenciais para a realização deste trabalho, muito obrigado chefe! Aos professores Vinicius Maran, Alencar Machado e Rogério Martins pelas indiretas e diretas algumas vezes, colocando-me no caminho certo. Muito obrigado! RESUMO As informações geradas nos Registros Eletrônicos de Saúde (RES) são essenciais no auxílio à tomada de decisões por parte de médicos e enfermeiros. No entanto, a burocracia, a dificuldade e o tempo gasto no acesso às informações de pacientes dificultam o trabalho dos profissionais de saúde. Desta forma, faz-se necessária a definição de uma arquitetura, que, aliada a tecnologias provenientes da Computação Ubíqua, visa a fornecer informações a profissionais de saúde de forma ágil em relação às soluções atuais. Este trabalho propõe uma arquitetura de software para celular que possibilite a consulta de informações médicas utilizando conceitos e tecnologias provenientes da Computação Ubíqua. Palavras-chave: Computação Ubíqua na Saúde, Sistemas de Computação Móveis, Telemedicina Móvel, Computação Ubíqua. ABSTRACT The information generated in the EHR (Electronic Health Records) is essential in assisting decision making by doctors and nurses. However, the bureaucracy, the difficulty of access and time spent in accessing patient information hamper the work of health professionals. This, it is necessary to define an architecture that combined technologies from the Ubiquitous Computing, aims to provide information to health professionals in a fast over current solutions. This paper proposes a software architecture that enables the cell to query medical information using concepts and technologies from the Ubiquitous Computing. Keywords: Healthcare Ubicomp, Mobile Computing, Mobile Telemedicine, Ubiquitous Computing. LISTA DE SIGLAS 1D 2D 3D ACID AmUbAS ANSI API APS ASTM CC/PP CCR CDA CID10 CK CML CMP - COMAH EAN EK ER7 GNU GPS GSM GTSH HAPI HL7 IDC IDE - Uma dimensão Duas dimensões Três dimensões Atomicidade, Consistência, Isolamento e Durabilidade Ambiente Ubíquo de Apresentação de Slides American National Standards Institute Application Programming Interface Atenção Primária a Saúde American Society for Testing and Materials Composite Capability/Preference Profiles Continuity Care of Record Clinical Document Architecture Cadastro Internacional de Doenças Context Knowledge Context Modeling Language Context UML Profile Cognitividade com sensibilidade a conexão como suporte a otimização de recursos em Malha Heterogênea European Article Number External Knowledge Enconding Rules Seven General Public License Geo-Posicionamento por Satélite Global System for Mobile Communications Gator Tech Smart House HL7 Application Programming Interface Health Level Seven International Data Corporation Integrated Development Environment IrDA ITF MVJ OHA ORM PC PDF PEP PHCS PRC QR Code RES RFID RIM RSS SAMU SAUM SDK SQL S-RES UML UPC URL W3C XML - Infrared Data Association Interleave Two Five Máquina Virtual Java Open Handset Alliance Object Role Modeling Proceduralized Context Portable Data File Prontuário Eletrônico do Paciente Primary Health Care System Padronização do Registro Clínico - Quick Response Code - Registro Eletrônico de Saúde Radio Frequency Identification Reference Information Model Reduced Space Symbology Sistema de Atendimento Móvel de Urgência Sistema de Assistência a Urgência Médica Software Development Kit Structured Query Language Sistema de Registro Eletrônico de Saúde Unified Modeling Language Universal Product Code Uniform Resource Locator World Wide Web Consortium Extensible Markup Language LISTA DE FIGURAS Figura 1: Diferentes integrações na computação ubíqua. ......................................................... 15 Figura 2: Compartilhamento de recursos da computação móvel e pervasiva com a ubíqua. ... 18 Figura 3: Dimensões da computação ubíqua. ........................................................................... 19 Figura 4: Princípio da descentralização na Computação Ubíqua. ............................................ 20 Figura 5: Diversidade das funcionalidades na Computação Ubíqua. ....................................... 21 Figura 6: Tipos de contextos e suas dinâmicas. ....................................................................... 30 Figura 7: Propaganda sensível ao contexto no GMail. ............................................................. 32 Figura 8: Exemplo de guias turísticos móveis .......................................................................... 32 Figura 9: Conexões ponto-a-ponto e multiponto com Bluetooth. ............................................ 36 Figura 10: Exemplo de uma rede de sensores sem fio. ............................................................ 37 Figura 11: Processo de execução programas Java. ................................................................... 39 Figura 12: Funcionamento do HL7. ......................................................................................... 42 Figura 13: Criação de XML e documento pelo CCR. .............................................................. 44 Figura 14: Previsão de conexões inteligentes até 2016. ........................................................... 48 Figura 15: Ciclo de vida das activities...................................................................................... 50 Figura 16: Download, instalação e funcionamento do Barcode Scanner................................. 51 Figura 17: Exemplo de QR Code. ............................................................................................ 51 Figura 18: Visão do sistema. .................................................................................................... 53 Figura 19: Arquitetura do sistema. ........................................................................................... 54 Figura 20: Diagrama entidade-relacionamento. ....................................................................... 56 Figura 21: Diagrama de classes. .............................................................................................. 58 Figura 22: Diagrama de classes do serviço HL7 da aplicação. ................................................ 59 Figura 23: Fluxograma do processo de identificação de contexto. .......................................... 60 Figura 24: Cenário de uso......................................................................................................... 61 Figura 25: Tela de login. .......................................................................................................... 62 Figura 26: Tela de leitura do QR Code..................................................................................... 63 Figura 27: Tela de menu. .......................................................................................................... 63 Figura 28: Tela de dados pessoais. ........................................................................................... 64 Figura 29: Tela de exames. ....................................................................................................... 65 Figura 30: Tela de procedimentos médicos. ............................................................................ 65 Figura 31: Tela de diagnósticos. .............................................................................................. 66 Figura 32: Tela de alergias. ...................................................................................................... 66 Figura 33: Tela de doenças crônicas......................................................................................... 67 LISTA DE TABELAS Tabela 1: Comparação entre os modelos de contexto. ............................................................. 29 Tabela 2: Exemplos de tecnologias sem fio. ............................................................................ 35 Tabela 3: Teste de Desempenho. .............................................................................................. 67 LISTA DE QUADROS Quadro 1: As Principais Tendências em Computação. ......................................................................... 18 Quadro 2: Exemplo mensagem HL7. .................................................................................................... 42 Quadro 3: Quantidade de caracteres armazenados nos QR Code.......................................................... 52 Quadro 4: Resultados do Teste de Usabilidade. .................................................................................... 68 SUMÁRIO INTRODUÇÃO ........................................................................................................................ 14 2 REVISÃO BIBLIOGRÁFICA .............................................................................................. 17 2.1 HISTÓRICO DA COMPUTAÇÃO UBÍQUA .................................................................. 17 2.2 RELAÇÃO ENTRE COMPUTAÇÃO UBÍQUA, MÓVEL, PERVASIVA E REALIDADE VIRTUAL ......................................................................................................... 18 2.3 PRINCÍPIOS DA COMPUTAÇÃO UBÍQUA ................................................................... 19 2.4 CENÁRIOS DA COMPUTAÇÃO UBÍQUA .................................................................... 21 2.5 ELEMENTOS CHAVE DE UM AMBIENTE UBÍQUO .................................................. 23 2.6 CONTEXTO....................................................................................................................... 25 2.6.1 Representação do Contexto .......................................................................................... 27 2.6.2 Tipos de Contexto .......................................................................................................... 29 2.6.3 Sistemas Sensíveis ao Contexto .................................................................................... 30 2.6.4 Exemplos de Sistemas Sensíveis ao Contexto .............................................................. 31 2.7 DESAFIOS DA COMPUTAÇÃO UBÍQUA ..................................................................... 33 2.8 A COMPUTAÇÃO UBÍQUA E AS TECNOLOGIAS NECESSÁRIAS ......................... 34 2.9 COMPUTAÇÃO UBÍQUA NA SAÚDE .......................................................................... 40 2.10 REGISTRO ELETRÔNICO DE SAÚDE ........................................................................ 40 2.11 PADRÕES DE INTEROPERABILIDADE DE INFORMAÇÕES MÉDICAS .............. 41 2.11.1 HL7 ............................................................................................................................... 42 2.11.2 CCR .............................................................................................................................. 43 2.11.3 Diferenças entre CCR e HL7 ...................................................................................... 44 3 TRABALHOS RELACIONADOS .................................................................................... 45 4 FERRAMENTAS E METODOLOGIA DE DESENVOLVIMENTO ........................... 46 4.1 TECNOLOGIAS USADAS ............................................................................................... 46 4.1.1 API HL7 para JAVA – HAPI ....................................................................................... 46 4.1.2 Android ........................................................................................................................... 47 4.1.3 Barcode Scanner ............................................................................................................ 50 4.1.4 QR Code ......................................................................................................................... 51 4.1.5 SQLite ............................................................................................................................. 52 4.1.6 Técnica de Representação do Contexto ....................................................................... 52 4.2 DESENVOLVIMENTO..................................................................................................... 53 4.2.1 Visão Geral do Sistema ................................................................................................. 53 4.2.2 Arquitetura do Sistema ................................................................................................. 53 4.2.3 Diagrama Entidade-Relacionamento ........................................................................... 54 4.2.4 Diagrama de Classes da Aplicação .............................................................................. 57 4.2.5 Diagrama de Classes do Serviço HL7 .......................................................................... 59 4.2.6 Sensibilidade ao Perfil do Usuário ............................................................................... 59 5 FUNCIONALIDADES DO APLICATIVO E TESTES .................................................. 61 5.1 FUNCIONALIDADES ...................................................................................................... 61 5.2 TELAS DO APLICATIVO ................................................................................................ 62 5.3 REALIZAÇÃO DE TESTES ............................................................................................. 67 CONCLUSÃO......................................................................................................................... 69 REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................. 70 14 INTRODUÇÃO Os sistemas de acompanhamento do histórico de saúde do paciente, também conhecidos como Sistema de Registro Eletrônico de Saúde (S-RES), contribuem consideravelmente no processo de tomada de decisões realizado por profissionais clínicos e no auxílio à prevenção de doenças. Entretanto, a quantidade de dados apresentada nas consultas realizadas nos sistemas atuais inviabiliza o trabalho dos médicos e enfermeiros, pois a procura da informação de que se necessita no momento do atendimento ao paciente exige tempo e atenção (VICENTINI et al, 2010). A utilização de novas tecnologias torna o conhecimento na área da saúde mais acessível e facilita o compartilhamento de informações médicas. Entre as áreas inovadoras que podem contribuir com a área da medicina, destacar-se a computação ubíqua ou internet das coisas, que através da aplicação da computação de forma onipresente (inserida de forma invisível no ambiente) possibilita uma melhora da interação entre os diversos equipamentos médicos, informações em bancos de dados de diversos modelos e os usuários (profissionais da saúde) no ambiente hospitalar (GOULART et al, 2010). Com o constante aumento no uso de aparelhos celulares, tablets e smartphones, a resistência dos usuários em relação ao seu uso no ambiente profissional diminuiu e permitiu a realização de pesquisas relacionadas à integração de dispositivos (fixos e móveis) de uma forma dinâmica (Figura 1). Este é um dos princípios da computação ubíqua, ou seja, a capacidade de utilizar diversos recursos da computação móvel em diferentes lugares, a qualquer momento (WEISER, 1991). Outro importante aspecto dessa concepção é a interação do usuário com o ambiente. A utilização de etiquetas bidimensionais em objetos proporciona que eles sejam identificados apenas de uma forma (MELOAN, 2003). O que resulta numa 15 interação entre o mundo virtual e físico com a internet das coisas (SIORPAES, 2006). Figura 1: Diferentes integrações na computação ubíqua. Fonte: http://www.ntt.com/release_e/letters/BK_is/03_apr/i1.html Outra característica da computação ubíqua é a sensibilidade ao contexto. A aplicação dita sensível ao contexto coleta elementos do ambiente e dos usuários inseridos neste e a partir deste ponto diversas adaptações podem ser realizadas de forma proativa por sistemas ubíquos. Estas modificações ajudam na realização das tarefas do usuário, pois através da combinação de interfaces intuitivas e processos proativos baseados em contexto, os usuários não precisam de conhecimentos específicos de computação para utilizar os sistemas de saúde de forma plena (SOUZA, 2010). De acordo com o trabalho realizado por Chen (2002), o contexto computacional pode ser definido como um conjunto de informações: (i) físicas; (ii) dos usuários ou do tempo; e, (iii) emocionais, que projetam dados que auxiliam sistemas e usuários na realização de suas tarefas. Informações do contexto do usuário podem adaptar seu perfil em relação às atividades desempenhadas por ele, ou seja, moldar a aplicação para que se torne de acordo com as suas preferências, tornando essas mudanças algo imperceptíveis para o usuário (MACHADO; AUGUSTIN, 2011). Dey (2001, p.3, tradução nossa), “contexto é qualquer informação que pode ser usado para caracterizar a situação de uma entidade. Uma entidade é uma pessoa, lugar ou objeto que considerado relevante para a interação entre um usuário e uma aplicação”. Com base nessas informações, este trabalho propõe uma arquitetura integrando sistemas móveis de consulta às informações de pacientes para ambientes hospitalares e tem 16 por objetivo propor um recurso diferenciado na identificação do contexto. O procedimento de consulta usará sensibilidade ao contexto do usuário a partir do tipo de profissional clínico, ou seja, o sistema destacará informações na tela que sejam relevantes para o diagnóstico ou tratamento de doenças. Soma-se à proposta, o uso de um padrão de comunicação médica, interoperável, o Health Level Seven (HL7) (HL7, 2011). O acesso ao cadastro do paciente será através de leitura de código de barras bidimensional. O trabalho está organizado como segue. O Capítulo 1 descreve a Introdução. O Capítulo 2 apresenta a Revisão Bibliográfica. Os Trabalhos Relacionados no Capítulo 3. O Capítulo 4 descreve as Ferramentas e Metodologia de Desenvolvimento. No Capítulo 5, as Funcionalidades do Aplicativo e Testes. Por fim, a Conclusão e Referências Bibliográficas. 17 2 REVISÃO BIBLIOGRÁFICA Neste capítulo é apresentada a revisão bibliográfica dos conceitos utilizados no trabalho, como: definição de computação ubíqua, de onde foi concentrada a concepção principal do trabalho, sensibilidade ao contexto, características do Registro Eletrônico de Saúde e as tecnologias de troca de mensagens médicas. 2.1 HISTÓRICO DA COMPUTAÇÃO UBÍQUA O termo computação ubíqua surgiu pela primeira vez em um artigo escrito por Mark Weiser, em 1991. The Computer for the 21st Century, descreve que interação entre as pessoas e os computadores se tornará imperceptível, ou seja, tudo acontecerá de forma mais natural possível, sem que o usuário perceba totalmente que está acionando um dispositivo ou uma aplicação. Em outras palavras, ela tem o intuito de se aproveitar da evolução da tecnologia, promovendo uma interação com maior transparência entre usuário e computador. Transparente no sentido de o utilizador estar manuseando um dispositivo ou uma aplicação sem ter que saber exatamente como eles operam. Outro aspecto da computação ubíqua ou internet das coisas está na capacidade de se conectar pela computação móvel a diversos recursos em diferentes lugares, a qualquer momento, com a disposição de todas as funcionalidades que estes recursos oferecem (WEISER, 1991). Pesquisando mais a fundo o significado etimológico da palavra ubíqua – do latim ubiquu, adjetivo – que está ao mesmo tempo em toda parte. Através da tecnologia móvel, sensoriamento de ambiente e interoperabilidade na comunicação, a computação se torna presente em qualquer lugar, no instante que o usuário desejar. Isso é um ambiente ubíquo que dotado de sensores, de dispositivos móveis, tudo trabalhando de forma recíproca; trocando informações a todo o momento, colhendo do cenário as informações relevantes na identificação de preferências e ajudando na realização de tarefas. A origem da computação ubíqua vem da passagem da Internet e da Computação Distribuída. Conforme demonstra o Quadro 1. Antigamente, nos mainframes, muitas pessoas trabalhavam num mesmo computador, depois chegaram os personal computers, uma pessoa para cada computador. Hoje, nesta nova etapa da evolução tecnológica, são muitos computadores para uma pessoa (DOMINGUES, 2008). 18 As Principais Tendências em Computação Mainframe Uma máquina para vários usuários Computador Pessoal Uma máquina para cada usuário Computação Ubíqua Muitas máquinas, um usuário. Quadro 1: As Principais Tendências em Computação. Fonte: http://www.johnseelybrown.com/calmtech.pdf. 2.2 RELAÇÃO ENTRE COMPUTAÇÃO UBÍQUA, MÓVEL, PERVASIVA E REALIDADE VIRTUAL Existem algumas diferenças conceituais entre os termos computação ubíqua e pervasiva, móvel e realidade virtual. A primeira é a intersecção da computação móvel com a pervasiva, ou seja, qualquer dispositivo móvel portado por uma pessoa em movimento consiga personalizar as aplicações, serviços, isto é, a partir da situação; configurá-los dinamicamente de acordo com a necessidade do usuário (GOMES, 2007) (CIRILO, 2007). A Figura 2 demonstra esta combinação. Computação Móvel Computação Ubíqua Computação Pervasiva Figura 2: Compartilhamento de recursos da computação móvel e pervasiva com a ubíqua. Fonte: https://twiki2.dcc.ufba.br/pub/MAT570FG/LivroseArtigos/045_AraujoRB.pdf A computação móvel envolve os sistemas computacionais, aplicações que executados nos mais diversos dispositivos trocando informações através de uma rede sem fio, permitindo assim a mobilidade dos aparelhos. A diferença dela para a computação ubíqua é que os dispositivos móveis não conseguem contextualizar as aplicações, isto é, não adequam ao usuário os serviços que estão distribuídos na rede sem para que ele possa realizar suas tarefas sem se preocupar com a tecnologia. Já a computação pervasiva relata que os computadores estarão distribuídos, localizados de forma invisível ou visível ao usuário. Assim, entende-se que os dispositivos não seriam mais máquinas estáticas, mas trabalhando mutuamente com usuários, agindo como sensores. Além disso, transmitindo informações para outros dispositivos e para aplicações (DOMINGUES, 2008). 19 A mobilidade na computação ubíqua é alta comparada com a pervasiva, conforme a Figura 3. Essa transição de equipamentos dentro do espaço é o transporte de aplicações que conversam com outros recursos computacionais, independente de dispositivo, seja qual for sua arquitetura, a mobilidade deve estar presente. Como na computação pervasiva nem todo dispositivo é móvel, é importante manter constantemente a disponibilidade de recursos (GOMES, 2007). Esse contexto pode-se considerar um desafio para a computação ubíqua: oferecer um suporte a essa movimentação de dados (ARAÚJO, 2003). Nível de insersão computacional ALTO Computação pervasiva Computação ubíqua BAIXO ALTO Sistemas tradicionais de computação Nível de mobilidade Computação móvel BAIXO Figura 3: Dimensões da computação ubíqua. Fonte: http://pet.ece.iisc.ernet.in/pallapa/issues.pdf Kirner e Siscoutto (2007), com relação à realidade virtual é “como uma nova geração de interface que usando representações tridimensionais mais próximas da realidade do usuário, permite romper a barreira da tela, além de possibilitar interações mais naturais”. Isto é, o mundo virtual é construído a partir da realidade do ser humano. Diferentemente da realidade virtual, a computação ubíqua invade o mundo real com computadores, dispositivos, sensores, redes sem fio, aplicações (WEISER, 1991). 2.3 PRINCÍPIOS DA COMPUTAÇÃO UBÍQUA Araújo (2001), a computação ubíqua possui alguns princípios que, entre os quais se destacam três: 20 Descentralização: A distribuição dos serviços entre os dispositivos na rede torna cada equipamento responsável por uma tarefa ou mais. Como resultado, é formada uma constante troca de informações, tornando o ambiente inteligente e podendo captar dados deste ou do usuário. Assim é um sistema distribuído. Outro ponto importante é a necessidade de atualizar dispositivos de diferentes capacidades e aspectos, conforme Figura 4. Para isso os servidores devem ser capazes de estabelecer essas diferenças, e possuir grande capacidade de processamento para poder tratar a diversidade de dispositivos. Figura 4: Princípio da descentralização na Computação Ubíqua. Fonte: http://sin054-dsu-20111.blogspot.com.br/2011/02/aula-03-principios-fundamentais-da.html Diversidade: O usuário de um desktop possui atualmente muitas ferramentas disponíveis para a realização de suas atividades. Eles podem pesquisar na web pelo navegador, criar planilhas eletrônicas, digitar textos, enviar e-mails. Ou seja, diversas funcionalidades num dispositivo e na maioria das vezes, executando uma sobre as outras. O princípio da diversidade defende a ideia de que cada dispositivo pode ter funcionalidades que são executadas melhor que em outros aparelhos, conforme Figura 5. Na computação ubíqua, esse aspecto se refere a atender necessidades específicas para usuários particulares. Outra concepção da diversidade é poder lidar com arquiteturas distintas de dispositivos, e desenvolvendo tecnologias comuns para plataformas com limitações próprias. 21 Figura 5: Diversidade das funcionalidades na Computação Ubíqua. Fonte: http://sin054-dsu-20111.blogspot.com.br/2011/02/aula-03-principios-fundamentais-da.htm Conectividade: a computação ubíqua detém a ideia de que aparelhos movam-se juntamente com usuários, acessando todos os serviços disponíveis entre muitas redes heterogêneas, de forma que o utilizador não perceba essa mudança. Para garantir esta mobilidade é imprescindível o uso de padrões de comunicação, que tornem interoperável a troca de informações. 2.4 CENÁRIOS DA COMPUTAÇÃO UBÍQUA Diversos cenários podem ser criados usando computação ubíqua. Entre eles podemse destacar hospitais, casas, indústrias, trânsito, educação, etc. Mas para que isso aconteça há necessidade de mudança nos paradigmas de desenvolvimento de softwares atualmente. Carro e Wagner (2006, p.1) “O modelo atual em que o projetista de software utiliza uma abstração de alto nível do hardware, terá de ser modificado, pois deve-se tirar proveito da computação massivamente paralela mas sem descuidar do consumo de energia e confiabilidade [...]”. A seguir são descritos 4 cenários da computação ubíqua: Hospitais: não é difícil de imaginar que no futuro os hospitais, partindo dos grandes centros e se estendendo até regiões mais remotas, terão capacidade de solucionar os problemas mais complexos. Com a ajuda da tecnologia, profissionais de saúde, através de um middleware que disponibilizará serviços personalizados em todo canto do ambiente hospitalar, portando dispositivos móveis, médicos terão acesso ao Prontuário Eletrônico do Paciente (PEP) através da identificação por etiquetas inteligentes, minimizando assim o trabalho mecânico e burocrático. Moraes, Souza e Prado (2009, 22 p.218) “Ambientes de Computação Ubíqua, em comunidades, lares e hospitais, podem ser extremamente úteis na construção de um modelo de Cuidado de Saúde Pervasivo”. Existirão sistemas que irão realizar checagens completas nos pacientes quando estes adentrarem no ambiente hospitalar, identificando qualquer anomalia e podendo até diagnosticá-los, se utilizando das informações contidas no PEP. Outro cenário é disparar alertas para que uma equipe de médicos faça atendimentos domiciliares. Sensores estarão a todo o momento cuidando pervasivamente de enfermos em suas casas. Um exemplo de projeto na área da medicina é ClinicSpace que já há algum tempo vem sendo desenvolvido com o objetivo de auxiliar os profissionais de saúde a gerenciar, executar e programar as tarefas diárias. Os médicos podem personalizar o gerenciamento das atividades clínicas e que devem responder às questões que definem o seu contexto (GMOB, 2010). Casas inteligentes: totalmente comunicáveis, as casas inteligentes do futuro deixarão a temperatura agradável antes mesmo de o usuário entrar no seu lar. Com bases nas informações de temperatura externa e interna, elas adequarão o sistema de climatização para a temperatura ideal. Poderão desligar o forno que foi esquecido ligado, acender a lareira, as luzes. Transformar a parede da sala numa TV de muitas polegadas. Acessar o programa favorito do utilizador, com bases no contexto do perfil do dono da casa. Poderão abrir e fechar cortinas, regulando a iluminação. Elas estarão sensoriando o ambiente, buscando sinais vitais de seus ocupantes, pois em caso de alguma anomalia poderiam disparar um alerta de voz. O uso de sensores de presença acoplados à roupa, calçados, ou até mesmo ao corpo do usuário tornará o ambiente monitorado por dispositivos, aplicações. Mateas et al apud Bolzani (2010, p.39) “A Computação Ubíqua tenta unir a tecnologia ao modo de vida, na forma de pequenos dispositivos computacionalmente integrados, servindo múltiplos usuários da casa”. Gator Tech Smart House (GTSH) é um projeto de casa inteligente desenvolvido pela Universidade da Flórida desde 2005. Essa concepção surgiu com a necessidade de ajudar pessoas idosas e com necessidades especiais mantendo a qualidade de vida. Os setores da casa são sensoriados, monitorando o estado de seus habitantes. Um middleware foi criado, ele é dividido em camadas de serviços, cada um responsável por alguma função (RIES, 2005). Educação: na escola do futuro, a educação ubíqua será criar métodos de aprendizagem a partir das dificuldades que cada aluno terá. Para Barbosa (2007, p.15) Educação Ubíqua é “[...] como um processo que ocorre em qualquer tempo e lugar, de forma 23 contínua, contextualizada e integrada ao cotidiano do aprendiz”. Com a evolução tecnológica, principalmente na parte de dispositivos móveis como os celulares, a informação ficará acessível em qualquer lugar a qualquer momento, resultando num processo de aprendizagem mais abrangente. Barbosa et al (2008) “a mobilidade do aprendiz e a percepção dos elementos que estão em seu contorno (contexto) são parte do processo educativo, que pode ocorrer de forma contínua, global e transparente”. Um aluno poderá ver um conteúdo de diversas formas, direto na sua classe, como texto, vídeos, imagens transitando em frente aos seus olhos. Um exemplo de projeto é o Ambiente Ubíquo de Apresentação de Slides (AmUbAS), que tem como objetivo compartilhar objetos de aprendizagem, como apresentações multimídia, proporcionando maior dinâmica às aulas. O intuito do sistema é impulsionar a interação entre o corpo docente e discente, tanto dentro como fora da sala de aula (VIDAL et al, 2010). Indústrias: num sistema de produção em larga escala é comum haver uma quantidade enorme de peças, máquinas e trabalhadores. Nesse cenário a dificuldade de encontrar um funcionário, fazer a contagem de estoque, identificar peças se torna cada vez maior conforme aumenta a produção. O uso de etiquetas inteligentes como Radio Frequency Identification (RFID) possibilita a localização rápida de um empregado através de leitores que varrem um ambiente, dependendo da sua capacidade de rastreamento. Cada ferramenta ou peça poderá portar uma etiqueta RFID que, acionando-se um leitor em instantes pode ser feita a contagem do estoque. A identificação de objetos se torna fácil e ágil com códigos de barras bidimensionais. 2.5 ELEMENTOS CHAVE DE UM AMBIENTE UBÍQUO Um ambiente ubíquo é tomado por dispositivos móveis, aplicativos móveis, redes sem fio, sensores, todos diferentes um dos outros, e onde existe uma constante troca de informações. Para que isso ocorra é necessário um serviço que providencie a mobilidade do usuário e o envio de dados entre os dispositivos. Tudo acontecendo de uma forma transparente para o utilizador, isto é, sem que haja necessidade dele saber exatamente como está acontecendo todo o processo. Uma vez que ambientes ubíquos são também geradores de situações, ou seja, a todo o momento ocorre um fato diferente, seja uma movimentação do usuário, uma necessidade específica para realizar uma tarefa, sejam ações improvisadas do usuário, um ambiente ubíquo 24 tem que ser capaz de conseguir se moldar às essas modificações das características do utilizador e do cenário, interpretando da melhor forma os elementos do contexto atual. Conhecer os fatos que rodeiam o usuário da aplicação faz com que esta possa interagir e agir mais proveitosamente em prol deste. A aplicação deve ser ciente do contexto, adaptando-se automaticamente às mudanças no ambiente e às necessidades correntes do usuário, sem exigir sua atenção. Tais aplicações devem explorar características do ambiente como localização do usuário, pessoas próximas, hora do dia, etc... fornecendo informações adequadas à situação ou atividade. (MACHADO, 2010, p.17) As características que são usadas como entradas nessas aplicações móveis e que podem se modificar a qualquer momento, devem ser captadas de forma integral para que sejam oferecidos serviços mais eficientes. E essas modificações podem ser vistas nas movimentações do usuário que modificam também as condições do ambiente em alguns aspectos, por exemplo, condições físicas, recursos computacionais disponíveis, etc (LOUREIRO et al, 2010). Nesse sentido, elementos chave do ambiente ubíquo são essenciais para uma aplicação poder se adaptar. Segundo Ley (2007, p.64), os elementos chave de um ambiente de computação ubíqua são: identificação, localização, detecção e conexão. Identificação Quando existe uma grande quantidade de objetos, indivíduos e fizer com que se tornem úteis, agindo de forma inteligente, há necessidade identificá-los de forma única no ambiente ubíquo. Enfim, os mecanismos que captarão as situações poderão escolher pelas melhores fontes de sinais disponíveis, ou a que se adequar ao tipo de contexto solicitado. Exemplo de tecnologias de identificação: RFID e códigos de barras bidimensionais. Localização A localização de objetos ou indivíduos caracteriza mais um importante papel num ambiente ubíquo: poder descobrir pessoas e objetos. Nino (2009, p.24) “[...] aplicações podem explorar tanto informações explícitas fornecidas pelo sistema, como também informações implícitas provenientes do contexto físico e computacional do ambiente e seus usuários”. Detecção 25 Identificação e localização geram muitas informações, porém, detectar a presença de alterações no ambiente ubíquo através de sensores é além de coletar dados, pode-se responder a certos eventos. Este conceito de sensores capazes de detectar, extrair dados e variações do ambiente onde o usuário se encontra, controlando, configurando e ajustando aplicações conforme a necessidade deste seria capaz de detectar a mútua presença tanto dos usuários como dos demais dispositivos presentes e interagir automaticamente entre eles construindo uma forma inteligente para sua melhor utilização. (KAHL; FLORIANO, 2012, p.4) Conexão O elemento conexão é muito importante num ambiente ubíquo, desde que seja rápida e estável. Forte, Souza e Prado (2006, p.287) “[...] a possibilidade de conexão a qualquer momento e de qualquer lugar outorgou aos usuários uma escolha e uma liberdade sem precedentes [...]”. Coletar informações do contexto com qualidade vai depender da qualidade dos serviços oferecidos, pois as fontes de contexto são também móveis, devendo ter-se um melhor tratamento com aspectos de conexão (VIEIRA et al, 2006, p.15). 2.6 CONTEXTO Contexto tem muitos sentidos do ponto de vista de alguns trabalhos. O autor Dey (2001, p.4) define contexto como “qualquer informação que pode ser usada para caracterizar a situação de uma entidade (pessoa, local ou objeto) que é considerada relevante para a interação entre o usuário e a aplicação, incluindo o próprio usuário e a aplicação”. Já Augustin apud Machado (2010, p.17) contexto é “toda informação relevante para aplicação que pode ser obtida por ela, podendo se referir a informações ambientais (recursos físicos), funcionais (recursos lógicos) ou comportamentais (perfil do usuário)”. Já os autores Truong, Abowd e Brotherton (2001) e Morse, Armstrong e Dey (2000) dividiram o contexto em seis dimensões: quem, o quê, quando, onde, por que e como, elas identificarão as informações contextuais e como pode ocorrer a captura. Em inglês são conhecidas como 5W+1H (Who, What, When, Where, Why e How). A seguir são apresentadas: Who: na construção de um aplicativo é muito importante conhecer os usuários, identificá-los. Ocorre que num cenário existam diferentes tipos de pessoas e deve-se levar em conta que nem sempre o usuário que captura os serviços é que vai acessar 26 eles, por isso a importância de saber quem é. É importante também saber alguns dados que devam ser considerados nessa dimensão como: o número de agentes que vão capturar as aplicações, o número de usuários que vão acessar as aplicações, as sobreposições entre ambos e o modo de captura (público, privado, compartilhado). What: para desempenhar as atividades o agente escolhe o que deseja capturar e ter acesso. Ou seja, quais atividades ele realiza frequentemente ou ocasionalmente. Estas informações geram um perfil que pode ser documentado e usado pelas aplicações na identificação de quem está solicitando o acesso a elas; When: esta dimensão trata o momento que ocorre a captura do serviço e o acesso a ele. O sistema pode utilizar o contexto do tempo para automatizar a inicialização dos serviços. Embora certos serviços iniciem com alguma frequência outros periodicamente é interessante tirar proveito dessa dimensão; Where: indica a localização onde está ocorrendo a captura e acesso aos serviços. É comum as pessoas trabalharem em diversos ambientes, por isso, deve-se levar em conta quando se compartilha serviços: a mobilidade do usuário. As aplicações sabendo do local do acesso dos usuários facilitarão a moldagem dos serviços e mostrar para os usuários quais recursos estão disponíveis naquele ambiente; Why: aqui é relevado as razões que um usuário usa determinada aplicação ou serviço, isto é, a motivação. Ou seja, quais motivos leva o agente ter determinadas ações. É questionado também o porquê um serviço é útil; How: esta dimensão abrange como a captura do contexto será efetuada. Seja por rede sem fio, Geo-Posicionamento por Satélite (GPS) ou triangulação de sinal, por exemplo. Além disso, define a quantidade de dispositivos que captura e acessa os serviços disponíveis. Araujo e Brézillon (2005) definiram que o contexto é relativo a algo, a um foco. O foco é uma tarefa ou um passo na resolução de um problema ou em uma tomada de decisão. Por exemplo, o contexto de um repórter de TV está em passar a notícia. O contexto de um diagnóstico médico está na tomada de decisão. Portanto para os autores, o contexto é sempre o foco de atenção atual do usuário. Ainda, o foco determina onde está o contexto e o que pode ser considerado como relevante, pois nem tudo que é contexto de uma situação é condescendente para tal. Outro exemplo, o foco na realização de um jogo de futebol busca informação na formação dos 27 times, na equipe de juízes, mas não é interessante saber se irá chover no dia, se o estádio é coberto. 2.6.1 Representação do Contexto A quantidade de informação capturada e acessada num modelo de representação do contexto é significativa. No entanto, a dificuldade é organizar o conteúdo de forma a filtrar apenas os dados relevantes para se atingir um foco. E com o passar do tempo, as informações tendem a perder a relevância, ficarem seu valor. O estudo de técnicas para representar o contexto para criação de sistemas tem crescido nos últimos anos. Atualmente, algumas formas de representar o contexto são utilizadas, cada uma com vantagens e desvantagens. A seguir são apresentadas algumas técnicas de como representar o contexto: Modelos Chave-Valor: é considerado o modelo mais simples de programar, pois se constitui de uma lista de pares de chaves. Para modelar o contexto cada chave é um atributo que identifica o elemento do contexto e atribui para essa chave um valor, por exemplo: Chave = nota Valor = menor que cinco Ação: Exibir mensagem “Aluno reprovado!” Modelos de Esquemas de Marcação: é um tipo de linguagem que marcam os dados contextuais. O eXtensible Markup Language (XML) é recomendado pela W3C para criação de dados organizados. Ele divide as informações de forma hierárquica através de tags. Um exemplo é o CC/PP (W3C, 2007) que é uma descrição dos recursos do dispositivo e preferências do usuário; Modelos Gráficos: a representação do contexto neste modelo baseia-se em abordagens Unified Modeling Language (UML), Object Role Modeling (ORM) e grafos textuais. Os modelos baseados em UML usam esta linguagem como perfis para representar o contexto, exemplo Context UML Profile (CMP) (SIMONS, 2007). 28 Context Modeling Language CML (HENRICKSEN; INDULSKA, 2006) utiliza ORM; Modelos baseados em Objetos: a orientação a objetos utiliza as técnicas de herança, encapsulamento e reusabilidade para definir as estruturas do contexto. Com essas técnicas é possível deixar a informação na linha da interface e os detalhes do processamento encapsulados nos objetos (VIEIRA et al, 2006); Modelos baseados em Ontologias: para o contexto, ontologias são conceituadas como um conjunto de primitivas representacionais com as quais modela um domínio do conhecimento. Esse conjunto fornece uma descrição lógica dos dados compartilhados, e define o vocabulário utilizado para compor expressões complexas (GRUBER, 1993). Uma pesquisa de Strang e C.L-Popien (2005) comparou os tipos de representações de contexto existentes e considerou os requisitos a seguir: 1) Composição Distribuída (dc): o modelo é do tipo distribuído e o contexto é montado levando em conta o dinamismo dos dados; 2) Validação Parcial (pv): verifica se o conhecimento é parcialmente inválido dependendo do modelo descrito; 3) Riqueza e Qualidade da Informação (qua): as informações captadas por sensores mudam a todo o momento, neste sentido é importante que a qualidade das informações coletadas; 4) Incompletude e Ambiguidade (inc): as redes de sensores disponibilizam informações que são incompletas e ambíguas. Este aspecto tem que ser atendido pela representação de contexto; 5) Nível de Formalidade (for): é necessário manter um nível de formalidade dos significados das informações coletadas para que não ocorram problemas na compreensão dos significados; 6) Aplicabilidade em Ambientes Existentes (app): considerando a parte de implementação, um modelo de contexto tem que ser aplicável em ambientes de desenvolvimento de aplicações sensíveis ao contexto. Na pesquisa de Strang e C.L-Popien (2005) foram caracterizadas as representações de contexto de acordo com os requisitos relacionados anteriormente, como podem ser 29 observadas na Tabela 1. O sinal “++” indica que a abordagem atende totalmente o requisito, o sinal “+” indica que atende parcialmente e “-“ não atende. Nota-se que o modelo baseado em ontologias atende todos os requisitos, parcial ou totalmente. Tabela 1: Comparação entre os modelos de contexto. Modelo/Requisitios dc pv qua inc for app Chave-valor - - - - - + Esquemas de + ++ - - + ++ Gráficos - - + - + + Objetos ++ + + + + + Ontologias ++ ++ + + ++ + marcação Fonte: http://elib.dlr.de/7444/1/Ubicomp2004ContextWSCameraReadyVersion.pdf 2.6.2 Tipos de Contexto Os autores Brezillon e Pomerol (1999) classificaram a relevância do conhecimento contextual na tomada de decisão em três tipos: (1) Conhecimento Externo (EK – External Knowledge): é o tipo de conhecimento que não tem relevância no foco da tarefa, ou seja, não possui interferência na decisão atual, mas é de conhecimento de todos os envolvidos; (2) Conhecimento Contextual (CK – Context Knowledge): esse é o tipo de contexto que não é usado explicitamente, mas influencia na resolução dos problemas. Ele é estruturado e invocado de acordo com o foco; (3) Contexto Procedimental (PC – Proceduralized Context): este surge a partir do CK e é o resultado dessa combinação de conhecimentos, sai dele o contexto para oferecer serviços sensíveis ao contexto. O conhecimento externo (EK) é a parte do contexto que não é relevante para uma determinada situação, para um determinado foco, conforme a Figura 6. Como no exemplo do jogo de futebol, no estádio existem torcedores de diferentes idades, classe social, raça, porém não são dados que podem interferir na realização do jogo. O conhecimento contextual (CK) é 30 o contexto significativamente relevante para entender a situação e tem forte relação com o foco (VIEIRA et al, 2009). Figura 6: Tipos de contextos e suas dinâmicas. Fonte: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.8174 No exemplo anterior, seriam as informações como localização dos jogadores, habilidades, condição física, experiência; agilidade; quantidades de jogadores disponíveis são dados relevantes para a realização da tarefa, no caso o jogo. E por último, o contexto procedimental (PC) surge a partir do CK, como no exemplo do jogo, o usuário pode saber que existem jogadores contundidos ou que há um atleta no banco de reservas com melhor habilidade para atuar na lateral (VIEIRA et al, 2009). 2.6.3 Sistemas Sensíveis ao Contexto Os sistemas sensíveis ao contexto alavancaram o interesse em usar as técnicas de como representar o contexto, de tornar sistemas computacionais cientes das mudanças de foco. Esses sistemas têm de ser flexíveis que possam se adaptar e capazes de atuar automaticamente para ajudar o usuário na realização de suas atividades, eles devem ser proativos. O contexto pode ser oriundo de fontes diferentes e, portanto, os sistemas devem saber trabalhar com esse impasse de modo que mantenha a interoperabilidade entre eles. (MACHADO, 2010, p. 18). Num ambiente ubíquo onde a mobilidade é o principal diferencial se comparar com um ambiente pervasivo, há uma série de fatores que estão implícitos e outros explícitos cujas 31 características podem ser ou não influentes na construção de argumentos para uma aplicação móvel, ou um middleware. Além disso, entre computadores e pessoas a maneira de comunicação é que esse último expresse sua vontade interagindo com o software ou hardware através do toque, cliques, escrita, etc. No entanto, o ser humano tem outros sentidos para expressar vontades como voz, gestos, presença; pensamentos, que poderão ser captados por sensores espalhados por um ambiente e interpretados por sistemas operacionais e aplicações móveis na forma de contexto. Para isso, uma aplicação móvel sensível ao contexto tem de ser capaz de extrair do ambiente (contexto da computação ou físico); do usuário ou do tempo, dados que ajudem na realização da tarefa (CHEN; KOTZ, 2002). E também capturar de maneira de ágil, a partir da informação do contexto, os serviços que estejam na rede para que o usuário possa utilizá-los na realização da tarefa a que foi designado. Tudo que esteja inserido no ambiente é contexto, desde que seja relevante para a aplicação. 2.6.4 Exemplos de Sistemas Sensíveis ao Contexto Existem algumas aplicações corporativas que usam a técnica de ciência do contexto. Embora seja uma área relativamente ainda em expansão e que falta mais experiência práticas na utilização de contexto, isso já é consequência do aumento do interesse do estudo dessa técnica. A seguir serão descritas duas ferramentas que utilizam sensibilidade ao contexto. GMAIL O sistema de gerenciamento de e-mails da empresa Google, o Gmail (GOOGLE, 2010) usa abordagem de ciência do contexto para promover dicas de serviços para os usuários. Na tela de visualização das mensagens, conforme a Figura 7, no lado direito, uma lista de propagandas relacionadas ao contexto da mensagem. Nota-se na imagem que a conversa é sobre conserto de um notebook, assim, é exibido ao usuário uma lista de links comerciais de empresas que prestam assistência técnica e venda de computadores portáteis. A publicidade é modificada conforme o conteúdo das mensagens. A cada novo e-mail o sistema filtra no contexto o que é relevante para exibir as propagandas aos leitores. 32 Figura 7: Propaganda sensível ao contexto no GMail. GUIAS TURÍSTICOS MÓVEIS Os serviços móveis no guia de turismo têm como propósito satisfazer as necessidades de informação dos turistas e proporcionando-lhes uma variedade informações turísticas relacionadas com a viagem. Os dados como acomodações, emergências, gastronomia, compras e lazer são exibidos para o turista (GRÜN et al, 2008). A Figura 8 mostra exemplos de aplicações móveis que trabalham como guias turísticos. Figura 8: Exemplo de guias turísticos móveis Fonte: http://reuse.cos.ufrj.br/files/publicacoes/mestrado/Mes_PaulaCibele.pdf 33 2.7 DESAFIOS DA COMPUTAÇÃO UBÍQUA A computação ubíqua impulsionará a tecnologia da informação para um patamar jamais visto. No entanto, para que isso aconteça ela terá alguns obstáculos a vencer pela frente. Considerados por alguns autores desafios pertinentes na realidade atual com relação às perspectivas de avanço tecnológico. Há de fato muito que se evoluir no quesito mobilidade, por exemplo, e principalmente na durabilidade da energia para dispositivos, pois o processamento que aplicações ubíquas exigem alto consumo de bateria, como também prolongar o uso do aparelho para dispor ao usuário. Outro fator importante são as redes sem fio. Existe uma variedade de tipos de redes sem fio, isso já é consolidado. No entanto, por possuírem características diferentes, é um desafio para computação ubíqua navegar em redes heterogêneas. E nesse contexto, criar mecanismos que facilitem a descoberta de serviços que agilizem a sincronização de dados, etc. Com as redes, dispositivos, sensores, situações distintas, a complexidade aumenta ao se projetar no computador as condições atuais do usuário e do ambiente de forma mais natural, o que torna também um grande obstáculo para a computação ubíqua: a computação sensível ao contexto. É relativamente complexa essa área, pois o contexto tem que ser extraído dinamicamente com qualidade e ser seguro quanto ao aspecto de extrair aquilo que não é sigiloso, respeitando o modelo da arquitetura de ciência do contexto (LOUREIRO et al, 2010). Os autores Buriol, Rosendo e Sheer (2009) comentam que a interação natural entre dispositivos e seres humanos é também um grande desafio para computação ubíqua. Diferente de teclados, mouses, os dispositivos com interfaces tangíveis têm a concepção de que existe um significado embutido na representação. Atualmente há avanços na área de reconhecimento de voz, escrita, porém o grande desafio é desenvolver procedimentos que reconheçam também gesticulações, formas de expressão e depois traduzi-las para uma aplicação na forma de contexto. Além disso, o desenvolvimento tecnológico de qualidade na área da computação ubíqua encontram-se outras demandas como (FLÔR et al, 2008): a) A sensibilidade ao contexto; b) Conexão espontânea, transparente e dinâmica; c) Formas diferenciadas de interação com dispositivos; 34 d) Segurança; e) Melhoria na capacidade dos dispositivos; f) Validação, privacidade e valor da informação. g) Disponibilidade; h) Escalabilidade; i) Corretude; j) Persistência, entre outros. No entanto, a computação ubíqua vem evoluindo bastante nos últimos anos. Áreas como educação, projetos para casas e saúde. Essa última pode ser considerada um dos ramos mais promissores. Brown e Adams (2007, p. 54, tradução nossa) “Ubiquitous Healthcare é um campo emergente de tecnologia que utiliza um grande número de sensores e atuadores para monitorar e melhorar as condições físicas e mentais dos pacientes”. Existem muitos autores com projetos na computação ubíqua na saúde como citado na seção 2.4 deste trabalho, consequência da promessa dessa área de alavancar as pesquisas da Internet das Coisas. 2.8 A COMPUTAÇÃO UBÍQUA E AS TECNOLOGIAS NECESSÁRIAS Na constituição de um ambiente ubíquo é necessário o trabalho conjunto de algumas tecnologias que ao se interagirem poderão capturar e disponibilizar a informação dinamicamente ao usuário com o uso de dispositivos. Abaixo serão descritas algumas dessas tecnologias como dispositivos, redes de computadores, sensores, linguagem de programação e sistemas operacionais. Dispositivos Novas tecnologias têm surgido com o passar dos anos no campo da mobilidade possuindo diferentes tamanhos, capacidade de processamento. Conforme Madeira (2007, p.23) “Em conjunto com novos dispositivos de entrada/saída, estas tecnologias podem ser consideradas como sendo aquelas que possibilitam o avanço na realização de aplicações e sistemas de Ubicomp”. Celulares, smartphones, tablets, netbooks, notebooks, utilizam recursos da rede executando aplicativos e acessando diferentes serviços e através dela os utilizadores podem se locomover, comunicando-se entre si e mantendo a interoperabilidade das informações. 35 Na medida em que a residência, o meio de transporte e o trabalho do usuário tornam-se os cenários de aplicação da computação ubíqua, oferecendo serviços como segurança, comodidade, informação, entretenimento, e muito mais, um universo incrível de dispositivos diferentes deverá existir para suportar estes serviços (ARAÚJO, 2006, p.10). Organizações como bancos, empresas de cartões de crédito criam aplicações que facilitam o cotidiano dos clientes, permitindo pagamentos e acesso à conta através de dispositivos móveis. Redes de Computadores Para que ocorra a comunicação entre dispositivos é necessário eles estarem conectados em uma rede com ou sem fio. As redes têm como finalidade dispor das informações, recursos a qualquer entidade, seja a onde for sua localização e com o crescente número de diferentes dispositivos as redes terão o desafio de manter a comunicação. Além disso, diferentes meios de acesso e a heterogeneidade das redes sem fio será um obstáculo para os futuros ambientes ubíquos. A natureza dos dispositivos ubíqüos tem elevado o crescimento do uso de tecnologias de redes sem fio, pois fazem dessas uma solução de interconexão mais fácil com ambientes até então inadequados ou então impossíveis de se manter uma comunicação devido à, por exemplo, altos custos e restrições tecnológicas (CORRÊA et al, 2006, p.2). Os tipos de redes de acesso sem fio mais conhecidas são: wi-fi, wimax, bluetooth e infravermelho, conforme a Tabela 2. Tabela 2: Exemplos de tecnologias sem fio. Tecnologia Padrão IEEE Infravermelho 802.11 (IrDA) Bluetooth 802.15 Wi-Fi 802.11 WiMax 802.16 Utilização Aplicações específicas. Normalmente utilizado para troca de informações ponto-a-ponto (P2P). Utilizado para redes pessoais, ou seja, em equipamentos pessoais para troca de informações em curta distância. Possui alcance maior que as outras duas tecnologias anteriores. Porém é utilizada somente para redes locais. Comunicação sem fio em longo alcance. Fonte: http://www.upf.br/computacao/images/stories/TCs/arquivos_20071/ricardo_oliveira.pdf 36 A transmissão por infravermelho IrDA ocorre por meio de pulsos de luz. Ela se caracteriza por não utilizar fios para se conectar e também que possui um comprimento de onda mais longo que o da luz invisível. Outra característica é que a comunicação só pode por apenas entre dois pontos, chamada de ponto-a-ponto. Como pode ser visto na Figura 9, o Bluetooth tanto pode ser ponto-a-ponto como multiponto. A tecnologia Bluetooth é um padrão considerado global sem fio e que permite uma comunicação rápida, simples e barata entre dispositivos. Figura 9: Conexões ponto-a-ponto e multiponto com Bluetooth. Fonte: http://www.lisha.ufsc.br/pub/Billo_BSC_2002.pdf Wi-Fi é marca registrada da empresa Wi-Fi Alliance, que cria produtos pertencentes à norma 802.11. Essa tecnologia sem fio trabalha em altas velocidades através de ondas de rádio, distâncias que variam de 100 metros até 300 metros. A WiMax acrônimo de World wide Interoperability for Microwave Access (Interoperabilidade Mundial para Acesso por Microondas), reconhecida também como uma tecnologia de banda larga sem fio e com alcance superior a Wi-Fi. Na teoria os equipamentos de WiMax atingem distâncias de até 50 km com uma banda passante de até 70 Mbp/s. Sensores O sensoriamento do ambiente é um ponto fundamental da computação ubíqua, pois a partir dele são capturadas as informações as quais são filtradas pelos sistemas computacionais que colocarão ou não relevância ao contexto. Loureiro (2007, p.1) “a noção que dispositivos 37 de computação e sensoriamento pequenos, inteligentes, e baratos irão eventualmente permear o ambiente, levando efetivamente a ambientes de computação ubíqua”. As redes de sensores são diferentes das redes Wi-Fi e WiMax, pois a comunicação nas redes de sensores não é fim-a-fim. A finalidade destes dispositivos é detectar as mudanças no ambiente e transmitir ao usuário. Figura 10: Exemplo de uma rede de sensores sem fio. Fonte: http://gta.ufrj.br/ftp/gta/TechReports/Ingrid05/tese.pdf Os sensores trabalham de forma transparente com o utilizador, ou seja, sem que ele saiba da existência dos sensores tanto individualmente como coletivamente. Na ilustração da Figura 10, o usuário pode estar localizado distantemente do local onde estão os sensores. Linguagem de Programação O desenvolvimento de aplicações para ambientes ubíquas requer eficiência da linguagem de programação usada, pois os dispositivos que executam essas aplicações têm, geralmente, menor capacidade de memória e processamento. Assim, é importante evitar a perda de dados quando a bateria acabar. Outro fator é a heterogeneidade de dispositivos, portanto, a portabilidade da aplicação também é fator importante (ARAÚJO, 2003, p. 62). Assim, a criação de programas para dispositivos móveis requer atenção em alguns pontos. Conforme Araújo (2003, p. 62), para programar sistemas ubíquos deve-se levar em consideração os seguintes critérios: Tamanho limitado da tela, capacidade de entrada de dados, poder limitado de processamento, memória, armazenamento persistente; Alta latência, largura de banda limitada e conectividade intermitente (o que os dispositivos esperam encontrar em termos de conectividade); 38 Utilizar a rede somente quando for necessário; Se utilizar a rede, retirar dela apenas o que for importante; Estar disponível quando a rede estiver off-line. Outras estratégias são importantes para o desenvolvimento de projetos de software para aplicativos móveis, como: manter simples a programação, criar códigos fontes de tamanhos menores; deixar o servidor fazer parte do trabalho mais oneroso, escolher cuidadosamente uma linguagem de programação; usar variáveis locais, evitar concatenação de string, usar threads e evitar sincronização, se a linguagem for Java minimizar o uso de memória (ARAÚJO, 2003, p. 63). Java conceitua-se com muita propriedade com relação aos requisitos para o desenvolvimento de aplicativos ubíquos, pois tem vantagem de ser multiplataforma, ou seja, pode ser executado em qualquer sistema operacional que possua a Máquina Virtual Java (MVJ) instalada. Com Java tem-se a possibilidade de criar aplicações muito eficientes para celulares e qualquer dispositivo em geral e também, além disso, é multi-thread cuja finalidade é suportar processamento paralelo múltiplo. A reutilização do código é outra vantagem e como consequência reduz-se o tempo de programação. Java exibe muitas características que facilitam o desenvolvimento de aplicações móveis. Entre elas, a portabilidade dos bytecodes permite a execução em diferentes hosts com diferentes arquiteturas de software e hardware; multithreading torna os agentes colaborativos e autônomos; serialização de objetos suporta a migração e persistência; carga de classe dinâmica permite o projeto de estratégias eficientes para a recuperação de código dos entes (AUGUSTIN, 2004, p. 76). A Figura 11 mostra como funciona a execução de programas escritos em Java em diferentes sistemas operacionais. No editor, o desenvolvedor escreve o código fonte que após é transformado em bytecodes através do compilador Java. Bytecodes é um código intermediário do código fonte e a aplicação final. Eles não são imediatamente executáveis, devem ser interpretados por uma MVJ pré-instalada no sistema operacional. 39 Figura 11: Processo de execução programas Java. Fonte: http://www.dca.fee.unicamp.br/cursos/PooJava/javaenv/bytecode.html Com isso, existe a portabilidade, pois no momento que os computadores possuam a MVJ instalada, a aplicação será executada da mesma forma que em outras arquiteturas. Portabilidade é essencial em ambientes ubíquos e Java oferece este requisito. A independência de plataforma que a Java oferece, a grande quantidade de bibliotecas disponíveis (de suporte a construção de interfaces gráficas a suporte de rede), e a existência de máquinas virtuais embutidas em vários dispositivos tornou a linguagem Java uma tecnologia chave para o desenvolvimento de software na computação ubíqua (CIRILO, 2007, p. 6). . Portanto, as aplicações que possam ser executadas nas diferentes plataformas existentes conduzem para atingir um dos princípios da computação ubíqua: disponibilizar o acesso a informação em qualquer lugar, em qualquer momento, seja qual for o dispositivo sendo usado. Sistemas Operacionais No topo das funcionalidades da computação ubíqua estão os software. Essas tecnologias fornecem ferramentas para programar e gerenciar os dispositivos em cenários ubíquos. Os software podem ser sistemas operacionais, ambientes ou aplicativos. Os sistemas operacionais gerenciam o hardware dos dispositivos fornecendo acesso a eles para o usuário. Os ambientes são as camadas que fornecem estruturas para a programação e os aplicativos oferecem os serviços aos utilizadores (CAMPIOLO, 2005, p.17). Muitos sistemas operacionais foram desenvolvidos para satisfazer às necessidades específicas da computação ubíqua: Google Android, Windows CE, Windows for Smart Cards, Palm OS, EPOC, QNX, GEOS, e muitos outros. Todos eles rodam em dispositivos com pouca memória e a maioria 40 são projetados para executarem em muitas diferentes plataformas de processadores (HANSMANN, 2003 apud CIRILO, 2007, p. 5). . Os sistemas operacionais para dispositivos móveis podem facilitar a programação, dirigindo os recursos de hardware. Enquanto os de desktops possuem uma variedade de funcionalidades, os sistemas operacionais de dispositivos ubíquos se concentram em aperfeiçoar tarefas, diminuindo a escassez de recursos de hardware. 2.9 COMPUTAÇÃO UBÍQUA NA SAÚDE A eficiência dos serviços hospitalares é causa de grandes debates e reflete não só na sociedade, mas globalmente. A cada ano que passa aumenta o número de atendimentos nos postos de saúde bem como nos hospitais centrais. Consequência disso acrescenta-se unidades hospitalares, aumenta o número de profissionais e proporcionalmente as dificuldades técnicas. Com esses fatos se produz um banco de informações enriquecido, porém muitas vezes difícil de analisar, bem como transformá-los em dados integrados e mais do que nunca interoperáveis. Além disso, as informações podem estar organizadas, mas não estão dispostas de uma forma que seja simples e rápido o acesso. O uso da computação ubíqua no ambiente hospitalar pode tornar a interação entre os profissionais de saúde e os equipamentos médicos mais dinâmica e eficiente. Este avanço é possível através da interpretação pelos sistemas eletromédicos das formas naturais de comunicação dos humanos: fala, movimentos de membros do corpo humano, gestos e contexto. Quanto mais natural for a interface entre a máquina e o homem, mais otimizados se tornarão os serviços prestados pelos estabelecimentos de saúde, trazendo diversos benefícios para os profissionais e para os pacientes (SOUZA, 2011, p. 7). Com isso, o uso da computação ubíqua vem para melhorar esta situação. Com a interoperabilidade dos sistemas, a disponibilidade da informação, vem facilitar e diminuir o tempo de acesso ao Registro Eletrônico de Saúde dos pacientes, sem que o usuário detenha toda sua atenção à manutenção da aplicação, é a proposta de melhoria dos serviços. 2.10 REGISTRO ELETRÔNICO DE SAÚDE O Registro Eletrônico de Saúde (RES) denominado também de Prontuário Eletrônico do Paciente (PEP) é uma base de dados construída a partir da inserção de informações por software de gestão hospitalar. Esses dados referentes ao paciente são obtidos no momento que 41 estão ocorrendo. Massad et al. (2003, p.6), “prontuário eletrônico é um meio físico, um repositório onde todas as informações de saúde, clínicas e administrativas, ao longo da vida de um indivíduo estão armazenadas”. Por outro lado, não se pode chamar o RES um sistema computacional, pelo contrário, ele está inserido nesse, como parte dele. Toda a trajetória da vida da saúde do paciente é gravada na base de dados de um RES. Ao longo desse caminho fatos como vacinas, doenças, acidentes e outros acontecimentos são gravados montando uma enorme base de dados. Alguns desses são extremamente relevantes e que ajudam na decisão dos profissionais de saúde e auxilia-os na prevenção e diagnósticos de doenças. No entanto, a quantidade de informações inviabiliza o trabalho dos profissionais de saúde, pois procurar a informação de que se precisa no momento do atendimento ao paciente é necessário tempo e atenção. Assim, a disponibilidade da informação e a interoperabilidade dos sistemas são extremamente importantes para o andamento dos processos. Garantir a interoperabilidade em Sistemas de Registro Eletrônico de Saúde (S-RES) se deve usar um padrão de comunicação para que ocorra a troca de mensagens entre dispositivos e aplicações médicas. Isto se deve pelo fato que atualmente existe uma variedade de softwares e bases de dados heterogêneas. “Portanto, o uso de padrões na área de informática em saúde contribui para a integração de dados médicos [...]” (SOARES, 2009, p. 63). 2.11 PADRÕES DE INTEROPERABILIDADE DE INFORMAÇÕES MÉDICAS Para que a troca de informação seja transparente tanto por aplicações locais num ambiente hospitalar como para fora dele se faz necessária interoperabilidade. Não importa a plataforma, nem a linguagem usada para desenvolver S-RES, a troca de mensagens ocorrerá devido ao padrão adotado. Esses padrões possuem uma nomenclatura própria para área da saúde, identificando individualmente desde o paciente até eventos como: atendimento ambulatorial, procedimentos cirúrgicos, doenças, diagnósticos, etc. Hoje existe uma variedade de padrões, porém procurou-se discriminar neste trabalho os mais solidificados que ofereçam melhor estrutura. Dentre estes se destacam Continuity Care of Record (CCR), criado pela empresa ASTM International e HL7 - CDA (Health Level Seven – Clinical Document Architecture) de propriedade da organização Health Level Seven. 42 2.11.1 HL7 Health Level Seven (HL7) é uma organização voluntária sem fins lucrativos, que foi fundada em 1987 com o objetivo de produzir protocolos e transações de seguradoras. O HL7 é específico para dados clínicos e administrativos (HL7, 2007). Conceituada como uma das Organizações Desenvolvedoras de Standarts (Padrões) que operando na área da saúde possui “um framework abrangente e normas relacionadas com o intercâmbio, integração, compartilhamento e recuperação de informações de saúde eletrônica que suporta prática clínica e gestão, execução e avaliação dos serviços da saúde” (GONÇALVES, 2010, p.16). Uma mensagem no padrão HL7 versão 2.4 é caracterizada por eventos, por exemplo, na admissão de pacientes, automaticamente um evento é disparado para todas as aplicações que estejam interessadas na informação (PETRY; LOPES, 2005). Como demonstra o Quadro 2, um exemplo de mensagem ADT^A01 enviada na admissão de paciente. MSH|^~\&|AccMgr|1|||20050110045504||ADT^A01|599102|P|2.3||| EVN|A01|20050110045502||||| PID|1||10006579^^^1^MRN^1||DUCK^DONALD^D||19241010|M||1|111 DUCK ST^^FOWL^CA^999990000^^M|1|8885551212|8885551212|1|2||40007716^^^AccMgr^VN^1|123121 234|||||||||||NO NK1|1|DUCK^HUEY|SO|3583 DUCK RD^^FOWL^CA^999990000|8885552222||Y|||||||||||||| PV1|1|I|PREOP^101^1^1^^^S|3|||37^DISNEY^WALT^^^^^^AccMgr^^^^CI|||01||||1|||37^DISNEY ^WALT^^^^^^AccMgr^^^^CI| Quadro 2: Exemplo mensagem HL7. Fonte: http://www.hosinc.com/products/interfaces/interface_documentation.htm#A01 Observando o Quadro 2, as mensagem são compostas por segmentos que são separados pelo caractere pipe. Cada pipe é um campo que contém uma informação. Os dados nos campos não são obrigatórios, pois o HL7 não verifica se o campo está vazio ou não. As mensagens são enviadas para toda aplicação que possua o recurso de receber as mensagens e interpretá-las. A Figura 12 mostra o funcionamento do envio das mensagens HL7. Figura 12: Funcionamento do HL7. Fonte: https://dspace.isep.ipp.pt/jspui/bitstream/123456789/74/1/Tese.pdf 43 A versão mais atual do HL7, a versão 3, foi desenvolvida com uma abordagem direcionada para orientação a objeto, usando princípios de Unified Modeling Language (UML) e a estrutura é criada com XML. Abaixo o histórico das versões (ABRAHÃO, 2005, p.9): 1987. Versão 1.0: Definido o âmbito e o formato de mensagens; 1988. Versão 2.0: Realizada uma série de atualizações; 1990. Versão 2.1: Primeira publicação do Padrão HL7. Efetivamente adotado (Estados Unidos); 1993. Primeira Afiliação Internacional (Alemanha, Holanda); 1994. Versão 2.2: Primeiro reconhecimento pela ANSI; 1997. Versão 2.3: Aprovada pela ANSI. Ampla implementação internacional; 1999. Versão 2.3.1: Aprovada pela ANSI. Realizadas atualizações; 2000. Versão 2.4: Aprovada pela ANSI. Adição de novos eventos, segmentos e mensagens; 2003. Versão 2.5: Aprovada pela ANSI. Adição de novos eventos, segmentos e mensagens; 2005. Versão 3.0 Normative Edition: Parcialmente aprovada pela ANSI. Reestruturação baseada em modelo orientado a objetos Reference Information Model (RIM); 2006. Versão 3.0 Normative Edition May 2006: Parcialmente aprovada pela ANSI. 2.11.2 CCR No ano de 2003 um grupo de médicos, enfermeiros e tecnólogos com o apoio da ASTM International, mais antiga das organizações de padrões de desenvolvimento, criaram um padrão para troca de informações da saúde de pessoas. Conforme a ASTM, o objetivo do Continuity of Care Record é usar a tecnologia da informação para trocar informações relevantes sobre a saúde dos pacientes (ASTM, 2007). O resumo das informações mais relevantes é feito pelo médico no fim da consulta. Este documento em CCR pode ser disponibilizado em papel ou eletronicamente em XML, conforme a Figura 13. A concepção é transportar as informações mais relevantes sobre a condição de saúde do paciente. 44 São dados como alergias, medicações, diagnósticos, procedimentos recentes, tratamentos recentes, recomendações para cuidados futuros, motivo de encaminhamento e transferência. É criado apenas um documento contendo todas as informações e após é disponibilizada para toda a rede. Figura 13: Criação de XML e documento pelo CCR. Fonte: http://www.nchica.org/Past/06/presentations/Kibbe.pdf 2.11.3 Diferenças entre CCR e HL7 Tanto CCR como HL7 são usados para transporte de dados clínicos. Na versão mais nova, o padrão HL7 é definido em formato XML, bem como o CCR. No entanto, versões mais antigas do HL7 são descritos em Encoding Rules Seven (ER7). A diferença mais específica entre as tecnologias é que o CCR envia às aplicações e usuários o resumo do atendimento, contendo todas as informações que o médico relatou serem relevantes, ou seja, existe apenas um envio de informação. Enquanto o HL7 envia partes de um atendimento. Por exemplo, é realizado um exame no paciente, uma mensagem é enviada para todas as aplicações que o enfermo recebeu tal procedimento. Com todas as mensagens HL7 enviadas de um paciente pode-se criar um resumo do atendimento. O que ocorre é que com HL7 o hospital sabe a informação em tempo real. CCR informa para aplicações o que ocorreu até o momento com o paciente e HL7 descreve o que está ocorrendo num determinado instante. 45 3 TRABALHOS RELACIONADOS No levantamento de trabalhos relacionados buscou-se a informações relacionadas à computação ubíqua móvel na medicina, fazendo uma breve descrição de suas principais características. A primeira aplicação relacionada foi desenvolvida sob o padrão de arquitetura de software, REST (Representational State Transfer). Este sistema móvel tem como objetivo principal a busca por resultados laboratoriais por nome de paciente. Trata-se de um sistema em que profissionais clínicos acessam as informações de pacientes que estão sendo atendidos. Selecionando o paciente desejado, abrirá uma lista com resultado de laboratório disponível para este paciente. Selecionando o resultado, aparecerão os detalhes do exame. Além disso, há a opção de fazer buscas por nome do paciente e por resultados de laboratório (ANDRY et al, 2011). O sistema utiliza padrão de comunicação HL7. Adiante foi relacionado um aplicativo móvel que se conecta as funcionalidades de um PEP através de web services. A meta dele é prestar ao médico acesso ao prontuário eletrônico do paciente em qualquer lugar, a qualquer momento. Em suma, o usuário pode inserir dados de seus pacientes e pesquisar, por exemplo, as medicações dos enfermos (MACHADO et al, 2010). O sistema trabalha com padrão de mensagem CCR. O próximo software relacionado é um aplicativo para Iphone e Ipad, cujo acesso aos dados é feito em um registro eletrônico de pacientes. De forma geral, o objetivo da aplicação é permitir ao usuário acessar informações referentes ao paciente dentro de uma base de dados e verificar, editar e excluir compromissos da agenda. O trabalho foi realizado no âmbito do projeto ClinicSpace. Para projetar os procedimentos do software foram abordadas algumas atividades essenciais dos médicos, obtidas através de pesquisa. Alguns elementos importantes podem ser destacados como o uso de serviços do Google Calendar e Health. O sistema usa também CCR para troca de informações médicas (GUERRA, 2010). Em seguida foi relacionado o software móvel Primary Health Care System (PHCS) . O usuário alvo é o agente de saúde, que desenvolve atividades no modelo assistencial Atenção Primária a Saúde (APS). O objetivo do sistema móvel é auxiliar na realização de ações preventivas nos pacientes, como automatizar formulários de cadastro e acompanhar os sinais vitais através de sensores. Todos os dados inseridos e sinais captados pelos sensores são enviados para uma base de dados. Quaisquer profissionais terão acesso a essas informações podendo fazer diagnósticos e prevenções (BARROS et al, 2011). O aplicativo foi desenvolvido sob a infraestrutura do projeto Cognitividade com Sensibilidade a Conexão 46 como Suporte a Otimização de Recursos em Malha Heterogênea (COMAH) (GERCOM UFPA, 2011). Por fim, o último trabalho relacionado foi o Sistema de Assistência a Urgência Médica (SAUM). Ele consiste em módulo desktop e embarcado num palmtop. O objetivo da aplicação é transferir informações em que ocorra caso de atendimento pelo Sistema de Atendimento Móvel de Urgência (SAMU). Através desse sistema é possível transmitir imagens, mensagens escritas ou sonoras entre a equipe do SAMU, médicos, e prontossocorros. Dessa forma, poderia se ter um atendimento à distância de médico e saber com antecedência se há leitos vagos para o enfermo no hospital (JUNIOR, 2008). 4 FERRAMENTAS E METODOLOGIA DE DESENVOLVIMENTO Neste capítulo é mostrada toda implementação do projeto que foi feita na ferramenta IDE Eclipse Indigo 3.7.2. As outras tecnologias utilizadas como HAPI, Android, SDK Android, QRCode, Barcode Scanner, SQLite serão descritas a seguir. O desenvolvimento, os diagramas entidade-relacionamento e de sequência bem como outros aspectos seguem a mesma seção. 4.1 TECNOLOGIAS USADAS 4.1.1 API HL7 para JAVA – HAPI Java possui uma API para programação do protocolo HL7. A HAPI (HL7 Application Programming Interface) (UNIVERSITY HEALTH NETWORK, 2001) é licenciada por Mozilla Public License e General Public License (GNU). Ela tem um conjunto de classes e interfaces que ajudam na criação de aplicativos com suporte a mensagens HL7. A API possui algumas funcionalidades, descritas a seguir: Cria e analisa mensagens para os dois tipos de codificação ER7 e XML; Possui muitas funções que transportam as mensagens; Classes que validam as mensagens no envio e no recebimento; Verifica a lógica das mensagens de acordo com a norma HL7. 47 A criação da tecnologia HL7 existe algumas ferramentas disponíveis. Como o aplicativo foi desenvolvido em Java, definiu-se usar esta API para criação da classe HL7 no projeto. Cabe ressaltar que a escolha por esse padrão de troca de mensagens médicas dentro de diversos que existem, se deu pelo fato do HL7 versão 2.4 atender exatamente a demanda atendida por esse trabalho, sob o ponto de vista da interoperabilidade das informações na estrutura proposta. Apesar de existir padrões mais aceitos como CCR e HL7 versão 3, exigiria um esforço desnecessário de adequação de seus padrões ao projeto, pois sua estrutura é complexa. 4.1.2 Android A escolha do sistema operacional Android (GOOGLE, 2011) se deu pelo fato de ser um sistema muito robusto, inovador e flexível. Além de ser desenvolvido em Linux, é livre, que já é de fato uma característica importante, possui uma interface visual rica em detalhes e várias aplicações que vem pré-instaladas que proporcionam para o desenvolvedor um ambiente favorável (LECHETA, 2010). Desde sua criação em 2007 pela empresa Google, o Android vem a cada nova versão adquirindo melhores funcionalidades, criando novas interfaces com um visual poderoso. Tudo isso surge com o intuito de programar com mais velocidade as ideias no sistema operacional móvel, para que os usuários tenham a chance de usufruir de uma ferramenta com muito mais recursos, extraindo o que há de melhor na primeira plataforma móvel aberta e livre (RABELLO, 2008). Como resultado dessa aceitação do sistema da Google, muitas empresas aderiram ao projeto. Por ser um software livre, essas organizações podem adequar o sistema e personalizálo de acordo com sua necessidade. Hoje o projeto conta com mais de 80 empresas do ramo, desde operadoras móveis até fabricantes de celulares, que formam o grupo denominado Open Handset Alliance (OHA) (OHA, 2012). Outro ponto importante é uma pesquisa divulgada pelo International Data Corporation (IDC), conforme a empresa, até 2016, o Android vai superar o Windows e se tornará o sistema operacional móvel mais utilizado. IDC (2012) “O crescimento do Android está diretamente ligado à propagação dos baixos preços dos dispositivos”. Até o fim de 2012 serão 1,1 bilhões de dispositivos (Figura 14) conectados em todo o mundo, e até 2016 essa marca chegará aos 1,84 bilhões, o dobro de 2011. Neste mercado, a 48 liderança da Microsoft cairá de 35,9% para 25,1% em 2016. Já o Android, passará de 29,4% em 2010 para 31,1% em 2016 (IDC, 2012). Figura 14: Previsão de conexões inteligentes até 2016. Fonte: http://www.idc.com/getdoc.jsp?containerId=prUS23398412. 4.1.2.1 Funcionalidades A linguagem para desenvolvimento de aplicações no Android é Java, totalmente livre. Galpin (2009, p.1) “Um dos pontos mais fortes da plataforma Android é que ela aproveita a linguagem de programação Java”. O sistema operacional possui um SDK que disponibiliza várias ferramentas e API para os programadores. As principais funcionalidades da plataforma são (SPINOLA, 2008): Framework de desenvolvimento de aplicações: reutilização de código e facilidade de acesso a recursos exclusivos e manutenção; Nova máquina virtual Dalvik: criada e otimizada pensando exclusivamente em dispositivos móveis e suas limitações; Navegador web integrado: baseado no projeto Open Source WebKit, o mesmo do iPhone e Nokia série 60; Biblioteca de gráficos otimizada para dispositivos móveis: exclusiva biblioteca para gráficos 2D (duas dimensões) e 3D (três dimensões) baseada na especificação OpenGL ES 1.0 e pode ter aceleração por hardware por opcional; SQLite: armazenamento de dados estruturados; Suporte multimídia: compatibilidade com os principais formatos do mercado; Telefonia com tecnologia GSM: as aplicações podem manipular operações telefônicas, caso o fabricante permita este acesso; 49 Bluetooth, EDGE, 3G, e Wi-Fi: foco nas principais tecnologias de transmissão de dados sem fio, também depende da permissão do fabricante para acesso; Câmera e GPS: pensando em transformar o celular em uma ferramenta para interação com redes sociais, também depende da permissão do fabricante para acesso; Ambiente de desenvolvimento com plug-in para Eclipse: inclui emulador, ferramentas para debug e supervisão de memória e desempenho. 4.1.2.2 Software Development Kit Android As aplicações no Android são desenvolvidas em Java mais o Software Development Kit (SDK) que possui documentação, código e utilitários para que os desenvolvedores consigam criar software de acordo com o padrão de desenvolvimento para Android. O SDK ainda possui um emulador de celular. Para que o programador possa executar o aplicativo é necessário compilar o código com as ferramentas do SDK. Juntamente com todos os dados e recursos em um pacote Android com sufixo .apk é o resultado que representa o aplicativo compilado (LECHETA, 2010, p. 29-31). O SDK é suportado nos seguintes sistemas operacionais: Windows XP (32-bit), Vista (32 ou 64-bit) ou Windows 7 (32 ou 64-bit); Mac OS X 10.5.8 ou posterior (somente x86); Linux (testado no Linux Ubuntu). Exemplo de aplicação desenvolvida para Android é o Barcode Scanner, decodificador de códigos de barras bidimensionais. A biblioteca utilizada é a ZXing (Zebra Crossing) (GOOGLE PROJECT, 2011). 4.1.2.3 Ciclo de Vida das Activities do Android Para entender o diagrama de classes como também o gerenciamento feito pelo Android das activities (telas), é necessário conhecer o funcionamento do ciclo de vida delas. Para controlar esse ciclo, o sistema operacional possui alguns métodos. São eles: onCreate(), onStart(), onResume(), onPause(), onStop() e onDestroy(). A Figura 15 mostra o ciclo. 50 Figura 15: Ciclo de vida das activities. Fonte: LECHETA, 2010, p. 96. O fluxo da Figura 14 significa (LECHETA, 2010, p.98): onCreate(): ele é chamado na primeira vez que a tela é executada; onRestart(): quando a activity é interrompida, o método é invocado antes da tela ser iniciada; onStart(): é invocado quando a tela está tornando-se visível para o usuário; onResume(): quando a tela está executando esse método é invocado; onPause(): para retornar para uma atividade anterior; onStop(): no momento que outra tela é chamada, a anterior é escondida; onDestroy(): a activity é destruída para liberar espaço na memória. 4.1.3 Barcode Scanner Barcode Scanner é um aplicativo para Android criado com a biblioteca de código aberto ZXing, abreviatura de “Zebra Crossing”. Com auxílio da câmera, o disposto tem a possibilidade de fazer a leitura de códigos de barras 1D/2D. Os tipos de código de barras que pode serem lidos com este aplicativo são: UPC-A e UPC-E, EAN-8 e EAN-13, Code 39, Code 93, Code 128, ITF, Codabar, RSS-14, QR Code, Data Matrix, Aztec, PDF 417 51 (GOOGLE PROJECT HOSTING, 2008). A aplicação pode ser baixada gratuitamente no repositório Android Market. Figura 16: Download, instalação e funcionamento do Barcode Scanner. A Figura 16 mostra os passos para baixar e instalar o aplicativo Barcode Scanner no celular. A última imagem é o software em funcionamento fazendo a varredura num código de barras. Atualmente o QR Code é o mais popular código 2D. Sua utilização está em indústrias, revistas, propagandas, etc. 4.1.4 QR Code Em 1994 a empresa japonesa Denso Wave desenvolveu um código de barras bidimensional, o QR Code (Figura 17), com o intuito de armazenar uma quantidade maior de informações e agilizar a codificação e leitura de caracteres do tipo Kanji. QR é acrônimo de Quick Response que é muito utilizado no Japão (DENSO WAVE, 2000). A escolha por esta tecnologia se deu pelo fato que é popularmente conhecida e muito utilizada entre tantas similares do mercado. Para gerar QR Codes existem sites que ao se digitar a informação desejada para codificar, é criado a etiqueta bidimensional. A decodificação é feita por aplicativos como o Barcode Scanner, citado na subseção anterior deste trabalho. Figura 17: Exemplo de QR Code. 52 Fonte: http://www.qrcode.com/qrfeature.html. Atualmente estas etiquetas bidimensionais são usadas para codificar Uniform Resource Locator (URL) direcionada para um site. Porém, os QR Codes podem armazenar diferentes tipos de caracateres. O Quadro 3 mostra os tipos e o tamanho: Apenas números Máximo 7089 dígitos numéricos Apenas alfanuméricos Máximo 4296 dígitos alfanuméricos Binários Máximo 2953 bytes Kanji, Kana Máximo 1817 caracteres Quadro 3: Quantidade de caracteres armazenados nos QR Code. Fonte: (DENSO WAVE, 2000). 4.1.5 SQLite SQLite é uma biblioteca em C que tem embutida um banco dados. Ela já vem préinstalada no Android. O software é destinado para aplicações que não requerem muita complexidade. Foi escolhido por ser um aplicativo de fácil usabilidade e implementação e também de pequeno porte, requisitos essenciais para dispositivos móveis. Alguns exemplos de onde o banco pode ser usado: sites, dispositivos e sistemas embarcados, ferramentas de estatística e análise (SQLITE, 2011). É um banco de dados ideal para aplicações móveis, onde os recursos são reduzidos. Um exemplo é armazenar os links ou conteúdo à escolha do usuário para gerar QR Codes. Algumas características do SQLite: Software livre/domínio público e multiplataforma; Mecanismo de armazenamento seguro com transações ACID; Não necessita de instalação, configuração ou administração; Implementa a maioria do SQL92; O banco de dados é guardado em um único arquivo; Suporta bases de dados acima de 2 terabytes; Sem dependências externas. 4.1.6 Técnica de Representação do Contexto 53 A técnica para representação do contexto escolhida foi o modelo chave-valor. O motivo da escolha foi devido aos requisitos de pouca capacidade computacional do dispositivo móvel e também devido às necessidades de tempo de processamento. 4.2 DESENVOLVIMENTO 4.2.1 Visão Geral do Sistema O sistema pode ser visto na Figura 18. Em resumo, o aplicativo é formado das seguintes partes: Uma aplicação móvel: o sistema permite visualizar as informações dos pacientes como: dados pessoais, exames, procedimentos médicos, diagnósticos, alergias e doenças crônicas; Um banco de dados: uma base que modela as informações referentes ao menu de opções; HL7Client: permite a troca de mensagens no padrão HL7 entre aplicações. APLICAÇÃO MÓVEL BD LOCAL NO DISPOSITIVO HL7Client Figura 18: Visão do sistema. 4.2.2 Arquitetura do Sistema 54 Na Figura 19 pode-se notar que através da aplicação é possível acessar a base de dados local do celular, na qual estão as informações dos pacientes. Outras bases, dispositivos HL7 RES local no celular Figura 19: Arquitetura do sistema. O profissional entra no sistema através de usuário e senha, mediante a confirmação dos dados o aplicativo chama o decodificador de QR Code instalado no celular para fazer a leitura da tag. Inicialmente foi realizada a criação de todas as interfaces do sistema. As interfaces foram construídas com o intuito de apresentar as informações dos pacientes, com ou sem conexão de rede, o RES foi criado dentro do banco de dados do celular para atender este fim. A arquitetura móvel pretende proporcionar aos profissionais de saúde a consulta às informações de pacientes para ambientes hospitalares utilizando tecnologias da computação ubíqua. Para isso, levaram-se em consideração no desenvolvimento da ideia os seguintes fatos: Software de gestão hospitalar são instalados em desktops, gerando demora e dificuldade ao acesso; Profissionais de saúde possuem uma agenda de atividades extensa, não dispondo de tempo para procurar a informação; Ambientes hospitalares são, geralmente, grandes e com fluxo intenso de pessoas; A base de dados de pacientes, os Registros Eletrônicos de Saúde, possuem informações enriquecidas, porém, a busca pelo dado necessário é demorada. 4.2.3 Diagrama Entidade-Relacionamento 55 Para modelagem do banco de dados foi feita a partir da extração de informações do documento redigido pelo Comitê de Padronização do Registro Clínico (PORTAL DA SAÚDE, 1999). Apesar de o documento ser antigo, ele foi usado com objetivo de apenas ter um horizonte das quais informações relevantes se deve ter para criar uma base de dados de um RES. A tabela patient está relacionada com a tabela event, que possui como eventos procedimentos médicos (tabela medicalprocedure), exames (tabela exam) e diagnósticos (tabela diagnosis). Um paciente pode ter diversos eventos durante sua vida como: vacinas, cirurgias, acidentes, internações hospitalares, atendimentos domiciliares e ambulatoriais, etc. E as tabelas allergy e chronicdisease estão relacionadas diretamente à tabela patient, pois são aspectos ligados somente ao paciente. O documento PRC indica para alguns campos que sejam populados com lista de códigos específicos da medicina, como o CID10 (Cadastro Internacional de Doenças). Na modelagem do banco foi usada apenas a descrição do código. 56 Figura 20 mostra o diagrama entidade-relacionamento do modelo de dados do sistema. Figura 20: Diagrama entidade-relacionamento. A seguir a descrição das principais entidades do modelo de dados: a) patient: representa os pacientes em atendimento, aqui se armazenam dados relevantes como: idade, sexo, local de nascimento, situação familiar, foto (se existir), hora do cadastro, data de nascimento. As entidades chronicdisease e allergy são relacionadas com o patient; b) event: aqui são armazenados os eventos ocorridos do paciente. Cada evento pode estar relacionado a um exame, diagnóstico, procedimento médico; 57 c) professional: nesta entidade são armazenados os dados do profissional, desde o usuário, senha e especialidade; d) wordlistofspecialty: esta entidade guarda as palavras relacionadas com a especialidade do profissional clínico. 4.2.4 Diagrama de Classes da Aplicação O sistema operacional móvel Android controla o ciclo de vida das activities ou telas. Uma tela poderá estar sendo executada em segundo plano, pausada ou parada. Quando uma tela sai do topo da pilha, ou seja, quando ela sai da execução, outra assume seu posto (LECHETA, 2010, p. 95). Conforme a Figura 21 todas as telas produzidas são subclasses da classe LifeCycle.class. Essa classe controla o ciclo de vida de todas as activities. Isso se faz necessário pelo fato de que as telas são chamadas através de passagem de parâmetro. Por exemplo, caso o médico atenda outro paciente, a aplicação deve destruir telas que guardam o código do paciente, evitando consultar o enfermo incorreto. Outro exemplo de utilidade do ciclo de vida é em caso seja necessário pausar a aplicação médica para chamar outra aplicação do celular. Um exemplo é em caso do profissional de saúde receber uma ligação telefônica, a aplicação médica ficará em segundo plano. A classe Screen1Login.class verifica o usuário e senha no banco de dados. Após é chamada a classe Screen2ReadQRCode.class, que por sua vez chama o aplicativo Barcode Scanner. Essa aplicação faz a leitura de códigos de barras bidimensional e passa como parâmetro o resultado da leitura. A tela Screen2ReadQRCode.class recebe o código do paciente e faz uma chamada através de uma intenção da tela Scren3ListActivity.class, passando como parâmetro o número do paciente. Nessa é criada uma lista de opções como dados demográficos (Screen4PersonalData.class), procedimentos médicos (Screen8MedicalProcedures.class), diagnósticos (Screen9Diagnosis.class), exames (Screen7Exams.class) e alergias (Screen5Allergy.class). A classe DBAdapter.class é responsável pelas SQL na base de dados. E por fim, a classe IdentifierOfContext.class faz a contextualização do usuário. 58 Figura 21: Diagrama de classes. 59 4.2.5 Diagrama de Classes do Serviço HL7 A arquitetura do sistema foi composta com o serviço de troca de mensagens médicas, o HL7 versão 2.4. É de conhecimento a variedade de tipos de mensagens HL7 que existem na norma. No entanto, para testar o uso desse padrão foi adotado no projeto apenas composição de mensagens do tipo ADT^01, usada em admissões de pacientes. A Figura 22 ilustra o diagrama de classes do serviço HL7 da aplicação. Figura 22: Diagrama de classes do serviço HL7 da aplicação. A classe CreateAMessage.class retira as informações necessárias do banco e compõe a mensagem HL7 que retorna uma string. Já a classe SendAndReceiveAMessage.class recebe como parâmetro a mensagem criada na CreateAMessage.class que por sua vez recebe também as respostas do servidor HL7. Para instanciar ambas foi criada a classe Sender.class. Os testes de envio e recebimento das mensagens foram feitos em laboratório. Foi utilizada a ferramenta Test Panel (UNIVERSITY HEALTH NETWORK, 2001) como servidor de mensagens HL7. 4.2.6 Sensibilidade ao Perfil do Usuário A contextualização do usuário é umas das características de um sistema ubíquo (ESCOBAR, 2011). “O contexto é um dos aspectos-chaves dos sistemas pervasivos e diz 60 respeito a toda informação que é relevante e que pode alterar sua funcionalidade” (Augustin apud Lima, 2006, p.3). Considerando esse atributo, a classe IdentifierOfContext.class, foi desenvolvida com o objetivo buscar as informações que sejam importantes no momento do atendimento ao paciente a partir do tipo de profissional. O fluxograma dessa operação é representado na Figura 23. RES chama Especialidade do clínico Classe IdentifierOfContext Activities Screen5Allergy, Screen6ChronicDisease, Screen7Exams, Screen8MedicalProcedu res, Screen9Diagnosis Tabela Allergy Tabela ChornicDisease Tabela Exam Tabela MedicalProcedure Tabela Diagnosis destaca Tabela WordListOfSpeci alty Interfaces XML String existe? sim Figura 23: Fluxograma do processo de identificação de contexto. Ao entrar na aplicação, o sistema identificará a especialidade do profissional. Essa especialidade está relacionada com uma tabela de palavras específicas. Seguindo, as activities (telas) antes de apresentar o conteúdo para o usuário invocam a classe IdentifierOfContext.class, cuja função é comparar cada palavra existente nos campos das tabelas allergy, chronicdisease, exam, medicalprocedure, diagnosis com o conjunto de strings existentes na tabela wordlistofspecialty. Se uma palavra existir, a classe IdentifierOfContext.class informará as activities para destacar essa informação na tela do usuário. Toma-se como exemplo um médico com especialidade em cardiologia, atende um enfermo. Acessa a aplicação, faz a leitura do QR Code. No momento da visualização das informações do paciente, será observada em destaque (fundo da fonte em cor diferente, por exemplo) a palavra diabetes, ou cardíaco; eletrocardiograma. Explorando assim a atenção do usuário nas informações que sejam cruciais e ajudando o médico ou outro profissional a obter um diagnóstico rápido. 61 5 FUNCIONALIDADES DO APLICATIVO E TESTES Neste capítulo são apresentadas as funcionalidades através do cenário de uso. Em seguida, são mostradas as telas do sistema e na próxima seção são mostrados os testes realizados. 5.1 FUNCIONALIDADES O cenário de uso aqui apresentado tem como objetivo principal avaliar a utilidade do sistema num ambiente hospitalar. Dentro de um hospital existe muita movimentação de pessoas, consequência de muitos atendimentos. Nesses por sua vez é usada a aplicação aqui proposta como meio de acesso às informações de saúde do paciente. Impõem-se nesse cenário que o hospital possui uma rede sem fio, estações de trabalho e servidores, trocando informações a todo o momento, todos os pacientes portando suas etiquetas bidimensionais. A essa rede está conectado o dispositivo móvel executando a aplicação proposta. Um enfermeiro com diversos atendimentos agendados necessita de agilidade e acesso às informações sobre os pacientes. Na visita a cada leito, acessa o sistema no celular com usuário e senha. Através da aplicação aciona a leitura do QR Code, portado pelo enfermo (Figura 24). Adiante, o sistema mostra telas, nelas o profissional de saúde tem acesso aos dados mais relevantes do paciente como: dados demográficos, exames realizados, procedimentos médicos, alergias e doenças crônicas. Na tela Exams, o enfermeiro atenta-se para dois destaques na tela: o paciente realizou um exame denominado eletrocardiograma, tendo como resultado hipertrofia ventricular. Aplicação móvel Mensagem HL7 Outras bases HL7 Ambiente Hospitalar Paciente Registro Eletrônico de Saúde local no celular QRCODE Figura 24: Cenário de uso. 62 A informação em destaque é extremamente relevante, pois o enfermeiro identifica que o paciente pratica atividades físicas regulares. Isso demonstra a importância de uma aplicação onde se emprega a sensibilidade ao contexto. É importante ressaltar que o cenário aqui descrito é fictício, foi criado apenas para visualizar a utilidade do aplicativo. 5.2 TELAS DO APLICATIVO Nesta seção serão apresentadas as telas do aplicativo, com descrições objetivas e suas funcionalidades. A Figura 25 mostra a tela de acesso no sistema. Figura 25: Tela de login. . 63 Na parte inferior notam-se as opções “Login” e “Cancel”. Depois de informar o usuário e senha, o utilizar pode pressionar o botão “Login”. Logo após o acesso ao aplicativo Figura 26: Tela de leitura do QR Code. ser efetuado com sucesso, a tela a seguir é mostrada ao usuário (Figura 26). Ela é responsável por chamar o aplicativo Barcode Scanner, acionando-se o botão “Read QRCode”. Figura 27: Tela de menu. 64 A Figura 27 é o menu de opções que o usuário possui para verificar as informações do paciente. Esta tela é mostra somente após a leitura com sucesso da etiqueta bidimensional. Figura 28: Tela de dados pessoais. Todas as opções do menu, com exceção da opção “Exit”, levam à outras telas, que possuem botões de retorno ao menu principal e leitura de um novo QR Code. Verificam-se também botões para visualizar os eventos anteriores, botão “Prev” e os próximos eventos ocorridos com o enfermo, botão “Next”. Pode-se notar também no frame em cada tela, o nome do profissional e o nome do paciente. A Figura 28 é a tela com os dados pessoais do paciente. A Figura 29 é a tela de exames. Nela a sensibilidade ao perfil do usuário é acionada, colocando uma cor de fundo nas palavras que sejam relacionadas com a especialidade do profissional. A Figura 30 representa os procedimentos médicos realizados pelo enfermo. Os diagnósticos podem ser vistos na Figura 31. Já as alergias, na Figura 32. E por fim, as doenças crônicas na Figura 33. 65 Figura 29: Tela de exames. Figura 30: Tela de procedimentos médicos. 66 Figura 31: Tela de diagnósticos. Figura 32: Tela de alergias. 67 Figura 33: Tela de doenças crônicas. 5.3 REALIZAÇÃO DE TESTES Foram feitos testes que tinham como objetivo verificar o tempo de desempenho do sistema e usabilidade. No teste de desempenho, tentou-se medir o tempo de resposta entre as trocas de telas, chamada do decodificador do QR Code, o Barcode Scanner, e chamadas no banco de dados. Além disso, buscou-se verificar o comportamento da aplicação quando forem executadas transações ou regras de negócio sob condições de carga normal ou limite de trabalho. A Tabela 3 mostra os resultados obtidos nos testes. Tabela 3: Teste de Desempenho. Evento Tempo de resposta (segundos) Inicialização do aplicativo 0.81 Login usuário 0.66 Barcode Scanner 2.1 Resposta leitura QR Code 1.1 Transição entre telas 1.2 Nota-se um tempo pouco significativo na resposta aos eventos. É importante ressaltar que em toda transição entre telas existe a execução de SQL. Foi criado um RES com maior quantidade de dados para testar o tempo de resposta às SQL. 68 Com o objetivo verificar a usabilidade do sistema, foram questionados alguns pontos para os usuários onde as respostas são oferecidas para eles numa escala de 0 a 5, conforme Quadro 4. Questões Usuário 1 Usuário 2 Usuário 3 Média Satisfação em relação ao uso do sistema 5,0 5,0 5,0 5,0 Em relação a sua expectativa ao que o sistema propôs fazer 4,0 4,0 5,0 4,3 Os leiautes das telas foram úteis 4,0 4,0 4,0 4,0 Quantidade de informação mostrada na tela 5,0 5,0 4,0 4,7 Organização da informação 4,0 4,0 5,0 4,3 Sequência de telas 5,0 5,0 5,0 5,0 Aprendizado para operar o sistema 4,0 4,0 5,0 4,3 Tempo para aprender usar o sistema 5,0 5,0 5,0 5,0 Lembranças e usos de comandos 5,0 5,0 5,0 5,0 Número de passos para executar uma tarefa 5,0 5,0 4,0 4,7 0,0 1,0 0,0 Falhas de sistema ocorreram 0,0 Quadro 4: Resultados do Teste de Usabilidade. Conforme os resultados a interface foi verificada, está correta e é de fácil compreensão e uso. 69 CONCLUSÃO A quantidade de informações em sistemas de gestão hospitalar e em RES inviabiliza o trabalho dos profissionais de saúde, pois procurar a informação de que se necessita no momento do atendimento ao paciente exige tempo e atenção. Assim, a disponibilidade da informação e a interoperabilidade dos sistemas são extremamente importantes para o andamento dos processos. Para isso, neste trabalho foi definido como objetivo o desenvolvimento de uma arquitetura de um sistema móvel executado em um dispositivo rodando Android que, utilizando conceitos de computação sensível a contexto e ubíqua, tem o objetivo de diminuir o tempo que um profissional de saúde leva para obter do prontuário do paciente os dados relevantes à sua especialidade a fim de agilizar o diagnóstico. Para ressaltar os dados relevantes à especialidade do profissional de saúde em questão, utilizou-se a informação da sua especialidade para mudar o fundo da cor do texto, dando destaque a palavras que estejam associadas à especialidade cadastrada para o usuário do sistema. No desenvolvimento foram usadas as ferramentas SDK Android 2.2, para linguagem de programação Java, HL7 versão para troca de informações médicas, conceitos de computação ubíqua, QR Code. Para leitura das tags foi utilizado o aplicativo Barcode Scanner. Como armazenamento de dados foi usado o banco de dados SQLite. A conclusão do trabalho verifica que foram atingidos com satisfação os objetivos propostos no projeto. Como trabalhos futuros sugere-se aperfeiçoar a segurança do sistema utilizando certificados digitais, parte considerada fundamental numa aplicação que disponibiliza informações sigilosas sobre os pacientes. Outro ponto a trabalhar é a sincronização com bases remotas, utilizando algum middleware livre como ferramenta de sincronismo. Isso por que o espaço para armazenamento de dados em dispositivos móveis é relativamente pequeno e não demanda tanto processamento. 70 REFERÊNCIAS BIBLIOGRÁFICAS ARAÚJO, Regina B. Computação Ubíqua: princípios, tecnologias e desafios. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES, 21, 2003, Natal. Anais. Minicurso: Livro Texto.Natal, RN: UFRN/DIMAp: UnP, 2003. 363. Disponível em: < https://twiki2. dcc.ufba.br/pub/MAT570FG/LivroseArtigos/045_AraujoRB.pdf>. Acesso em: 01 fev. 2012. ARAÚJO, Renata Mendes de.; BRÉZILLON, Patrick. Reinforcing shared contexto to improve collaboration. 2000. Disponível em:< http://www-desir.lip6.fr/ /publications/ pub_345_1_RIA_Brezillon_Araujo.pdf>. Acesso em: 05 jan. 2012. AUGUSTIN, Iara. Abstrações para uma linguagem de programação visando aplicações móveis em um ambiente de pervasive computing. 194 f. Tese de Doutorado em Ciência da Computação, Universidade Federal do Rio Grande do Sul, Porto Alegre, 2004, p.76. Disponível em: <http://www.lume.ufrgs.br/bitstream/handle/10183/3866/000405134.pdf? sequence=1>. Acesso em 04 abr. 2012. ASTM. ASTM E2369 05e1 standart specification for continuity of care record (CCR). Disponível em: <http://www.astm.org/Standards/E2369.htm>. Acesso em: 13 de jan. 2012. ANDRY, Francois et al. A mobile application acessing patients’ health records through a rest api. 2011. Disponível em: < http://www.fandry.net/pub/ANDRY_ET_AL_HealthINF11 .pdf>. Acesso em: 11 mar. 2012. BARBOSA, Débora Nice Ferrari. Um modelo de educação ubíqua orientado à consciência do contexto do aprendiz. 181 f. Tese de Doutorado Computação, Universidade Federal do Rio Grande do Sul, Porto Alegre, 2007, p.15. Disponível em: < http://www.lume.ufrgs.br/ bitstream/handle/10183/10271/000594754.pdf?sequence=1>. Acesso em: 10 fev. 2012 BARBOSA, Débora Nice Ferrari et al. Em direção a educação ubíqua: aprender sempre, em qualquer lugar, com qualquer dispositivo. 2008. Disponível em: < http://www.lume.ufrgs.br /bitstream/handle/10183/10271/000594754.pdf?sequence=1>. Acesso em: 10 fev. 2012. BURIOL, Tiago Martinuzzi; ROSENDO, Matheus; SCHEER, Sérgio. Proposta de plataforma baseada em realidade virtual para treinamento de atividades em linha viva. In: CONGRESSO IBERO-LATINO-AMERICANO DE MÉTODOS COMPUTACIONAI EM ENGENHARIA, 30, 2009, Armação dos Búzios. Anais. Curitiba: UFPR. Disponível em:<www.ppgmne.ufpr.b r/gvis/arquivos/publicacoes/buriol_et_al_CILAMCE2009.pdf>. Acesso em: 09 out. 2011. BROWN, Ian; ADAMS, Andrew A. The ethical challenges of ubiquitous healthcare. 2007, p. 54. Disponível em:<http://www.i-r-i-e.net/inhalt/008/008_9.pdf>. Acesso em: 14 ago. 2011. BREZILLON, P.; POMEROL, J.-Ch. Contextual knowledge sharing and cooperation in intelligent assistant systems. 1999. Disponível em:<http://reference.kfupm.edu.sa/content/ c/o/contextual_knowledge_sharing_and_coopera_124440.pdf>. Acesso em: 20 mar. 2012. 71 BARROS, Victor F. A. et al. Aplicativo móvel para automação e monitoração do sistema de atenção primária a saúde. 2011. Disponível em: < http://seer.ufrgs.br/cadernosdeinformatica /article/download/v6n1p241-244/11765>. Acesso em: 02 de mar. 2012. CHEN, G.; KOTZ, D. Solar: a pervasive-computing infrastructure for context-aware mobile applications. Technical Report TR2002-421, February 2002. Disponível em: <http://www.cs.dartmouth.edu/reports/TR2002-421.pdf>. Acesso em: 05 mar. 2012. CIRILO, Carlos E. Computação ubíqua: definição, princípios e tecnologias. 2007. Disponível em: < http://ufscar.academia.edu/ducirilo/Teaching/14124/Computacao_ Ubiqua_definicao_principios_e_tecnologias >. Acesso em: 10 de fev. 2012. CARRO, Luigi; WAGNER, Flávio R. Desafios para a computação pervasiva no futuro cenário tecnológico. In: GRANDES DESAFIOS COMPUTAÇÃO NO BRASIL 2006-2016. , 1, Campinas. Anais. Campinas: SBC. Disponível em:< http://www.ic.unicamp.br/~cmbm /desafios_SBC/Carro_Wagner.pdf>. Acesso em: 10 out. 2011. CHEN, G.; Kotz D. Solar: A pervasive-computing infrastructure for contexto-aware mobile applications. TECHNICAL REPORT TR2000-381. Darmouth Computer Science. Disponível em:< http://www.cs.dartmouth.edu/reports/TR2002-421.pdf>. Acesso em: 11 mar. 2012. CORRÊA, Underléa et al. Redes locais sem fio: conceitos e aplicações. In: ESCOLA REGIONAL DE REDES DE COMPUTADORES, 4, 2006, p. 2, Passo Fundo. Anais. Belo Horizonte: UFSM. Disponível em:<http://www.lbd.dcc. ufmg.br/colecoes/errc/ 2006/018.pdf>. Acesso em: 09 mai. 2012. CIRILO, Carlos Eduardo. Computação ubíqua: definição, princípios e tecnologias. 2007, p. 6. Disponível em:<http://ufscar.academia.edu/ducirilo/Teaching/14124/Computacao_Ubiqua_ definicao_principios_e_tecnologias>. Acesso em: 06 abr. 2012. CAMPIOLO, Rodrigo. Aspectos de modelagem de ambientes de computação ubíqua. 172 f. Dissertação de Mestrado em Ciência da Computação, Universidade Federal de Santa Catarina, Florianópolis, 2005, p. 17. Disponível em: < http://gta.ufrj.br/ftp/gta/TechReports/Ingrid05/te se.pdf>.Acesso em 28 nov. 2011. DEY, Anind K. Understanding and using context. Disponível em:< http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.67.236&rep=rep1&type=pdf>. Acesso em: 11 mar. 2012. DOMINGUES, Fabiano L. Computação ubíqua. 2008. Disponível em: < http://www.hardware.com.br/artigos/computacao-ubiqua/>. Acesso em: 13 mar. 2012. DENSO WAVE. QR Code. 2000. Disponível em:< http://www.qrcode.com/qrfeature.html>. Acesso em: 10 mar. 2012. ESCOBAR, Maurício da Silva; RIBEIRO, Marcelo Blois. U-MAS: Um meta-modelo para o desenvolvimento de aplicações multiagentes ubíquas. In: SIMPÓSIO BRASILEIRO DE SISTEMAS DE INFORMAÇÃO, 7, 2011, Salvador. Anais, Bahia: UFBA, 2011. Disponível em: < http://www.lbd.dcc.ufmg.br/colecoes/sbsi/2011/umas.pdf>. Acesso em: 12 de Março, 2012. 72 FORTE, Marcos; SOUZA, Wanderley Lopes; PRADO, Antonio Francisco. Utilizando ontologias e serviços web na computação ubíqua. In: SIMPÓSIO BRASILEIRO DE ENGENHARI DE SOFTWARE, 20, 2009, p. 287, Florianópolis. Anais. Belo Horizonte: UFMG. Disponível em: <http://www.lbd.dcc.ufmg.br:8080/colecoes/sbes/2006/019.pdf>. Acesso em: 09 jan. 2012. FLÔR, Daniela Eloise et al. MiD-Mobile Middleware distribuído para adaptação e gerenciamento de transações em ambiente de computação móvel. In: SEMINÁRIO INTEGRADO DE SOFTWARE E HARDWARE, 28, 2008, Belém do Pará. Anais. Belo Horizonte: UFMG. Disponível em:< http://www.lbd.dcc.ufmg.br/colecoes/semish/2008/010.p df>. Acesso em: 25 out. 2011. GOMES, Alexandre R. UbiquitOS – Uma proposta de arquitetura de middleware para adaptabilidade de serviços em sistemas de computação ubíqua. 100 f. Dissertação de Mestrado em Informática, Universidade Brasília, Brasília, 2007. Disponível em: < http://repositorio.bce.unb.br/bitstream/10482/2472/1/2007_AlexandreRodriguesGomes.pdf> Acesso em: 12 out. 2011. GOULART, Leandro J., et al. Saúde e tecnologia da informação: convergência e mobilidade. In: CONGRESSO BRASILEIRO DE INFORMÁTICA NA SAÚDE, 7, 2010, Curitiba. Anais. Curitiba: SBIS. Disponível em: <http://www.sbis.org.br/cbis/arquivos/670.pdf>. Acesso em: 10 ago. 2011. GRUPO DE SISTEMAS DE COMPUTAÇÃO MÓVEL. ClinicSpace – Auxílio às tarefas clínicas em um ambiente hospitalar do futuro baseado em tecnologias da computação ubíqua/pervasiva. Santa Maria: UFSM, 2010. Disponível em: <www-gmob.inf. ufsm.br>. Acesso em: 10 jul. 2011. GRUBER, Thomas R. A translation approach to portable ontology specifications. 1993. Disponível em:<http://www.dbis.informatik.hu-berlin.de/dbisold/lehre/WS0203/SemWeb/lit /KSL-92-17.pdf>. Acesso em: 20 nov. 2011. GRÜN, Christoph et al. Assisting tourists on the move – an evaluation of mobile tourist guides. 2008. Disponível em: <http://publik.tuwien.ac.at/files/PubDat_170357.pdf>. Acesso em: 04 abr. 2012. GONÇALVES, Luciano Witt. Prontuário eletrônico do paciente adotando padrões para telemedicina no Brasil. 2010. 49 f. Monografia de conclusão de curso (Graduação em Ciência da Computação), Universidade Federal do Rio Grande do Sul, Porto Alegre, 2010, p.16. Disponível em:<http://www.lume.ufrgs.br/bitstream/handle/10183/26348/000757803. .pdf?sequence=1>. Acesso em: 01 de maio, 2012. GOOGLE. Gmail. 2010. Disponível em:<https://mail.google.com/intl/pt/policies/>. Acesso em: 30 jun. 2012. ______. Android 2.2 platform. 2011. Disponível em: < http://developer.android.com/s>. dk/android-2.2.html>. Acesso em: 28 de Fevereiro, 2012. 73 GALPIN, Michael. Trabalhando com xml no Android. 2008, p.1. Disponível em: < http://www.ibm.com/developerworks/br/opensource/library/x-android/ >. Acesso em: 23 de abril, 2012. GOOGLE PROJECT. Zxing – Multi-format 1D/2D barcode image processing library with clients for Android, Java. 2011. Disponível em:< http://code.google.com/p/zxing/>. Acesso em: 10 out. 2011. GUERRA, Gustavo Pereira. Desenvolvimento de um aplicativo para iphone e ipad para acesso a informações médicas em um hospital pervasivo no âmbito do projeto clinicspace. 49 f. Trabalho de Conclusão de Curso, Universidade Federal de Santa Maria, Santa Maria, 2010. Disponível em: < http://www-app.inf.ufsm.br/bdtg/arquivo.php?id=137&download=1>. Acesso em: 03 de Março, 2012. GERCOM UFPA. Research Group on Computer Networks and Multimedia Communication. 2012. Disponível em:< http://gercom.ufpa.br/>. Acesso em: 07 de Abril, 2012. HL7. About HL7. Disponível em: <http://www.hl7.org/about/index.cfm?ref=nav>. Acesso em: 26 fev. 2012. IDC. Neraly 1 billion smart connected devices shipped in 2011 with shipments expected to double by 2016, according to IDC. Disponível em: < http://www.idc.com/getdoc.jsp?contai nerId=prUS23398412 >. Acesso em: 26 de abril, 2012 JÚNIOR, Henrique de Aguiar Sá Vila Nova. Proposta de um sistema ubíquo para ambiente hospitalar de Urgência. 2008. Disponível em: < http://www.unibratec.edu.br/tecnologus/wpcontent/uploads/2008/09/n3_vilanova_h.pdf>. Acesso em 09 de Março, 2012. KIRNER, Claudio; SISCOUTTO, Robson. Realidade virtual e aumentada: conceitos, projeto e aplicações. 2007. Disponível em:< http://www.de.ufpb.br/~labteve/publi/ 2007_svrps.pdf>. Acesso em: 3 jan. 2012. KAHL, Marcelo; FLORIANO, Diogo. Computação ubíqua, tecnologia sem limites. 2012, p.4. Disponível em:< http://www.ceavi.udesc.br/arquivos/id_submenu/387/diogo_floriano_ marcelo_kahl_computacao_ubiqua.pdf>. Acesso em: 12 fev. 2012. LEY, David. Ubiquitous Computing. 2007, p.64. Disponível em: < http://www.mmiweb.org. uk/publications/ict/emerging_tech02.pdf>. Acesso em: 10 mar. 2012. LOUREIRO, Antonio Alfredo Ferreira. Redes sem fio na computação ubíqua. 2007, p.1. Disponível em:<http://www.clickciencia.ufscar.br/page.php?story=471>. Acesso em: 30 mar. 2012. LECHETA, Ricardo Rodrigues. Google Android: aprenda a criar aplicações para dispositivos móveis com o Android sdk. 2.ed. p. 29-31, 95, 98. São Paulo: Novatec, 2010. LIMA, João Carlos Damasceno et al. Serviço de autenticação em espaços pervasivos, o caso do projeto pBuy. In: SIMPÓSIO DE INFORMÁTICA DA REGIÃO CENTRO/RS, 5, 2006, Santa Maria, p.3. Anais, Santa Maria: UNIFRA, 2006. Disponível em: < http://www.sirc.u 74 nifra.br/artigos2006/SIRC-Artigo12.pdf >. Acesso em: 15 mar. 2012. MELOAN, Steve. Toward a global internet of things. Sun Developer Network, 2003. Disponível em: <http://java.sun.com/developer/technicalArticles/Ecommerce/rfid/>. Acesso em: 12 ago. 2011. MACHADO, Alencar; AUGUSTIN, Iara. Associando contexto às tarefas clínicas na arquitetura clinicspace. In: SIMPÓSIO BRASILEIRO DE SISTEMAS DE INFORMAÇÃO, 7, 2011, Salvador. Anais. Bahia: UFBA, 2011. Disponível em: < http://www.lbd.dcc.ufmg.br/cole coes/sbsi/2011/associandocontexto.pdf>. Acesso em: 11 mar. 2012. ______. Associação do contexto de interesse do usuário às atividades clínicas na arquitetura clinicspace. 2010. 92 f. Dissertação de Mestrado em Ciência da Computação, Universidade Federal de Santa Maria, Santa Maria, 2010, p.18. Disponível em: <http://cascavel.cpd.ufsm.br/tede/tde_busca/arquivo.php?codArquivo=3467>. Acesso em: 31 de jan. 2012. ______. et al. Aplicações móveis de acesso às informações do paciente. In: CONGRESSO BRASILEIRO DE INFORMÁTICA NA SAÚDE, 22, 2010, Porto de Galinhas. Anais. Porto de Galinhas: ITARGET, 2010. MORAES, João Luís Cardoso de; SOUZA, Wanderley Lopes de; PRADO, Antonio Francisco do. Ambiente de Computação. In: SEMINÁRIO INTEGRADO DE SOFTWARE E HARDWARE, 36, 2009, Bento Gonçalves. Anais. Bento Gonçalves: UFRGS. Disponível em: <http://www.lbd.dcc.ufmg.br/colecoes/semish/2009/005.pdf>. Acesso em: 10 jan. 2012. MATEAS, Michael et al apud BOLZANI, Caio Augustus Morais. Análise de arquiteturas e desenvolvimento de uma plataforma para residências inteligentes. 155 f. Tese de Doutorado em Engenharia Elétrica, Universidade de São Paulo, São Paulo, 2010, p.39. Disponível em: < http://www.teses.usp.br/teses/disponiveis/3/3142/tde-12082010-112005/publico/Tese_Caio_ Augustus_Morais_Bolzani.pdf>. Acesso em 21 nov. 2011. MORSE, David R.; ARMSTRONG, Stephen; DEY, Anind K. The what, who, where, and how of context awareness (2000). 2000. Disponível em:< http://citeseerx.ist .psu.edu/viewdo c/summary?doi=10.1.1.32.8174>. Acesso em: 23 mar. 2012. MADEIRA, Rui Miguel Neves G. Uma infra-estrutura computacional para aumentar objectos reais com informação adicional. 181 f. Dissertação de Mestrado em Engenharia Informática, Universidade Nova de Lisboa, Lisboa, 2007, p.23. Disponível em: < http://run. unl.pt/ bitstream/10362/1963/1/Madeira_2007.pdf>. Acesso em 28 nov. 2011. MASSAD, Eduardo et al. O prontuário eletrônico do paciente na assistência, informação e conhecimento. 2003, p. 6. Disponível em:<http://www.sbis.org.br/site/arquivos/prontuario. pdf>. Acesso em: 13 fev. 2012. NINO, Cássia Pereira. MaPS – Um framework para aplicações colaborativas em ambientes de computação ubíqua. 75 f. Dissertação de Mestrado em Computação, Universidade do Vale do Rio do Sinos, São Leopoldo, 2009, p.24. Disponível em: < http://bdtd.unisinos.br/ 75 tde_arquivos/1/TDE-2009-07-18T111405Z-771/Publico/NinoCassiaPereiraComputacao.pdf>. Acesso em: 10 fev. 2012. OHA. Open Handset Alliance Members. 2012. Disponível em: < http://www.openhandsetal. liance.com/oha_members.html>. Acesso em: 22 de abril, 2012. PETRY, Karine; LOPES, Paula Marien Albrecht. Modelos para interoperabilidade de sistemas hospitalares utilizando padrão HL7. 2005. 189 p. Monografia de conclusão de curso (Graduação em Sistemas de Informação), Universidade Federal de Santa Catarina, Florianópolis, 2005. Disponível em: < http://projetos.inf.ufsc.br/arquivos_projetos/projeto_377/Interoperabilidade%20de%20Sistem as%20Hospitalares%20Utilizando%20o%20Padr%E3o%20HL7.pdf>. Acesso em: 01 mai. 2012. PORTAL DA SAÚDE. Conjunto essencial de informações do prontuário para integração da informação em saúde. 1999. Disponível em:< http://portal.saude.gov.br/portal/arquivos/pd f>. Acesso em: 04 ago. 2011. RIES, Luis H. Estudo de arquiteturas para computação pervasiva. 2005. Disponível em: <http://gse.ufsc.br/~bezerra/students/_outros_orientadores/LuisHenriqueRies/ti1.pdf>. Acesso em: 04 set. 2011. RABELLO, Ramon Ribeiro. Android: um novo paradigma de desenvolvimento móvel. Disponível em: < http://www.cesar.org.br/site/files/file/WM18_Android.pdf >. Acesso em: 21 de abril, 2012. SIORPAES, Sven, et al. Mobile interaction with the internet of things. 2006. Disponível em: <http://www.medien.ifi.lmu.de/pubdb/publications/pub/siorpaes2006pervasivelbr/siorpaes200 6pervasivelbr.pdf>. Acesso em: 10 set. 2011. SOUZA, Marcos Vinicius Bittencourt de. Inferência de atividades clínicas na arquitetura clinicspace a partir de propriedades do contexto. 153 f. Dissertação de Mestrado em Computação, Universidade Federal de Santa Maria, Santa Maria, 2010. Disponível em: <http://cascavel.cpd.ufsm.br/tede/tde_busca/arquivo.php?codArquivo=3444>. Acesso em: 27 fev. 2012. STRANG, Thomas; LINNHOFF-POPIEN, Claudia. A context modeling survey. 2004. Disponível em:< http://elib.dlr.de/7444/1/Ubicomp2004ContextWSCameraReadyVersion.pdf >. Acesso em: 30 abr. 2012. SOUZA, Alexandre Renato Rodrigues. Medicina ubíqua. 2011, p.7. Disponível em:< http://ubiq.inf.ufpel.edu.br/sscau/lib/exe/fetch.php?media=2011-12-25_alexandre_medic ina_ubiqua.pdf>. Acesso em: 20 mai. 2012. SOARES, Vinicius de F. Identificação única de pacientes em fontes de dados distribuídas e heterogêneas. 2009. 153 f. Dissertação de Mestrado em Informática, Universidade Federal do Espírito Santo, Vitória, 2009, p.63. Disponível em:< http://codims.lprm.inf.ufes.br/publicaco es/dissertacaoVinicius.pdf>. Acesso em: 10 de fev. 2012. 76 SPINOLA, Eduardo Oliveira. Android, a nova plataforma móvel – parte 1. Disponível em: < http://www.devmedia.com.br/android-a-nova-plataforma-movel-parte-i/8431>. Acesso em: 25 de abril, 2012. SQLITE. About SQLite. 2011. Disponível em:< http://www.sqlite.org/about.html>. Acesso em: 01 jul. 2012. TRUONG, Khai N.; ABOWD, Gregory D.; BROTHERTON, Jason A. Who, what, when, where, how: design issues of capture & access applications. 2001. Disponível em:< http://khaitruong.com/publications/UBICOMP-2001.pdf>. Acesso em: 13 mar. 2012. TEIXEIRA, Ingrid. Roteamento com balanceamento de consumo de energia para redes de sensores sem fio. 109 f. Dissertação de Mestrado em Ciências em Engenharia Elétrica, Universidade Federal do Rio de Janeiro, Rio de Janeiro, 2005, p.7. Disponível em: < http://gta.ufrj.br/ftp/gta/TechReports/Ingrid05/tese.pdf>. Acesso em: 28 nov. 2011. UNIVERSITY HEALTH NETWORK. HAPI. 2001. Disponível em: < hl7api.sourceforge.net >. Acesso em: 20 nov. 2011. VICENTINI, Caroline F., et al. PEHS – Arquitetura de um sistema de informação pervasivo para auxílio às atividades clínicas. Revista Brasileira de Computação Aplicada. Passo Fundo, n.2, set. 2010. Disponível em: <http://www.upf.br/seer/index.php/rbca/article/view/970/783> Acesso em: 10 ago. 2011. VIEIRA, Vaninha et al. Uso e representação de contexto em sistemas computacionais. 2006, p.15. Disponível em:< http://www.cin.ufpe.br/~fcf3/Contexto%20Computacional/Artigos%20 Computacional/Artigos%20B%E1sicos/Minicurso-SBSC-Texto-FINAL.pdf>. Acesso em: 15 out. 2011. VIDAL, Derig Almeida et al. Um ambiente ubíquo para o suporte ao compartilhamento de recursos educativos. In: CIRCUITO DE TECNOLOGIA DA INFORMAÇÃO, 6, 2010, Rio de Janeiro. Anais. Rio de Janeiro: Essentia. Disponível em: < http://www.essentiaeditora.iff. edu.br/index.php/citi/article/viewFile/1448/676>. Acesso em: 10 jan. 2012. W3C. Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 2.0 W3C Working Draft 30 April 2007. Disponível em: < http://www.w3.org/TR/2007/WDCCPP-struct-vocab2-20070430/>. Acesso em: 30 jun. 2012. WEISER, Mark. The computer for the 21st century. Scientific American. [S.l.], p.94 – 104, 1991. Disponível em: <http://www.ubiq.com/hypertext/weiser/SciAmDraft3.html>. Acesso em: 10 de ago. 2011.