1. Архитектура ролей и доступ к данным
Строгая ролевая модель, изоляция филиалов (branch_id) и защита медицинских данных.
Сводная таблица прав и обязанностей сотрудников
Настройки → Персонал клиники
• Суперадминистратор клиники (admin): Вся клиника и все филиалы (branch_id = null). Полный доступ: филиалы, сотрудники, матрица цен, онлайн-запись, общие скидки, вся аналитика, биллинг, очистка базы, SMTP. Не может удалить сам себя или изменить свою роль, если остался единственным администратором.
• Администратор филиала (branch_admin): Только свой филиал (branch_id). Управление сотрудниками своего филиала, локальный прайс-лист филиала, касса и записи своего филиала, кассовый отчет. Запрещено: создание admin и других branch_admin, удаление филиалов, смена имени филиала, доступ к общим разделам (биллинг тарифа, квоты диска, глобальный SMTP).
• Врач клиники (dentist): Свой филиал и только прикреплённые пациенты. Своё расписание, журнал записей, зубная формула, снимки и история лечения прикрепленных пациентов, чат «Второе мнение». Запрещен доступ к медицинской карте пациента (формула, снимки, история), если пациент не закреплен за этим врачом. Не может принимать оплаты.
• Соло-стоматолог (dentist без clinic_id): Личный кабинет (индивидуальная практика). Полный функционал: сам себе администратор, кассир и врач. Доступны скидки, онлайн-запись, личный логотип, аналитика, биллинг. Нет модуля филиалов и штатного расписания сторонних сотрудников.
• Оператор / Ресепшн (operator): Только свой филиал. Создание пациентов, журнал записей, приём платежей, печать квитанций, свой сменный отчет кассира. Полный запрет на медицинские данные: не видит файлы снимков, зубную формулу и историю лечения зубов.
2. Первоначальный запуск и настройка (клиника и соло-стоматолог)
Для клиник и соло-стоматологов: регистрация, часовой пояс, валюта, логотип, а для клиник ещё филиалы, сотрудники и почтовый сервер SMTP.
Видеоуроки: с чего начать
Короткие ролики показывают, как начать работу в OraFlow. Начните с ввода расписания, остальное станет понятно по ходу. Подходит и клиникам, и соло-стоматологам. Все ролики собраны в одном плейлисте, новые добавляются туда же.
Смотреть видеоуроки на YouTube
Регистрация и активация учётной записи
Страница /register
- Перейдите на страницу регистрации (/register).
- Выберите тип кабинета: «Стоматолог» (для индивидуальной практики на 1 врача) или «Клиника» (для организаций с несколькими врачами/филиалами; укажите лимит штата: 6, 11, 16, 31).
- Заполните обязательные поля: логин, пароль, имя, фамилия, рабочий email, телефон (с кодом страны) и название клиники.
- На почту поступит письмо. Перейдите по ссылке для активации учётной записи (срок действия ссылки — 24 часа).
Настройка реквизитов, часового пояса и валюты
Настройки → Брендинг и виджеты / Настройки → Прайс-лист
- Часовой пояс: перейдите в «Настройки» → «Брендинг и виджеты» (внизу страницы). Нажмите на карандаш рядом с полем часового пояса и выберите свой регион. Границы смен, онлайн-слоты и финансовые отчёты рассчитываются строго по часовому поясу клиники, а не по часам устройства пользователя.
- Валюта расчетов: перейдите в «Настройки» → «Прайс-лист». В правом верхнем углу выберите валюту (USD, EUR, RUB, AMD, AED, CNY или введите кастомную до 4 символов). Валюта едина для всей клиники.
- Логотип: в разделе «Брендинг и виджеты» → «Логотипы» загрузите логотип клиники (JPEG/PNG до 5 МБ). Система автоматически оптимизирует размер под контейнер 288×96 px без обрезки текста.
Добавление филиалов и персонала
Настройки → Персонал клиники
- Филиалы: перейдите в «Настройки» → «Персонал клиники» → вкладка «Клиника и филиалы». Нажмите «+ Добавить филиал», укажите наименование, точный адрес и телефон(ы).
- Сотрудники: перейдите во вкладку «Сотрудники», нажмите «+ Добавить сотрудника». Введите логин, ФИО, email, телефон, выберите роль и филиал. На указанный email сотрудника автоматически отправится сгенерированный временный пароль.
Настройка почты для уведомлений (SMTP)
Настройки → Уведомления → Настройки SMTP
- Откройте «Настройки» → «Уведомления» → «Настройки SMTP».
- Введите сервер, порт (обычно 465 для SSL или 587 для TLS), логин (ваш email) и пароль.
- Для Gmail / Яндекс: используйте специальный 16-значный Пароль приложения (App Password), сгенерированный в настройках безопасности почтового сервиса, а не основной пароль от почты.
- Введите тестовый адрес в поле «Тестовый Email» и нажмите кнопку «Тест».
- После успешной отправки нажмите «Сохранить».
3. Графики работы и управление сменами
Построение графиков по дням недели, четным/нечетным числам, интервалы и интерактивные исключения.
Варианты построения расписания врачей
Настройки → График работы
• По дням недели (weekdays): включите нужные рабочие дни (Пн, Вт, Ср и т.д.). Для каждого дня задайте время начала и окончания смены. Для добавления перерыва нажмите «+ Добавить интервал» (например: 09:00–14:00 и 15:00–19:00). Минимальная длина интервала — 15 минут, пересечения интервалов блокируются автоматически.
• Чётные / Нечётные дни (even-odd): система определяет график по календарному числу дня (2, 4, 6... или 1, 3, 5...). Настройте часы работы для чётных и нечётных смен. В блоке «Исключить дни недели» отключите постоянные выходные (например, снимите субботу и воскресенье, чтобы они всегда оставались нерабочими независимо от числа).
Работа с календарем исключений и история смен
Настройки → График работы → Интерактивный календарь
• Назначить внеплановый выходной: кликните по рабочему дню в календаре — дата пометится красным контуром. Онлайн-запись и обычная запись на этот день закроются.
• Назначить рабочую смену в выходной: кликните по любому нерабочему дню. В появившемся окне задайте часы работы именно на эту дату.
• История графиков: система сохраняет все предыдущие версии расписания. Прошедшие приёмы не смещаются при изменении текущего графика.
4. Календарь и журнал приёмов
Сетка визитов, статусы обслуживания, перенос Drag-and-Drop и аудит приёмов.
Режимы сетки расписания
Расписание
• Дневной вид (по сотрудникам): в шапке отображаются все врачи выбранного филиала параллельными колонками.
• Недельный вид: отображает 7 дней недели для выбранного доктора.
• Быстрое переключение формата времени: кликните по шкале времени слева, чтобы мгновенно переключить режим 24ч / 12ч (AM/PM).
Создание записи на приём
Расписание
- Кликните по свободному голубому слоту в колонке врача (или нажмите «Записать на приём»). Голубой цвет означает, что время попадает в рабочий график доктора.
- В окне записи найдите существующего пациента по имени, телефону или email (поиск работает от 3 символов) либо введите новое имя и нажмите «Создать нового пациента».
- Выберите одну или несколько процедур из прайса (длительность и цена суммируются автоматически).
- Укажите тип визита: Одиночный визит или Визит для плана лечения (если у пациента есть открытый план).
- При необходимости скорректируйте длительность вручную или добавьте примечание.
- Нажмите «Сохранить».
Статусы визита и их переходы
Расписание → Клик по блоку визита
Клик по блоку записи в сетке открывает карточку управления:
• pending (Ожидает, жёлтый) — запись создана, пациент ещё не подтвердил визит.
• confirmed (Подтверждён, зелёный) — пациент подтвердил приход (по телефону/SMS).
• arrived (Прибыл / Check-in, бирюзовый) — пациент подошел на ресепшн клиники.
• completed (Завершён, фиолетовый) — приём проведён. Если визит был привязан к лечебному плану, система предложит: «Завершить только этот визит или весь план лечения целиком?».
• no-show (Неявка, красный) — пациент не пришёл без предупреждения.
• cancelled (Отменён, красный) — приём отменён.
Перенос приёма (Drag-and-Drop)
Расписание
• На компьютере: зажмите блок визита левой кнопкой мыши и перетащите на другое время или в колонку другого врача.
• На смартфоне/планшете: зажмите блок пальцем на 300 миллисекунд (долгий тап), после легкой вибрации перетащите слот.
• Система запросит подтверждение переноса. Если у целевого врача в это время уже стоит другой приём или он не работает — система отклонит перенос с понятным объяснением.
5. Картотека пациентов и дедупликация
Поиск, защита базы от задвоения, профиль пациента и назначение лечащих врачей.
Правила проверки на дубликаты при создании
Пациенты → Добавить пациента
• Жёсткая блокировка: если в клинике уже есть пациент с таким же номером телефона или email — система выдаст ошибку error_duplicate_phone или error_duplicate_email. Создание второго такого же аккаунта невозможно.
• Мягкое предупреждение: если телефон и email уникальны, но совпадают ФИО и дата рождения, система откроет окно: «Возможный дубликат. Пациент с такими ФИО и датой рождения уже существует. Создать всё равно?». Нажмите «Создать всё равно», только если это подтверждённый полный тёзка.
Структура карточки пациента и прикрепление врачей
Пациенты → [Карточка пациента]
• Профиль: личные данные, возраст (рассчитывается автоматически), блок заметок с быстрым редактированием.
• Назначенные врачи (только в клиниках): блок в левой колонке профиля. Суперадминистратор или оператор выбирает врачей из списка и нажимает «Назначить».
ВАЖНО: пока врач не назначен пациенту, он не сможет просматривать его снимки, вносить записи в зубную карту и смотреть историю зубов.
6. Электронная медицинская карта (ЭМК)
Зубная формула FDI/Universal, история лечения зуба и файловый фотопротокол.
6.1. Зубная формула (Dental Chart)
Карточка пациента → Зубная карта
- Переключатель нумерации внизу: FDI (11–48) или Universal (1–32).
- Как ставить диагнозы и конструкции: выберите нужный инструмент на верхней панели (например, «Кариес», «Пломба», «Коронка», «Имплант») и кликните по нужному зубу. Зуб окрасится в соответствующий цвет (или появится винт импланта / штифт в канале). Повторный клик тем же инструментом снимает отметку (возвращает статус «Здоров»).
- Как построить мостовидный протез (bridge): нажмите на инструмент «Мост» → кликните на первый опорный зуб конструкции (номер зуба начнёт пульсировать синим) → кликните на второй опорный зуб в том же ряду. Система автоматически соединит все зубы между ними монолитной балкой. Для снятия моста выберите инструмент «Мост» и кликните по любому зубу из конструкции.
6.2. История лечения зуба (Tooth History)
Карточка пациента → Зубная карта
- На панели инструментов зубной формулы отключите все инструменты (режим курсора).
- Кликните по любому зубу — справа выдвинется панель истории именно этого зуба.
- Нажмите «+ Добавить запись», введите протокол лечения и нажмите «Сохранить».
- Медицинский аудит: если нажать «Редактировать» на старой записи, исходный текст не удалится. Он зачеркнется и сохранится в истории версий с пометкой, кто и когда внёс правку.
6.3. Хранилище рентгеновских снимков и фото (Files)
Карточка пациента → Файлы
• Загрузка: нажмите на блок загрузки вверху вкладки «Файлы». Выберите файлы на компьютере или сделайте фото с телефона/планшета.
• Опция «Сжать фото»: активна по умолчанию. Уменьшает разрешение тяжелых фотографий до Full HD (1920×1080), экономя дисковую квоту клиники без потери диагностической ценности.
• Привязка к зубам: перед загрузкой нажмите на номера зубов на интерактивной мини-схеме челюсти. Снимок автоматически привяжется к этим зубам и будет виден при просмотре истории зуба.
• Просмотр (Lightbox): клик по миниатюре открывает полноэкранный просмотрщик. Поддерживается плавное масштабирование колесиком мыши или жестом двух пальцев (pinch-to-zoom) на мобильном.
9. Маркетинг: Скидки, Промокоды, Сертификаты и Бонусы
Политики сочетания скидок, тиражи подарочных карт, генерация уникальных купонов и кэшбэк.
9.1. Правила взаимодействия скидок (Политики)
Настройки → Управление скидками → Общие настройки
• Приоритет (Priority): сравнивает все сработавшие скидки и применяет одну, наиболее выгодную пациенту.
• Каскад (Cascade): скидки выстраиваются в цепочку и применяются последовательно к остатку цены.
• Суммирование (Summable): проценты персональной скидки пациента и общеклинической акции складываются.
9.2. Создание программ лояльности
Настройки → Управление скидками
При нажатии «Создать скидку» доступны 4 варианта:
1. Глобальная акция: автоматическая скидка для всех (например, «-20% на профгигиену в мае»).
2. Для ручного назначения: шаблон скидки, который администратор вручную прикрепляет конкретным VIP-клиентам в их карточке.
3. Общий промокод: кодовое слово (например, INSTA2026), дающее скидку при вводе.
4. Шаблон для генерации уникальных кодов: заготовка под печать одноразовых купонов.
9.3. Генератор уникальных промокодов
Настройки → Управление скидками → Генератор кодов
- Перейдите в блок «Генератор уникальных промокодов».
- Выберите шаблон акции.
- Задайте количество кодов (до 1000 за раз) и префикс (до 12 латинских символов, например LETO).
- Нажмите «Сгенерировать». Коды можно скопировать списком или выгрузить в CSV/TXT для рассылки или типографии.
9.4. Подарочные сертификаты (Gift Cards)
Настройки → Управление скидками → Подарочные карты
- Одиночный сертификат: выберите «Одиночный выпуск», укажите номинал и срок действия. Система сгенерирует 10-значный уникальный код.
- Тираж карт для печати: выберите «Пакетный выпуск», введите имя серии (например, «Новогодние 5000»), количество (до 500 шт.) и номинал. Выгрузите полученный тираж в CSV для передачи на производство пластиковых карт.
- Активация: в карточке пациента во вкладке «Лояльность» введите код сертификата в поле «Подарочные карты» и нажмите «Активировать».
12. Центр связи (Внутренние чаты, «Второе мнение», Сеть партнёров)
Корпоративные каналы филиалов, профессиональный форум врачей, B2B-партнерства и автоочистка 24ч.
Каналы коммуникации и правила безопасности
Иконка сообщения в правом верхнем углу
Выдвижная панель открывается кликом по иконке диалога в шапке справа:
• Чат филиала / клиники: для оперативных служебных сообщений дежурной смены.
• Личные сообщения (DMs): персональная переписка сотрудников (зелёная точка показывает статус «онлайн»).
• Лента «Второе мнение» (для докторов): выберите специальность (Терапия, Ортодонтия, Хирургия и др.) и язык. Публикуйте сложные клинические случаи и снимки для обсуждения с коллегами платформы. Лимит публикаций: на бесплатном тарифе — 1 сообщение в час, на платном — до 30 в час.
• Каталог «Готовы помочь»: включите переключатель «Готов помочь», чтобы другие врачи платформы могли обратиться к вам за оперативной онлайн-консультацией.
• Сеть партнёров (Partners): B2B-модуль для сотрудничества независимых клиник (направление на КТ, наркоз, лабораторные этапы). Найдите партнерскую клинику через поиск, отправьте заявку на партнерство. После подтверждения открывается общий межклинический чат.
ПОЛИТИКА КОНФИДЕНЦИАЛЬНОСТИ: чаты работают на сверхбыстром хранилище с автоматическим сроком жизни сообщений 24 часа. По истечении суток история сообщений автоматически очищается.
14. Тарифы, подписка и реферальная система
Тарифная сетка, скидки на периоды, докупка диска, реферальные начисления и режим Read-Only.
Тарифная сетка и продление
Настройки → Биллинг и подписка
• В карточке отображается текущий план, максимальный штат врачей и дата окончания.
• Доступны скидки на предоплату: 1 месяц — базовая цена; 3 месяца — скидка 5%; 6 месяцев — скидка 10%; 12 месяцев — оплата за 10 месяцев (2 месяца в подарок).
• Дополнительное место на диске докупается отдельными пакетами без необходимости перехода на дорогой тариф.
Реферальная программа
Настройки → Реферальная программа
• В разделе «Настройки» → «Реферальная программа» скопируйте вашу уникальную ссылку.
• Поделитесь ссылкой с коллегами из других клиник.
• Когда новая клиника регистрируется по вашей ссылке и вносит первую абонентскую плату, по окончании 30-дневного защитного периода вам начисляется несгораемый бонус на реферальный баланс в USD.
• Накопленный реферальный кредит можно списать в счёт оплаты своего тарифа или доп. диска кнопкой «Использовать баланс».
15. Мобильное приложение (PWA / iOS / Android)
Специфика интерфейса на смартфонах: нижняя навигация, стек пациентов и сенсорные жесты.
Особенности работы на мобильных устройствах
Интерфейс смартфонов и планшетов
Интерфейс OraFlow адаптирован под смартфоны и планшеты через технологию Capacitor:
1. Нижняя навигация (Bottom Nav): основные разделы (Расписание, Пациенты, Аналитика, Настройки) перенесены вниз экрана под большой палец.
2. Стек открытых пациентов: если открыто несколько карточек пациентов, в нижней панели появляется кнопка с иконкой стопки и счётчиком. Нажмите на неё, чтобы переключаться между открытыми пациентами в один тап.
3. Управление визитом на тачскрине: обычный короткий тап по приёму открывает карточку действий; долгий тап с удержанием 300 мс активирует режим переноса записи пальцем.
4. Жесты в рентген-снимках: двойной тап увеличивает область снимка, сведение и разведение двух пальцев (pinch-to-zoom) плавно масштабирует детали.
16. Каталог системных ошибок и инструкции по устранению
Полный справочник системных сообщений, причин возникновения и пошаговых решений.
Время записи занято другим приёмом
error_time_slot_busy
Причина: выбранное время пересекается с другим приёмом этого доктора.
Решение: измените время начала, сократите длительность или выберите другого свободного врача.
Врач не работает в выбранное время
error_doctor_not_working
Причина: время визита выходит за границы рабочего графика врача.
Решение: проверьте часы работы врача в «Графике работы» или добавьте ему индивидуальную рабочую смену на этот день.
Не удаётся удалить приём с принятыми платежами
error_delete_appointment_with_payments
Причина: попытка удалить визит, по которому в кассу уже внесены деньги.
Решение: сначала перейдите в визит, нажмите на платежи и выполните сторно (удаление) всех платежей. После обнуления оплат приём удалится.
Пациент с таким телефоном или Email уже существует
error_duplicate_phone
Причина: в базе уже зарегистрирован пациент с таким телефоном или почтой (error_duplicate_phone / error_duplicate_email).
Решение: найдите существующего пациента через строку поиска в «Пациентах». Система защищает базу от дублирования карт.
Совпали ФИО и дата рождения (Возможный дубликат)
error_possible_duplicate_name_dob
Причина: совпали ФИО и дата рождения с существующим пациентом.
Решение: внимательно проверьте совпадение. Если это действительно другой человек-тёзка — нажмите кнопку «Создать всё равно».
Нельзя удалить пациента с активными визитами
cannot_delete_patient_active_appointments
Причина: попытка удалить пациента, у которого есть незавершённые будущие визиты.
Решение: отмените или завершите все приёмы пациента в расписании, после чего удаление станет доступно.
Нельзя удалить единственного администратора клиники
last_admin_cannot_delete
Причина: попытка удалить или сменить роль единственного администратора клиники (last_admin_cannot_delete / last_admin_cannot_change_role).
Решение: запрещено. Клиника не может остаться без управляющего. Сначала назначьте роль администратора другому сотруднику.
Нельзя удалить врача с запланированными приёмами
cannot_delete_staff_with_active_appointments
Причина: попытка удалить врача, у которого есть запланированные приёмы.
Решение: откройте расписание и перенесите все будущие записи этого врача на других докторов.
Нельзя удалить филиал, в котором числятся сотрудники
cannot_delete_branch_with_staff
Причина: попытка удалить филиал, к которому привязаны пользователи.
Решение: в «Персонале клиники» переведите всех сотрудников филиала на другой адрес, затем удалите пустой филиал.
Нельзя удалить филиал с активными процессами
cannot_delete_branch_with_active_appointments
Причина: за филиалом числятся визиты или открытые планы лечения.
Решение: завершите, отмените или перепривяжите к другому филиалу все активные процессы по этому адресу.
Режим «Только чтение»: подписка истекла
error_subscription_expired
Причина: истёк оплаченный период подписки клиники.
Решение: система автоматически заблокировала внесение изменений (режим Read-Only). Перейдите в раздел «Биллинг и подписка» и продлите тариф.
Лимит сотрудников превышен для нового тарифа
error_downgrade_staff_limit_exceeded
Причина: попытка перейти на тариф с меньшим лимитом сотрудников, чем создано сейчас.
Решение: на аккаунте создано больше людей, чем разрешено новым тарифом. Сначала удалите неактивных сотрудников, чтобы уложиться в лимит.
Запрещён переход клиники на тариф «Соло»
error_clinic_to_solo_forbidden
Причина: клиника пытается перейти на тариф «Соло».
Решение: переход клиники с несколькими сотрудниками или филиалами на однопользовательский тариф «Соло» невозможен архитектурно.
Недостаточно бонусов для списания
error_insufficient_bonus_balance
Причина: списываемая сумма превышает остаток бонусов у пациента.
Решение: укажите сумму бонусов, равную или меньшую, чем текущий баланс пациента.
Недостаточно средств на подарочной карте
error_insufficient_gift_card_balance
Причина: сумма к списанию превышает остаток по подарочной карте.
Решение: проверьте остаток карты пациента во вкладке «Лояльность» и спишите только доступную сумму.
Превышен лимит сообщений в ленте «Второе мнение»
error_feed_rate_limit
Причина: превышен лимит публикаций в ленте «Второе мнение».
Решение: для триала — максимум 1 пост в час, для платного тарифа — до 30 постов в час. Подождите окончания временного окна.