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,102 @@
|
||||
# تسک ۱۳: سرویسهای کلینیک (Clinic Services)
|
||||
|
||||
## توضیح
|
||||
پیادهسازی مدیریت سرویسهای کلینیک در دو سطح: بخش (ServiceSection) و زیربخش (ServiceItem).
|
||||
دسترسی فقط در پنل **Basic+** — gate: `hasFeature('services')`.
|
||||
در تسک ۱۵ (پرونده بیمار)، ServiceItems در سشنهای بیمار استفاده میشوند.
|
||||
|
||||
## Endpoint ها
|
||||
|
||||
| متد | مسیر | Gate | توضیح |
|
||||
|-----|------|------|-------|
|
||||
| GET | `/api/v1/service-sections` | Basic+ | لیست بخشها |
|
||||
| POST | `/api/v1/service-section` | Basic+ | ایجاد بخش |
|
||||
| PATCH | `/api/v1/service-section/{uuid}` | Basic+ | ویرایش بخش |
|
||||
| DELETE | `/api/v1/service-section/{uuid}` | Basic+ | حذف بخش |
|
||||
| GET | `/api/v1/service-items/{sectionUuid}` | Basic+ | لیست زیربخشهای یک بخش |
|
||||
| POST | `/api/v1/service-item` | Basic+ | ایجاد زیربخش |
|
||||
| PATCH | `/api/v1/service-item/{uuid}` | Basic+ | ویرایش زیربخش |
|
||||
| DELETE | `/api/v1/service-item/{uuid}` | Basic+ | حذف زیربخش |
|
||||
|
||||
**نکته DELETE:** حذف سخت مجاز است — اما اگر ServiceItem در session_services استفاده شده باشد، باید با خطا متوقف شود (FK ON DELETE RESTRICT).
|
||||
|
||||
## پیشنیازها
|
||||
- **تسک ۱۰** (ClinicStaff — برای staff_id در ServiceItem)
|
||||
- **تسک ۱۱** (Subscription — hasFeature gate)
|
||||
|
||||
## زمان تخمینی
|
||||
۸ تا ۱۰ ساعت
|
||||
|
||||
## نمونه Request
|
||||
|
||||
### POST /api/v1/service-section
|
||||
```json
|
||||
{
|
||||
"name": "تزریقات"
|
||||
}
|
||||
```
|
||||
|
||||
### POST /api/v1/service-item
|
||||
```json
|
||||
{
|
||||
"section_uuid": "uuid-of-section",
|
||||
"name": "سرم ۵۰۰cc",
|
||||
"price_rials": 85000,
|
||||
"staff_uuid": "uuid-of-staff-optional"
|
||||
}
|
||||
```
|
||||
|
||||
### PATCH /api/v1/service-item/{uuid}
|
||||
```json
|
||||
{
|
||||
"price_rials": 95000,
|
||||
"staff_uuid": null
|
||||
}
|
||||
```
|
||||
|
||||
## نمونه Response
|
||||
|
||||
### GET /api/v1/service-sections
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"uuid": "...",
|
||||
"name": "تزریقات",
|
||||
"active": true,
|
||||
"items_count": 3
|
||||
},
|
||||
{
|
||||
"uuid": "...",
|
||||
"name": "فیزیوتراپی",
|
||||
"active": true,
|
||||
"items_count": 7
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### GET /api/v1/service-items/{sectionUuid}
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"uuid": "...",
|
||||
"name": "سرم ۵۰۰cc",
|
||||
"price_rials": 85000,
|
||||
"staff": { "uuid": "...", "full_name": "علی رضایی" },
|
||||
"active": true
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## کدهای خطا
|
||||
|
||||
| کد | HTTP | توضیح |
|
||||
|----|------|-------|
|
||||
| `ERR_SUBSCRIPTION_REQUIRED` | 403 | پنل Basic یا بالاتر لازم است |
|
||||
| `ERR_SERVICE_SECTION_HAS_ITEMS` | 409 | بخش دارای زیربخش است — ابتدا آنها را حذف کنید |
|
||||
| `ERR_SERVICE_ITEM_IN_USE` | 409 | سرویس در پرونده بیمار استفاده شده — قابل حذف نیست |
|
||||
Reference in New Issue
Block a user