1. Role Architecture & Data Access
Strict role-based model, branch isolation (branch_id), and medical data protection.
Summary of Staff Rights and Responsibilities
Settings → Clinic Staff
• Clinic Super Admin (admin): Entire clinic and all branches (branch_id = null). Full access: branches, staff, price matrix, online booking, global discounts, all analytics, billing, DB cleanup, SMTP. Cannot delete themselves or change their role if they are the sole admin.
• Branch Admin (branch_admin): Own branch only (branch_id). Manages own branch staff, local branch price list, cash desk and appointments of own branch, cashier report. Forbidden: creating admin or other branch_admin roles, deleting branches, renaming branches, accessing global sections (plan billing, disk quotas, global SMTP).
• Clinic Dentist (dentist): Own branch and assigned patients only. Own schedule, appointment log, dental chart, X-rays, and treatment history of assigned patients, 'Second Opinion' chat. Denied access to patient medical records (chart, X-rays, history) if the patient is not assigned to this dentist. Cannot accept payments.
• Solo Dentist (dentist without clinic_id): Personal account (private practice). Full functionality: acts as own admin, cashier, and dentist. Access to discounts, online booking, personal logo, analytics, billing. No branch module or third-party staff roster.
• Operator / Reception (operator): Own branch only. Creating patients, appointment log, accepting payments, printing receipts, own shift cashier report. Strictly denied access to medical data: cannot view X-ray files, dental charts, or tooth treatment history.
2. Initial Setup & Configuration (Clinic and Solo Dentist)
For clinics and solo dentists: registration, timezone, currency, logo, and for clinics also branches, staff, and the SMTP mail server.
Video lessons: where to start
Short videos show how to get started with OraFlow. Begin by setting up the work schedule; the rest will become clear as you go. They suit both clinics and solo dentists. All videos are in one playlist, and new ones are added there.
Watch the video lessons on YouTube
Registration and Account Activation
/register page
- Go to the registration page (/register).
- Select account type: 'Dentist' (for solo practice with 1 doctor) or 'Clinic' (for organizations with multiple doctors/branches; specify staff limit: 6, 11, 16, 31).
- Fill in required fields: username, password, first name, last name, work email, phone (with country code), and clinic name.
- Check your email. Click the link to activate your account (link valid for 24 hours).
Setting up Details, Timezone, and Currency
Settings → Branding & Widgets / Settings → Price List
- Timezone: Go to 'Settings' → 'Branding & Widgets' (bottom of page). Click the pencil icon next to the timezone field and select your region. Shift boundaries, online slots, and financial reports are calculated strictly by clinic timezone, not user device time.
- Billing Currency: Go to 'Settings' → 'Price List'. In the top right corner, select currency (USD, EUR, RUB, AMD, AED, CNY, or enter custom up to 4 chars). Currency is unified across the entire clinic.
- Logo: In 'Branding & Widgets' → 'Logos', upload clinic logo (JPEG/PNG up to 5 MB). System automatically optimizes size to fit 288×96 px container without cropping text.
Adding Branches and Staff
Settings → Clinic Staff
- Branches: Go to 'Settings' → 'Clinic Staff' → 'Clinic & Branches' tab. Click '+ Add Branch', enter name, exact address, and phone number(s).
- Staff: Go to 'Staff' tab, click '+ Add Staff Member'. Enter username, full name, email, phone, select role and branch. A generated temporary password will be automatically sent to the staff member's email.
Configuring Notification Email (SMTP)
Settings → Notifications → SMTP Settings
- Open 'Settings' → 'Notifications' → 'SMTP Settings'.
- Enter server, port (usually 465 for SSL or 587 for TLS), login (your email), and password.
- For Gmail / Yandex: Use the special 16-digit App Password generated in your mail service security settings, not your main email password.
- Enter a test address in 'Test Email' field and click 'Test'.
- After successful sending, click 'Save'.
3. Work Schedules & Shift Management
Building schedules by weekdays, even/odd days, intervals, and interactive exceptions.
Doctor Schedule Building Options
Settings → Work Schedule
• By Weekdays: Enable required working days (Mon, Tue, Wed, etc.). Set start and end times for each day. To add a break, click '+ Add Interval' (e.g., 09:00–14:00 and 15:00–19:00). Minimum interval length is 15 minutes; overlapping intervals are blocked automatically.
• Even / Odd Days: System determines schedule by calendar day number (2, 4, 6... or 1, 3, 5...). Configure working hours for even and odd shifts. In 'Exclude Weekdays' block, disable regular days off (e.g., uncheck Saturday and Sunday so they always remain non-working regardless of date).
Working with Exception Calendar & Shift History
Settings → Work Schedule → Interactive Calendar
• Assign Unscheduled Day Off: Click on a working day in the calendar — date will be marked with red outline. Online and regular booking for this day will close.
• Assign Working Shift on Day Off: Click on any non-working day. In popup window, set working hours specifically for this date.
• Schedule History: System saves all previous schedule versions. Past appointments do not shift when current schedule changes.
4. Calendar & Appointment Log
Visit grid, service statuses, Drag-and-Drop rescheduling, and appointment audit.
Schedule Grid Modes
Schedule
• Day View (by staff): Header displays all doctors of selected branch in parallel columns.
• Week View: Displays 7 days of week for selected doctor.
• Quick Time Format Toggle: Click on time scale on left to instantly switch 24h / 12h (AM/PM) mode.
Creating an Appointment
Schedule
- Click on free blue slot in doctor's column (or click 'Book Appointment'). Blue color indicates time falls within doctor's working schedule.
- In booking window, find existing patient by name, phone, or email (search works from 3 characters) or enter new name and click 'Create New Patient'.
- Select one or more procedures from price list (duration and price sum automatically).
- Specify visit type: Single Visit or Treatment Plan Visit (if patient has open plan).
- Adjust duration manually if needed or add note.
- Click 'Save'.
Visit Statuses and Transitions
Schedule → Click on Visit Block
Clicking appointment block in grid opens management card:
• pending (Yellow) — appointment created, patient hasn't confirmed yet.
• confirmed (Green) — patient confirmed attendance (via phone/SMS).
• arrived (Check-in, Teal) — patient checked in at clinic reception.
• completed (Purple) — appointment conducted. If visit was linked to treatment plan, system asks: 'Complete only this visit or entire treatment plan?'.
• no-show (Red) — patient didn't show up without notice.
• cancelled (Red) — appointment cancelled.
Rescheduling Appointment (Drag-and-Drop)
Schedule
• On Desktop: Hold visit block with left mouse button and drag to another time or another doctor's column.
• On Smartphone/Tablet: Long press block for 300ms, after light vibration drag slot.
• System requests confirmation. If target doctor already has appointment at that time or isn't working — system rejects move with clear explanation.
5. Patient Records & Deduplication
Search, database duplication protection, patient profile, and attending physician assignment.
Duplicate Check Rules on Creation
Patients → Add Patient
• Hard Block: If clinic already has patient with same phone or email — system throws error_duplicate_phone or error_duplicate_email. Creating second identical account is impossible.
• Soft Warning: If phone and email are unique but full name and DOB match, system shows popup: 'Possible duplicate. Patient with this name and DOB already exists. Create anyway?'. Click 'Create Anyway' only if confirmed namesake.
Patient Card Structure & Doctor Assignment
Patients → [Patient Card]
• Profile: Personal data, age (auto-calculated), notes block with quick edit.
• Assigned Doctors (clinics only): Block in left profile column. Super admin or operator selects doctors from list and clicks 'Assign'.
IMPORTANT: Until doctor is assigned to patient, they cannot view X-rays, make dental chart entries, or see tooth history.
6. Electronic Medical Record (EMR)
FDI/Universal dental chart, tooth treatment history, and file photo protocol.
6.1. Dental Chart
Patient Card → Dental Chart
- Numbering toggle at bottom: FDI (11–48) or Universal (1–32).
- Setting diagnoses/restorations: Select tool on top panel (e.g., 'Caries', 'Filling', 'Crown', 'Implant') and click tooth. Tooth highlights in corresponding color (or implant screw/post appears). Clicking again with same tool removes mark (returns to 'Healthy').
- Building bridge: Click 'Bridge' tool → click first abutment tooth (tooth number pulses blue) → click second abutment tooth in same arch. System automatically connects all teeth between with solid beam. To remove bridge, select 'Bridge' tool and click any tooth in structure.
6.2. Tooth History
Patient Card → Dental Chart
- Disable all tools on dental chart toolbar (cursor mode).
- Click any tooth — history panel slides out on right.
- Click '+ Add Entry', enter treatment protocol, click 'Save'.
- Medical Audit: Clicking 'Edit' on old entry doesn't delete original text. It gets struck through and saved in version history with note who and when edited.
6.3. X-Ray & Photo Storage (Files)
Patient Card → Files
• Upload: Click upload block at top of 'Files' tab. Select files on computer or take photo on phone/tablet.
• 'Compress Photo' Option: Active by default. Reduces heavy photos to Full HD (1920×1080), saving clinic disk quota without losing diagnostic value.
• Linking to Teeth: Before uploading, click tooth numbers on interactive jaw mini-chart. Image auto-links to these teeth and shows in tooth history view.
• Viewing (Lightbox): Click thumbnail opens fullscreen viewer. Supports smooth zoom via mouse wheel or two-finger pinch-to-zoom on mobile.
9. Marketing: Discounts, Promo Codes, Certificates & Bonuses
Discount stacking policies, gift card batches, unique coupon generation, cashback.
9.1. Discount Interaction Rules (Policies)
Settings → Discount Management → General Settings
• Priority: Compares all triggered discounts and applies single most beneficial to patient.
• Cascade: Discounts form chain applied sequentially to remaining price.
• Summable: Personal patient discount % and clinic-wide promo % add up.
9.2. Creating Loyalty Programs
Settings → Discount Management
Clicking 'Create Discount' offers 4 options:
1. Global Promo: Automatic discount for everyone (e.g., '-20% prophylaxis in May').
2. Manual Assignment: Discount template admin manually attaches to specific VIP clients in their card.
3. Shared Promo Code: Keyword (e.g., INSTA2026) giving discount upon entry.
4. Unique Code Gen Template: Template for printing disposable coupons.
9.3. Unique Promo Code Generator
Settings → Discount Management → Code Generator
- Go to 'Unique Promo Code Generator' block.
- Select promo template.
- Set quantity (up to 1000 at once) and prefix (up to 12 Latin chars, e.g., SUMMER).
- Click 'Generate'. Codes can be copied as list or exported CSV/TXT for mailing/print shop.
9.4. Gift Certificates (Gift Cards)
Settings → Discount Management → Gift Cards
- Single Certificate: Choose 'Single Issue', enter face value and validity. System generates 10-digit unique code.
- Print Batch: Choose 'Batch Issue', enter series name (e.g., 'New Year 5000'), quantity (up to 500), face value. Export batch CSV for plastic card production.
- Activation: In patient card 'Loyalty' tab, enter certificate code in 'Gift Cards' field and click 'Activate'.
12. Communication Center (Internal Chats, 'Second Opinion', Partner Network)
Corporate branch channels, professional doctor forum, B2B partnerships, 24h auto-cleanup.
Communication Channels & Security Rules
Message icon in top right corner
Slide-out panel opens clicking dialog icon in header right:
• Branch/Clinic Chat: Operational service messages for duty shift.
• Direct Messages (DMs): Personal staff correspondence (green dot = 'online').
• 'Second Opinion' Feed (doctors): Select specialty (Therapy, Orthodontics, Surgery, etc.) and language. Post complex clinical cases and X-rays for platform colleague discussion. Limits: Free plan — 1 msg/hour, Paid — up to 30/hour.
• 'Ready to Help' Catalog: Toggle 'Ready to Help' so other platform doctors can request urgent online consult.
• Partner Network: B2B module for independent clinic collaboration (CT referral, anesthesia, lab stages). Find partner clinic via search, send partnership request. Upon approval shared inter-clinic chat opens.
PRIVACY POLICY: Chats run on ultra-fast storage with automatic 24-hour message lifespan. After 24h message history auto-purges.
14. Plans, Subscription & Referral System
Pricing grid, period discounts, extra disk purchase, referral accruals, Read-Only mode.
Pricing Grid & Renewal
Settings → Billing & Subscription
• Card shows current plan, max doctor headcount, expiration date.
• Prepay discounts: 1 month — base price; 3 months — 5% off; 6 months — 10% off; 12 months — pay for 10 (2 months free).
• Extra disk space purchased in separate packs without upgrading to expensive plan.
Referral Program
Settings → Referral Program
• In 'Settings' → 'Referral Program' copy unique link.
• Share link with colleagues from other clinics.
• When new clinic registers via link and makes first subscription payment, after 30-day protection period non-expiring USD bonus credited to referral balance.
• Accumulated referral credit applied to own plan or extra disk payment via 'Use Balance' button.
15. Mobile App (PWA / iOS / Android)
Smartphone UI specifics: Bottom nav, patient stack, touch gestures.
Mobile Device Operation Features
Smartphone & Tablet Interface
OraFlow interface adapted for smartphones/tablets via Capacitor tech:
1. Bottom Navigation: Main sections (Schedule, Patients, Analytics, Settings) moved to screen bottom under thumb.
2. Open Patient Stack: If multiple patient cards open, stack icon button with counter appears in bottom panel. Tap to switch open patients in one tap.
3. Touchscreen Visit Mgmt: Short tap opens action card; 300ms long press activates finger-drag reschedule mode.
4. X-Ray Gestures: Double-tap zooms area, pinch-to-zoom smoothly scales details.
16. System Error Catalog & Troubleshooting
Full reference of system messages, causes, step-by-step solutions.
Appointment Time Occupied
error_time_slot_busy
Cause: Selected time overlaps another appointment for this doctor.
Solution: Change start time, reduce duration, or choose another free doctor.
Doctor Not Working Selected Time
error_doctor_not_working
Cause: Visit time outside doctor's working schedule.
Solution: Check doctor hours in 'Work Schedule' or add individual shift for this day.
Cannot Delete Appointment With Payments
error_delete_appointment_with_payments
Cause: Attempting delete visit with recorded payments.
Solution: Go to visit, click payments, reverse (delete) all payments. Once zeroed, appointment deletes.
Patient Phone/Email Exists
error_duplicate_phone
Cause: Patient with this phone/email registered (error_duplicate_phone / error_duplicate_email).
Solution: Find existing patient via 'Patients' search. System protects against duplicates.
Name & DOB Match (Possible Duplicate)
error_possible_duplicate_name_dob
Cause: Name and DOB match existing patient.
Solution: Verify carefully. If truly different person/namesake — click 'Create Anyway'.
Cannot Delete Patient With Active Visits
cannot_delete_patient_active_appointments
Cause: Deleting patient with incomplete future visits.
Solution: Cancel or complete all patient appointments, then delete.
Cannot Delete Sole Clinic Admin
last_admin_cannot_delete
Cause: Deleting/changing role of sole clinic admin (last_admin_cannot_delete / last_admin_cannot_change_role).
Solution: Forbidden. Clinic cannot lack manager. Assign admin role to another staff first.
Cannot Delete Doctor With Scheduled Visits
cannot_delete_staff_with_active_appointments
Cause: Deleting doctor with scheduled appointments.
Solution: Open schedule, reassign future appointments to other doctors.
Cannot Delete Branch With Staff
cannot_delete_branch_with_staff
Cause: Deleting branch with linked users.
Solution: In 'Clinic Staff' transfer all branch staff elsewhere, then delete empty branch.
Cannot Delete Branch With Active Processes
cannot_delete_branch_with_active_appointments
Cause: Branch has visits or open treatment plans.
Solution: Complete, cancel, or re-link active processes to another branch.
Read-Only Mode: Subscription Expired
error_subscription_expired
Cause: Paid clinic subscription expired.
Solution: System auto-blocked edits (Read-Only). Go 'Billing & Subscription' renew plan.
Staff Limit Exceeded For New Plan
error_downgrade_staff_limit_exceeded
Cause: Downgrading to plan with lower staff limit than currently created.
Solution: More people created than new plan allows. Delete inactive staff first.
Clinic to Solo Downgrade Forbidden
error_clinic_to_solo_forbidden
Cause: Clinic attempting downgrade to Solo.
Solution: Multi-staff/branch clinic cannot architecturally switch to single-user Solo plan.
Insufficient Bonus Balance
error_insufficient_bonus_balance
Cause: Deduction exceeds patient bonus balance.
Solution: Specify bonus amount ≤ current patient balance.
Insufficient Gift Card Funds
error_insufficient_gift_card_balance
Cause: Deduction exceeds gift card balance.
Solution: Check patient card 'Loyalty' tab balance, deduct available amount only.
'Second Opinion' Feed Rate Limit Exceeded
error_feed_rate_limit
Cause: Posting limit exceeded in 'Second Opinion' feed.
Solution: Trial — max 1 post/hour, Paid — up to 30/hour. Wait for window reset.