How datlichkhambenh/dat-lich-kham-benh works
This is a Spring Boot clinic-booking application with a browser frontend served by the backend. Patients find doctors and available slots, book appointments, and receive asynchronous email confirmation; doctors manage schedules and visit records, while administrators manage accounts, specialties, services, and analytics. The graph combines sampled controller/service code with documented product capabilities. Some subsystem wiring is based on the README because its implementation was not sampled.
Main entry points: api.js Browser UI · AppointmentRepository.java JPA repositories · DoctorController.java Doctor API · BookingServiceImpl.java Appointments
Components 27
Web client
- Browser UI
frontend/js/api.js
Identity and access
- Auth API
backend/src/main/java/com/datlichkhambenh/backend/controller/AuthController.java - JWT security
backend/src/main/java/com/datlichkhambenh/backend/config/SecurityConfig.java - Authentication
backend/src/main/java/com/datlichkhambenh/backend/service/impl/AuthServiceImpl.java - User lookup
backend/src/main/java/com/datlichkhambenh/backend/security/CustomUserDetailsService.java
Patient and clinical care
- Booking API
backend/src/main/java/com/datlichkhambenh/backend/controller/BookingController.java - Doctor API
backend/src/main/java/com/datlichkhambenh/backend/controller/DoctorController.java - Patient API
backend/src/main/java/com/datlichkhambenh/backend/controller/PatientController.java - Doctor search
backend/src/main/java/com/datlichkhambenh/backend/service/impl/DoctorServiceImpl.java - Doctor schedules
backend/src/main/java/com/datlichkhambenh/backend/service/impl/DoctorScheduleServiceImpl.java - Appointments
backend/src/main/java/com/datlichkhambenh/backend/service/impl/BookingServiceImpl.java - Patient profiles
- Medical records
backend/src/main/java/com/datlichkhambenh/backend/service/impl/MedicalRecordServiceImpl.java
Clinic administration
- Admin API
backend/src/main/java/com/datlichkhambenh/backend/controller/AdminController.java - Admin management
backend/src/main/java/com/datlichkhambenh/backend/service/impl/AdminManagementServiceImpl.java - Medical services
backend/src/main/java/com/datlichkhambenh/backend/controller/MedicalServiceController.java - Service catalog
Persistence and integrations
- JPA repositories
backend/src/main/java/com/datlichkhambenh/backend/repository/AppointmentRepository.java - Clinic database
- Redis cache
backend/src/main/java/com/datlichkhambenh/backend/service/impl/RedisCacheServiceImpl.java - RabbitMQ
backend/src/main/java/com/datlichkhambenh/backend/config/RabbitMqConfig.java - Email consumer
backend/src/main/java/com/datlichkhambenh/backend/messaging/EmailQueueConsumer.java - Email publisher
backend/src/main/java/com/datlichkhambenh/backend/messaging/EmailQueuePublisher.java
Other components
- Patient
- Doctor
- Administrator
- SMTP server
Connections 33
- Patient → Browser UI: uses
- Doctor → Browser UI: uses
- Administrator → Browser UI: uses
- Browser UI → Auth API: calls
- Browser UI → Booking API: calls
- Browser UI → Doctor API: calls
- Browser UI → Patient API: calls
- Browser UI → Admin API: calls
- Browser UI → Medical services: calls
- Auth API → Authentication: delegates
- JWT security → User lookup: loads users
- Authentication → JPA repositories: reads/writes users
- Doctor API → Doctor search: delegates
- Doctor API → Doctor schedules: delegates
- Doctor API → Appointments: delegates
- Doctor API → Medical records: delegates
- Booking API → Appointments: delegates
- Appointments → JPA repositories: reads/writes bookings
- Patient API → Patient profiles: delegates
- Patient API → Medical records: delegates
- Doctor schedules → JPA repositories: reads/writes slots
- Doctor search → JPA repositories: reads doctors
- Admin API → Admin management: delegates
- Admin management → JPA repositories: manages clinic data
- Medical services → Service catalog: delegates
- Service catalog → JPA repositories: reads/writes services
- JPA repositories → Clinic database: reads/writes
- Doctor search → Redis cache: uses cache
- Doctor schedules → Redis cache: uses cache
- Appointments → Email publisher: publishes after commit
- Email publisher → RabbitMQ: publishes message
- RabbitMQ → Email consumer: dispatches message
- Email consumer → SMTP server: sends email