Implement SMS panel user flow and patient records system; add wallet charging, automatic reminders, and patient session management with detailed database schema and user flows.
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# پایگاه داده — تسک ۱۰: مدیریت پرسنل (Staff)
|
||||
|
||||
## جدول: clinic_staff
|
||||
|
||||
| ستون | نوع | توضیح |
|
||||
|------|-----|-------|
|
||||
| id | INT UNSIGNED AUTO_INCREMENT PK | |
|
||||
| uuid | CHAR(36) UNIQUE NOT NULL | |
|
||||
| entity_type | VARCHAR(10) NOT NULL | `'doctor'` یا `'clinic'` |
|
||||
| entity_id | INT NOT NULL | FK به doctors.id یا clinics.id (bسته به entity_type) |
|
||||
| full_name | VARCHAR(200) NOT NULL | نام و نامخانوادگی — اجباری |
|
||||
| phone | VARCHAR(20) NULL | |
|
||||
| job_title | VARCHAR(100) NULL | عنوان شغل |
|
||||
| address | TEXT NULL | |
|
||||
| national_code | CHAR(10) NULL | |
|
||||
| active | TINYINT(1) NOT NULL DEFAULT 1 | غیرفعال = soft delete |
|
||||
| created_at | INT NOT NULL | Unix timestamp |
|
||||
| updated_at | INT NOT NULL | Unix timestamp |
|
||||
|
||||
## ایندکسها
|
||||
|
||||
```sql
|
||||
CREATE INDEX idx_clinic_staff_entity
|
||||
ON clinic_staff(entity_type, entity_id, active);
|
||||
```
|
||||
|
||||
## نکات مهم
|
||||
|
||||
- **هیچ FK خارجی** برای entity_id تعریف نمیشود — چون entity_type polymorphic است و میتواند doctor یا clinic باشد. مسئولیت یکپارچگی با لایه application است.
|
||||
- `active = 0` به معنای حذف منطقی است — ردیف هرگز از جدول پاک نمیشود
|
||||
- وقتی staff غیرفعال میشود، service_items و session_services قبلی دستنخورده میمانند
|
||||
|
||||
## Migration نمونه
|
||||
|
||||
```sql
|
||||
CREATE TABLE clinic_staff (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
uuid CHAR(36) NOT NULL UNIQUE,
|
||||
entity_type VARCHAR(10) NOT NULL,
|
||||
entity_id INT NOT NULL,
|
||||
full_name VARCHAR(200) NOT NULL,
|
||||
phone VARCHAR(20) NULL,
|
||||
job_title VARCHAR(100) NULL,
|
||||
address TEXT NULL,
|
||||
national_code CHAR(10) NULL,
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at INT NOT NULL,
|
||||
updated_at INT NOT NULL,
|
||||
INDEX idx_clinic_staff_entity (entity_type, entity_id, active)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
```
|
||||
Reference in New Issue
Block a user