# asmee27/healthvault architecture

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

- Interactive diagram: https://gitdiagram.com/asmee27/healthvault
- Repository: https://github.com/asmee27/healthvault

## Overview

HVault is a healthcare-records and care-coordination product with separate patient and doctor web apps backed by a Spring service. The patient workflow covers account access, health dashboard, records and uploads, prescriptions, profile, and an AI assistant; doctors scan patient IDs, review records, and create prescriptions. Backend capabilities also include appointments, QR identity, medicine reminders, and push notifications. The README is only a placeholder, and many controllers and screens were not sampled, so some subsystem links are intentionally omitted rather than inferred.

Main entry points: [`Frontend/Patient/src/App.jsx`](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/App.jsx) (Patient routes), [`Frontend/Doctor/src/App.jsx`](https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/App.jsx) (Doctor routes), [`Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java`](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java) (Report handling), [`Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java`](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java) (Prescription handling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_patient["Patient app"]
  node_patient_app["Patient routes<br/>[App.jsx]"]
  node_patient_access["Access screens<br/>[LoginScreen.jsx]"]
  node_patient_dashboard["Health dashboard"]
  node_patient_records["Records and uploads<br/>[RecordsScreen.jsx]"]
  node_patient_prescriptions["Prescriptions"]
  node_patient_profile["Patient profile<br/>[ProfileScreen.jsx]"]
  node_patient_ai["AI assistant"]
  node_patient_push["Push notifications"]
end

subgraph group_doctor["Doctor app"]
  node_doctor_app["Doctor routes<br/>[App.jsx]"]
  node_doctor_scan["Scan patient ID<br/>[ScanPatientID.jsx]"]
  node_doctor_overview["Patient overview"]
  node_doctor_prescription["Write prescription"]
end

subgraph group_backend["Backend services"]
  node_auth["Authentication<br/>[AuthService.java]"]
  node_report_controller["Report API"]
  node_report_service["Report handling"]
  node_prescription_controller["Prescription API"]
  node_prescription_service["Prescription handling"]
  node_push_controller["Push subscription API"]
  node_push_service["Web push delivery"]
  node_ai_service["AI service<br/>[AIService.java]"]
  node_appointment_service["Appointments"]
  node_qr_service["QR identity<br/>[QRService.java]"]
  node_reminder_scheduler["Medicine reminders"]
end

subgraph group_data["Persistence and files"]
  node_users[("User records")]
  node_reports[("Medical reports")]
  node_prescriptions[("Prescription records")]
  node_reminder_logs[("Reminder logs")]
  node_push_subscriptions[("Push subscriptions")]
end

node_patient_actor(("Patient"))
node_doctor_actor(("Doctor"))
node_cloudinary["Cloudinary storage"]

node_patient_actor -->|"uses"| node_patient_app
node_patient_app -->|"routes to"| node_patient_access
node_patient_app -->|"routes to"| node_patient_dashboard
node_patient_app -->|"routes to"| node_patient_records
node_patient_app -->|"routes to"| node_patient_prescriptions
node_patient_app -->|"routes to"| node_patient_profile
node_patient_app -->|"routes to"| node_patient_ai
node_patient_app -.->|"uses"| node_patient_push
node_doctor_actor -->|"uses"| node_doctor_app
node_doctor_app -->|"routes to"| node_doctor_scan
node_doctor_app -->|"routes to"| node_doctor_overview
node_doctor_app -->|"routes to"| node_doctor_prescription
node_report_controller -->|"calls"| node_report_service
node_report_service -->|"reads and writes"| node_reports
node_report_service -->|"looks up"| node_users
node_report_service -->|"uploads files"| node_cloudinary
node_prescription_controller -->|"calls"| node_prescription_service
node_prescription_service -->|"reads and writes"| node_prescriptions
node_prescription_service -->|"looks up"| node_users
node_prescription_service -->|"deletes logs"| node_reminder_logs
node_auth -->|"reads and writes"| node_users
node_push_controller -->|"looks up"| node_users
node_push_controller -->|"reads and writes"| node_push_subscriptions
node_push_controller -->|"sends notification"| node_push_service
node_patient_records -.->|"requests reports"| node_report_controller
node_doctor_prescription -.->|"submits prescription"| node_prescription_controller

click node_patient_app "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/App.jsx"
click node_patient_access "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/LoginScreen.jsx"
click node_patient_dashboard "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/DashboardScreen.jsx"
click node_patient_records "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/RecordsScreen.jsx"
click node_patient_prescriptions "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/PrescriptionsScreen.jsx"
click node_patient_profile "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/ProfileScreen.jsx"
click node_patient_ai "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/AIHealthAssistant.jsx"
click node_patient_push "https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/services/pushNotificationService.js"
click node_doctor_app "https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/App.jsx"
click node_doctor_scan "https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/screens/ScanPatientID.jsx"
click node_doctor_overview "https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/screens/PatientOverview.jsx"
click node_doctor_prescription "https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/screens/AddPrescription.jsx"
click node_auth "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/AuthService.java"
click node_report_controller "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/controller/MedicalReportController.java"
click node_report_service "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java"
click node_prescription_controller "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PrescriptionController.java"
click node_prescription_service "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java"
click node_push_controller "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PushSubscriptionController.java"
click node_push_service "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/WebPushService.java"
click node_ai_service "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/AIService.java"
click node_appointment_service "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/AppointmentService.java"
click node_qr_service "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/QRService.java"
click node_reminder_scheduler "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicineReminderScheduler.java"
click node_users "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/UserRepository.java"
click node_reports "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/MedicalReportRepository.java"
click node_prescriptions "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/PrescriptionRepository.java"
click node_reminder_logs "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/ReminderLogRepository.java"
click node_push_subscriptions "https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/PushSubscriptionRepository.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_patient_app,node_patient_access,node_patient_dashboard,node_patient_records,node_patient_prescriptions,node_patient_profile,node_patient_ai,node_patient_push toneBlue
class node_doctor_app,node_doctor_scan,node_doctor_overview,node_doctor_prescription,node_cloudinary toneAmber
class node_auth,node_report_controller,node_report_service,node_prescription_controller,node_prescription_service,node_push_controller,node_push_service,node_ai_service,node_appointment_service,node_qr_service,node_reminder_scheduler toneMint
class node_users,node_reports,node_prescriptions,node_reminder_logs,node_push_subscriptions toneRose
class node_patient_actor,node_doctor_actor toneIndigo
```

## Components

### Patient app

- [Patient routes](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/App.jsx): `Frontend/Patient/src/App.jsx`
- [Access screens](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/LoginScreen.jsx): `Frontend/Patient/src/screens/LoginScreen.jsx`
- [Health dashboard](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/DashboardScreen.jsx): `Frontend/Patient/src/screens/DashboardScreen.jsx`
- [Records and uploads](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/RecordsScreen.jsx): `Frontend/Patient/src/screens/RecordsScreen.jsx`
- [Prescriptions](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/PrescriptionsScreen.jsx): `Frontend/Patient/src/screens/PrescriptionsScreen.jsx`
- [Patient profile](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/ProfileScreen.jsx): `Frontend/Patient/src/screens/ProfileScreen.jsx`
- [AI assistant](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/screens/AIHealthAssistant.jsx): `Frontend/Patient/src/screens/AIHealthAssistant.jsx`
- [Push notifications](https://github.com/asmee27/healthvault/blob/main/Frontend/Patient/src/services/pushNotificationService.js): `Frontend/Patient/src/services/pushNotificationService.js`

### Doctor app

- [Doctor routes](https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/App.jsx): `Frontend/Doctor/src/App.jsx`
- [Scan patient ID](https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/screens/ScanPatientID.jsx): `Frontend/Doctor/src/screens/ScanPatientID.jsx`
- [Patient overview](https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/screens/PatientOverview.jsx): `Frontend/Doctor/src/screens/PatientOverview.jsx`
- [Write prescription](https://github.com/asmee27/healthvault/blob/main/Frontend/Doctor/src/screens/AddPrescription.jsx): `Frontend/Doctor/src/screens/AddPrescription.jsx`

### Backend services

- [Authentication](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/AuthService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/AuthService.java`
- [Report API](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/controller/MedicalReportController.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/MedicalReportController.java`
- [Report handling](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java`
- [Prescription API](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PrescriptionController.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PrescriptionController.java`
- [Prescription handling](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java`
- [Push subscription API](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PushSubscriptionController.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PushSubscriptionController.java`
- [Web push delivery](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/WebPushService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/WebPushService.java`
- [AI service](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/AIService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/AIService.java`
- [Appointments](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/AppointmentService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/AppointmentService.java`
- [QR identity](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/QRService.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/QRService.java`
- [Medicine reminders](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicineReminderScheduler.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicineReminderScheduler.java`

### Persistence and files

- [User records](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/UserRepository.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/repository/UserRepository.java`
- [Medical reports](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/MedicalReportRepository.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/repository/MedicalReportRepository.java`
- [Prescription records](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/PrescriptionRepository.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/repository/PrescriptionRepository.java`
- [Reminder logs](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/ReminderLogRepository.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/repository/ReminderLogRepository.java`
- [Push subscriptions](https://github.com/asmee27/healthvault/blob/main/Backend/hvault-backend/src/main/java/com/hvault/backend/repository/PushSubscriptionRepository.java): `Backend/hvault-backend/src/main/java/com/hvault/backend/repository/PushSubscriptionRepository.java`

### Other components

- **Patient**
- **Doctor**
- **Cloudinary storage**

## Connections

- Patient → Patient routes: uses (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → Access screens: routes to (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → Health dashboard: routes to (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → Records and uploads: routes to (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → Prescriptions: routes to (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → Patient profile: routes to (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → AI assistant: routes to (evidence: `Frontend/Patient/src/App.jsx`)
- Patient routes → Push notifications: uses
- Doctor → Doctor routes: uses (evidence: `Frontend/Doctor/src/App.jsx`)
- Doctor routes → Scan patient ID: routes to (evidence: `Frontend/Doctor/src/App.jsx`)
- Doctor routes → Patient overview: routes to (evidence: `Frontend/Doctor/src/App.jsx`)
- Doctor routes → Write prescription: routes to (evidence: `Frontend/Doctor/src/App.jsx`)
- Report API → Report handling: calls (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/MedicalReportController.java`)
- Report handling → Medical reports: reads and writes (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java`)
- Report handling → User records: looks up (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java`)
- Report handling → Cloudinary storage: uploads files (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/MedicalReportService.java`)
- Prescription API → Prescription handling: calls (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PrescriptionController.java`)
- Prescription handling → Prescription records: reads and writes (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java`)
- Prescription handling → User records: looks up (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java`)
- Prescription handling → Reminder logs: deletes logs (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/PrescriptionService.java`)
- Authentication → User records: reads and writes (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/service/AuthService.java`)
- Push subscription API → User records: looks up (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PushSubscriptionController.java`)
- Push subscription API → Push subscriptions: reads and writes (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PushSubscriptionController.java`)
- Push subscription API → Web push delivery: sends notification (evidence: `Backend/hvault-backend/src/main/java/com/hvault/backend/controller/PushSubscriptionController.java`)
- Records and uploads → Report API: requests reports
- Write prescription → Prescription API: submits prescription
