O sistema de agendamento de consultas médicas é dividido em diversos microserviços: Doctors
, Patients
e Scheduling
. O fluxo do sistema é o seguinte:
-
Cadastro do Paciente:
- Pacientes novos podem se cadastrar através do endpoint
register
na API dePatients
. - Se o paciente ainda não estiver cadastrado, ele deve se registrar para poder agendar consultas.
- Pacientes novos podem se cadastrar através do endpoint
-
Autenticação:
- Após o cadastro, o paciente pode realizar login.
- A autenticação do paciente é feita utilizando JWT (JSON Web Token) para garantir a segurança.
- Os microserviços de
Doctors
ePatients
implementam Spring Security e JWT para validação e autorização.
-
Consulta de Disponibilidade:
- Uma vez autenticado, o paciente pode fazer uma requisição para verificar a disponibilidade dos médicos.
- O sistema verifica a disponibilidade nos microserviços de
Doctors
.
-
Agendamento de Consultas:
- Quando uma consulta é agendada, os microserviços
Doctors
ePatients
enviam mensagens ao microserviçoScheduling
via RabbitMQ. - Uma exchange específica para agendamentos distribui as mensagens para as filas de
Doctors
ePatients
.
- Quando uma consulta é agendada, os microserviços
-
Armazenamento e Mensageria:
- Cada microserviço possui seu próprio banco de dados PostgreSQL.
- Tanto PostgreSQL quanto RabbitMQ são executados em contêineres Docker para garantir escalabilidade e facilidade de implantação.
- Java e Spring Boot para o desenvolvimento dos microserviços.
- Spring Security e JWT para autenticação e autorização.
- RabbitMQ para comunicação assíncrona entre os microserviços.
- Docker para contêinerização dos serviços.
- PostgreSQL como banco de dados para cada microserviço.
- Swagger para documentação das APIs.
Esta descrição detalha as funcionalidades e tecnologias do sistema, destacando como cada componente interage para fornecer um serviço robusto e seguro de agendamento de consultas médicas.