Java

 Sistema Atendimento Médico

Avaliação Final da Disciplina: Java na Web
Prof. MSc. Emilio Celso de Souza

MBA em Desenvolvimento de Aplicações Java - SOA / FIAP
07/11/2011

Robson de Sousa Martins


Download do código-fonte:

Sistema Atendimento Médico (ZIP ~12MB)


Tecnologias empregadas:

  • Servlet;
  • JSP;
  • Rich Faces;
  • JSF;
  • JPA;
  • Banco de Dados MySQL.

Enunciado:

O projeto consiste no desenvolvimento de uma aplicação para a área da saúde, especificamente para clínicas e hospitais. A aplicação deve contemplar o cadastro e a manutenção das informações relacionadas à rotina dos profissionais desta área. As funcionalidades contempladas são descritas a seguir:

  • Cadastro de Convênios.
  • Cadastro de Médicos e suas especialidades.
  • Cadastro de Pacientes.
  • Cadastro de Materiais e/ou Medicamentos.
  • Cadastro de Tratamentos – para cada atendimento, de acordo com a especialidade, existe uma remuneração por parte do convênio, ou do próprio paciente, se for um atendimento particular. Estes atendimentos devem ser previamente cadastrados, para que o médico o selecione na ocasião do atendimento.
  • Agendamento de Pacientes – o usuário (normalmente o atendente) realiza o agendamento do paciente, com um médico em uma determinada área, e para um convênio previamente cadastrado. Convém o paciente informar a especialidade, e o sistema filtrar os médicos disponíveis para a especialidade escolhida.
  • Atendimento de Pacientes por Médicos – o paciente pode ser atendido mais de uma vez, mas seu cadastro é único. Neste item o médico deverá preencher o prontuário do paciente. Os prontuários dos pacientes devem estar disponíveis para os próximos médicos, em atendimentos futuros.
  • Para cada atendimento, o médico (ou enfermeiro) deve registrar os materiais ou medicamentos utilizados, quando for o caso.
  • Faturamento por convênio, por médico – neste item o usuário poderá gerar uma lista dos atendimentos realizados, contendo os valores dos tratamentos e dos materiais/medicamentos utilizados.

Outras funcionalidades poderão ser contempladas, a critério do aluno.

Apresentação

  • Dada a descrição acima, usar a criatividade para definir as interfaces e navegabilidade entre as telas.
  • Como tecnologias, usar aquelas estudadas em aula. Eventualmente o trabalho pode ser enriquecido com outros recursos visuais (css, animações em flash, etc.). Preferencialmente, utilizar o framework JSF ou Struts, com recursos do Ajax.
  • Cuidar para que a aplicação esteja funcionando corretamente, antes da entrega.
  • Incluir o script do banco de dados, e um documento explicando o funcionamento, e as orientações para iniciar a aplicação. O código fonte deve ser entregue juntamente com o projeto, para viabilizar a correção.

Sobre a implementação:

A implementação deste projeto foi realizada com o uso de JSF, RichFaces e JPA.

As classes beans são persistidos no banco, e também são classes managed acessíveis pelo RichFaces e JSF.

A classe GenericDAO é uma classe abstrata que implementa os métodos básicos para acesso ao banco de dados com JPA, e as classes *DAO são as especializações responsáveis pelo acesso a cada um dos objetos persistidos.

Na classe GenericDAO existe um atributo 'debugInfo' que pode ser alterado para true para imprimir no console as informações de debug (default = false).


Banco de Dados MySQL:

Para que a aplicação funcione, é necessário restaurar o backup do banco de dados MySQL, que também já contém alguns dados pré-cadastrados.

O schema usado é "atmedico".

O usuário administrador inicial é:
Administrador:
Username: admin
Senha: admin

ou

Emilio Celso de Souza:
Username: esouza
Senha: esouza

Há vários usuários pré-cadastrados no banco. Alguns exemplos:

Atendente:
Lima Duarte
Username: lduarte
Senha: lduarte

Médico:
Carmem Miranda
Username: cmiranda
Senha: cmiranda

Todos os usuários têm a senha igual ao Username.


Notas sobre o funcionamento da aplicação:

Para inicar a aplicação, acesse inicialmente o index.jsp.

O sistema foi testado no navegador Firefox (3.6), com êxito. Já no Internet Exeplorer, muitos bugs de JavaScript ocorreram, especialmente na tela de prontuário do paciente, que utiliza muito AJAX (ModalPanels e ExtandedDataTables).

Funcionalidades:

O fluxo de operação do sistema é o seguinte:

  • Um usuário "administrador" acessa o sistema, podendo manipular os cadastros de convênios, especialidades, médicos, atendentes, administradores, materiais/medicamentos, tratamentos/exames e a tabela de preços.
  • Um usuário "atendente" acessa o sistema, podendo manipular o cadastro de pacientes e agendar consultas.
  • Um "médico" acessa o sistema, podendo manipular o prontuário do paciente.
    (somente consultas pré-agendadas podem ser adicionadas ao prontuário)
    O médico pode adicionar/remover consultas, materiais/medicamentos e tratamentos/exames do prontuário de qualquer paciente.
  • Um usuário "administrador" acessa o sistema, podendo emitir os relatórios de faturamento por convênio ou por médico.

Notas sobre a tabela de preços:

A tabela de preços define as regras para estipular o valor de um item de saúde:

  1. O valor do item será o cadastrado para o convênio E especialidade em uso, durante o atendimento;
  2. Na ausência dessa regra, o valor do item será para a especialidade OU convênio, durante o atendimento;
  3. Na ausência dessa regra, o valor do item será para quaisquer especialidades e convênios, durante o atendimento;
  4. Na ausência dessa regra, o valor do item será R$ 0,00.