← Назад к ТЗ

📐 Модель данных — Smile Clinic CRM/MIS

1. Доменная карта

ДоменСущностиОписание
CoreBranch, Organization, User, Role, PermissionЯдро: филиалы, юрлица, пользователи
HREmployee, Schedule, ShiftLog, SalaryConfig, SalaryAccrualПерсонал, графики, ЗП
SchedulingAppointment, AppointmentStatus, RoomЗаписи, кабинеты
CRMPatient, PatientFamily, Lead, LeadSource, FunnelStage, FunnelEntryПациенты, лиды, воронка
ClinicalMedicalRecord, Visit, ToothChart, TreatmentPlan, TreatmentPlanItem, PhotoProtocol, MedDocument, DocTemplateМедблок
FinanceCashRegister, FinancialTransaction, FinancialCategory, PriceList, PriceItem, Invoice, Payment, Refund, BankStatement, BonusAccount, Deposit, Discount, FundФинансы
WarehouseWarehouse, Item, ItemCategory, StockEntry, StockMovement, Purchase, PurchaseItem, WriteOff, MaterialRequest, Inventory, LabСклад, заявки, лаборатории
CommunicationMessageTemplate, MessageLog, Notification, TaskItemКоммуникации, задачи

2. Ключевые сущности

Branch (Филиал)

АтрибутТипОбяз.ОграниченияОписание
idUUIDPKИдентификатор
namestringmax:100Название
addressstringmax:300Адрес
phonestringТелефон
organization_idUUIDFK→OrganizationЮрлицо
is_activebooleandefault:trueАктивен

Employee (Сотрудник)

АтрибутТипОбяз.ОграниченияОписание
idUUIDPK
full_namestringmax:200ФИО
iinstringunique, 12 цифрИИН (Казахстан)
phonestringТелефон
positionstringДолжность
specializationstringДля врачей
branch_idUUIDFK→BranchФилиал
official_salarydecimal«Белая» ЗП
real_salary_configJSONУправленческая ЗП (% + бонусы)
qr_codestringuniqueQR для авторизации

Patient (Пациент)

АтрибутТипОбяз.ОграниченияОписание
idUUIDPK
full_namestringmax:200ФИО
iinstringunique, 12 цифрИИН
phonestringТелефон
phone_whatsappstringWhatsApp
birth_datedateДата рождения
is_childbooleandefault:falseНесовершеннолетний
guardian_idUUIDFK→PatientОпекун
lead_source_idUUIDFK→LeadSourceИсточник

Appointment (Запись)

АтрибутТипОбяз.ОграниченияОписание
patient_idUUIDFK→PatientПациент
employee_idUUIDFK→EmployeeВрач
room_idUUIDFK→RoomКабинет
start_time / end_timedatetimeПериод
statusenumdefault:scheduledСтатус записи
is_first_visitbooleancomputedПервичный?

Warehouse (Склад) + MaterialRequest (Заявка)

АтрибутТипОписание
Warehouse.namestringНазвание склада
Warehouse.branch_idFK→BranchФилиал
Warehouse.typeenummain / cabinet
MaterialRequest.requested_byFK→EmployeeМедсестра / врач
MaterialRequest.statusenumpending → approved → issued / rejected
MaterialRequest.issued_atdatetimeКогда выдано (детализация)

3. Статусные машины (Enums)

AppointmentStatus

Статус→ Переходы
scheduled (Запланирована)confirmed, cancelled, no_show
confirmed (Подтверждена)in_progress, cancelled, no_show
in_progress (В процессе)completed
completed (Завершена)
cancelled / no_showscheduled (перезапись)

PaymentMethod (10 способов)

ЗначениеМетка
cashНаличные
cardБанковская карта
kaspi_payКаспий Pay
installment_nb / kaspiРассрочка НБ / Каспий
credit_nbКредит НБ
bonusБонусы
depositСо счёта-депозита
certificateПодарочный сертификат

FundType (Распределение прибыли)

ФондДоля
Развитие компании20%
Развитие команды18%
Бонусы управляющему7%
Резервы20%
Дивиденды35%

4. Бизнес-правила (constraints)

  1. Запись — нельзя на нерабочее время или занятый слот
  2. Ребёнок — обязательный guardian_id если is_child = true
  3. План лечения — total = Σ items
  4. Оплата — сумма ≤ сумма счёта
  5. Возврат — вычет из ЗП врача
  6. Перелечивание — минус врачу А + плюс врачу Б
  7. Списание — не более остатка на складе
  8. Единицы — приход (банки) → расход (карпулы) + коэф. конверсии
  9. QR — check_in предшествует check_out
  10. Фонды — Σ долей = 100%
  11. Все сущности: created_at, updated_at, created_by, updated_by, deleted_at (soft delete)

← Назад к ТЗ Системный анализ → Бизнес-процессы →