108 lines
2.8 KiB
Markdown
108 lines
2.8 KiB
Markdown
erDiagram
|
|
%% SHARED COMPONENT (All Members)
|
|
%% User Management is central to the system
|
|
USERS {
|
|
ObjectId _id PK
|
|
string name
|
|
string email
|
|
string password
|
|
string role "Admin, HospitalStaff, Public"
|
|
string nic "National ID"
|
|
string phone
|
|
string address
|
|
date createdAt
|
|
}
|
|
|
|
%% MODULE 1: VACCINE SUPPLY CHAIN (Minidu)
|
|
%% Manages the abstract vaccine types and specific physical batches
|
|
VACCINE {
|
|
ObjectId _id PK
|
|
string name "e.g., Pfizer, Sinopharm"
|
|
string manufacturer
|
|
string description
|
|
int dosesRequired
|
|
int daysBetweenDoses
|
|
string imageUrl "Cloudinary URL"
|
|
}
|
|
|
|
BATCH {
|
|
ObjectId _id PK
|
|
ObjectId vaccineId FK
|
|
ObjectId hospitalId FK
|
|
string batchNumber
|
|
int quantity
|
|
date expiryDate
|
|
date arrivalDate
|
|
string status "Available, Expired, Depleted"
|
|
}
|
|
|
|
%% MODULE 2: CLINIC MANAGEMENT (Nethmi)
|
|
%% Manages the physical locations and time slots
|
|
HOSPITAL {
|
|
ObjectId _id PK
|
|
string name
|
|
string district
|
|
string city
|
|
object location "Lat/Lng from LocationIQ"
|
|
string contactNumber
|
|
string type "Govt, Private"
|
|
}
|
|
|
|
CLINIC {
|
|
ObjectId _id PK
|
|
ObjectId hospitalId FK
|
|
ObjectId vaccineId FK
|
|
date date
|
|
string timeSlot "08:00-12:00"
|
|
int maxCapacity
|
|
int currentBookings
|
|
string status "Scheduled, Active, Completed, Cancelled"
|
|
}
|
|
|
|
%% MODULE 3: APPOINTMENT ENGINE (Saniru)
|
|
%% Manages the booking transaction and queue
|
|
APPOINTMENT {
|
|
ObjectId _id PK
|
|
ObjectId clinicId FK
|
|
ObjectId userId FK
|
|
int queueNumber
|
|
string status "Pending, Completed, Cancelled, No-Show"
|
|
string qrCodeUrl "QR API Generated"
|
|
date bookedAt
|
|
}
|
|
|
|
%% MODULE 4: PATIENT RECORDS & HISTORY (Kaveen)
|
|
%% Manages the permanent medical history and post-vax data
|
|
RECORD {
|
|
ObjectId _id PK
|
|
ObjectId userId FK
|
|
ObjectId appointmentId FK
|
|
ObjectId batchId FK "Traceability"
|
|
date vaccinationDate
|
|
string notes
|
|
date nextDoseDate
|
|
string certificateUrl "Generated PDF"
|
|
}
|
|
|
|
%% RELATIONSHIPS
|
|
%% Linking the specific modules together
|
|
|
|
%% Minidu's Relationships
|
|
VACCINE ||--o{ BATCH : "has many batches"
|
|
|
|
%% Nethmi's Relationships
|
|
HOSPITAL ||--o{ CLINIC : "hosts"
|
|
HOSPITAL ||--o{ BATCH : "stocks"
|
|
|
|
%% Saniru's Relationships
|
|
CLINIC ||--o{ APPOINTMENT : "has bookings"
|
|
USERS ||--o{ APPOINTMENT : "makes"
|
|
|
|
%% Kaveen's Relationships
|
|
APPOINTMENT ||--|| RECORD : "generates"
|
|
USERS ||--o{ RECORD : "has history"
|
|
BATCH ||--o{ RECORD : "used in"
|
|
|
|
%% Cross-Module Links
|
|
VACCINE ||--o{ CLINIC : "offered at"
|