# تسک ۱۳: سرویس‌های کلینیک (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 | سرویس در پرونده بیمار استفاده شده — قابل حذف نیست |
