> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tedavi Grupları API

> Klinikte sunulan birden fazla tedaviyi mantıksal veya fiyatsal bir paket altında toplamak için kullanılan tedavi grubu endpoint'leri.

<Note>
  Tüm isteklerde `X-Tenant` header'ı **zorunludur**. Tüm sorgular ve işlemler, yalnızca belirtilen tenant'a ait tedavi grupları ve tedaviler ile sınırlandırılmıştır.
</Note>

## Endpoint özeti

| Metot    | Endpoint                              | Açıklama                                   |
| -------- | ------------------------------------- | ------------------------------------------ |
| `GET`    | `/api/v1/treatment-groups`            | Tedavi gruplarını filtreli olarak listeler |
| `GET`    | `/api/v1/treatment-groups/{id}`       | Tek bir tedavi grubunu detaylı getirir     |
| `POST`   | `/api/v1/treatment-groups`            | Yeni tedavi grubu oluşturur                |
| `PUT`    | `/api/v1/treatment-groups/{id}`       | Tedavi grubunu kısmi günceller             |
| `DELETE` | `/api/v1/treatment-groups/{id}`       | Tedavi grubunu soft delete eder            |
| `DELETE` | `/api/v1/treatment-groups/{id}/force` | Tedavi grubunu kalıcı olarak siler         |

<Tip>
  Tüm parametreler, alanlar ve örnek istek/yanıtlar için **[API Referansı](/api-reference)** sekmesine bakın.
</Tip>

## Tedavi grubu kavramı

Tedavi grupları, klinikte sunulan birden fazla tedaviyi (`treatment`) **mantıksal veya fiyatsal bir paket altında toplamak** için kullanılır.

Bir tedavi grubu; adı, açıklaması, aktiflik durumu, gruba bağlı alt tedaviler ve bu paketin **toplam fiyatlandırma mantığı** (otomatik veya manuel) ile birlikte yönetilir.

## İş kuralları

<Warning>
  **Tedavi sync davranışı:** `treatment_ids` gönderilirse, belirtilen tedaviler otomatik olarak bu gruba bağlanır. **Daha önce başka gruba bağlı olanların eski grup bağı koparılır.**
</Warning>

<Tip>
  **Otomatik fiyat hesaplama:** `is_price_manual=false` ise sistem, grubun `total_price` değerini atanan tedavilerin fiyatlarını toplayarak **otomatik hesaplar**.
</Tip>

<Warning>
  **Fiyat güncelleme kuralı:** İstekte `is_price_manual=false` gönderilirse **veya** veritabanındaki mevcut değeri `false` ise; güncelleme sonrasında sistem toplam fiyatı otomatik olarak yeniden hesaplar.
</Warning>

## Silme kuralları

<Note>
  Bu modülde silme işlemleri oldukça **katı kurallara** bağlıdır. **İçerisinde tedavi barındıran hiçbir grup silinemez.**
</Note>

### Soft delete (`DELETE /api/v1/treatment-groups/{id}`)

<Warning>
  **Katı kural:** Grupta (aktif veya pasif fark etmeksizin) **en ufak bir tedavi (`treatment`) kaydı bulunuyorsa** silme işlemi reddedilir.

  Hata mesajı: `This treatment group cannot be deleted because it has one or more treatments. Please remove all treatments from the group before deleting.`
</Warning>

### Force delete (`DELETE /api/v1/treatment-groups/{id}/force`)

<Warning>
  Geri alınamaz.

  **Katı kural:** Grubun içinde **soft delete edilmiş olanlar dahi** herhangi bir tedavi bulunuyorsa kalıcı silme reddedilir.

  Hata mesajı: `This treatment group cannot be permanently deleted because it has one or more treatments. Please remove all treatments from the group before deleting.`
</Warning>

## Yetkilendirme

### Uygulama izinleri (permissions)

| İşlem                       | Permission                   |
| --------------------------- | ---------------------------- |
| Listeleme                   | `ViewAny:TreatmentGroup`     |
| Detay / Tek gösterme        | `View:TreatmentGroup`        |
| Oluşturma                   | `Create:TreatmentGroup`      |
| Güncelleme                  | `Update:TreatmentGroup`      |
| Silme (soft delete)         | `Delete:TreatmentGroup`      |
| Kalıcı silme (force delete) | `ForceDelete:TreatmentGroup` |

### Token scope'ları (Passport)

| İşlem                                               | Scope                    |
| --------------------------------------------------- | ------------------------ |
| Okuma (`index`, `show`)                             | `treatment_groups:read`  |
| Yazma (`store`, `update`, `destroy`, `forceDelete`) | `treatment_groups:write` |
