UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE INFORMÁTICA CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO ANDRESSA CAROLINE PORTES DA CUNHA MELINA DERALDO DOS SANTOS IMPLEMENTAÇÃO DE GRÁFICOS PARA ANÁLISE DO PERFIL EPIDEMIOLÓGICO DE IDOSOS INSTITUCIONALIZADOS EM CURITIBA MONOGRAFIA CURITIBA 2010 II ANDRESSA CAROLINE PORTES DA CUNHA MELINA DERALDO DOS SANTOS IMPLEMENTAÇÃO DE GRÁFICOS PARA ANÁLISE DO PERFIL EPIDEMIOLÓGICO DE IDOSOS INSTITUCIONALIZADOS EM CURITIBA Monografia Metodologia apresentada de à Pesquisa disciplina do curso de de Bacharelado em Sistemas de Informação como requisito parcial para a obtenção de nota. Orientador: Prof. Dr. Laudelino Cordeiro Bastos CURITIBA 2010 III Este trabalho está licenciado sob uma Licença Creative Commons AtribuiçãoUso Não-Comercial-Vedada a Criação de Obras Derivadas 2.5 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-ncnd/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, Califórnia 94105, USA. IV LISTA DE FIGURAS Figura 1 – EXEMPLO GRÁFICO DE GANTT...........................................................19 Figura 2 – ELEMENTOS DO DIAGRAMA DE CASOS DE USO .............................20 Figura 3 – EXEMPLO DE UMA CLASSE DO DIAGRAMA DE CLASSES .............21 Figura 4 – EXEMPLO DE UMA TABELA DO DIAGRAMA ENTIDADE REALACIONAMENTO .............................................................................................22 Figura 5 – DIAGRAMA DE CASOS DE USO............................................................38 Figura 6 – DIAGRAMA ENTIDADE RELACIONAMENTO.....................................39 Figura 7 – DIAGRAMA DE CLASSES ......................................................................40 Figura 8 – REPRESENTAÇÃO DA TABELA “INSTITUICAO” NO ORACLE DATABASE 10g EDITION .............................................................................................................61 Figura 9 – TELA INICIAL..........................................................................................61 Figura 10 – ENTIDADES SELECIONADAS .............................................................62 Figura 11 – IDOSO x INSTITUIÇÃO .........................................................................63 Figura 12 – TELA DO GRÁFICO ...............................................................................64 V LISTA DE GRÁFICOS Gráfico 1 – GRÁFICO DE GANTT ............................................................................36 Gráfico 2 – BURNDOWN CHART INICIAL .............................................................37 Gráfico 3 – BURNDOWN CHART PARCIAL ...........................................................58 Gráfico 4 – BURNDOWN CHART INICIAL REAVALIADO ...................................59 Gráfico 5 – BURNDOWN CHART FINAL ................................................................60 VI LISTA DE QUADROS Quadro 1 – EXEMPLO DE CRONOGRAMA.............................................................18 Quadro 2 – CRONOGRAMA DE ATIVIDADES .......................................................34 VII LISTA DE TABELAS Tabela 1 – TIPOS DA LINGUAGEM JAVA ..............................................................25 Tabela 2 – COMPONENTES GRÁFICOS DA INTERFACE......................................27 Tabela 3 – CLASSIFICAÇÃO DOS ARTIGOS DE ACORDO COM O GRAU DE IMPORTÂNCIA .........................................................................................................30 Tabela 4 – CLASSIFICAÇÃO DOS ARTIGOS DE ACORDO COM A ABORDAGEM DE PESQUISA .................................................................................................................32 Tabela 5 – DATAS PREVISTAS x DATAS REAIS....................................................56 Tabela 6 – OPÇÕES DA TELA INICIAL ...................................................................62 Tabela 6 – OPÇÕES DA SEGUNDA TELA ...............................................................63 VIII LISTA DE ABREVIATURAS E SIGLAS DER Diagrama Entidade Relacionamento ILPI Instituição de Longa Permanência para Idosos GUI Interface Gráfica com o Usuário (Graphical User Interface) MER Modelo Entidade Relacionamento SGBD Sistema Gerenciador de Banco de Dados SQL Structured Query Language UML Unified Modeling Language IX SUMÁRIO 1 INTRODUÇÃO ......................................................................................................11 1.1 Título ......................................................................................................11 1.2 Tema .......................................................................................................11 1.3 Problema .................................................................................................11 1.4 Objeto .....................................................................................................11 1.5 Justificativa .............................................................................................11 1.6 Motivação ...............................................................................................12 1.7 Objetivos.................................................................................................12 1.7.1 Objetivo geral..................................................................................12 1.7.2 Objetivo específico..........................................................................12 1.8 Metodologia ............................................................................................13 1.8.1 Métodos .........................................................................................13 1.9 Estrutura do trabalho ...............................................................................13 2 REVISÃO BIBLIOGRÁFICA...............................................................................15 2.1 Informática em Saúde..............................................................................15 2.2 Processo de Software ...............................................................................16 2.2.1 Planejamento de Software ................................................................18 2.2.1.1 Cronograma e Gráfico de Gantt............................................18 2.2.2 Modelagem do Sistema ....................................................................19 2.2.2.1 Casos de Uso........................................................................20 2.2.2.2 Diagramas de Classes...........................................................21 2.2.2.3 Diagramas Entidade Relacionamento ...................................22 2.2.3 Implementação.................................................................................23 2.2.3.1 Linguagem de Programação Java .........................................23 2.2.3.2 Banco de Dados ...................................................................28 2.2.4 Javadoc ............................................................................................29 2.3 Metodologia da Revisão Bibliográfica .....................................................29 2.4 Resultados e Discussões ..........................................................................30 2.5 Conclusão................................................................................................32 X 3 DESENVOLVIMENTO DA PROPOSTA..............................................................34 3.1 Planejamento de Projeto ..........................................................................34 3.2 Modelagem do Sistema ............................................................................37 3.2.1 Diagrama de Casos de Uso...............................................................37 3.2.2 Diagrama Entidade Relacionamento.................................................38 3.2.3 Diagrama de Classes ........................................................................40 3.3 Implementação ........................................................................................40 3.3.1 Classes de auxílio.............................................................................41 3.3.2 Classes de controle...........................................................................42 3.3.2.1 Classe Ouvinte .....................................................................42 3.3.2.2 Classe ComandosSQL ..........................................................45 3.3.2.3 Classe ConexãoBanco ..........................................................51 3.3.2.4 Classe TelaGráfico................................................................53 4 RESULTADOS E ANÁLISE ..................................................................................56 4.1 Planejamento do Projeto ..........................................................................56 4.1.1 Cronograma e Gráfico de Gantt........................................................56 4.1.2 Burndown Chart...............................................................................58 4.2 Implementação ........................................................................................60 5 CONCLUSÕES E TRABALHOS FUTUROS ......................................................65 6 REFERÊNCIAS BIBLIOGRÁFICAS...................................................................67 7 APÊNDICES ..........................................................................................................71 11 1 INTRODUÇÃO 1.1 Título Implementação de gráficos para análise do perfil epidemiológico de idosos institucionalizados em Curitiba. 1.2 Tema Aplicação de técnicas computacionais tais como o acesso a banco de dados e criação de interface gráfica na área de gerontologia. 1.3 Problema Regina Ribas Bueno Pinto (2008), em sua dissertação de mestrado, traçou o perfil epidemiológico de idosos residentes em casas de longa permanência na cidade de Curitiba, levantando informações necessárias e armazenando-as em um banco de dados. No entanto, persiste a ausência de uma estrutura que permita ao usuário visualizar, de modo mais simples e prático, os dados obtidos, pois, até então, apenas uma consulta direta ao banco de dados possibilita visualizá-los. 1.4 Objeto O software que, a partir da seleção de dois atributos referentes aos idosos, é responsável por resgatar dados em um banco de dados e plotar gráficos. 1.5 Justificativa Facilitar a atividade dos profissionais que utilizam dados relacionados ao perfil 12 epidemiológico dos idosos, a partir da aplicação de conhecimentos computacionais, tais como programação utilizando linguagem Java e banco de dados, proporcionando a visualização gráfica dos dados referentes ao perfil. Desta forma, elimina-se a necessidade dos usuários aprenderem a manusear ferramentas de banco de dados. 1.6 Motivação A abrangência da Informática em Saúde, a qual proporciona diversas áreas de estudo e aplicação, e a inexistência de um software que facilite a interação do usuário com os dados relativos ao perfil epidemiológico de idosos institucionalizados. 1.7 Objetivos 1.7.1 Objetivo geral Aperfeiçoar e facilitar a visualização, através de gráficos, das análises dos dados de um estudo sobre o perfil epidemiológico de idosos residentes em instituições de longa permanência para idosos na cidade de Curitiba. 1.7.2 Objetivos específicos Gerar um gráfico de acompanhamento das atividades a serem desenvolvidas (Burndown Chart) e um cronograma; Confeccionar diagrama entidade relacionamento (DER); Instanciar os dados previamente coletados em um banco de dados; Implementar uma classe que permita realizar consultas dinâmicas ao banco de dados; Apresentar dados em forma de gráficos. 13 1.8 Metodologia 1.8.1 Métodos Descrição sequencial do processo de desenvolvimento deste trabalho e definição das ferramentas de auxílio empregadas. Durante a escolha destas tornou-se imprescindível o fato de estarem sob a licença de código aberto (open source), definido por OPEN SOURCE INITIATIVE (04 abr. 2010), como “um método de desenvolvimento de software que se baseia (…) na transparência do processo”. Isto não significa apenas ter o acesso ao código fonte, mas acatar alguns critérios, como: redistribuição livre, código fonte incluso, trabalhos derivados (admitir alterações e trabalhos derivados e autorizar suas distribuições sob os mesmos termos da licença do software original), integridade do código fonte do autor código (a licença permite exigir nome ou número diferente para trabalho derivado), distribuição da licença (a todos a quem o programa é redistribuído, deve-se aplicar os direitos tidos pelo software original), entre outros (Open Source Initiative, 2010). 1.9 Estrutura do trabalho O presente trabalho explora, em seus capítulos, uma pesquisa sobre o desenvolvimento de gráficos em linguagem Java utilizando os dados - instanciados em um banco de dados - relativos a um perfil epidemiológico de idosos. O primeiro capítulo, a introdução, está divido de forma a permitir uma melhor visualização do objetivo, problema, tema, motivação, objeto de estudo e justificativa da pesquisa proposta e a metodologia, a qual indica quais as ferramentas e como estas deverão ser utilizadas para atingir o objetivo proposto. Na Revisão Bibliográfica, segundo capítulo, é apresentada uma descrição aprofundada do problema previamente definido, a partir de consultas a materiais referentes à Informática em Saúde, a fim de localizar os pontos críticos que necessitem de uma solução, além de conceituar o procedimento necessário para o processo de desenvolvimento de um software. O capítulo seguinte, Desenvolvimento da Proposta, descreve detalhadamente como foi concretizada cada etapa necessária à elaboração do software desde o planejamento, diagramas e especificações, até a implementação das classes que originam o artefato. Em 14 Resultados e Análises, quarto capítulo, são exibidos os dados, informações e consequências obtidos a partir da aplicação dos métodos adotados, e ainda sua análise de acordo com as informações abordadas na revisão bibliográfica. O quinto capítulo, Conclusões e Trabalhos Futuros, compara os resultados obtidos com os planejados e propõe novas pesquisas na área de Informática em Saúde. Por fim, Referência Bibliográfica é o capítulo que contém a relação das obras consultadas para a confecção deste trabalho. 15 2 REVISÃO BIBLIOGRÁFICA 2.1 Informática em Saúde Blois e Shortliffe (Sociedade Brasileira de Informática em Saúde, 2010) afirmam que, para aperfeiçoar o armazenamento, recuperação e gerenciamento de informações na área da saúde, a qual requer informações para a tomada de decisões, existe um campo científico específico, a Informática em Saúde. De acordo com a Sociedade Brasileira de Infomática em Saúde (2010), devido “(…) aos avanços nas tecnologias de computação e comunicação, à crescente convicção de que o conhecimento médico e as informações sobre os pacientes são ingerenciáveis por métodos tradicionais baseados em papel, e devido à certeza de que os processos de acesso ao conhecimento e tomada de decisão desempenham papel central na Medicina moderna”, a Informática em Saúde como disciplina vem se expandindo consideravelmente. Desta forma, percebe-se a necessidade de que profissionais da saúde desenvolvam habilidades as quais permitam ao usuário interagir com ferramentas computacionais que ofereçam suporte à área médica (LUIS et al., 1995), destacando-se: recuperação e análise de dados provenientes de bancos de dados, design de banco de dados e tecnologias da web (LOGAN; PRICE, 2004). Uma das áreas de atuação da Informática Médica, uma especialidade da Informática em Saúde, diz respeito aos sistemas de registro médico computadorizado, isto é, ao desenvolvimento de prontuários eletrônicos (FILHO; XAVIER; ADRIANO, 2001). De acordo com Filho, Xavier e Adriano (2001, p. 105), a “combinação de computadores, redes de telecomunicações, informações médicas e dados eletrônicos de pacientes pode melhorar a qualidade do cuidado com a saúde, da produtividade dos profissionais da saúde, facilitar o acesso aos serviços disponíveis e reduzir custos administrativos associados à prestação de serviços”. Desta forma, o prontuário eletrônico minimiza os erros consequentes de uma prescrição médica mal formulada (BLOMBERG et al., 2009). Dentre as funções do prontuário eletrônico, destaca-se o suporte à pesquisa, que pode ser: clínica, epidemiológica, para avaliação da qualidade e pós marketing de observação de medicamentos (UNIFESP Virtual, 2010). Parte da medicina que trata das epidemias - doenças contagiosas que rapidamente atacam diversas pessoas de uma mesma região - (XIMENES, 2000), a epidemiologia possui 16 como objeto de interesse de pesquisa um grupo que está em constante crescimento: a população de terceira idade ou idosos, caracterizada por indivíduos que possuem faixa etária igual ou superior a 60 anos. No Brasil, a parcela de idosos aumentou praticamente quatro milhões quando comparada ao ano de 1991. Atualmente, a população de idosos representa 8,6% de um total de 170 milhões de brasileiros, segundo o Censo 2000, realizado pelo Instituto Brasileiro de Geografia e Estatística. Aliado ao crescimento desta classe está o aumento da expectativa de vida, que era de 66,03 anos em 1991 e passou a ser 68,55 anos em 2000 (PINTO, 2008). Os cuidados de longa duração voltados aos idosos com algum nível de dificuldade para realizar as atividades de rotina e/ou aqueles cuja família é desfavorecida de recursos financeiros, físicos ou emocionais para atender as necessidades de seu ente, são umas das novas solicitações que vêm sendo efetuadas ao setor público (DANILOW et al., 2007). De acordo com a Portaria SEAS nº 2874/2000, Instituições de Longa Permanência para Idosos (ILPI) (DANILOW et al., 2007) podem oferecer o suporte familiar, financeiro e psicológico que o idoso necessita (REIS et al., 2005). A escassez e a importância de informações relativas a idosos institucionalizados motivaram pesquisas direcionadas a traçar um perfil epidemiológico que contenha dados concretos em termos de sexo, idade, renda, condições de vida e saúde, enfermidades, medicamentos utilizados, laços familiares e tempo de permanência na instituição (DANILOW et al., 2007). Para o desenvolvimento, os pesquisadores selecionaram ILPIs e elaboraram questionários que, aliados à consulta dos prontuários dos idosos, serviram de fonte para obter os dados da construção do perfil (DANILOW et al., 2007; PINTO, 2007; SILVA et al., ano). Estas pesquisas visam contribuir para a criação de programas de atividades preventivas e terapêuticas (SILVA et al.). 2.2 Processo de software A elaboração de um software, processo caracterizado por englobar procedimentos que necessitam de uma visão simultânea e integrada de aspectos técnicos e gerenciais, é uma tarefa que não deve ser confundida com desenvolver programas para o computador. (REZENDE, 1997). Para criar o software, é interessante assumir uma metodologia que aborde este processo por meio de suas etapas (REZENDE, 1997). O Ciclo de Vida de Sistemas Tradicionais, a mais antiga metodologia de construção de sistemas de informação, subdivide o 17 desenvolvimento de um sistema em blocos formais de estágios, propondo um início, um meio e um fim (LAUDON, 1999). Rezende (1997, p. 25) expõe as seguintes etapas do Ciclo de Vida de Sistemas Tradicionais: Estudo: sugere reconhecer as atuais deficiências através de entrevista aos usuários, visando identificar quais aspectos do ambiente estão inadequados, além de definir objetivos do novo sistema e aprontar o plano de trabalho detalhado (REZENDE, 1997). Análise de Sistemas: buscando converter as duas entradas principais - a política do usuário e os encargos do projeto - em uma especificação organizada do projeto, esta etapa abarca a modelagem do ambiente do usuário. Para isto, elabora-se o modelo indicativo do que o sistema deve fazer para interagir de forma satisfatória com o ambiente externo, o que inclui os diagramas e especificações (REZENDE, 1997). Projeto: Fisher (1990, p. 8) afirma que esta fase mostra “o que construir e como construir”. Há preocupação com a elaboração de uma adequada hierarquia de módulos de ‘programas’ e interfaces entre estes, para que a especificação detalhada na fase anterior possa ser implementada (REZENDE, 1997). Fisher (1990, p. 8) conclui que a etapa de projeto abrange “a decomposição em módulos, definições de estruturas de dados (…) e importantes definições algorítmicas” (FISHER, 1990, p. 8). Implementação: segundo Rezende (1997, p. 29), este estágio “inclui a codificação e a integração dos módulos em um esqueleto”. A codificação é feita a partir da eleição de uma linguagem de programação conveniente. Ainda nesta etapa ocorre o teste do esqueleto do sistema, executando o teste do módulo e a integração do sistema (REZENDE, 1997). Geração do Teste de Aceite: um grupo de casos de testes de aceite é confeccionado com base na especificação estruturada. Estes testes podem ser de vias normais - confirmam se o sistema faz, de fato, o esperado para entradas válidas – ou então de vias de erro - buscam “enganar” o sistema com dados incorretos ou não usuais (REZENDE, 1997). Garantia da Qualidade: é o teste de aceite, momento em que se observa a satisfação do usuário no que diz respeito ao atendimento das expectativas (REZENDE, 1997). Descrição de Procedimentos: descrição da forma com que os usuários irão interagir com a parte informatizada do novo sistema, isto é, as definições das atividades operacionais do usuário. Normalmente correspondem ao Manual do Usuário (REZENDE, 1997). 18 Instalação. Atividade final, cujas entradas são o manual do usuário e o sistema de aceite (REZENDE, 1997). 2.2.1 Planejamento de software Sommerville (2007, p. 63) afirma que “o gerenciamento de um projeto depende de um planejamento minucioso do progresso do projeto”. No início do desenvolvimento de um software deve ser criado um plano que estime estrutura, tamanho, distribuição das funções e o tempo. Este servirá como um guia à produção do software (SOMERVILLE, 2007). 2.2.1.1 Cronograma e Gráfico de Gantt O cronograma do projeto determinado no início do processo – como exemplifica o Quadro 1 – contém a estimativa das tarefas a serem realizadas dentro do espaço de tempo previsto (PRESSMAN, 1995). As tarefas devem ser separadas cuidadosamente e organizadas em sequência coerente (SOMERVILLE, 2007). A análise do problema e a especificação, primeiras tarefas a serem realizadas, auxiliam na definição das atividades que deverão ser executadas ao longo do processo de criação do projeto e o tempo gasto com cada uma delas (PRESSMAN, 1995). Atividades Data de Início Data de Término Atividade 1 10/09/2005 11/10/2005 Atividade 2 15/09/2005 24/09/2010 Quadro 1: Exemplo de Cronograma Fonte: Autoria Própria O gráfico de Gantt, ou diagrama de barras, é uma notação gráfica para ilustrar o cronograma do projeto evidenciando as datas de início e fim do mesmo, como exemplificado na Figura 1. Auxilia na visualização das atividades paralelas e nas interdependências entre elas, isto é, aquelas que dependem da finalização de uma tarefa para serem inicializadas (SOMERVILLE, 2007). Para a produção do gráfico de Gantt relativo ao planejamento das 19 atividades que constituem o presente trabalho, será utilizado o software GanttProject, que está licenciado sobre um série de licenças de código aberto (Learn GanttProject, 2010). Figura 1: Exemplo Gráfico de Gantt Fonte: Autoria Própria 2.2.2 Modelagem do Sistema Ao construir imóveis, aeronaves, automóveis e até mesmo computadores, torna-se necessária a elaboração de modelos. Estes servem para detalhar o planejamento a fim de melhorar a compreensão do que será produzido e auxiliar no gerenciamento do projeto (RUMBAUGH, 1994). No desenvolvimento de softwares, a preparação de modelos também possui fundamental importância para atingir eficiência com o mínimo de desperdício e retrabalho de software possível (BOOCH; RUMBAUGH; JACOBSON, 2000). Ela fornece uma abstração examina determinados aspectos - capaz de informar os detalhes que compõem o projeto. Para Booch, Rumbaugh e Jacobson (2000, p. 7) “qualquer projeto será beneficiado pelo uso de algum tipo de modelagem. (...) A modelagem poderá auxiliar a equipe de desenvolvimento a visualizar melhor o planejamento do sistema e permitir que o desenvolvimento seja mais rápido ajudando a construir o item correto”. A modelagem de um sistema tem por objetivo auxiliar na visualização de como deverá atuar o software, especificar a estrutura ou o comportamento dele, elaborar um guia de construção e servir como documentação das decisões (BOOCH; RUMBAUGH; JACOBSON, 2000). O modelo deverá apresentar uma visão panorâmica do sistema, a fim de facilitar o 20 entendimento de sua complexidade, e ainda possibilitar sua divisão em níveis visando tratar cada parte separadamente. Evitando, desta forma, ocultar detalhes importantes à edificação do sistema (BOOCH; RUMBAUGH; JACOBSON, 2000). Para auxiliar na construção de modelos existe uma linguagem específica, a UML (Unified Modeling Language). Esta se torna apropriada para demonstrar as funcionalidades de um sistema em termos de visualização, especificação, construção e documentação (BOOCH; RUMBAUGH; JACOBSON, 2000). 2.2.2.1 Casos de uso Com a finalidade de apresentar, durante as fases iniciais de um projeto, os serviços que um sistema deverá fornecer, o diagrama de casos de uso, que faz parte da UML, (STADZISZ, 2010) tenta registrar as aplicações nas quais o sistema será empregado, definindo os requisitos do sistema. Manifesta, através de atores, as entidades externas - aquelas que interagem diretamente com o sistema. Os atores podem ser pessoas, softwares, dispositivos ou hardware. O diagrama ainda descreve cada aplicação do sistema especificando os casos de uso, responsáveis por representar a interface externa do sistema e todas as transações que unidas expressam as funcionalidades do sistema (STADZISZ, 2010). A Figura 2 apresenta a forma como devem ser representados atores, relações e casos de uso em um diagrama de casos de uso. Figura 2: Elementos do diagrama de casos de uso Fonte: Autoria Própria O diagrama de casos de uso também representa as relações presentes entre atoresatores, casos de uso-atores e casos de uso-casos de uso. As relações entre os atores são atividades realizadas externamente ao sistema, no entanto as efetuadas entre atores e casos de uso procedem através de comunicações (trocas de mensagens), pois os atores não possuem 21 conexão direta à estrutura do sistema (STADZISZ, 2010). Entre casos de uso existem três tipos de relacionamento: os de inclusão, nos quais um caso de uso agrega outro caso de uso; os de extensão, definido quando um caso de uso menor necessita, através de uma condição, utilizar serviços de um caso de uso maior; e os de generalização, que representam um caso de uso que possui funções específicas, mas que descende de um caso genérico que pode ser aplicado a várias situações (STADZISZ, 2010). 2.2.2.2 Diagramas de Classes Para a demonstração de um conjunto de classes, interfaces e os relacionamentos que persistem entre eles, é utilizado o diagrama de classes. Ele é importante não somente para a visualização, especificação e documentação dos modelos estruturais, como também para produzir sistemas através da engenharia de produção reversa, a qual “transforma um modelo em código pelo mapeamento de uma linguagem de implementação” (BOOCH; RUMBAUGH; JACOBSON, 2000). As classes são a descrição, de modo genérico, de atributos e comportamentos comuns para entidades reais, estabelecendo um modelo uniforme para a representação de entidades semelhantes. Quando as entidades recebem valores específicos para seus atributos, passam a ser retratadas por objetos (STADZISZ, 2010). Na UML, as classes são representadas por retângulos com três partições (Figura 3), a primeira referente à identificação, contendo o nome, o estereótipo (classificador para indicar o tipo de classe - interface ou controle) e até o pacote do qual faz parte. A segunda partição discrimina os atributos das classes, a terceira e última apresenta os métodos que pertencem à classe (STADZISZ, 2010). Figura 3: Exemplo de uma classe do diagrama de classes Fonte: Autoria Própria O diagrama de classes ainda evidência os relacionamentos existentes entre as classes, sendo que estes podem ser de associação, agregação e generalização. As associações são os relacionamentos mais comuns, as quais permitem que os objetos de uma determinada classe 22 possam se comunicar com objetos de outras classes. A agregação inclui objetos de uma classe dentro de objetos de outras classes, isto é, um objeto da classe1 passa a fazer parte do objeto da classe2. O relacionamento de generalização ocorre quando existe a derivação de uma classe base, isto é, uma especialização de uma classe mais genérica, para a criação da subclasse que irá incorporar todos os atributos e métodos da classe mãe e ainda adicionar novos (STADZISZ, 2010). 2.2.2.3 Diagrama Entidade Relacionamento O Diagrama Entidade Relacionamento (DER) é a projeção gráfica de uma modelagem conceitual denominada Modelo Entidade Relacionamento (MER). Guimarães (2003, p.32) afirma que o MER exprime “os diversos tipos de dados requeridos pela aplicação, os seus inter-relacionamentos e algumas regras de consistência” sem detalhar a implementação da base de dados. O DER é constituído por entidades e relacionamentos (GUIMARÃES, 2003). As entidades, apresentadas em forma de retângulo, manifestam os objetos ou entes do mundo real que serão registradas na base de dados. Possuem propriedades específicas denominadas atributos, os quais têm um nome e valor específico para a entidade (GUIMARÃES, 2003). Um exemplo da representação de entidades pode ser verificado na Figura 4. Figura 4: Exemplo de tabela do diagrama entidade relacionamento Fonte: Autoria Própria Os relacionamentos, representados por losangos, são as associações entre uma entidade e outra, definindo a interdependência entre elas. Eles possuem como características a cardinalidade ou multiplicidade, a qual indica o número de ocorrências em um relacionamento, como por exemplo: um funcionário pode pertencer somente a um 23 departamento (1:1), porém um departamento pode ter vários funcionários (1:N) (GUIMARÃES, 2003). A ferramenta de código aberto, ERDesigner NG, auxilia na construção do diagrama entidade relacionamento e será utilizada durante a produção do diagrama referente as entidades e relacionamentos que compõem o presente trabalho (Project Mongwai best of breed Open Source, 2010). 2.2.3 Implementação Visando a tradução da especificação do projeto em alguma forma que o computador possa traduzir em linguagem de máquina, uma linguagem convencional de programação deve ser utilizada (PRESSMAN, 1995). Pressman (1995, p. 677) declara que linguagens de programação “são veículos de comunicação entre os seres humanos e os computadores”. O mesmo autor ainda afirma que alguns critérios podem ser empregados a fim de auxiliar na escolha da linguagem de programação para um projeto específico, dentre os quais se destacam: “a área de aplicação geral, a complexidade computacional e algorítmica, o ambiente em que o software será executado, considerações de desempenho, o conhecimento da equipe de desenvolvimento de software” (PRESSMAN, 1995, p. 685). 2.2.3.1 Linguagem de Programação Java Dentre as linguagens de programação, ressalta-se a linguagem orientada a objetos Java, projetada especificamente para permitir que desenvolvedores de aplicativos escrevessem um programa uma vez e depois fossem capazes de executá-lo em qualquer parte na Internet (The Java Language Specification, 2010). Um objeto pode ser descrito como um bloco independente de código de computador, caracterizado por descrever entidades que podem ser concretas ou abstratas (LAUDON; LAUDON, 1999). Laudon (1999, p. 108) afirma que “cada objeto é uma coleção encapsulada de dados e operações executadas sobre esses dados”. Esses blocos podem ser utilizados em muitos sistemas diferentes sem a necessidade de alterar o código do programa (LAUDON; LAUDON, 1999). 24 De acordo com Deitel (2003, p. 59), a linguagem Java pode ser utilizada “para criar páginas da Web com conteúdo interativo e dinâmico, para desenvolver aplicativos corporativos de grande porte, para aprimorar a funcionalidade de servidores da World Wide Web (…), fornecer aplicativos para dispositivos destinados ao consumidor final e para muitas outras finalidades”. Os programas em linguagem Java são constituídos por membros chamados classes (DEITEL; DEITEL, 2003), responsáveis por especificar um ou mais objetos do mesmo tipo (ZIVIANI, 2006). Para criar um objeto, é necessário determinar seu tipo e referenciá-lo, isto é, identificar a qual classe pertence e apelidá-lo, respectivamente, e então criá-lo a partir do operador new (LINHARES, 2009). Segue um exemplo: nome_da_classe nome_da_referencia = new nome_da_classe( ); Cada classe possui atributos, os quais definem as características que todos os objetos pertencentes àquela classe possuem (BOENTE, 2003), além dos métodos, compostos por um conjunto de instruções – cada uma finalizada por um ponto e vírgula – que definem como este deve ser executado (BASHAM; SIERRA; BATES, 2005). A sintaxe para declaração de classes em linguagem Java é a seguinte: acesso class nomedaclasse { //atributos e métodos } Onde acesso indica a visibilidade da classe (pública ou sem valor), class indica que é uma classe e nomedaclasse representa seu nome. “atributos e métodos” é um trecho que não será compilado, visto que está precedido por duas barras, o que significa que corresponde a um comentário (BASHAM; SIERRA; BATES, 2005). Os atributos são definidos por meio da declaração de variáveis, como indica o exemplo: acesso tipo nome; Onde acesso define a visibilidade do atributo, tipo indica o que o atributo representa e nome é a forma de identificar atributo (LINHARES, 2009). A seguir, a tabela 1 – Tipos da Linguagem Java – demonstra alguns tipos comumente utilizados na linguagem Java para a declaração de variáveis (BASHAM; SIERRA; BATES, 2005): 25 Tabela 1 - Tipos da Linguagem Java Tipo Descrição Booleano Verdadeiro ou Falso Char Caracteres Int Números Inteiros Double Números Reais Array Vetor de Variável Tamanho Fonte: Autoria Própria. A definição de métodos ocorre declarando-se o tipo de acesso, o qual define a visibilidade do método, o tipo de retorno que o método irá fornecer, devendo este ser um tipo existente na linguagem Java ou void quando não há valor de retorno, o nome do método e, entre parênteses, os parâmetros, isto é, os dados de entrada que o método precisa para funcionar, descritos por tipo e nome e separados entre vírgulas (LINHARES, 2009). Uma melhor visualização pode ser obtida no exemplo a seguir: acesso tipoderetorno nome (tipo1 p1, tipo2 p2,..., tipoN pN) { //código do método //instrução de retorno } Conforme citado, classes, atributos e métodos devem ter seu acesso definido. Determinar o acesso significa indicar que alguns membros poderão estar visíveis ou não (neste caso estão encapsulados) a outras classes (LINHARES, 2009). Se o acesso é private, o membro em questão só é acessível pelos métodos da própria classe no qual foi definido, ao contrário do acesso public, o qual indica que o membro é acessível por outras classes (LINHARES, 2009). Dois métodos destacam-se, sendo um deles o main(), utilizado a fim de que o programa seja executado, visto que este é o responsável por dar início ao processo (BASHAM; SIERRA; BATES, 2005), e o outro chamado construtora, o qual é requerido pelo sistema no momento em que ser cria um objeto (BOENTE, 2003). Este método não possui valor de retorno (BOENTE, 2003), e pode ter fundamental importância para deixar o objeto 26 pronto para uso no momento em que é criado (LINHARES, 2009). Em Java, a construtora possui exatamente o mesmo nome da sua classe e é executada no momento em que o objeto é criado por meio do operador new (LINHARES, 2009). Existe situações em que pode não ser conceitualmente interessante criar objetos a partir de uma classe, e para isso, podem-se definir métodos de classe (LINHARES, 2009). Esses métodos independem da existência de um objeto para serem executados, e podem ser declarados com a utilização do modificador static: acesso static tipoderetorno nome No que diz respeito às classes, a classe de Exceção destaca-se por definir situações de erro que podem ser localizadas durante a execução do programa (BOENTE, 2003). Para evitar que o programa finalize devido ao erro, pode-se criar um código para tratar a exceção e desta forma continuar a execução do programa (BOENTE, 2003). Para isto, pode-se fazer uso das declarações try e catch, onde a primeira contém o trecho do código no qual poderá ocorrer uma exceção, enquanto que catch recebe o código que irá manipular a exceção caso esta venha a ocorrer (BOENTE, 2003). Dentre os modos dos objetos se relacionarem em um sistema orientado a objetos, ressalta-se a relação de associação, diferenciada pelo fato de que determinados objetos podem ter acesso aos métodos de outros objetos. Para isto, se faz necessário que, dentre os atributos da classe que terá acesso aos outros métodos, seja declarada uma referência para o objeto da classe com a qual se deseja relacionar (LINHARES, 2009). No que diz respeito ao relacionamento entre classes, destaque para a herança, a qual possibilita que uma classe utilize as definições existentes em outra classe sem a necessidade de reescrevê-la (BOENTE, 2003) e ainda possa adicionar características próprias (LINHARES, 2009). Em Java, a relação de herança é descrita utilizando a palavra extends no cabeçalho da classe que irá empregar características de outra classe (a qual está definida no exemplo abaixo como B) e ainda adicionar suas próprias: class D extends B Buscando evitar que o programador tenha necessidade de desenvolver cada pedaço que será útil na construção de um programa em Java, existem preciosas coleções de classes denominadas bibliotecas de classes Java, fornecidas tanto por distribuidores de compiladores quanto por fornecedores independentes de software (DEITEL; DEITEL, 2003). Para serem utilizados, os pacotes devem ser importados a partir da declaração (BOENTE, 2003): import NomeDoPacote.NomeDaClasse; 27 Para serem executados, os programas em Java normalmente atravessam cinco fases: edição, compilação, carga, verificação e execução. A edição, concretizada a partir da utilização de um programa editor, visa editar um arquivo, isto é, gerar um código fonte (BOENTE, 2003). Ambientes de Desenvolvimento Integrado (IDEs) Java têm editores embutidos integrados de forma transparente ao ambiente de programação. Na compilação, segunda fase, o compilador exprime o programa Java no formato de bytecodes - a linguagem que o interpretador Java compreende (DEITEL; DEITEL, 2003). A carga, terceira parte, carrega o programa na memória antes que o mesmo seja executado. A penúltima etapa, verificação, permite que os bytecodes sejam verificados pelo verificador de bytecodes, o qual garante a validade dos mesmos e a não violação das restrições de segurança de Java. Por fim, a execução possibilita que o computador, controlado pela CPU, interprete o programa e realize a ação especificada (DEITEL; DEITEL, 2003). Tendo em vista a implementação do software, neste trabalho será utilizado o IDE NetBeans, de código-fonte aberto, o qual permite desenvolver aplicativos para desktop e Web em linguagem Java, C/C++, PHP, JavaScript, Groovy e Ruby (Welcome to NetBeans, 2010). A biblioteca JFreeChart será utilizada para auxiliar na elaboração dos gráficos. Distribuída sob os termos da licença GNU (GNU Lesser General Public Licence), permite o desenvolvimento de gráficos de qualidade profissional. Possui uma grande variedade de tipos de gráficos e suporta vários tipos de saída, tais como componentes Swing do Java, arquivos de imagem, entre outros (VIKLUND, 2010). Ainda serão empregadas as bibliotecas Swing e Awt para possibilitar a interação entre o usuário e o software por meio de interfaces gráficas com o usuário (GUI’s). Esta forma de interface utiliza botões, ícones, barras e boxes – dispostos em janelas (JFrame) – para representar operações comuns, o que explica a facilidade no manuseio (LAUDON; LAUDON, 1999). A tabela 2 – Componentes Gráficos da Interface – aponta os componentes que serão utilizados nas GUIs do presente trabalho (JAVA 2 PLATFORM SE 5.0, 2010): Tabela 2 - Componentes Gráficos da Interface Componente Definição Button Botão de clique. ComboBox Possui um botão e uma lista. O usuário pode selecionar um valor a partir dessa lista. 28 Fonte: Autoria Própria. Os componentes da interface gráfica Java aguardam a ocorrência de algum evento externo e então reagem a esse evento de acordo com a instrução programada, o que significa dizer que o funcionamento da API gráfica Java é orientado a eventos (LINHARES, 2009). Quando ocorre um evento, um método especial, actionPerformed, deve ser acionado para que trate o evento do modo adequado (JAVA 2 PLATFORM SE 5.0, 2010). 2.2.3.2 Banco de Dados A fim de utilizar os dados com eficácia, é importante organizá-los e estruturá-los, buscando manter agrupados aqueles que recaem em informações semelhantes. Dentre as formas existentes de gerenciamento e armazenamento de dados, está o banco de dados, definido por Laudon (1999, p. 126) como “uma coleção de dados organizados de tal forma que possam ser acessados e utilizados por muitas aplicações diferentes”. O Sistema Gerenciador de Banco de Dados (SGBD) é um software responsável por possibilitar que os dados sejam armazenados em um só lugar, tornando-os disponíveis para aplicações divergentes. Serve como interface entre o banco de dados comum e diversos programas aplicativos (LAUDON; LAUDON, 1999). O primeiro SGBD comercial surgiu no ano de 1960, baseado nos arcaicos sistemas de arquivos existentes na época (TAKAI; ITALIANO; FERREIRA, 2005). Dentre as vantagens dos sistemas de gerenciamento de banco de dados estão (LAUDON; LAUDON, 1999): Independência dos dados em relação aos programas aplicativos; Redução da inconsistência e redundância dos dados; Informações com acesso e uso facilitado. A linguagem de manipulação de dados, componente dos sistemas de gerenciamento de banco de dados, é responsável por manipular banco de dados, dispondo de recursos que permitem ao usuário extrair dados do banco de dados, satisfazer solicitações de informações e desenvolver aplicações. Atualmente, a mais importante linguagem de manipulação de dados é a Structured Query Language (SQL) (LAUDON; LAUDON, 1999), a qual combina construtores em álgebra e cálculo relacional. (TAKAI; ITALIANO; FERREIRA, 2005). Dentre os quatro modelos de banco de dados existentes – modelo hierárquico, modelo em redes, modelo relacional e modelo orientado a objetos - (TAKAI; ITALIANO; 29 FERREIRA, 2005), destaca-se o relacional, o qual se caracteriza por aumentar a autonomia dos dados nos SGBDs e fornecer um grupo de funções baseadas na álgebra relacional a fim de armazenar e recuperar os dados (TAKAI; ITALIANO; FERREIRA, 2005). Como o próprio nome aponta, o modelo descrito acima é fundamentado na relação tabela. Estas são representadas por uma ou mais colunas, chamadas atributos, responsáveis por traduzir o tipo de dados a armazenar, e por linhas, nomeadas t-uplas (TAKAI; ITALIANO; FERREIRA, 2005). A vantagem desse modelo é o fato de que um elemento de uma tabela pode ser relacionado a qualquer outro em uma tabela diferente, desde que ambas compartilhem um elemento de dado comum (LAUDON; LAUDON, 1999). Para fins de armazenamento dos dados utilizados no presente trabalho, a ferramenta adotada será o Oracle Database 10g Express Edition (Oracle Database XE), uma versão de banco de dados - cujo código é livre para o desenvolvimento - baseado no código do Oracle 10g Release. Utiliza a linguagem SQL (Structured Query Language) e é uma ferramenta simples de administrar (Oracle, 2010). Buscando vincular o software desenvolvido em linguagem Java com o banco de dados do Oracle Express, será empregada a biblioteca Java Database Connectivity (JDBC). Ela permite que se estabeleça uma integração com um banco de dados, envio de instruções SQL e o processamento dos resultados (JDBC – Oracle Wiki., 2010). 2.2.4 Javadoc Ferramenta utilizada a fim de elaborar a documentação de pacotes, classes, atributos e métodos Java em formato HTML, partindo do processamento do código fonte com comentários em formato adequado (RICARTE, 2010). 2.3 Metodologia da Revisão Bibliográfica Com o intuito de obter conhecimento sobre a área onde o tema de estudo será aplicado, foi realizada uma investigação em base de dados de bibliotecas virtuais. Para isto, foram consultadas as bibliotecas virtuais do SciELo Brasil (http://www.scielo.br), LILACS, indexado na base de dados da Biblioteca Virtual em Saúde (BVS - http://bvsms.saude.gov.br/php/index.php) e PubMed (http://www.pubmed.com). Também 30 foram examinados os periódicos da Coordenação de Aperfeiçoamento Pessoal de Nível Superior (CAPES - http://www.capes.gov.br/): International Journal of Medical Informatics; Artificial Intelligence in Medicine; SAGE Journals Online. Ainda os congressos da Sociedade Brasileira de Informática em Saúde (SBIS - http://www.sbis.org.br/). Visando delimitar os materiais a serem pesquisados, foi determinado um grupo de palavras chaves para efetuar as buscas. As seguintes palavras: asilo, banco de dados, database, epidemiológico, gráfico, idoso, informática, informática médica, instituição permanência, instituições, Java, linguagem Java, old, prontuário eletrônico, prontuário computadorizado, prontuários, registro eletrônico de paciente, saúde, sistema, sistemas computadorizados. Estas foram inseridas individualmente ou combinadas entre si, cada combinação contendo no máximo três elementos. Ao término das consultas foram coletados 40 (quarenta) artigos, os quais sofreram uma leitura exploratória a fim de agrupá-los de acordo com sua abordagem e classificá-los por grau importância, recebendo valor: cinco - muita importância e maior relevância para o tema , quatro - importantes -, três – poderiam servir de apoio -, dois – baixa relevância ao tema - e um - não se enquadram ao tema. Para conceituar termos utilizados no processo de desenvolvimento do objeto, foram examinados livros relacionados a tópicos tais como: algoritmos, banco de dados, engenharia de software, linguagem Java, lógica para computação, entre outros. Wazlawick (2008, p. 28) defende que “os livros normalmente contêm informação mais completa, didática e bem amadurecida”, fato que serve de motivação ao uso desta fonte bibliográfica para obter informações que já estão consolidadas (WAZLAWICK, 2008). 2.4 Resultados e Discussões A Tabela 3 aponta os 40 artigos angariados distribuídos segundo a classificação que lhes foi atribuída. Tabela 3 - Classificação dos artigos de acordo com o grau de importância. Grau de Importância Número de Artigos Cinco 3 Porcentagem (%) 10 31 Quatro 16 37,5 Três 11 27,5 Dois 9 22,5 Um 1 2,5 40 100 Total Fonte: Autoria Própria Aqueles que receberam valoração um ou dois foram descartados do grupo de artigos de real importância por motivo de não contribuírem diretamente para o aprofundamento do tema da pesquisa. Os artigos agrupados no conjunto de Informática em Saúde receberam valor três na sua classificação pelo fato de servirem como base para a compreensão da área. Porém, aqueles que possuem relação com temas tais como perfil epidemiológico, instituições de longa permanência, banco de dados, em meio a outros, receberam valoração quatro ou cinco. Características como: banco de dados, linguagem Java e prontuários eletrônicos presentes nos artigos, justificaram a sua avaliação como grau de importância quatro. Este grupo destaca-se por assessorar a construção do objeto de estudo. Artigos cuja abrangência refere-se ao perfil epidemiológico de idosos ou a instituições de longa permanência para idosos foram avaliados como os de maior proeminência (valor cinco). Considerando ambos os grupos, dois artigos (DANILOW et al., 2007; SILVA et al.) obtiveram destaque pelo fato de serem análogos à dissertação de mestrado realizada por Regina Bueno Ribas Pinto, a qual serve de base à concepção do presente trabalho. Percebe-se que, dentre os três artigos, todos os questionários foram validados por especialistas na área. Apenas um (DANILOW et al., 2007) aplicou o questionário diretamente aos idosos como forma de obter os dados para análise e tratamento, enquanto os outros dois (PINTO, 2008; SILVA et al.) preferiram que os responsáveis pelos idosos preenchessem o conjunto de perguntas. Para armazenamento dos dados, dois optaram pelo uso de banco de dados (Oracle Express Edition 10g e Access) (PINTO, 2008; SILVA et al.), ao passo que o outro escolheu utilizar o Microsof Excel 2000 Premium (DANILOW et al., 2007). A Tabela 4 apresenta os números e porcentagens de artigos que constituem cada 32 bloco de abordagem semelhante. Deve-se observar que um mesmo artigo pode ser enquadrado em mais de uma abordagem de pesquisa. Tabela 4 - Classificação dos artigos de acordo com a abordagem de pesquisa. Abordagem de Número de Porcentagem Pesquisa Artigos (%) Informática em Saúde 8 20 Doenças e Qualidade de Vida 4 10 Domínio da Informática por Profissionais da Saúde 3 7,5 Dificuldades dos Idosos 1 2,5 Quedas de Idosos 3 7,5 Perfil Epidemiológico de Idosos 7 17,5 Instituições de Longa Permanência para Idosos 10 25 Prontuários Eletrônicos 7 17,5 Banco de dados (relacionados às pesquisas em informática em 6 15 1 2,5 saúde) Java (relacionada às pesquisas em informática em saúde) Fonte: Autoria Própria O nome do autor, título, nome do periódico onde foi publicado, a base de dados e as palavras chaves utilizadas na pesquisa, além dos itens que aborda e a classificação de cada artigo podem ser visualizados no Apêndice A. 2.5 Conclusão No decurso da pesquisa sobre Informática em Saúde, verificou-se a importância de informações para tomada de decisões na área da saúde. Buscando proporcionar dados mais confiáveis e precisos, vem crescendo o uso da informática nesta especialidade. Devido a isso, constatou-se a necessidade de que profissionais deste meio possuam aptidão para manusear 33 ferramentas computacionais de apoio à área. Tentando promover o desenvolvimento desta habilidade, o profissional da computação deve produzir aplicações simples e de fácil compreensão, para que a informatização não seja vista como empecilho, mas como uma ferramenta que proporcione enriquecimentos e favoreça o crescimento no campo da saúde. 34 3 DESENVOLVIMENTO DA PROPOSTA Para o desenvolvimento do presente trabalho, em primeiro momento, foi realizado um estudo para tomar conhecimento do problema proposto e estabelecer metas e objetivos. Desta forma tornou-se possível dividir o processo em três etapas a fim de que o mesmo pudesse ser concluído dentro do limite imposto pela disciplina Metodologia de Pesquisa. As fases denominadas planejamento de projeto, modelagem do sistema e implementação serão descritas nas seções deste capítulo. 3.1 Planejamento de Projeto A fim de criar um plano para definir as atividades a serem realizadas ao longo do processo de desenvolvimento deste projeto, elaborou-se um Cronograma – Quadro 2 –, o qual especifica cada atividade a ser desempenhada. Data de início Data limite Código Atividades 10/03/2010 17/03/2010 01 Elaborar pré-projeto. 10/03/2010 16/05/2010 02 Pesquisar conteúdo da revisão. 05/04/2010 09/04/2010 03 Estudar DER e relações entre tabelas. 05/04/2010 09/04/2010 04 Estudar biblioteca SQL e plotagem de gráficos. 28/03/2010 16/05/2010 05 Desenvolver a monografia. 26/04/2010 07/05/2010 06 Implementar classes para leitura dinâmica dos dados. 07/05/10 19/05/2010 07 Implementar classes para gerar os gráficos. 19/05/2010 21/05/2010 08 Rever monografia. Quadro 2 – Cronograma de Atividades Fonte: Autoria Própria A atividade de código 01, elaborar pré-projeto, baseou-se na primeira pesquisa sobre o problema proposto com intuito de definir o tema a ser abordado no projeto. A tarefa a serguir, de código 02, consistiu em realizar um levantamento bibliográfico através de pesquisas em bases de dados de bibliotecas virtuais, processo este detalhado no capítulo 2, 35 item 2.3. O estudo do DER e das relações entre tabelas - já definidas no trabalho de PINTO(2008) -, código 03, propôs-se a compreender as tabelas e suas relações. Neste estágio, observou-se a vasta possibilidade de combinações existentes para gerar os gráficos, visto que existem doze (12) tabelas e que uma grande parte dos atributos de uma tabela poderia se relacionar com atributos de outra tabela para a confecção do gráfico. Desta forma, foram selecionadas apenas as tabelas “Instituição” e “Idoso” e somente alguns de seus atributos (“Tipo” e “Sexo, Idade aparente, País nascimento, Estado civil, Número de filhos, Cor, Escolaridade, Aposentado, Tipo convênio, Outras Instituições, Meses de institucionalização, Aceitação instituição, Escolha institucionalização, Motivo institucionalização”, respectivamente) para gerar os gráficos. Em sequência, as tarefas, estudar biblioteca SQL e plotagem de gráficos (código 04), dedicaram-se ao entendimento das bibliotecas JDBC e JFreeChart (capítulo 2, itens 2.2.3.2 e 2.2.3.1, respectivamente), o que permitiu analisar as funcionalidades que essas bibliotecas disponibilizam e quais seriam aplicadas na implementação. Assim, durante este período, decidiu-se que o sistema produziria somente gráficos de colunas (utilizados com maior frequência para realizar comparações entre grupos, neste caso entre atributos) devido a sua implementação apresentar-se mais simples. A tarefa desenvolver monografia – código 05 – consolidou-se em estruturar toda a pesquisa realizada e os procedimentos adotados para a construção do artefato sugerido no princípio deste projeto. A sexta atividade (código 06), implementar classes para leitura dinâmica de dados, é definida pela construção da classe responsável por realizar a ligação entre a base de dados o código fonte do software. E a tarefa de código 07, implementar classes para gerar os gráficos, é a que produz a classe utilizada para a recepção de dados que compõem o gráfico e plotagem de gráfico em uma interface. Rever monografia (código 08), última atividade, consiste em revisar e complementar, dentro do possível, o conteúdo já registrado na monografia. A definição do cronograma possibilitou a criação do gráfico de Gantt (Gráfico 1), o qual permite melhorar a visualização de início e término das atividades já descritas. 36 Gráfico 1 – Gráfico de Gantt Fonte: Autoria Própria 37 Em conjunto com a elaboração do cronograma e gráfico de Gantt, realizou-se também a criação do Burndown Chart inicial (Gráfico 2), o qual, considerando as atividades a serem desempenhadas e o prazo para entrega final do projeto, previu 85 horas necessárias para a execução deste trabalho dentro de um período de 60 dias. Gráfico 2 – BurnDown Chart Inicial Fonte: Autoria Própria. 3.2 Modelagem do Sistema Esta etapa caracterizou-se por criar um modelo, através dos padrões de modelagem descritos no capítulo 2, item 2.2.2, para detalhar o artefato a ser construído, buscando minimizar as falhas no decorrer do desenvolvimento do software. 3.2.1 Diagrama de Casos de Uso Para exemplificar a maneira como o sistema deve ser utilizado, o diagrama de casos de uso a seguir (Figura 5) demonstra que o usuário – o qual tende a pertencer ao grupo dos 38 profissionais da saúde – deverá escolher alguns dos atributos disponíveis no sistema para que, a partir da verificação dos dados selecionados e da consulta ao banco de dados, a relação entre os atributos escolhidos seja exibida em forma gráfica. Figura 5: Diagrama de Casos de Uso. Fonte: Autoria Própria. 3.2.2 Diagrama Entidade Relacionamento O diagrama de entidade relacionamento desenvolvido, o qual pode ser verificado na Figura 6, consistiu em uma alteração realizada na tabela “Instituição” do diagrama já proposto por PINTO (2008). A entidade “Instituicao” recebeu mais seis atributos: “nome_instituicao”, “logradouro”, “complemento”, “numero”, “bairro”, e “NR” (número), os quais serviram para melhorar a identificação da mesma. 39 Figura 6: Diagrama Entidade Relacionamento. Fonte: Autoria Própria. Como durante a atividade de código 03, apresentada no cronograma (Quadro 2), foi estipulada a utilização de somente duas tabelas - “Instituição” e “Idoso” –, o conteúdo presente nas demais tabelas não será apresentado neste trabalho e seus dados não serão instanciados no banco de dados. Analisando o DER, é possível perceber que para um idoso fazer parte do conjunto de idosos, é necessário que a instituição na qual ele resida esteja contida na tabela “Instituicao”. Todas as entidades, com exceção da “Instituicao”, possuem o par “cod_instituicao, cod_idoso” (representa o código da instituição que o idoso pertence e o código do idoso, respectivamente), o qual é utilizado para buscar uma t-upla específica e, portanto nunca deve ocorrer sua repetição na mesma tabela. Além disso, se um par fizer parte da tabela “Ortese”, “Renda”, “Medicamentos”, “Habitos_vida”, “Visita_semanal”, “Queixas”, 40 “Diagnostico_medico”, “Acomodacoes”, “Atividades” ou “Queda” deve, obrigatoriamente, referenciar um par já existente em “Idoso”. O conceito explicado acima será utilizado para realizar a busca na base de dados quando um usuário desejar gerar um gráfico relacionando atributos de tabelas distintas. 3.2.3 Diagrama de Classes O diagrama de classe apresentado na Figura 7 serviu de apoio para a implementação do software. Sua construção após a execução da atividade de código 04 e da modelagem do sistema permitiu definir quais classes seriam necessárias para a construção do sistema e a relação existente entre cada uma delas. Figura 7: Diagrama de Classes. Fonte: Autoria Própria. 3.3 Implementação Tendo findado as etapas de modelagem, deu-se início à fase de implementação (capítulo 2 item 2.2.3), na qual todos os detalhes do modelo projetado foram traduzidos, por 41 meio da linguagem Java (capítulo 2, item 2.2.3.1), para uma forma entendível pelo computador, visando construir o software. Durante a elaboração do código fonte percebeu-se que a versão atual do NetBeans IDE (6.8) não localizava, no seu diretório de bibliotecas, os pacotes referentes a biblioteca JFreeChart, tornando-se necessário utilizar a versão 5.5 do NetBeans IDE, visto que esta identifica a biblioteca para geração de gráficos. O presente capítulo descreve as classes que compõem o software, apresentando o código fonte somente das classes consideradas com maior grau de importância. Para visualizar o código fonte de todas as classes, consultar CD em anexo. Logo após o desenvolvimento da implementação tornou-se admissível gerar o Javadoc (capítulo 2, item 2.2.4) como forma de documentação do código fonte, além da produção do manual do usuário (capítulo 2, item 2.2), o qual descreve a forma de interação entre o usuário e o software. Este pode ser consultado no CD em anexo. 3.3.1 Classes de auxílio Nesta seção serão apresentadas as classes de apoio para a implementação, caracterizadas por não exercerem função de controle no sistema. A primeira classe, projetoidoso, é responsável por inicializar o programa, isto é, contém o método main(). Tela1 é a classe que constrói uma interface gráfica, permitindo que o usuário indique, entre as alternativas disponíveis, duas tabelas dentre as quais deseja construir uma relação. Essa classe é uma especialização da classe JFrame, e possui dois ComboBox e um Button como elementos. Cada ComboBox contém o nome de todas as tabelas pertencentes ao banco de dados, e o Button denominado “OK” permite que a Tela2 se torne visível. Além disso, a classe possui um objeto que referencia a classe Ouvinte, definida no item 4.2, responsável por identificar ações realizadas no Button “OK”. A classe Tela2, herdada de JFrame, estabelece uma interface gráfica que possibilita a escolha de dois atributos que serão comparados no gráfico. Possui como componentes dois ComboBox, cujos itens são carregados por meio de um objeto da classe ConexaoBanco, sendo que o primeiro é composto pelo nome de cada campo presente em uma das tabelas selecionadas na tela anterior, e o segundo é composto pelo nome de cada campo existente na outra tabela. Além disso, está incluso o Button “Gerar Gráfico”, responsável por inicializar a TelaGrafico, o qual está associado a um objeto que referencia a classe ouvinte. Existem ainda as classes TratamentoString, a qual manipula um string recebido para 42 que fique no formato adequado para sua utilização, e DadosGrafico, caracterizado por reunir os atributos da entidade gráfico (quantidade, legendaBaixo e legendaBarra) em um único objeto. Essas classes não serão descritas minuciosamente, visto que servem apenas de apoio às outras classes. 3.3.2 Classes de controle Os códigos fonte apresentados abaixo detalham o modo como funcionam as classes encarregadas por efetuar as ações que definem o funcionamento do sistema. 3.3.2.1 Classe Ouvinte A classe Ouvinte, responsável por tratar os eventos sofridos pelos botões do sistema, possui os seguintes atributos: public JComboBox j1, j2;. A construtora dessa classe recebe como parâmetro dois ComboBox e inicializa cada atributo com cada ComboBox recebido. public Ouvinte (JComboBox jCombo1, JComboBox jCombo2) { j1 = jCombo1; j2 = jCombo2; } O método actionPerformed é responsável por identificar a origem de um evento – que no caso deste software pode ser o Button “OK” ou o Button “Gerar Gráfico” – recebido como atributo. Independente da fonte do evento, os itens selecionados em cada ComboBox recebido pela construtora serão captados. Caso a origem seja identificada como proveniente do Button “OK”, os itens selecionados serão enviados à classe ComandosSQL para dar valor aos atributos tabela1 e tabela2 e a Tela2 será inicializada. Porém, se a origem do evento estiver relacionada ao Button “Gerar Gráfico”, os itens seletos, desde que estejam entre os passíveis de gerar gráfico, serão enviados à classe ComandosSQL para dar valor aos atributos atributo1 e atributo2 e a TelaGrafico será inicializada. O código fonte da classe Ouvinte pode ser visualizado a seguir: class Ouvinte implements ActionListener 43 { // atributos public JComboBox j1, j2; // construtora public Ouvinte (JComboBox jCombo1, JComboBox jCombo2) { j1 = jCombo1; j2 = jCombo2; } public void actionPerformed(ActionEvent e) { // origem é o Button que irá receber a fonte do evento JButton origem = (JButton)(e.getSource()); // Compara a origem recebida com o Button “OK” if(origem.getText().equals("OK")){ // Se pelo menos um dos itens selecionados nos ComboBox recebidos for igual //a vazio, isto é, não houver nada selecionado if (j1.getSelectedItem().equals("")||j2.getSelectedItem().equals("")) { // mensagem de erro JOptionPane.showMessageDialog(null,"Selecione dois itens!", "ERRO", 0); return; } // se os dois itens forem diferentes de vazio else{ // se um item selecionado for igual ao outro if(j1.getSelectedItem().equals(""+j2.getSelectedItem())) { // mensagem de erro JOptionPane.showMessageDialog(null, "Selecione itens diferentes!", "ERRO", 0); j1.setSelectedIndex(0); j2.setSelectedIndex(0); return; } // se um item for diferente do outro else { // Registra o nome das tabelas escolhidas, após estas passarem por //um processo de tratamento que retira os acentos, para utilizar depois ComandosSQL.setTabela1(TratamentoString.getEliminarAcentos(""+j1.getSelectedItem())); ComandosSQL.setTabela2(TratamentoString.getEliminarAcentos(""+j2.getSelectedItem())); //Carrega a nova janela Tela2 t2 = new Tela2(); t2.setVisible(true); } } 44 } // Compara a origem recebida com o Button “Gerar Gráfico” if(origem.getText().equals("Gerar Gráfico")){ // Se pelo menos um dos itens selecionados nos ComboBox recebidos for // igual a vazio, isto é, não houver nada selecionado if (j1.getSelectedItem().equals("")||j2.getSelectedItem().equals("")) { // mensagem de erro JOptionPane.showMessageDialog(null,"Selecione dois itens!", "ERRO", 0); return; } // se os dois itens forem diferentes de vazio else // Se pelo menos um item selecionado for igual a um dos atributos que não //fazem parte do/grupo de atributos com os quais é possível gerar gráfico { if(j1.getSelectedItem().equals("DATA NASCIMENTO")||j1.getSelectedItem().equals("MUNICIPIO NASCIMENTO")|| j1.getSelectedItem().equals("ESTADO NASCIMENTO")||j1.getSelectedItem().equals("RACA")||j1.getSelectedItem().equals ("PROFISSAO")|| j1.getSelectedItem().equals("PROCEDÊNCIA")|| j2.getSelectedItem().equals("DATA NASCIMENTO")||j2.getSelectedItem().equals ("MUNICIPIO NASCIMENTO")|| j2.getSelectedItem().equals("ESTADO NASCIMENTO")||j2.getSelectedItem().equals("RACA")||j2.getSelectedItem().equals ("PROFISSAO")|| j2.getSelectedItem().equals("PROCEDÊNCIA")) { //mensagem de erro JOptionPane.showMessageDialog(null, "Opção indisponível!", "ERRO", 0); j1.setSelectedIndex(0); j2.setSelectedIndex(0); return; } //se ambos itens selecionados estiverem no grupo dos atributos com os //quais é possível elaborar gráficos else{ // Registra os atributos selecionados. ComandosSQL.setAtributo1(TratamentoString.getColocarCaracteresEspeciais (""+j1.getSelectedItem())); ComandosSQL.setAtributo2(TratamentoString.getColocarCaracteresEspeciais (""+j2.getSelectedItem())); // Carrega a nova tela new TelaGrafico().setVisible(true); } } } } } 45 Desta forma, quando ocorrer uma ação em qualquer um dos botões do sistema Projeto Idoso, a classe Ouvinte irá tratá-la de acordo com o que foi apresentado a cima. A fim de mostrar outra funcionalidade do sistema, a próxima seção refere-se à classe que estabelece os comandos que serão realizados no banco de dados. 3.3.2.2 Classe ComandosSQL Responsável por deter os dados e comandos que serão utilizados durante a busca no banco de dados, a classe ComandosSQL possui como atributos: static String tabela1, tabela2, atributo1, atributo2, comando;. Existem métodos que dão valores aos atributos tabela1, tabela2, atributo1 e atributo2, além de outros métodos que retornam os valores dessas mesmas variáveis quando solicitados. O método getTipos recebe o nome da tabela e o respectivo atributo como parâmetro e retorna o conjunto de opções de busca ao banco de dados que o par oferece. O retorno deste método é utilizado por outro método, getResultadoBusca, o qual estabelece uma conexão com o banco de dados e realiza quantas buscas sejam necessárias ao mesmo para satisfazer todas as opções de busca que o par indicou. Este método retorna um array redimensionável do tipo DadosGrafico, o qual contém os dados necessários para que, mais tarde, seja possível gerar o gráfico. O código do método getTipos não está inteiramente desenvolvido visto que não serão utilizadas todas as tabelas para a confecção dos gráficos no presente trabalho. Para melhor compreensão, suponha tabela1 = “Idoso”, tabela2 = “Instituição”, atributo1 = “Sexo” e atributo2 = “Tipo”. O método getTipos retorna: ["sexo='feminino'”; "sexo='masculino'"] para a dupla “Idoso” e “Sexo” e ["tipo='particular'"; "tipo='filantrópica'"] para a dupla “Instituição” e “Tipo”. O método getResultadoBusca irá retornar um vetor redimensionável com quatro posições, cada uma contendo o resultado da busca realiza entre todas as combinações possíveis dos resultados de getTipos obtidos para cada dupla. Uma opção de busca seria, por exemplo, a combinação entre "sexo='feminino'” e "tipo='particular'”, cujo comando SQL elaborado no método getResultadoBusca seria: "SELECT count(*)as resultado FROM Idoso, Instituição WHERE Idoso.cod_instituicao = Instituição.cod_instituicao AND (Idoso.sexo = ‘feminino’) AND (Instituição.tipo = ‘particular’". O código completo da classe ComandosSQL está descrito a seguir: class ComandosSQL { 46 // atributos static String tabela1, tabela2, atributo1, atributo2, comando; // método que dá valor ao atributo tabela1, de acordo com um parâmetro recebido static void setTabela1(String t1) { tabela1 = t1; } // método que dá valor ao atributo tabela2, de acordo com um parâmetro recebido static void setTabela2(String t2) { tabela2 = t2; } // método que dá valor ao atributo atributo1, de acordo com um parâmetro //recebido static void setAtributo1(String a1) { atributo1 = a1; } // método que dá valor ao atributo atributo2, de acordo com um parâmetro recebido static void setAtributo2(String a2) { atributo2 = a2; } //método que retorna o valor do atributo tabela1 static String getTabela1() { return tabela1; } //método que retorna o valor do atributo tabela2 static String getTabela2() { return tabela2; } //método que retorna o valor do atributo atributo1 static String getAtributo1() { return atributo1 ; } //método que retorna o valor do atributo atributo2 static String getAtributo2() { return atributo2 ; } static ArrayList <DadosGrafico> getResultadoBusca() { // Estabelece uma conexão com o banco de dados ConexaoBanco cb = new ConexaoBanco(); // Cria um vetor redimensionável para receber o conjunto de comandos de 47 //busca possível para o par tabela1 e atributo1 ArrayList <String> tab_atri_1 = ComandosSQL.getTipos(tabela1, atributo1); // Cria um vetor redimensionável para receber o conjunto de comandos de //busca possível para o par tabela2 e atributo2 ArrayList <String> tab_atri_2 = ComandosSQL.getTipos(tabela2, atributo2); //Cria um vetor redimensionável para receber todos o resultado da busca ao //banco de dados ArrayList <DadosGrafico> resposta = new ArrayList <DadosGrafico>(); //Cria um objeto do tipo DadosGrafico DadosGrafico dg ; int quantidade; //Interação que irá repetir de acordo com a quantidade de resultados que a //busca por comandos envolvendo tabela1 e atributo1 resultou for(int i=0; i<tab_atri_1.size();i++) { //Interação que irá repetir de acordo com a quantidade de resultados que a //busca por comandos envolvendo tabela2 e atributo2 resultou for(int j=0; j<tab_atri_2.size(); j++) { // a variável quantidade recebe o resultado da busca no banco de dados //efetuada pelo método select da classe ConexaoBanco quantidade = cb.select("SELECT count(*)as resultado FROM "+tabela1+"," +tabela2+ " WHERE " +tabela1 + ".cod_instituicao = " + tabela2 + ".cod_instituicao AND ("+tabela1+ "."+tab_atri_1.get(i)+") AND ("+tabela2+"."+tab_atri_2.get(j)+")"); dg =new DadosGrafico(); // armazena a quantidade obtida dg.setQuantidade(quantidade); // armazena o nome do atributo2, que será utilizado como legenda no //gráfico dg.setLegendaBarra(tab_atri_2.get(j)); // armazena o nome do atributo1, que será utilizado como legenda no //gráfico dg.setLegendaBaixo(tab_atri_1.get(i)); //adiciona o trio “quantidade, atributo2, atributo1” no vetor //redimensionável que será o retorno deste método resposta.add(dg); } } return resposta; } private static ArrayList <String> getTipos(String tabela, String atributo) { //Cria um vetor redimensionável que será o retorno do método ArrayList <String> tipos = new ArrayList<String>(); //Inicia uma sequência de comparações até encontrar qual é a tabela recebida //como parâmetro if(tabela.equalsIgnoreCase("instituicao")) { 48 // quando o nome da tabela é localizado, verifica-se qual é o atributo //recebido como parêmetro if(atributo.equalsIgnoreCase("tipo")) { // e por fim, quando o atributo é identificado, o vetor de retorno adiciona //todas as opções de busca quantas existirem tipos.add("tipo='particular'"); tipos.add("tipo='filantrópica'"); } } if(tabela.equalsIgnoreCase("idoso")) { if(atributo.equalsIgnoreCase("sexo")) { tipos.add("sexo='feminino'"); tipos.add("sexo='masculino'"); } if(atributo.equalsIgnoreCase("estado_civil")) { tipos.add("estado_civil = 'solteiro' OR estado_civil = 'solteira'"); tipos.add("estado_civil = 'casado' OR estado_civil = 'casada'"); tipos.add("estado_civil = 'viúvo' OR estado_civil = 'viúva'"); tipos.add("estado_civil = 'separado' OR estado_civil = 'separada'"); tipos.add("estado_civil is null"); } if(atributo.equalsIgnoreCase("numero_filhos")) { tipos.add("numero_filhos = 0"); tipos.add("numero_filhos >=1 AND numero_filhos < 3"); tipos.add("numero_filhos >=3 AND numero_filhos < 5"); tipos.add("numero_filhos >5"); tipos.add("numero_filhos is null"); } if(atributo.equalsIgnoreCase("idade_aparente")) { tipos.add("idade_aparente >= 60 AND idade_aparente < 70"); tipos.add("idade_aparente >= 70 AND idade_aparente < 80"); tipos.add("idade_aparente >= 80 AND idade_aparente < 90"); tipos.add("idade_aparente > 90"); tipos.add("idade_aparente is null"); } if(atributo.equalsIgnoreCase("tipo_convenio")) { tipos.add("tipo_convenio = 'SUS'"); tipos.add("tipo_convenio != 'SUS' AND tipo_convenio != ''"); tipos.add("tipo_convenio is null"); } if(atributo.equalsIgnoreCase("meses_institucionalizacao")) { 49 tipos.add("meses_institucionalizacao < 6"); //menos de 6 meses tipos.add("meses_institucionalizacao >= 6 AND meses_institucionalizacao < 12"); //mais ou 6 meses e menos de 1 ano tipos.add("meses_institucionalizacao >= 12 AND meses_institucionalizacao < 23"); // mais ou 1 ano e menos de 2 anos tipos.add("meses_institucionalizacao >= 23 AND meses_institucionalizacao < 59"); //mais ou 2 anos e menos de 5 anos tipos.add("meses_institucionalizacao >= 59 AND meses_institucionalizacao < 119"); // mais ou 5 anos e menos de 10 anos tipos.add("meses_institucionalizacao >= 119 AND meses_institucionalizacao < 239"); //mais ou 10 anos e menos de 20 anos tipos.add("meses_institucionalizacao >= 239 AND meses_institucionalizacao < 359"); //mais ou 20 anos e menos de 30 anos tipos.add("meses_institucionalizacao >= 359"); //mais ou 30 anos tipos.add("meses_institucionalizacao is null"); } if(atributo.equalsIgnoreCase("motivo_institucionalização")) { tipos.add("motivo_institucionalização = 'dependência'"); tipos.add("motivo_institucionalização != 'dependência' AND motivo_institucionalização != ''"); tipos.add("motivo_institucionalização is null"); } if(atributo.equalsIgnoreCase("escolaridade")) { tipos.add("escolaridade = '1° grau'"); tipos.add("escolaridade = '2° grau'"); tipos.add("escolaridade = '3° grau'"); tipos.add("escolaridade is null"); } if(atributo.equalsIgnoreCase("aposentado")) { tipos.add("aposentado = 'sim'"); tipos.add("aposentado = 'não'"); tipos.add("aposentado is null"); } if(atributo.equalsIgnoreCase("outras_instituicoes")) { tipos.add("outras_instituicoes = 'sim'"); tipos.add("outras_instituicoes = 'não'"); tipos.add("outras_instituicoes is null"); } if(atributo.equalsIgnoreCase("escolha_instituicionalizacao")) { tipos.add("escolha_instituicionalizacao = 'idoso' OR escolha_instituicionalizacao = 'idosa'"); tipos.add("escolha_instituicionalizacao = 'família'"); tipos.add("escolha_instituicionalizacao != 'idoso' AND escolha_instituicionalizacao != 'idosa' AND escolha_instituicionalizacao = 'família' AND 50 escolha_instituicionalizacao = ''"); tipos.add("escolha_instituicionalizacao is null"); } if(atributo.equalsIgnoreCase("pais_nascimento")) { tipos.add("pais_nascimento = 'Brasil'"); tipos.add("pais_nascimento != 'Brasil' AND pais_nascimento != ''"); tipos.add("pais_nascimento is null"); } if(atributo.equalsIgnoreCase("cor")) { tipos.add("cor = 'branca'"); tipos.add("cor = 'negra'"); tipos.add("cor is null"); } if(atributo.equalsIgnoreCase("aceitacao_instituicao")) { tipos.add("aceitacao_instituicao = 'sim'"); tipos.add("aceitacao_instituicao = 'não'"); tipos.add("aceitacao_instituicao is null"); } } if(tabela.equalsIgnoreCase("renda")) { } if(tabela.equalsIgnoreCase("medicamentos")) { } if(tabela.equalsIgnoreCase("habitos_vida")) { } if(tabela.equalsIgnoreCase("visita_semanal")) { } if(tabela.equalsIgnoreCase("queixas")) { } if(tabela.equalsIgnoreCase("diagnostico_medico")) { } if(tabela.equalsIgnoreCase("acomodacoes")) { } if(tabela.equalsIgnoreCase("atividades")) { } if(tabela.equalsIgnoreCase("quedas")) { } if(tabela.equalsIgnoreCase("ortese")) 51 { } return tipos; } } Assim, a classe ComandosSQL é capaz de gerar todos os comandos que serão enviados ao banco de dados a fim de capturar os dados que respondam as perguntas feitas. A seção a seguir é destinada a apresentar a classe que realiza a conexão e as consultas ao banco de dados. 3.3.2.3 Classe ConexãoBanco A classe ConexãoBanco é responsável por conectar o banco de dados ao sistema e realizar todas as transações entre o sistema e o banco. Esta possui como atributos: // con é o atributo responsável por manter a conexão com o banco de dados. public Connection con // metadata é o atributo que carrega todos dados referentes ao banco de dados. public DatabaseMetaData metadata ; A construtora desta classe é responsável por inicializar os atributos, informando os dados necessários para a conexão, e realizando o tratamento de exceções que podem ser geradas durante este processo. public ConexaoBanco() { // Inicia a tentativa de conexão com banco de dados informando o endereço do banco, o nome de usuário e senha. try{ Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:XE","nomeUsuário","senha"); metadata = con.getMetaData() }catch(Exception e){ // Caso algum erro seja ocasionado durante a tentativa de conexão, será exibido uma mensagem de erro. // informando a mensagem de falha de conexão. Quando este pop up for fechado pelo usuário o programa será finalizado. JOptionPane.showMessageDialog(null,"Não foi possível conectar ao Banco de Dados!\n"+e); System.exit(0); } 52 } O método nomeColunas, ao receber o nome de uma tabela como parâmetro, resgata do banco de dados, com o auxilio do atributo metadata, o nome de todas as colunas pertencentes a tabela recebida. Ao buscar esses dados na base ele preocupa-se em tratar as possíveis exceções que podem ser geradas durante este procedimento. public ArrayList <String> nomeColunas(String nomeTabela) { // Cria um objeto que conterá a lista de colunas da tabela recebida. ArrayList <String> resposta = new ArrayList<String>(); // Tentativa de busca dos nomes das colunas referentes a tabela de entrada. try{ // ResultSet resultSet = metadata.getColumns(null, null, nomeTabela, null); // Um string de auxilio para receber o nome de coluna a coluna da tabela de entrada. String ajuda; //Pula as duas primeiras colunas que são responsáveis por armazenar o código de // referência para instituição e idoso em todas as tabelas. resultSet.next(); resultSet.next(); // A iteração a seguir insere cada nome de coluna, encontrado na tabela de entrada, na lista de retorno. while(resultSet.next()) { // O string de auxilio recebe o nome de cada coluna. ajuda = resultSet.getString("COLUMN_NAME"); //Retira os caracteres especiais encontrados no nome da coluna para que fiquem de forma padrão. ajuda= TratamentoString.getEliminarCaracteresEspeciais(ajuda); // Adiciona o nome da coluna a lista de retorno. resposta.add(ajuda); } // Retorna um alista com o nome de todas as colunas da tabela recebida como parâmetro. return resposta; }catch(Exception e){ // Se não for possível encontrar a tabela de entrada será exibida uma mensagem de erro ao usuário. Ao ser fechada, finalizará o programa. JOptionPane.showMessageDialog(null,"Não foi possível encontrar a tabela "+nomeTabela+"!"); System.exit(0); return null; } } 53 O método select possui como retorno um inteiro que corresponde ao resultado do comando recebido como entrada, o qual será executado dentro de uma cláusula de tratamento de exceção. Desta forma é possível corrigir os possíveis erros decorrentes da execução deste método em outras classes. public int select(String comando){ try{ //Cria um objeto para enviar comandos SQL ao banco de dados. Statement stmt = con.createStatement(); //Este objeto armazena todos os registro encontrados pela busca realizada com o comando recebido como parâmetro. ResultSet rs = stmt.executeQuery(comando); // O primeiro registro deste objeto por padrão apresenta-se vazio, sendo necessário // pular para o próximo efetuando um comando next(). rs.next(); // Retorna o valor da coluna resultado. return rs.getInt("resultado"); } catch (SQLException e) { // Caso o comando enviado ao banco de dados possua erros de sintaxe, um pop up contendo uma mensagem de erros será apresentado ao usuário // e o retorno desse método será 0, para a identificação deste o erro por outras classes. JOptionPane.showMessageDialog(null, "Erro no comando. "+e); return 0; } } É assim que a classe ConexãoBanco torna possível unir o sistema Projeto Idoso ao banco de dados que possui os dados referentes aos Idosos Institucionalizados na cidade de Curitiba. A próxima seção demonstra como transformar os dados obtidos nas consultas em gráficos. 3.3.2.4 Classe TelaGráfico A classe TelaGráfico exibe, através de uma interface gráfica, a comparação dos atributos selecionados na Tela2 por meio de um gráfico. Esta tela apresenta como atributos: // dataset corresponde aos dados pertencentes ao gráfico a ser plotado. static DefaultCategoryDataset dataset ; // dadosGrafico representa uma lista de dados referentes aos atributos selecionados na Tela2 que serão adcionados ao dataset. static ArrayList <DadosGrafico> dadosGrafico; 54 // gráfico que será plotado na tela. static JFreeChart grafico; // O atributo painel contém o gráfico que será exibido. static ChartPanel painel; A construtora desta classe inicializa os elementos que a compõem e define algumas propriedades que a mesma deve possuir: public TelaGrafico() { //Entitula a janela de acordo com o nome das tabelas selecionados da Tela1. super(ComandosSQL.tabela1+ " x "+ComandosSQL.tabela2); //Determina que ao fechar esta janela o programa continuará executando normaalmente. this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); // Possibilita que a janela seja redimensionábel pelo usuário. this.setResizable(true); // Captura a largura e a altura da tela do computador, no qual o programa será executado. int largura = (int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth()); int altura = (int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight()); // Define a localização desta janela na tela do computador e largura e altura da mesma. this.setBounds(largura/2-250, altura/2-400, 800, 600); // Inicializa o objeto de dados do gráfico. dataset = new DefaultCategoryDataset(); // Adiciona valores ao dataset. this.setAdicionarDadosGrafico(); //Inicializa o objeto de gráfico, e o associa ao dataset. grafico = TelaGrafico.createBarChart(dataset); //Inicializa ao painel e associa o objeto de gráficos a ele. painel = new ChartPanel(grafico); // Adciona o painel aos componentes da janela. this.setContentPane(painel); // Reajustar o conteúdo da tela quando ela for redimensionada. this.pack(); } O método setAdicionarDadosGráfico é responsável por transferir os valores obtidos durante a busca ao banco de dados, referentes as tabela e classes previamente selecionadas, para o dataset, o qual é responsável por armazenar os dados que serão exibidos no gráfico. private static void setAdicionarDadosGrafico() { //Preenche o objeto dadosGráfico com o resultado das da busca realizada noa base de dados, de acordo com as tabelas e os atribulos selecionados na Tela1 e Tela2 do programa. dadosGrafico = ComandosSQL.getResultadoBusca(); // A iteração adiciona ao dataset do gráfico todos os dados que foram obtidos pela busca no banco. for(int i=0; i<dadosGrafico.size();i++) { dataset.addValue(dadosGrafico.get(i).getQuantidade(), 55 TratamentoString.padraoLegenda(""+dadosGrafico.get(i).getLegendaBaixo()), TratamentoString.padraoLegenda(""+dadosGrafico.get(i).getLegendaBarra())); } } //O método createBarChart recebe os valores do gráfico, define suas características e retorna um gráfico pronto. private static JFreeChart createBarChart(CategoryDataset dataset) { JFreeChart chart = ChartFactory.createBarChart( "", //Titulo "", // Eixo X "Quantidade de Idosos", //Eixo Y dataset, // Dados para o grafico PlotOrientation.VERTICAL, //Orientacao do grafico true, false, false); // exibir: legendas, tooltips, url return chart; } Através de todos os métodos mencionados a cima, a classe TelaGráfico é capaz de plotar, em uma interface gráfica, o gráfico referente aos dados que estão armazenados na estrutura como descrito e explicado no código desta classe. No capítulo a seguir, Resultados e Análise, serão apresentadas os resultados obtidos de acordo com a implementação das classes descritas neste capítulo. 56 4 RESULTADOS E ANÁLISE Ao longo do desenvolvimento do projeto realizou-se uma sequência de atividades – planejamento do projeto, revisão bibliográfica, modelagem e implementação do sistema –, as quais, unidas, permitiram que ao término do processo fossem atingidos resultados. Sobre estes será efetuada uma análise crítica, a qual visa identificar os pontos positivos e negativos encontrados em cada etapa. 4.1 Planejamento do Projeto 4.1.1 Cronograma e Gráfico de Gantt O planejamento do projeto incluiu a construção do cronograma de atividades, o qual está representado no Quadro 2 da página 34. A Tabela 5 exibe as datas – iniciais e limite – esperadas em comparação com as datas que cada atividade, referenciada pelo seu código, realmente iniciou e terminou. Tabela 5 - Datas previstas x Datas reais. Código da Atividade Data de início Data de início Data limite prevista real prevista Data de término 01 10/03/2010 12/03/2010 17/03/2010 17/03/2010 02 10/03/2010 12/03/2010 16/05/2010 24/05/2010 03 05/04/2010 01/04/2010 09/04/2010 12/04/2010 04 05/04/2010 02/05/2010 09/04/2010 07/05/2010 05 28/03/2010 26/03/2010 16/05/2010 26/05/2010 06 26/04/2010 07/05/2010 07/05/2010 16/05/2010 07 07/05/2010 07/05/2010 19/05/2010 16/05/2010 08 19/05/2010 16/05/2010 21/05/2010 26/05/2010 Fonte: Autoria Própria. O Gráfico de Gantt, elaborado com base no cronograma, pode ser visualizado na 57 página 36, Gráfico 1. A primeira atividade, iniciada na décima semana do Gráfico de Gantt, consistiu na elaboração da proposta do projeto, a qual foi realizada dentro do prazo estipulado, apresentada e aprovada no dia 18 de março de 2010. Na mesma semana, também se deu início à pesquisa sobre o conteúdo da revisão bibliográfica, a qual se estendeu ao longo do projeto pelo fato de ser uma atividade que auxiliou na compreensão dos conceitos empregados durante o processo. Ambas as tarefas começaram no mesmo dia, pois a primeira serviu como contato inicial ao conteúdo que foi aprofundado na segunda atividade. O estudo do DER e da relação entre as tabelas, planejado para ter início na décima terceira semana, foi adiantado para a décima segunda semana, quatro dias antes do previsto por questão de disponibilidade de horas. No entanto, seu término foi prolongado devido à necessidade de esclarecer alguns conceitos junto à disciplina de Banco de Dados, fazendo com que fossem dedicados quase três vezes mais dias a esta atividade do que o estipulado inicialmente. A quarta atividade, estudar biblioteca SQL e plotagem de gráficos, ocorreu cinco semanas depois do determinado, o que pode ser justificado pelo fato da pesquisa do conteúdo da revisão, atividade que ocorria em paralelo, exigir maior dedicação. Porém, este atraso não prejudicou o andamento do projeto. O desenvolvimento da monografia, quinta atividade, teve início dois dias antes do previsto a fim de atender a necessidade de organizar as informações encontradas durante a pesquisa em um documento. Esta etapa, assim como a pesquisa do conteúdo da revisão, estendeu-se além da data limite prevista (terminou na vigésima primeira semana), visto que era necessária para arquitetar as informações coletadas na etapa da pesquisa e para documentar todas as tarefas desempenhadas ao decorrer do processo. Embora implementar classes para leitura dinâmica dos dados e classes para gerar os gráficos, sexta e sétima atividade respectivamente, tenham sido programadas para ocorrer em sequência, elas aconteceram em paralelo por causa de uma decisão tomada ao longo do percurso, visto que seria conveniente manipulá-las juntas, isto é, implementá-las em um mesmo momento. O planejamento previu que as semanas de dezessete a vinte seriam dedicadas à realização de ambas, porém, com a decisão aplicada, este tempo se reduziu as semanas dezoito e dezenove, o que representou um ganho de duas semanas. A oitava e última atividade, rever monografia, iniciada após o término do software e realizada em conjunto com a atividade desenvolver monografia, teve o objetivo de consertar eventuais falhas presentes na monografia desenvolvida. Entretanto possam existir erros, os 58 quais podem ser apontados após a entrega deste projeto, dando continuidade a esta etapa. 4.1.2 Burndown Chart Considerando as atividades a serem desempenhadas e o prazo para entrega final do projeto, foram previstas 85 horas necessárias para a execução deste dentro de um período de 60 dias. Desta forma, foi possível confeccionar o Burndown Chart inicial (página 36, Gráfico 1), o qual apresenta a linha ideal para a confecção do presente trabalho. Ao princípio da construção do projeto, uma nova linha passou a ser desenhada no gráfico, a qual representa o andamento real das atividades realizadas em determinado dia e tempo, indicando a quantidade de horas/dia empregada e a restante. Por volta da 17º semana (a qual pode ser visualizada no Gráfico de Gantt), observou-se que a nova linha estava acima da linha ideal em proporções elevadas (Gráfico 3), fato que chamou atenção, pois essa situação indica atraso na execução do projeto. Gráfico 3 – Burndown Chart Parcial. Fonte: Autoria Própria. Assim, comparando o andamento do processo com o cronograma, pode-se concluir 59 que as atividades estavam dentro do tempo determinado e que o problema não estava no decorrer do projeto, mas na previsão mal calculada de dias e horas disponíveis. Esta situação forçou uma reavaliação a fim de expor as condições mais apropriadas nas quais o Burndown Chart inicial deveria ter sido elaborado. Esse novo gráfico prevê 77 dias e 77 horas e está representado pelo Gráfico 4. Gráfico 4 – Burndown Chart Inicial Reavaliado. Fonte: Autoria Própria. Desta forma, a carga horária despendida até a 17º semana foi transposta para o novo Burndown Chart e este foi adotado até o final do processo, o qual pode ser visualizado no Gráfico 5. 60 Gráfico 5 – Burndown Chart Final. Fonte: Autoria Própria. A análise do Burndown Chart final permitiu observar três pontos críticos. O primeiro refere-se ao período compreendido entre os dias 10 a 15, o qual sucedeu a elaboração do préprojeto, e representa uma sequência de cinco dias em que não foram realizadas atividades significativas. De forma análoga, o intervalo entre os dias 30 e 40 tornou-se ocioso devido à maior ênfase dada ao processo de desenvolvimento da monografia. Entretanto, os dias que sucederam os dois picos citados foram marcados por um aumento na carga horária de trabalho, visando compensar o tempo inativo. O último período de destaque corresponde aos dias 58 a 72, momento em que houve uma maior concentração de esforços para finalizar o projeto dentro do prazo limite, permitindo que o projeto fosse terminado cinco dias antes do esperado. 4.2 Implementação Um exemplo de entidade gerada no Oracle Database 10g Express Edition com os dados de PINTO (2008) pode ser visualizada na Figura 8, a qual exibe a tabela “INSTITUICAO”. 61 Figura 8: Representação da tabela “INSTITUICAO” no Oracle Database 10g Express Edition. Fonte: Autoria Própria. Ao término da criação do código fonte, este foi compilado, gerando o sistema Projeto Idoso. A seguir, será apresentado o funcionamento do software, cuja tela inicial pode ser visualizada na Figura 9. Figura 9: Tela Inicial. Fonte: Autoria Própria. Para exemplificar uma situação de geração de gráfico, foram selecionadas as entidades “IDOSO” (no primeiro ComboBox) e “INSTITUIÇÃO” (no segundo), conforme ilustra a Figura 10. Ambos os ComboBoxs apresentam como opção os itens descritos na Tabela 6: Opções da Tela Inicial. 62 Tabela 6 – Opções da Tela Inicial Entidade Idoso Instituição Fonte: Autoria Própria. Caso sejam selecionadas as mesmas alternativas nos dois ComboBox disponíveis, o clique no botão “OK” fará com que apareça um pop up informando que as entidades selecionadas nos ComboBox devem ser diferentes. Ao clicar no botão “OK” do pop up, retornará a tela anterior. Figura 10: Entidades selecionadas. Fonte: Autoria Própria. Após clicar no botão “OK”, a tela da lugar a outra (Figura 11), a qual disponibiliza os atributos pertencentes a cada entidade selecionada anteriormente. Neste exemplo, serão utilizados como atributos “SEXO” e “TIPO” (referentes a idoso e instituição, respectivamente). 63 Figura 11: Idoso x Instituição. Fonte: Autoria Própria. A Tabela 7 – Opções da Segunda Tela – indica quais as possibilidades de escolha oferecidas por cada ComboBox presente na segunda tela. Tabela 7 – Opções da Segunda Tela Entidade Atributos Idoso Sexo Idade Aparente Data Nascimento Município Nascimento Estado Nascimento País Nascimento Estado Civil Número de Filhos Cor Raça Escolaridade Profissão Aposentado Procedência Tipo de Convênio 64 Outras Instituições Meses Institucionalização Aceitação Instituição Escolha Institucionalização Motivo Institucionalização Instituição Tipo Fonte: Autoria Própria. Será possível visualizar o gráfico de barras (Figura 12) após clicar no botão “GERAR GRÁFICO”. Figura 12: Tela do Gráfico. Fonte: Autoria Própria. O Manual do Usuário deste sistema pode ser consultado no documento “ManualUsuario”. 65 5 CONCLUSÕES E TRABALHOS FUTUROS A pesquisa realizada sobre Informática em Saúde aliada ao planejamento do projeto permitiu a construção do artefato, software Projeto Idoso, o qual atingiu as expectativas esperadas no início deste projeto. A geração de gráficos realizada pelo programa – a partir dos dados do perfil epidemiológico de idosos armazenados em uma base de dados – realmente possibilitou uma melhora na visualização, facilitando a comparação e evitando que o usuário se obrigue a ter conhecimento sobre ferramentas de banco de dados, neste caso, Oracle Database 10g Express Edition. Um fator importante foi a elaboração do gráfico de acompanhamento das atividades desenvolvidas ao longo do projeto, o qual auxiliou na percepção das tarefas faltantes de acordo com o tempo que ainda restava, permitindo uma melhor administração da execução das atividades distribuídas no tempo. No que diz respeito aos dados previamente coletados por PINTO (2008), o diagrama entidade relacionamento permitiu analisá-los e, assim, definir as instruções que seriam enviadas ao banco de dados (instanciado com esses dados) a fim de obter respostas para gerar os gráficos. A modelagem dos requisitos do sistema auxiliou no desenvolvimento do software, pois indicou os principais detalhes do programa, minimizando os riscos de erro durante o processo de implementação. Assim, foi possível gerar gráficos através do programa construído. Durante o percurso de desenvolvimento deste trabalho, pode-se observar que algumas práticas adotadas foram de grande auxílio ao cumprimento do mesmo. Realizar uma pesquisa em bibliotecas virtuais utilizando um conjunto de palavras chaves foi de grande importância para encontrar artigos diretamente relacionados ao tema proposto (esta medida pode ser adotada por quem queira realizar pesquisas como essa) e assim foi possível estipular as prioridades de acordo com o prazo de término deste trabalho. Outra prática adotada, a de estimar o tempo necessário de construção do projeto, foi uma das formas de relacionar o tempo dispensado em cada atividade aumentando o controle sobre quais atividades já haviam sido realizadas e quais ainda deveriam ser executadas, evidenciando também o grau de dedicação para cada uma. Também foram realizados encontros frequentes entre os integrantes da equipe de realização deste projeto, fato que tornou ainda maior o controle de atividades realizadas e faltantes de acordo com o tempo restante para elaboração do projeto. No entanto, ainda podem ser efetuadas melhorias sobre o presente projeto, tais como 66 aprofundar a revisão bibliográfica, principalmente no que diz respeito aos sistemas existentes na área de gerontologia e, assim, adequar a interface do sistema o mais próximo da necessidade do usuário – profissional da saúde –, além de deixá-la visualmente mais apresentável, corrigir possíveis erros presentes no atual projeto, proporcionar mais opções de gráficos a serem gerados (exemplo: barra, pizza, linha, entre outros) e disponibilizar as dez tabelas não utilizadas para que também possam dar origem a gráficos. 67 6 REFERÊNCIA BIBLIOGRÁFICA BASHAM, Brian; SIERRA, Kethy; BATES, Bert. Use a cabeça! Servlets & JSp. Tradutor: Marcelo Soares, Weuler Gonçalves. Rio de Janeiro: Alta Books, 2005. BLOMBERG, Luciano C.; MOTA, Eduardo G.; DE FIGUEIREDO, José A. P.; RUIZ, Duncan D. A.. Desenvolvimento de um banco de dados de saúde bucal para administração de registros clínicos. Revista odonto ciência, v. 24, n. 3, 249-253, jul./set. 2009. Disponível em: < http://revistaseletronicas.pucrs.br/ojs/index.php/fo/article/view/5189/4506 >. Acesso em: 12 mar. 2010. BOENTE, Alfredo. Aprendendo a programar em Java 2: orientado a objetos. Rio de Janeiro: Brasport, 2003. BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML: guia do usuário. Tradutor: Fábio Freitas. Rio de Janeiro: Campus, 2000. DANILOW, Milena Z.; MOREIRA, Ana C. S.; VILLELA, Cecília G.; BARRA, Betânia B.; NOVAES, Maria R. C. G..; OLIVEIRA, Mirna P. F.. Perfil epidemiológico, sociodemográfico e psicossocial de idosos institucionalizados do Distrito Federal. Com. Ciências Saúde, Distrito Federal, v. 18, n. 1, 9-16, fev. 2007. Disponível em: < http://www.fepecs.edu.br/revista/Vol18_1art01.pdf >. Acesso em: 27 mar. 2010. DEITEL, M. H.; DEITEL, J. P. Java, como programar. Tradutor: Carlos Arthur Lang Lisbôa. 4 ed. Porto Alegre: Bookman, 2003. FILHO, José R.; XAVIER, Jefferson C. B.; ADRIANO, Ana L.. A tecnologia da informação na área hospitalar: um caso de implementação de um sistema de registro de pacientes. Revista de Administração Contemporânea, Curitiba, v. 5, n. 1, 105-120, jan./abr. 2001. Disponível em: < http://www.scielo.br/scielo.php?script=sci_arttext&pid=S141565552001000100007&lang=pt >. Acesso em: 12 mar. 2010. FISHER, Alan S.. CASE: Utilização de Ferramentas para Desenvolvimento de Software. Tradutor: Info-Rio. Rio de Janeiro: Campus, 1990. GUIMARÃES, Célio C.. Fundamentos de Bancos de Dados: modelagem, projeto e linguagem SQL. São Paulo: Editora Unicamp, 2003. 68 LAUDON, Kenneth C.; LAUNDON, Jane P.. Sistema de Informação com Internet. Tradutor: Dalton Conde de Alencar. 4 ed. Rio de Janeiro: LTC – Livros Técnicos e Científicos S.A., 1999. LINHARES, Robson R. *INTRODUÇÃO À ORIENTAÇÃO A OBJETOS:* Notas de aula*.* Curso de Graduação – Bacharelado em Sistemas de Informação. Disciplina Fundamentos de Programação I, DAINF/UTFPR, 2009. LOGAN, Judith R. A.; PRICE, Susan L.. Computer science education for medical informaticians. International Journal of Medical Informatics, Portland, v. 73, n. 2, p. 139144, mar. 2004. Disponível em: < http://www.ijmijournal.com/article/S1386-5056(03)002004/abstract >. Acesso em: 27 mar. 2010. LUIS, Margarita A. V.; MOALA, Fernando A.; ÉVORA, Yolanda D. M.; SCOCHI, Carmen G. S.; RODRIGUES; Rosalina A. P.. Avaliação de uma disciplina de informática por graduandos de enfermagem. Revista Latino-Americana de Enfermagem, Ribeirão Preto, v. 3, n. 2, p. 69-82, jul. 1995. Disponível em: < http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0104-11691995000200006 >. Acesso em: 27 mar. 2010. MOURA, Arnaldo V.. Especificações em Z: uma introdução. São Paulo: Editora Unicamp, 2001. PINTO, Regina B. R. Perfil epidemiológico de idosos residentes em instituições de longa permanência para idosos na cidade de Curitiba, a partir da modelagem de banco de dados. 2008. 153 f. Dissertação (Mestrado em Tecnologia em Saúde) – Pontifícia Universidade Católica do Paraná, Curitiba, 2008. PRESSMAN, Roger S.. Engenharia de Software. Tradutor: José Carlos Barbosa dos Santos. São Paulo: Pearson Education do Brasil, 1995. REIS, Sandra C. G.. B.; HIGIN, Maria A. S. P.; DE MELO, Hugo M. D.; FREIRE, Maria C. M.. Condição de saúde bucal de idosos institucionalizados em Goiânia-GO, 2003. Revista Brasileira de Epidemiologia, São Paulo, v. 8, n. 1, 67-73, mar. 2005. Disponível em: < http://www.scielo.br/pdf/rbepid/v8n1/08.pdf >. Acesso em: 27 mar. 2010. REZENDE, Denis A.. Engenharia de Software para Excelência em Sistemas Empresariais. Curitiba: Apta, 1997. RUMBAUGH, James. Modelagem e projetos baseados em objetos. Tradutor: Dalton Conde de Alencar. Rio de Janeiro: Campus, 1994. 69 SILVA, Flávio S. C. da; FINGER, Marcelo; MELO, Ana C. V. de. Lógica para Computação. São Paulo: Thomson Learning, 2006. SILVA, Mateus L.; SOARES, Edvaldo; DIAS, Carmen L.; DE OLIVEIRA, Tâmara P.. Retrato do Idoso Institucionalizado: Perfil Epidemiológico. SOMMERVILLE, Ian. Engenharia de Software. 8 ed. Tradução: Selma Shin Shimizu Melnikoff, Reginaldo Arakaki, Edílson de Andrade Barbosa. São Paulo: Pearson Addison Wesley, 2007. STADZISZ, Paulo C. Projeto de Software usando a UML. 2 versão. Disponível em: < http://www.etelg.com.br/paginaete/downloads/informatica/apostila2uml.pdf >. Acesso em: 04 abr.2010, 14:10. TAKAI, Osvaldo K.; ITALIANO, Isabel C.; FERREIRA, João E.. Introdução a Banco de Dados. São Paulo: DCC-IME-USP, 2005. WAZLAWICK, Raul S.. Metodologia de Pesquisa para Ciência da Computação. Rio de Janeiro: Elsevier, 2008. XIMENES, Sérgio. Minidicionário Ediouro da Língua Portuguesa. 2 ed rev. e ampl.. São Paulo: Ediouro, 2000. ZIVIANI, Nivio. Projeto de Algoritmos: com implementações em Java e C++. São Paulo: Cengage Learning, 2006. Guia SERASA de orientação ao cidadão. Disponível <http://www.serasa.com.br/guiaidoso/18.htm >. Acesso em: 15 mar. 2010, 19:50. em: Instituto Brasileiro de Geografia e Estatística. <http://www.ibge.gov.br/home/>. Acesso em: 15 mar. 2010, 20:00. em: Disponível Java 2 Platform SE 5.0. <http://java.sun.com/j2se/1.5.0/docs/api/>. Acesso em 18 mai. 2010, 11:43. JDBC – Oracle Wiki. Disponível em: <http://wiki.oracle.com/page/JDBC>. Acesso em: 16 abr. 2010, 10:05. 70 Learn GanttProject. Disponível em: <http://www.ganttproject.biz/learn#license>. Acesso em: 01 abr. 2010. Open Source Initiative. Disponível em: <http://www.opensource.org/>. Acesso em: 04 abr. 2010, 11:17. Oracle. Disponível em: <http://www.oracle.com/us/products/database/index.html>. Acesso em: 26 mar. 2010, 18:05. Project Mogwai best of breed Open Source. Disponível em: <http://mogwai.sourceforge.net/?Welcome:ERDesigner_NG>. Acesso em 16 abr. 2010, 10:10. RICARTE, Ivan L. M.. Documentação de Código com Javadoc. Disponível em: <http://www.dca.fee.unicamp.br/cursos/PooJava/javaenv/javadoc.html>. Acesso em: 12 abr. 2010, 11:38. Sociedade Brasileira de Informática em Saúde. Disponível em: <http://www.sbis.org.br/>. Acesso em: 27 mar. 2010, 08:54. The Java Language Specification. Disponível em: <http://java.sun.com/docs/books/jls/>. Acesso em: 14 abr. 2010, 18:21. UNIFESP Virtual. Disponível em: <www.virtual.epm.br/>. 13:53. Acesso em: 28 mar. 2010, VIKLUND, Andreas. JFreeChart. Disponível em: <http://www.jfree.org/jfreechart/>. Acesso em: 26 mar. 2010, 18:00. Welcome to NetBeans. Disponível em: <http://netbeans.org/>. Acesso em 01 abr. 2010. 71 7 APÊNCIDES Apêndice A: Tabelas contendo o nome do autor, título, nome do periódico onde foi publicado, a base de dados e as palavras chaves utilizadas na pesquisa, além do assunto que aborda e a classificação de cada artigo encontrado na revisão bibliográfica. [Continua] AUTOR ÁLVARES, 2010 TÍTULO Ocorrência de quedas em idosos residentes em instituições de longa permanência em Pelotas, Rio Grande do Sul, Brasil AMARAL et al., 1996 ANDERSON, 1998 ARAÚJO; MALVEIRA, 2003 BLOMBERG et al., 2009 BRANDT et al., - ano Estimativas da taxa de Desenvolvimento de um Perfil epidemiológico dos Integração de sistemas Saúde e Condições de atraso ao programa de banco de dados de saúde idosos atendidos pelo Sistema Único de Saúde imunização: o impacto bucal para de informação em vida do Idoso no (SUS) em Salgueiro da implantação em um administração de saúde Brasil Banco de Dados registros clínicos Sertão de Pernambu NOME DO PERIÓDICO Cadernos de Saúde Pública Anais do III Fórum Nacional de Ciência e Tecnologia em Saúde Textos Sobre Envelhecimento Escola Anna Nery Revista de Enfermagem Revista Odonto Ciência Anais da Faculdade de Medicina da Universidade Federal de Pernambuco BASE DE DADOS Scielo Lilacs BVS Scielo Lilacs BVS Lilacs BVS Lilacs BVS PALAVRA CHAVE Idosos, instituições Prontuário computadorizado Saúde, idoso Informática médica, banco de dados Banco de dados; Prontuários Perfil, epidemiológico ITENS QUE ABORDA Quedas, Instituição de Longa Permanência para Idosos Informática em Saúde, Prontuários Eletrônicos Doenças e Qualidade de Vida, Perfil Epidemiológico de Idosos Informática em Saúde, Banco de Dados* Banco de Dados* Perfil Epidemiológico de Idosos CLASSIFICAÇÃO Quatro Dois Quatro Quatro Quatro Três 72 [Continuação] AUTOR TÍTULO NOME DO PERIÓDICO CAMPOS NETO et al., 2003 CARITÁ et al., 2008 Desenvolvimento de banco de dados para pesquisa Implementação e avaliação de um sistema de gerenciamento de imagens médicas com suporte à recuperação baseada em conteúdo CARNEIRO et al., 2007 CASSIANI; GIMENES; FREIRE, 2002 CASTELLS, 2007 CREUTZBERG et al., 2007 Modelo teórico y propuesta para la implementación de normas de seguridad digital para resguardo de registros médicos computarizados A Instituição de Longa Permanência para Idosos e o sistema de saúde Revista brasileira de enfermagem Córdoba Revista Latinoamericana de Enfermagem Qualidade de vida, A prescrição médica apoio social e eletrônica em um depressão em idosos: hospital universitário: relação com falhas de redação e habilidades sociais opiniões de usuários Revista da Sociedade Psicologia: reflexão e de Cardiologia Estado Radiologia Brasileira crítica de São Paulo BASE DE DADOS Lilacs BVS Lilacs BVS Lilacs BVS Lilacs BVS Lilacs BVS Lilacs BVS PALAVRA CHAVE Informática médica, banco de dados Linguagem java Asilo, dados prontuário computadorizado Prontuários eletronicos Saúde, idoso, informática Prontuários Eletrônicos Prontuários Eletrônicos Instituições de Longa Permanência Quatro Três Dois ITENS QUE ABORDA CLASSIFICAÇÃO Informática em Saúde, Doenças e Qualidade Informática em Saúde Banco de Dados* de Vida Quatro Dois Dois 73 [Continuação] AUTOR CROSS; PALMER; DANILOW et al., 2007 STEPRHENSON, 2009 TÍTULO Perfil epidemiológico, sociodemográfico e How to design and use psicossocial de idosos a research database institucionalizados do Distrito Federal FABRÍCIO; RODRIGUES; JUNIOR COSTA, 2002 FERREIRA et al, 2007 FERREIRA et al., 2009 FILHO; XAVIER; ADRIANO, 2001 Programa de atenção Quedas acidentais em Informatização de um particularizada ao idosos serviço de nutrição idoso em unidades institucionalizados hospitalar básicas de saúde A tecnologia da informação na área hospitalar: um caso de implementação de um sistema de registro de pacientes NOME DO PERIÓDICO Diagnostic Histopathology Comunicação em Ciências da Saúde Acta Paulista de Enfermagem Revista de Administração em Saúde Saúde e Sociedade Revista de Administração Conteporânea BASE DE DADOS Artificial Intelligence in Medicine Lilacs BVS Lilacs BVS Lilacs BVS Scielo Scielo PALAVRA CHAVE Old, database Perfil, institucionalizado Asilo, dados ITENS QUE ABORDA Banco de Dados * Perfil Epidemiológico de Idosos, Instituições de Longa Permanência CLASSIFICAÇÃO Dois Cinco Informática médica, Idoso, saúde, banco de banco de dados dados Quedas, Instituições Informática em Saúde de Longa Permanência Três Quatro Saúde; Prontuário eletrônico Dificuldadades dos Idosos Informática em Saúde Três Quatro 74 [Continuação] AUTOR FRAIGE, 2007 GAIÃO; ALMEIDA; HEUKELBACH, 2005 GONÇALVES et al., 2008 TÍTULO Prontuário Eletônico do centro de Atendimento a Pacientes Especiais: desenvolvimento e implementação Perfil epidemiológico da cárie dentária, doença periodontal, uso e necessidade de prótese em idosos residentes em uma instituição na cidade de Fortaleza, Ceará NOME DO PERIÓDICO Tese Apresentada a Universidade de São Paulo BASE DE DADOS Lilacs BVS Lilacs BVS Lilacs BVS PALAVRA CHAVE saúde, registro eletrônico Asilo, dados Asilo, dados ITENS QUE ABORDA Prontuários Eletrônicos CLASSIFICAÇÃO Três HAAS; HENRIQUE; DEMARZO, 2008 INOUYE et al., 2009 Requirements and Prevalência de quedas Condições ergonômicas Percepção de qualidade prototyping of a home em uma unidade básica de de vida do idoso com em idosos asilados do saúde recentemente demência e seu cuidador health care application município de Rio informatizada de familiar: avaliação e based on emerging java Grande, RS Florianópolis - SC correlação technology Revista Revista Brasileira de Arquivos Catarinenses Revista Saúde Pública Latinoamericana de Epidemiologia de Medicina Enfermagem Lilacs BVS Lilacs BVS prontuários eletronicos banco de dados, idoso Perfil Epidemiológico, Quedas, Instituições Doenças e Qualidade Instituições de Longa Informática em Saúde de Longa Permanência de Vida Permanência Quatro LIND et al., 2002 Três Três Dois International Journal of Medical Informatics International Journal of Medical Java, database Java * DOIS 75 [Continuação] AUTOR LUIS et al., 1995 TÍTULO Avaliação de uma disciplina de informática por graduandos de enfermagem LOGAN; PRICE, 2004 LUZ; MARCONI; GUIMARÃES MAGALHÃES; TELESMAGALHÃES; PEGORAROKROOK MARIN, 2001 Um estudo sobre o uso de Computer science recursos de informática por Banco de Dados Sobre O prontuário education for medical estudantes de medicina e Fonetografia eletrônico do paciente enfermagem na Faculdade informaticians de Medicina de Marília MARIN; BOURIE; SAFRAN, 2000 Desenvolvimento de um sistema de alerta para prevenção de quedas em pacientes hospitalizados NOME DO PERIÓDICO Revista Latino Americana de Enfermagem International Journal of Medical Informatics Sociedade Brasileira de Informática em Saúde Sociedade Brasileira de Informática em Saúde Revista Paulista de Enfermagem Revista Latino Americana de Enfermagem BASE DE DADOS Scielo Brasil International Journal of Medical Sociedade Brasileira de Informática em Sociedade Brasileira de Informática em Lilacs BVS Lilacs BVS PALAVRA CHAVE Informática médica, gráfico Java, database Informática médica, gráfico Banco de Dados, software Registro médico Saúde, idoso, informática Banco de Dados Prontuários Eletrônicos Prontuários Eletrônicos Um Quatro Dois ITENS QUE ABORDA CLASSIFICAÇÃO Domínio da Informática Domínio da Informática Domínio da Informática por Profissionais da por Profissionais da por Profissionais da Saúde Saúde Saúde Quatro Quatro Três 76 [Continuação] MATTOS, 2006 MONTEIRO; BARBOSA; SIGNORINI, 2007 MOTTA et al., 2001 TÍTULO Perfil audiométrico de uma população de idosos: um estudo epidemiológico seccional Um modelo abstrato em um processo de crítica: aplicação aos dados de uma coorte de pacientes com Aids Autorização e controle de acesso para o prontuário eletrônico do paciente em ambientes abertos e distribuídos: uma proposta de modelo e arquitetura NOME DO PERIÓDICO Cadernos Saúde Coletiva Cadernos Saúde Coletiva Revista Brasileira de Engenharia Biomédica Health Informatics Journal Psicologia em Estudo Caderno Saúde Pública BASE DE DADOS Lilacs BVS Lilacs BVS Lilacs BVS SAGE Journals Online Lilacs BVS Lilacs BVS registro eletrôncio de paciente, java Old, database Asilo, dados Asilo, dados PALAVRA CHAVE Epidemiologico, idoso, Informática médica, banco de dados banco de dados MOURATIDIS; MANSON; PHILP, 2003 PAVAN; MENEGHEL; JUNGES, 2008 AUTOR OLIVEIRA et al., 2006 A novel agent-based Relação entre system to support the Mulheres idosas ansiedade, depressão e single assessment enfrentando a desesperança entre process of older institucionalização grupos de idosos people ITENS QUE ABORDA Perfil Epidemiológico de Idosos Banco de Dados * Prontuários Eletrônicos Informática em Saúde CLASSIFICAÇÃO Quatro Quatro Dois Quatro Doenças e Qualidade Instituições de de Vida Longa Permanência Três Três 77 [Conclusão] AUTOR PERONDI; SAKANO; SCHVARTSMAN, Utilização2008 de um sistema PINTO, 2008 REIS et al., 2005 SILVA et al. informatizado de atendimento em prontosocorro pediátrico com sistema de escore clínico de triagem Perfil epidemiológico de idosos residentes em instituições de longa permanência para idosos na cidade de Curitiba, a partir da modelagem de banco de dados Condição de saúde bucal de idosos institucionalizados em Goiânia-GO, 2003 Retrato do Idoso Institucionalizado: Perfil Epidemiológico NOME DO PERIÓDICO Einstein (São Paulo) - Revista Brasileira de Epidemiologia BASE DE DADOS Lilacs BVS - Revista Brasileira de Epidemiologia PALAVRA CHAVE saúde, registro eletrônico - Longa TÍTULO ITENS QUE ABORDA CLASSIFICAÇÃO Perfil Perfil Epidemiológico, Instituições de Epidemiológico, Informática em Saúde Instituições de Longa Longa Permanência Instituições de Longa Permanência Permanência Três Cinco Quatro Cinco