How 24876021/cdms works
This is a Vue 2/Spring Boot community-clinic management system. Users register or log in, then use a role-sensitive workspace to manage patient profiles, visit records, medications, and billing; patients can view their own associated records. The backend separates HTTP controllers, business services, and persistence, with RBAC/JWT security, configurable MySQL/SQLite storage, Redis-backed captcha support, and WebSocket notifications. Frontend workflow details are sampled; backend layering and several capabilities are documented in the README, while their source wiring was not sampled.
Main entry points: controller HTTP controllers · index.js Route selection · DynamicDataSourceConfig.java Dynamic datasource · api.js HTTP client
Components 21
Web client
- Route selection
vue123/src/router/index.js - Sign in
vue123/src/views/Login.vue - Registration
vue123/src/views/Register.vue - Clinic workspace
vue123/src/views/user.vue - HTTP client
vue123/src/utils/api.js
Identity and access
- Authentication filters
UserLogin/src/main/java/com/example/userlogin/filter - Security configuration
UserLogin/src/main/java/com/example/userlogin/config/SecurityConfig.java - Captcha service
UserLogin/src/main/java/com/example/userlogin/controller/KaptchaController.java - User and roles
UserLogin/src/main/java/com/example/userlogin/service/Impl
Clinic workflows
- Patient and care records
UserLogin/src/main/java/com/example/userlogin/service/Impl - Billing records
UserLogin/src/main/java/com/example/userlogin/service/Impl/BillingRecordServiceImpl.java
Backend services
- HTTP controllers
UserLogin/src/main/java/com/example/userlogin/controller - MyBatis mappers
UserLogin/src/main/java/com/example/userlogin/mapper - WebSocket push
UserLogin/src/main/java/com/example/userlogin/service/Impl/WebSocketServerImpl.java - Push endpoint
UserLogin/src/main/java/com/example/userlogin/controller/WsPushController.java
Storage and messaging
- Dynamic datasource
UserLogin/src/main/java/com/example/userlogin/config/DynamicDataSourceConfig.java - Database initializer
UserLogin/src/main/java/com/example/userlogin/utils/DatabaseInitializer.java - SQLite database
UserLogin/data/community_diagnosis_db.db - MySQL
- Redis
Other components
- Clinic user
Connections 25
- Clinic user → Route selection: opens app
- Route selection → Sign in: routes
- Route selection → Registration: routes
- Route selection → Clinic workspace: routes
- Sign in → HTTP client: requests
- Registration → HTTP client: registers via
- Clinic workspace → HTTP client: requests
- HTTP client → HTTP controllers: HTTP requests
- HTTP controllers → Authentication filters: secured by
- Security configuration → Authentication filters: configures
- HTTP controllers → Captcha service: captcha requests
- Captcha service → Redis: stores codes
- HTTP controllers → User and roles: delegates user/roles
- HTTP controllers → Patient and care records: delegates care records
- HTTP controllers → Billing records: delegates billing
- User and roles → MyBatis mappers: persists identity
- Patient and care records → MyBatis mappers: persists care records
- Billing records → MyBatis mappers: persists bills
- MyBatis mappers → Dynamic datasource: database access
- Dynamic datasource → SQLite database: uses fallback
- Dynamic datasource → MySQL: uses primary
- Database initializer → Dynamic datasource: initializes schema
- HTTP controllers → Push endpoint: push requests
- Push endpoint → WebSocket push: dispatches
- WebSocket push → Clinic workspace: pushes updates