Files

2.9 KiB

تسک ۱۳: سرویس‌های کلینیک (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

{
  "name": "تزریقات"
}

POST /api/v1/service-item

{
  "section_uuid": "uuid-of-section",
  "name": "سرم ۵۰۰cc",
  "price_rials": 85000,
  "staff_uuid": "uuid-of-staff-optional"
}

PATCH /api/v1/service-item/{uuid}

{
  "price_rials": 95000,
  "staff_uuid": null
}

نمونه Response

GET /api/v1/service-sections

{
  "success": true,
  "data": [
    {
      "uuid": "...",
      "name": "تزریقات",
      "active": true,
      "items_count": 3
    },
    {
      "uuid": "...",
      "name": "فیزیوتراپی",
      "active": true,
      "items_count": 7
    }
  ]
}

GET /api/v1/service-items/{sectionUuid}

{
  "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 سرویس در پرونده بیمار استفاده شده — قابل حذف نیست