> ## 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.

# Hastalar

> Hasta kayıtları, çoklu kanal eşleştirme, etiketler ve KVKK yaklaşımı.

Hasta (`Customer`), Flextell'de tedavi/satış ilişkisi kurulan kişiyi temsil eden ana kayıttır. Bütün görüşmeler, randevular ve satışlar bir hastaya bağlanır.

## Hasta nereden gelir?

Bir hasta panelde **manuel** girilebilir veya kanaldan gelen mesajla **otomatik** oluşturulabilir.

```mermaid theme={null}
flowchart LR
    M1[WhatsApp mesajı] -->|phone_number| K{Mevcut<br/>hasta?}
    M2[Telegram mesajı] -->|CustomerIdentity<br/>channel_id + identifier| K
    M3[Panelde manuel ekle] --> K
    K -->|Var| E[Mevcut hastaya bağla]
    K -->|Yok| Y[Yeni hasta + identity yarat]
```

## Kanaldan gelen mesajda eşleştirme

Yeni bir mesaj geldiğinde Flextell, gönderici adresini iki yoldan biriyle bir hastaya bağlar (`ConversationResolver`):

* **Telefon tabanlı kanallar** (WhatsApp) → `Customer.phone_number`. Adres normalize edilir; aynı firmada o numara varsa mevcut hastaya, yoksa yeni hasta yaratılıp ona bağlanır.
* **Telefon dışı kanallar** (Telegram) → `CustomerIdentity` tablosu, `channel_id + identifier` çifti. Aynı kanalda aynı identifier daha önce görülmüşse mevcut hastaya, yoksa yeni hasta + identity yaratılıp ona bağlanır.

| Kanal    | `usesPhoneNumber` | Eşleşme anahtarı                                  |
| -------- | :---------------: | ------------------------------------------------- |
| WhatsApp |         ✓         | `Customer.phone_number` (normalize edilmiş E.164) |
| Telegram |         —         | `CustomerIdentity.identifier` = Telegram chat\_id |

<Note>
  `CustomerIdentity` aynı hastanın birden fazla kanaldaki kimliğini bir arada tutar — bir Telegram kullanıcısı için identity kaydı oluşurken aynı hastanın WhatsApp numarası da telefon eşleşmesinden gelmiş olabilir. Identity kaydı kanal başına `unique`'tir.
</Note>

## Hasta alanları

`Customer` modelindeki temel alanlar:

| Alan                                   | Tip    | Notlar                            |
| -------------------------------------- | ------ | --------------------------------- |
| `first_name`, `last_name`              | string | Ad-soyad                          |
| `phone_number`                         | string | E.164 (+90...)                    |
| `email`                                | string | İsteğe bağlı                      |
| `date_of_birth`                        | date   | Yaş bazlı raporlar için           |
| `gender`                               | enum   | —                                 |
| `country_id`, `city_id`, `district_id` | int    | Adres                             |
| `identity_number`                      | string | TCKN                              |
| `passport_number`                      | string | Yabancı hasta için                |
| `job`                                  | string | Meslek                            |
| `address`                              | text   | Açık adres                        |
| `default_channel_id`                   | int    | Birincil kanal                    |
| `is_intake_completed`                  | bool   | Hasta intake formu doldurulmuş mu |

## Etiketler

`customer_tags` pivot tablosu üzerinden hastalara etiket atanır. Tipik kullanımlar:

* **İlgi alanı:** *"Estetik"*, *"Diş Hekimliği"*, *"Fizyoterapi"*
* **Durum:** *"VIP"*, *"Borçlu"*, *"Yeni"*, *"İlgisiz"*
* **Kaynak:** *"Google Ads"*, *"Tavsiye"*

Toplu mesaj gönderirken etikete göre hedefleme yapabilirsiniz.

## Lead ile ilişki

Henüz hasta olmayan, ilgi göstermiş kişiler ayrı `Lead` modelinde tutulur ve dönüşüm anında hastaya çevrilir. Detay: [Lead'ler](/documentation/leads/overview).

## Gizlilik & KVKK

* Hastalar firmaya aittir — başka firmadan **görünmez**.
* Veri silme talebi gelirse panel'den `Hastalar → Sil`. Geçmiş randevu ve satış kayıtlarındaki hasta adı anonimleştirilir; finansal kayıt silinmez.
* Tüm değişiklikler [Aktivite Logları](/documentation/system/activity-log)'na düşer.

## API tarafı

Hastalar `/customers` kaynağı altındadır. Arama, oluşturma, güncelleme örnekleri için API rehberi: [Randevu oluşturma](/guides/create-appointment).

## Sonraki adımlar

<CardGroup cols={2}>
  <Card title="Lead'ler" icon="user-plus" href="/documentation/leads/overview">
    İlgilenen kişileri hastaya dönüştürme.
  </Card>

  <Card title="Randevu açma" icon="calendar-plus" href="/documentation/appointments/booking-flow">
    Hastaya randevu nasıl açılır.
  </Card>
</CardGroup>
