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,69 @@
|
||||
# پایگاه داده — تسک ۱۳: سرویسهای کلینیک
|
||||
|
||||
## جدول: service_sections
|
||||
|
||||
| ستون | نوع | توضیح |
|
||||
|------|-----|-------|
|
||||
| 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 | |
|
||||
| name | VARCHAR(200) NOT NULL | نام بخش |
|
||||
| active | TINYINT(1) NOT NULL DEFAULT 1 | |
|
||||
| created_at | INT NOT NULL | Unix timestamp |
|
||||
| updated_at | INT NOT NULL | Unix timestamp |
|
||||
|
||||
ایندکس:
|
||||
```sql
|
||||
INDEX idx_service_sections_entity ON service_sections(entity_type, entity_id)
|
||||
```
|
||||
|
||||
## جدول: service_items
|
||||
|
||||
| ستون | نوع | توضیح |
|
||||
|------|-----|-------|
|
||||
| id | INT UNSIGNED AUTO_INCREMENT PK | |
|
||||
| uuid | CHAR(36) UNIQUE NOT NULL | |
|
||||
| section_id | INT NOT NULL FK→service_sections.id ON DELETE CASCADE | |
|
||||
| staff_id | INT NULL FK→clinic_staff.id ON DELETE SET NULL | پرسنل انجامدهنده (اختیاری) |
|
||||
| name | VARCHAR(200) NOT NULL | نام سرویس |
|
||||
| price_rials | INT NOT NULL DEFAULT 0 | |
|
||||
| active | TINYINT(1) NOT NULL DEFAULT 1 | |
|
||||
| created_at | INT NOT NULL | |
|
||||
| updated_at | INT NOT NULL | |
|
||||
|
||||
## Migration نمونه
|
||||
|
||||
```sql
|
||||
CREATE TABLE service_sections (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
uuid CHAR(36) NOT NULL UNIQUE,
|
||||
entity_type VARCHAR(10) NOT NULL,
|
||||
entity_id INT NOT NULL,
|
||||
name VARCHAR(200) NOT NULL,
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at INT NOT NULL,
|
||||
updated_at INT NOT NULL,
|
||||
INDEX idx_service_sections_entity (entity_type, entity_id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
CREATE TABLE service_items (
|
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
|
||||
uuid CHAR(36) NOT NULL UNIQUE,
|
||||
section_id INT NOT NULL,
|
||||
staff_id INT NULL,
|
||||
name VARCHAR(200) NOT NULL,
|
||||
price_rials INT NOT NULL DEFAULT 0,
|
||||
active TINYINT(1) NOT NULL DEFAULT 1,
|
||||
created_at INT NOT NULL,
|
||||
updated_at INT NOT NULL,
|
||||
FOREIGN KEY (section_id) REFERENCES service_sections(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (staff_id) REFERENCES clinic_staff(id) ON DELETE SET NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
```
|
||||
|
||||
## نکات مهم
|
||||
|
||||
- `section_id ON DELETE CASCADE` — حذف بخش، همه زیربخشها را هم حذف میکند
|
||||
- `staff_id ON DELETE SET NULL` — غیرفعالسازی پرسنل، سرویس را حذف نمیکند فقط staff_id=NULL میشود
|
||||
- `session_services.service_item_id` در تسک ۱۵ با `ON DELETE RESTRICT` → اگر item در سشنی باشد، حذف block میشود
|
||||
Reference in New Issue
Block a user