Skip to content

ell120603/agendamento_consulta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Microserviço de Agendamento de Consultas

Este é um microserviço desenvolvido em Java Spring Boot para gerenciar o agendamento de consultas médicas.

🚀 Funcionalidades

🧑‍⚕️ Consultas

  • POST /consultas - Agendar uma nova consulta
  • GET /consultas/{id} - Detalhes de uma consulta específica
  • DELETE /consultas/{id} - Cancelar uma consulta
  • GET /consultas - Listar todas as consultas futuras
  • GET /consultas/dia?data=2025-06-15 - Listar consultas de um dia específico

👤 Pacientes

  • POST /pacientes - Cadastrar um novo paciente
  • GET /pacientes/{cpf} - Buscar paciente por CPF

⏰ Horários

  • GET /horarios/disponiveis?data=2025-06-15 - Ver horários disponíveis
  • POST /horarios/bloquear - Bloquear um horário específico
  • DELETE /horarios/bloquear - Desbloquear um horário

🧠 Regras de Negócio

  • O médico atende de segunda a sexta, das 8h às 17h, com intervalos de 30 minutos
  • Não pode haver mais de uma consulta no mesmo horário
  • Cada CPF só pode agendar uma consulta por dia

🛠️ Tecnologias

  • Java 17
  • Spring Boot 3.2.0
  • Spring Data JPA
  • PostgreSQL
  • Docker & Docker Compose
  • Swagger/OpenAPI
  • Lombok
  • Maven

🚀 Como Executar

Pré-requisitos

  • Docker e Docker Compose instalados
  • Java 17+ (opcional, se quiser executar sem Docker)

Executando com Docker

  1. Clone o repositório
  2. Execute o comando:
docker-compose up --build
  1. A aplicação estará disponível em:

Executando Localmente

  1. Certifique-se de ter PostgreSQL rodando na porta 5432
  2. Configure as credenciais no application.properties
  3. Execute:
./mvnw spring-boot:run

📋 Exemplos de Uso

Cadastrar Paciente

curl -X POST http://localhost:8080/pacientes \
  -H "Content-Type: application/json" \
  -d '{
    "nome": "João Silva",
    "cpf": "12345678901",
    "telefone": "11999999999"
  }'

Agendar Consulta

curl -X POST http://localhost:8080/consultas \
  -H "Content-Type: application/json" \
  -d '{
    "cpfPaciente": "12345678901",
    "data": "15/06/2025",
    "hora": "14:30",
    "observacoes": "Consulta de rotina"
  }'

Ver Horários Disponíveis

curl "http://localhost:8080/horarios/disponiveis?data=2025-06-15"

🧪 Testes

Para executar os testes:

./mvnw test

📚 Documentação da API

Acesse a documentação interativa da API através do Swagger UI: http://localhost:8080/swagger-ui.html

🐳 Docker

O projeto inclui:

  • Dockerfile para build da aplicação
  • docker-compose.yml para orquestração com PostgreSQL
  • Configuração de rede isolada
  • Volume persistente para dados do PostgreSQL

📁 Estrutura do Projeto

src/
├── main/
│   ├── java/com/medico/agendamento/
│   │   ├── controller/     # Controllers REST
│   │   ├── service/        # Lógica de negócio
│   │   ├── repository/     # Repositórios JPA
│   │   ├── entity/         # Entidades JPA
│   │   ├── dto/            # DTOs de requisição/resposta
│   │   ├── config/         # Configurações
│   │   └── exception/      # Tratamento de exceções
│   └── resources/
│       └── application.properties
└── test/
    ├── java/               # Testes unitários
    └── resources/
        └── application-test.properties

🔧 Configuração

As principais configurações estão no application.properties:

About

backend em SpringBoot para agendamento

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors