# dww155/dermaclinic architecture

> Architecture diagram of the GitHub repository dww155/dermaclinic, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dww155/dermaclinic
- Repository: https://github.com/dww155/dermaclinic

## Overview

DermaClinic is a dermatology and medical-aesthetics clinic backend for EMR, longitudinal skin imaging, treatment plans, electronic consent, and consumables management. The intended clinical workflow spans patient records and skin images, treatment planning and phases, scheduled/performed sessions, consent, and resource usage. The tree documents these domain areas through entities, but sampled runtime code only establishes authentication behavior; links among unsampled clinical subsystems are therefore not inferred. The treatment-session and machine-log entities show session associations, while the application’s actual persistence and clinical request wiring are not sampled.

Main entry points: [`DermaClinic_server/src/main/java/com/dww/DermaClinic/service/AuthService.java`](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/service/AuthService.java) (Authentication service), [`DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentSession.java`](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentSession.java) (Treatment sessions), [`DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/SessionMachineLog.java`](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/SessionMachineLog.java) (Session machine logs), [`DermaClinic_server/src/main/java/com/dww/DermaClinic/controller/AuthController.java`](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/controller/AuthController.java) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Identity and access"]
  node_auth_api["Authentication API"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_users["User repository"]
  node_user_data[("User records<br/>[User.java]")]
  node_jwt["JWT utility<br/>[JwtUtil.java]"]
  node_password_encoder["Password encoder"]
end

subgraph group_records["Clinical records"]
  node_patients[("Patient records<br/>[Patient.java]")]
  node_skin_profile[("Dermatology profile")]
  node_skin_images[("Clinical skin images")]
end

subgraph group_care["Treatment delivery"]
  node_plans[("Treatment plans<br/>[TreatmentPlan.java]")]
  node_phases[("Treatment phases")]
  node_sessions[("Treatment sessions")]
  node_consent[("Electronic consent")]
  node_consent_templates[("Consent templates")]
  node_postcare[("Post-care templates")]
  node_safety[("Safety alerts")]
end

subgraph group_resources["Clinic resources"]
  node_machines[("Aesthetic machines")]
  node_machine_logs[("Session machine logs")]
  node_supplies[("Medical supplies<br/>[MedicalSupply.java]")]
  node_stock[("Supply stock batches<br/>[StockBatch.java]")]
  node_consumables[("Consumables usage")]
end

node_staff(("Clinic staff"))

node_staff -->|"submits credentials"| node_auth_api
node_auth_api -->|"delegates auth"| node_auth_service
node_auth_service -->|"finds phone user"| node_users
node_users -->|"queries users"| node_user_data
node_auth_service -->|"checks password"| node_password_encoder
node_auth_service -->|"creates or verifies"| node_jwt
node_sessions -->|"references plan"| node_plans
node_sessions -->|"references phase"| node_phases
node_machine_logs -->|"references session"| node_sessions
node_machine_logs -->|"references machine"| node_machines

click node_auth_api "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/controller/AuthController.java"
click node_auth_service "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/service/AuthService.java"
click node_users "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/repository/UserRepository.java"
click node_user_data "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/User.java"
click node_jwt "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/util/JwtUtil.java"
click node_patients "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/Patient.java"
click node_skin_profile "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/DermatologyProfile.java"
click node_skin_images "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ClinicalSkinImage.java"
click node_plans "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentPlan.java"
click node_phases "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentPhase.java"
click node_sessions "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentSession.java"
click node_consent "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/PatientConsentForm.java"
click node_consent_templates "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ConsentTemplate.java"
click node_postcare "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/PostCareTemplate.java"
click node_safety "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ClinicalSafetyAlert.java"
click node_machines "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/AestheticMachine.java"
click node_machine_logs "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/SessionMachineLog.java"
click node_supplies "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/MedicalSupply.java"
click node_stock "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/StockBatch.java"
click node_consumables "https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentConsumablesUsage.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_api,node_auth_service,node_users,node_user_data,node_jwt,node_password_encoder toneBlue
class node_patients,node_skin_profile,node_skin_images toneAmber
class node_plans,node_phases,node_sessions,node_consent,node_consent_templates,node_postcare,node_safety toneMint
class node_machines,node_machine_logs,node_supplies,node_stock,node_consumables toneRose
class node_staff toneIndigo
```

## Components

### Identity and access

- [Authentication API](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/controller/AuthController.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/controller/AuthController.java`
- [Authentication service](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/service/AuthService.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/service/AuthService.java`
- [User repository](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/repository/UserRepository.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/repository/UserRepository.java`
- [User records](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/User.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/User.java`
- [JWT utility](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/util/JwtUtil.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/util/JwtUtil.java`
- **Password encoder**

### Clinical records

- [Patient records](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/Patient.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/Patient.java`
- [Dermatology profile](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/DermatologyProfile.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/DermatologyProfile.java`
- [Clinical skin images](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ClinicalSkinImage.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ClinicalSkinImage.java`

### Treatment delivery

- [Treatment plans](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentPlan.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentPlan.java`
- [Treatment phases](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentPhase.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentPhase.java`
- [Treatment sessions](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentSession.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentSession.java`
- [Electronic consent](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/PatientConsentForm.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/PatientConsentForm.java`
- [Consent templates](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ConsentTemplate.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ConsentTemplate.java`
- [Post-care templates](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/PostCareTemplate.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/PostCareTemplate.java`
- [Safety alerts](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ClinicalSafetyAlert.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/ClinicalSafetyAlert.java`

### Clinic resources

- [Aesthetic machines](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/AestheticMachine.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/AestheticMachine.java`
- [Session machine logs](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/SessionMachineLog.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/SessionMachineLog.java`
- [Medical supplies](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/MedicalSupply.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/MedicalSupply.java`
- [Supply stock batches](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/StockBatch.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/StockBatch.java`
- [Consumables usage](https://github.com/dww155/dermaclinic/blob/main/DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentConsumablesUsage.java): `DermaClinic_server/src/main/java/com/dww/DermaClinic/entity/TreatmentConsumablesUsage.java`

### Other components

- **Clinic staff**

## Connections

- Clinic staff → Authentication API: submits credentials
- Authentication API → Authentication service: delegates auth
- Authentication service → User repository: finds phone user
- User repository → User records: queries users
- Authentication service → Password encoder: checks password
- Authentication service → JWT utility: creates or verifies
- Treatment sessions → Treatment plans: references plan
- Treatment sessions → Treatment phases: references phase
- Session machine logs → Treatment sessions: references session
- Session machine logs → Aesthetic machines: references machine
