Skip to content

isinhah/medical-appointment-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🏥 Sistema de Agendamento de Consultas Médicas

📄 Descrição

Este projeto é composto por duas APIs integradas:

API de Consultas Médicas: responsável pelo cadastro e gerenciamento de usuários (pacientes, assistentes e médicos), além do agendamento de consultas médicas.

API de Documentos: responsável por gerar um comprovante em PDF com os dados da consulta, utilizando o Thymeleaf na criação do template, e armazenar o arquivo em um bucket S3 da AWS.


⚙️ Funcionalidades

  • Autenticação e autorização: controle de acesso via JWT para pacientes, assistentes, médicos e administradores.
  • Agendamento de consultas: respeitando a disponibilidade dos horários dos médicos.
  • Geração automática de documentos: criação de comprovantes para os agendamentos realizados.
  • Armazenamento e acesso aos comprovantes: arquivos PDF armazenados e acessados via AWS S3.

🛠️ Tecnologias

  • Linguagem: Java
  • Framework: Spring Boot
  • Gerenciador de Dependências: Maven
  • Banco de Dados: PostgreSQL, H2 Database
  • Migração de Banco: Flyway DB
  • Segurança: Spring Security, JWT Token
  • Mensageria: RabbitMQ
  • Broker na Nuvem: Cloud AMQP
  • Template Engine: Thymeleaf
  • Geração de PDF: ITextPDF
  • Armazenamento de Arquivos: AWS S3
  • Testes: JUnit, Mockito
  • Utilitários: Lombok, MapStruct
  • Documentação da API: SpringDoc OpenAPI

➡️ Fluxo da Aplicação:

  1. Um usuário genérico é cadastrado no sistema com a role USER e credenciais básicas.
  2. O tipo específico de usuário é criado, vinculado ao usuário genérico e incluindo suas informações específicas e role correspondente (paciente, médico, assistente ou administrador).
  3. O assistente cadastra o cronograma de disponibilidade do médico, informando os dias da semana e horários de início e fim.
  4. Com base nesse cronograma, o assistente cria uma consulta vinculando-a ao horário disponível.
  5. O paciente visualiza e agenda uma das consultas disponíveis.
  6. Após o agendamento, um comprovante em PDF é gerado utilizando o Thymeleaf, armazenado na AWS S3.

📝 Endpoints


📈 Diagrama

Diagrama de Classes Diagrama de Classes

🗂️ Imagens do Projeto

Criação de Usuários Imagem da criação do médico Imagem da criação do assistente Imagem da criação do paciente
Criação de Cronograma do Médico Imagem de criação do Cronograma do Médico
Criação de Consulta Imagem de criação de Consulta
Agendamento de Consulta Imagem do Agendamento da Consulta
Comprovante da Consulta Marcada Imagem do Comprovante
Listagem de Consultas Disponíveis por Especialidade Médica Imagem da Listagem

⚙️ Configuração e Execução

Pré-requisitos:

  • Java 17
  • Maven
  • PostgreSQL
  • RabbitMQ (CloudAMQP)
  • Conta na AWS (Bucket S3)

Passos para Configuração:

  1. Clone o repositório
  2. Acesse o diretório do projeto
  3. Configure o banco de dados no arquivo application.yml (URL, usuário, senha) das duas APIs
  4. Configure o RabbitMQ (CloudAMQP) no arquivo application.yml das duas APIs
  5. Configure a AWS S3 com suas credenciais no arquivo application.yml da api-comprovantes
  6. Configure a secret key para JWT no arquivo application.yml da api-consultas-medicas
# Execute a aplicação
mvn spring-boot:run

# Pressione (CTRL + C) para encerrar a aplicação

🙋‍♀️ Autor

👩‍💻 Projeto desenvolvido por Isabel Henrique

🤝 Fique à vontade para contribuir!

About

Sistema de agendamento de consultas médicas com geração automática de comprovante em PDF via AWS S3

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages