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,99 @@
|
||||
# جریان کاربری — تسک ۱۳: سرویسهای کلینیک
|
||||
|
||||
## جریان مشاهده و ایجاد سرویسها
|
||||
|
||||
```
|
||||
کاربر وارد صفحه «سرویسها» میشود
|
||||
│
|
||||
▼
|
||||
GET /api/v1/service-sections
|
||||
→ accordion دو سطحی نمایش داده میشود
|
||||
│
|
||||
بر روی هر بخش کلیک میکند:
|
||||
▼
|
||||
GET /api/v1/service-items/{sectionUuid}
|
||||
→ زیربخشها نمایش داده میشوند
|
||||
```
|
||||
|
||||
## ساختار نمایش (ServicesPage.tsx)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ سرویسهای کلینیک [+ بخش جدید] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ ▼ تزریقات ✏️ 🗑️ │
|
||||
│ ├─ سرم ۵۰۰cc ۸۵,۰۰۰ ریال ✏️ 🗑️ │
|
||||
│ ├─ آمپول B12 ۴۵,۰۰۰ ریال ✏️ 🗑️ │
|
||||
│ └─ [+ سرویس جدید] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ ► فیزیوتراپی ✏️ 🗑️ │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## جریان ایجاد بخش جدید
|
||||
|
||||
```
|
||||
کاربر «+ بخش جدید» کلیک میکند → Modal باز میشود
|
||||
│
|
||||
▼
|
||||
POST /api/v1/service-section { name: 'تزریقات' }
|
||||
│
|
||||
├─► 403 ERR_SUBSCRIPTION_REQUIRED → «پنل Basic لازم است»
|
||||
└─► 201 → accordion بهروز میشود
|
||||
```
|
||||
|
||||
## جریان حذف بخش
|
||||
|
||||
```
|
||||
کاربر روی 🗑️ بخش کلیک میکند
|
||||
│
|
||||
▼
|
||||
ConfirmDialog: «آیا از حذف بخش "تزریقات" مطمئنید؟
|
||||
همه زیربخشهای آن هم حذف میشوند.»
|
||||
│
|
||||
▼
|
||||
DELETE /api/v1/service-section/{uuid}
|
||||
│
|
||||
├─► اگر هیچ زیربخشی ندارد → 200 حذف شد
|
||||
└─► اگر زیربخش دارد → 409 ERR_SERVICE_SECTION_HAS_ITEMS
|
||||
(یا اگر DELETE CASCADE تعریف شده: همه حذف میشوند)
|
||||
```
|
||||
|
||||
## جریان حذف زیربخش
|
||||
|
||||
```
|
||||
DELETE /api/v1/service-item/{uuid}
|
||||
│
|
||||
├─► اگر در هیچ session_services نیست → 200
|
||||
└─► اگر در session_services استفاده شده → 409 ERR_SERVICE_ITEM_IN_USE
|
||||
پیام: «این سرویس در پرونده بیمار ثبت شده و قابل حذف نیست.»
|
||||
```
|
||||
|
||||
## جریان انتخاب پرسنل انجامدهنده
|
||||
|
||||
```
|
||||
هنگام ایجاد/ویرایش ServiceItem:
|
||||
│
|
||||
▼
|
||||
GET /api/v1/staff → SearchableSelect از پرسنل فعال
|
||||
→ «علی رضایی (پرستار)»
|
||||
→ «مریم نوری (فیزیوتراپیست)»
|
||||
→ [بدون پرسنل مشخص]
|
||||
```
|
||||
|
||||
## gate check — کاربر Free
|
||||
|
||||
```
|
||||
کاربر Free روی «سرویسها» در sidebar کلیک میکند
|
||||
│
|
||||
▼
|
||||
ServicesPage.tsx → GET /api/v1/service-sections → 403
|
||||
│
|
||||
▼
|
||||
نمایش banner:
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 🔒 این قابلیت نیاز به پنل Basic یا بالاتر │
|
||||
│ دارد. │
|
||||
│ [مشاهده پنلها] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
Reference in New Issue
Block a user