BANCO DE DADOS PARA UM PRONTUÁRIO MÉDICO ELETRÔNICO Nome dos autores: Igor Barreto Rodrigues¹; Patrick Letouze Moreira²
1
Aluno do Curso de Ciência da Computação; Campus de Palmas; e-mail: igor.cientista@uft.edu.br “PIBIC/UFT”
2
Orientador(a) do Curso de Ciência da Computação; Campus de Palmas; e-mail: patrick.letouze@gmail.com
RESUMO
Este trabalho visa auxiliar a integração de várias áreas em um sistema de prontuário médico eletrônico. Onde todas elas teriam acesso ao banco de dados centralizador com informações em comum a todos, que seria a ficha do paciente e todo seu histórico médico, desde seu nascimento, contendo todos os exames e resultados já realizados na sua ficha e também os dados dos médios. Cada sistema em particular adiciona informações a ficha do paciente, o que foi proposto e realizado aqui, é apenas não tem criar novos cadastros para um mesmo usuário, com a integração entre os sistemas que estão sendo desenvolvidos em projetos paralelos a este. Se ele já se consultou algum dia lá no Rio Grande do Sul, e depois for em um médico no Pará, sem perda de generalidade, sua ficha já estaria no sistema, pois todos eles enviariam as informações para a base de dados centralizadora. O projeto foi desenvolvido no Laboratório de Programação da Universidade Federal do Tocantins e proporcionou um grande crescimento profissional, fornecendo boas experiências e aprendizados e também mostrando que há grandes vantagens na integração entre os sistemas de saúde.
Palavras-chave: (banco de dados; prontuário médico; paciente); deve vir logo abaixo do resumo INTRODUÇÃO
Na época atual, onde se tem uma grande expansão na quantidade de dados digitais produzidos em todas as áreas, os mais diversos campos da ciência vêm obtendo dados em larga escala, na ordem de pentabytes [1]. Junto com a captura dos dados surge a necessidade de armazenamento, o que é um passo extremamente importante para atividades subsequentes, como por exemplo, análise dos dados, produção de informação e etc.
O armazenamento de dados em larga escala traz um problema, que leva a necessidade de desenvolvimento de métodos, procedimentos e ferramentas para suportar
o armazenamento, gerenciamento e recuperação dessas informações. Muitos problemas teóricos são analiticamente complexos de se resolver, motivo pelo qual cientistas recorrem para o uso tecnologias da ciência da computação, para que sejam produzidas ferramentas de simulação computacional [1].
A distribuição de dados pode ser explorada para aumentar o desempenho (através do paralelismo) e disponibilidade (através da replicação) [2]. Esse princípio pode ser usado para implementar sistemas de base dados paralelos, por exemplo, banco de dados em processamento paralelo [3].
Diante dessas condições algumas soluções têm sido propostas. Pode-se destacar a produção de métodos e ferramentas para Sistema de Gerência de Banco de Dados (SGDB) para o tratamento desses dados. O SGDB PostgreSQL destaca-se entre o trabalho dessas ferramentas e será ele o utilizado nesse projeto. Utilizar técnicas de Banco de dados distribuídos para melhorar a disponibilidade e confiança do sistema através da replicação e fragmentação dos dados, além de permitir um crescimento modular da aplicação acrescentando novos processadores e módulos do banco ao sistema.
MATERIAL E MÉTODOS
Todos os sistemas de Prontuários Médico têm sua base de dados específica, e o Banco de dados Centralizador que é tratado neste trabalho é populado com a integração deles, ou seja, todos os médicos e paciente que estão individualmente em cada deles, estão também na base de dados em questão, com cuidado de não repetir nenhuma informação. Isto se faz necessário para quando um paciente for se consultar em médico que até então ainda não teria ido, não é necessário fazer cadastro uma vez que ele já se consultou em outro lugar anteriormente, para isso é feito então a busca na base de dados local, não encontrando-o, então é disparado a busca na base de dados centralizada para buscar essa informação e levá-la para o sistema requisitante.
Para isso foi modelado a base de dados centralizadora utilizando o SGBD PostgreSQL em sua versão 9.3, que de acordo com o site oficial é um sistema de gerenciamento de banco de dados objeto-relacional de código aberto [4]. Também foi
desenvolvido uma aplicação utilizando a linguagem Java, que é uma linguagem de programação orientada a objetos e compilada em bytecodes através de uma máquina virtual Java. Como ambiente de desenvolvimento, foi utlizado a IDE NetBeans, na sua versão 7.3.1, que é uma IDE gratuita, de código aberto e pode ser executado em muitas plataformas [5].
Esta aplicação faz um controle de acesso a base de dados, para isso foi utlizado a técnica de replicação de dados, ou seja, existem dois bancos iguais. A comunicação é feita através de sockets, uma Interface de Programação de Aplicativos (API) para comunicação entre programas Java. Ao chegar a requisição de uma consulta, ela é feita no banco, na próxima então, ela é realizado no outro, sempre alternando os bancos, para que dessa forma diminua a concorrência ao meio.
Se a requisição for de sincronização, é verificado se os dados já existem no banco, através de consultas, se não existirem então, é feito a inserção, se já existirem e a data de atualização da ficha do paciente ou do médico não for igual, então é feito a atualização em um dos bancos, deixando sempre um deles disponível para as outras requisições. Utilizando o Quartz, uma biblioteca Java para agendamento de tarefas [6], é feito a sincronização entre as réplicas, sempre nas madrugadas, horário cujo as buscas no banco é quase inexistente. Deste modo foi implementado um controle simples de concorrência e mantendo sempre as base de dados consistentes.
RESULTADOS E DISCUSSÃO
Várias técnicas foram estudadas e analisadas para chegar a melhor maneira de modelar o banco de dados para ser utilizado pelo Prontuário Médico Eletrônico, levando em consideração regras essenciais para um banco de dados distribuído.
A independência física dos dados é extremamente relevante, pois a forma como o banco de dados estará armazenado não deverá ser visível aos programadores e analistas, muito menos aos usuários casuais (usuários leigos que fazem acesso a base de dados e que necessitam de diferentes informações a cada acesso), ou seja, os detalhes do armazenamento do banco devem ser transparentes ao desenvolvimento dos sistemas da aplicação e ao uso casual do banco.
Com a replicação, as bases funcionam como se fossem espelhos, localizados fisicamente em diferentes servidores, de forma transparente ao usuário. Regras foram definidas para melhorar o desempenho das consultas. Bem como o básico de todo o banco ele também segue as regras ACID, a Atomicidade, propriedade que é caracterizada por uma sequência de comandos bem delimitada de tal sorte que o sistema deve garantir que, ou todos os comandos na sequência sejam completamente executados, ou o banco não reflete o resultado da execução de nenhum deles, mesmo que o sistema falhe antes da completa execução de todos os comandos da sequência [7]. Consistência, garantindo a integridade dos dados. Isolamento para que todas as consultas mesmo executadas em paralelo tenham o mesmo resultado daquelas executadas isoladas. Durabilidade, fazendo com que uma transação de sucesso persista no banco mesmo na presença de falhas posteriores, garantindo que os dados estejam disponíveis em definitivo.
LITERATURA CITADA
[1] SHOSHANI, A., & ROTEMD. (2009). Scientific Data Managment: Challenges,
Technology and Deployment. Chapman & Hall/CRC.
[2] DEWITT AND GRAY. (1992). Parallel Database Systems: The Future of
High-Performance Database Systems.
[3] P. VALDURIEZ. (1993). Parallel Database Systems: Open Problems and New
Issues, Distributed and Parallel Databases.
[4] Site Oficial do Postgres: http://www.postgresql.org. Acessado em: 02/08/2013. [5] Site Oficial do NetBeans: https://netbeans.org. Acessado em: 03/08/2013. [6] Site Oficial do Quartz: http://quartz-scheduler.org. Acesado em: 03/08/2013. [7] CASANOVA, MARCO ANTONIO E MOURA, ARNALDO VIEIRA (1999): Princípios de Sistemas de Gerência de Bancos de Dados Distribuídos.
AGRADECIMENTOS
Gostaria de agradecer a minha família, que sempre me apoiou e sempre me deu suporte nos estudos. Meus pais acreditam e me ensinaram o poder que tem a educação. Ao professor Doutor Patrick Letouze, pela oportunidade e confiança para desenvolver esse projeto, sempre me auxiliando e me apoiando durante todo o trajeto. Aos colegas do laboratório de programação e a UFT pela bolsa fornecida. O presente trabalho foi realizado com o apoio da UFT.