OraFlow

OraFlow Knowledge Base & User Guide

Complete manual covering all 16 clinic modules, workflows, and system errors

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

  1. Go to the registration page (/register).
  2. 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).
  3. Fill in required fields: username, password, first name, last name, work email, phone (with country code), and clinic name.
  4. 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

  1. 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.
  2. 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.
  3. 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

  1. Branches: Go to 'Settings' → 'Clinic Staff' → 'Clinic & Branches' tab. Click '+ Add Branch', enter name, exact address, and phone number(s).
  2. 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

  1. Open 'Settings' → 'Notifications' → 'SMTP Settings'.
  2. Enter server, port (usually 465 for SSL or 587 for TLS), login (your email), and password.
  3. For Gmail / Yandex: Use the special 16-digit App Password generated in your mail service security settings, not your main email password.
  4. Enter a test address in 'Test Email' field and click 'Test'.
  5. 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

  1. Click on free blue slot in doctor's column (or click 'Book Appointment'). Blue color indicates time falls within doctor's working schedule.
  2. 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'.
  3. Select one or more procedures from price list (duration and price sum automatically).
  4. Specify visit type: Single Visit or Treatment Plan Visit (if patient has open plan).
  5. Adjust duration manually if needed or add note.
  6. 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

  1. Numbering toggle at bottom: FDI (11–48) or Universal (1–32).
  2. 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').
  3. 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

  1. Disable all tools on dental chart toolbar (cursor mode).
  2. Click any tooth — history panel slides out on right.
  3. Click '+ Add Entry', enter treatment protocol, click 'Save'.
  4. 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.

7. Treatment Plans

Transparent estimate creation, branch linking, auto-discounts, contract pricing, completion.

Treatment Plan Lifecycle & Calculation

Patient Card → Treatment Plans

  1. Click 'Create Plan', enter name (e.g., 'Implantation & Prosthetics 2026'). Patient can have only one active plan at a time.
  2. Branch Linking: Select branch where treatment occurs from dropdown. All procedure costs instantly recalculate per that branch price list.
  3. Adding Procedures: Start typing procedure name in search line and select. Repeat for all stages.
  4. Plan Discounts: If applicable discounts exist, blue block with 'Apply Discount' button appears.
  5. Contract (Manual) Price: Click pencil icon next to 'Total Cost' and enter agreed amount. System records difference as personal manual discount.
  6. Plan Payment: Patient can pay in installments (advances). Progress bar visually shows 'Paid / Balance' ratio.
  7. Completion: When all procedures done, select 'Complete Plan' from actions menu (three dots). New plan can then be created.

8. Cash Desk, Payments & Financial Operations

Accepting payments via all methods, deducting points/certificates, cashback, accounting reversal.

How to Accept Patient Payment?

Calendar → Visit → 'Add Payment' OR Patient Card → 'Payments'

  1. From Calendar: Click appointment → click green 'Add Payment' button.
  2. From Patient Card: Open 'Payments' or 'Treatment Plans' tab → click bank card icon button.
  3. In popup, select payment purpose (single visit or treatment plan), enter amount (exact debt balance prefilled), select method (Card, Cash, Bank Transfer, Gift Card, or Bonuses), select doctor receiving revenue credit.
  4. Click 'Save Payment'.

Paying with Bonuses or Gift Card

Payment Window

• If patient has gift certificate or bonuses, available balance displays on respective buttons.

• If payment exceeds bonus balance or card face value — system throws error specifying exact available balance.

Correcting Cashier Errors & Refunds (Reversal)

Patient Card → 'Payments' Tab

  1. In OraFlow financial history is immutable per accounting laws. Payment line cannot be tracelessly deleted.
  2. Go to patient 'Payments' tab.
  3. Expand relevant plan or visit.
  4. Click actions menu (three dots) on erroneous payment line.
  5. Click 'Delete' (full cancellation) or 'Edit' (change amount/method).
  6. Automatic Result: Erroneous payment gets red strikethrough (is_deleted = true), compensating reversal entry with negative amount created, accrued cashback deducted from bonus account, points/certificates returned to balance, total patient debt recalculated in real-time.

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

  1. Go to 'Unique Promo Code Generator' block.
  2. Select promo template.
  3. Set quantity (up to 1000 at once) and prefix (up to 12 Latin chars, e.g., SUMMER).
  4. 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

  1. Single Certificate: Choose 'Single Issue', enter face value and validity. System generates 10-digit unique code.
  2. 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.
  3. Activation: In patient card 'Loyalty' tab, enter certificate code in 'Gift Cards' field and click 'Activate'.

10. Online Booking, Widgets & QR Codes

Creating public booking widgets, exporting QR codes, patient online steps.

Creating Public Link & QR Code

Settings → Branding & Widgets → Online Booking Widgets

  1. Enter working link name (e.g., 'Taplink Therapy').
  2. Set scope: Entire Clinic (patient chooses branch, any doctor, any procedure), Branch (booking at specific address only), or Doctor (personal link to specific doctor).
  3. Check procedures available for patient online selection.
  4. Toggle 'Show Prices' to display price list.
  5. Click 'Create Link'.

QR Codes for Print & Messengers

Settings → Branding & Widgets → QR Icon next to link

In modal window you can:

• Click 'Download PNG' — send to print designer (reception stand, business cards, flyers).

• Click 'WhatsApp' or 'Email' — quick link share to patient.

• Copy direct link format https://your-domain.com/book/xxxxxxxx.

Patient Booking View (4 Steps)

Public Booking Widget

  1. Step 1: Service selection.
  2. Step 2: Doctor selection (if not fixed in link).
  3. Step 3: Date and free time slot selection from real clinic schedule.
  4. Step 4: Enter name, phone, DOB. Upon confirmation appointment instantly appears in schedule grid with pending status and 'Online Booking' tag.

11. Analytics & Financial Reports

Cash summary, doctor revenue, debtor registry, cashier shifts, procedure demand.

Using Report Module & Metric Meanings

Analytics (chart icon in top panel)

  1. In top block check needed reports:
  2. • Summary: Total cash for period and total patient debt.
  3. • Patient Flow: New patients count and returning visits.
  4. • Liabilities: Issued discounts volume, money on gift cards and bonus points.
  5. • By Doctors: Revenue breakdown by doctors.
  6. • Debtors: Detailed debt table showing branch where debt originated.
  7. • Treatment Plans: Active plans registry, cost, payment %.
  8. • Procedure Popularity: Execution frequency in units and base cost.
  9. • Cashier Report: Cash reconciliation breakdown by admins and payment types (cash, terminal, bonuses).
  10. Set date range, branch, doctor, click 'Generate Report'.
  11. Any table exports to Excel/CSV via file icon button.

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.

13. Disk Management, Archives & DB Cleanup

Quota indicator, file registry, bulk ZIP download, safe deletion with VACUUM optimization.

Storage Indicator & File Archive

Settings → Storage Management

• Storage Indicator shows actual space usage: Blue segment — physical X-ray/logo/avatar files; Green segment — DB tables/indexes size; Yellow badge — paid extra disk expiry warning.

• File Archive: Registry of all ever-uploaded clinic files. Find heaviest X-rays, filter by patient, download up to 100 files in single ZIP (PC).

Database Cleanup Tool

Settings → Storage Management → DB Cleanup

  1. Safely frees disk quota.
  2. Set timeframe (e.g., everything older than 2 years).
  3. Select cleanup targets: Old system logs, cancelled appointments without payments, archived plans without debts.
  4. Click 'Cleanup Preview' — system calculates deletable rows without actual deletion.
  5. Click 'Execute Cleanup' (medical entity deletion requires admin password). Post-operation system auto-optimizes tables (VACUUM).

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.