User Guide
Complete reference for all ClinicDesk roles and features
ClinicDesk is a clinic management system for booking patient appointments, writing clinical visit records, managing billing, and running financial reports. Every feature is governed by role-based access control — each user sees only what their role permits, and the server enforces this on every request.
- View and manage all appointments across all doctors; filter by any doctor
- Create, edit, deactivate, and reactivate user accounts for all roles
- Assign secretaries to doctors (required before secretaries can log in)
- Reset any user's password and force a password change on next login
- Access all six financial reports and export as CSV
- Configure clinic name, phone, email, and address in Settings
- Write and edit visit records; mark appointments as completed
- Delete appointments that have no invoice attached
- Book and edit appointments for assigned doctors only
- Confirm, cancel, or mark no-show on appointments
- Create and update patient profiles
- Record follow-up payments on invoices for their assigned doctors
- Search and view all patients and their profiles
- Cannot access Reports, Users page, or the complete-visit action
- Must be assigned to at least one doctor or login is blocked
- See own daily schedule with timeline view and now-line indicator
- Complete visits inline — write diagnosis, treatment, prescription, billing, and capture payment in one step
- Write and edit visit records (diagnosis, treatment, prescription, notes)
- Completing an appointment auto-creates the invoice
- Mark appointments as no-show from the schedule
- View own patients, their full history, and allergy alerts
- Cannot see other doctors' data, book appointments, or access Reports
- Secretary must be assigned to at least one doctor. Without an assignment the login fails with an error. The admin configures this in Users → Assignments.
- Secretaries can only book for their assigned doctors. Selecting an unassigned doctor is rejected by the server.
- Doctors only see their own data. Appointments, invoices, and patient lists are filtered to the logged-in doctor's cases only.
- All role restrictions are enforced server-side. Hiding a button in the UI is a convenience — the server will reject unauthorised requests regardless.
When the admin creates a new account with Must Change Password enabled, the user is taken to the password-change screen immediately after their first login.
This is the core workflow of ClinicDesk. Every patient visit follows this sequence. Understanding it helps all roles know where their part begins and ends.
From Visit Record page: Fill in all clinical fields individually, set billing amount and status, then click Complete & Invoice in the Complete Appointment panel.
The Appointments page is the primary workspace for Secretaries and Admins. It shows all appointments within the current role's scope — all doctors for Admin, assigned doctors only for Secretary. Doctors do not use this page; they use Doctor Schedule instead.
Four stat chips at the top show counts for Today, Pending, Confirmed, and Completed appointments within the current filtered scope. They update whenever filters change.
- List View (default) — paginated table showing Patient, Date, Time/Duration, Type, Status, and Doctor (admin only). Click any row or the eye icon to open the Visit Record. Click the pencil icon to edit. Defaults to today and onwards.
- Calendar View — monthly grid with colour-coded pills per appointment (yellow=pending, blue=confirmed, green=completed, grey=cancelled, orange=no-show). Click any day cell to open the Day Drawer on the right. Navigate months with arrow buttons; click Today to return to the current date.
- Today Panel (right sidebar, list view only) — always shows today's appointments sorted by start time regardless of the main date filter. Shows up to 15 entries. Click any entry to open its Visit Record.
Click Clear to reset all filters. Click the refresh icon in the header to reload from the server.
- Click the pencil icon on a list row, or click Edit inside the Day Drawer in calendar view.
- You can edit date, time, duration, type, and call notes. Patient and doctor cannot be changed after creation.
- Completed and Cancelled appointments cannot be edited. The pencil icon is not shown for these statuses.
Doctors land here after login. Admins can also access it to view any doctor's schedule. It shows a day-by-day timeline for the selected doctor with inline actions to complete visits without leaving the page.
- Shows a time-of-day greeting, today's date, and four KPI chips: Today (total today), Remaining (pending/confirmed not yet done), Completed (done today), This Week (total this week).
- Admin only: A doctor-picker panel appears with a tab for each active doctor showing their appointment count and an unfinished-work badge. Type in the search box to filter doctor tabs by name. Click a tab to switch to that doctor's schedule.
- A horizontal strip shows 7 date chips. Click any chip to load that day's timeline. Today's chip has a teal outline even when not selected.
- Use the left / right arrow buttons to shift the visible week back or forward. The Today button snaps back to the current date.
- Hours are listed down the left; appointment blocks sit at the correct time slot, coloured by status. A red now-line moves in real time to show the current time on today's view.
- Each block shows: patient name, appointment type, phone number, status badge. Pending/Confirmed blocks have two inline action buttons: Complete (teal) and No-show (orange). Completed blocks have a Record button to open the full Visit Record page.
- Clicking anywhere on the block (not a button) opens an Appointment Detail modal with patient info, visit record summary, and action buttons (Complete Visit, Mark No-Show, Full Record).
- Next Up — lists upcoming appointments (pending/confirmed) for the selected day sorted by time, up to 6. Click any entry to open the appointment detail modal.
- Day Stats — four quick numbers: Confirmed, Completed, No-show, Cancelled for the selected day.
Open from any appointment row (eye icon), any block in Doctor Schedule, or any entry in Visit Records List. This page shows the full clinical picture for one appointment: patient info, appointment details, the clinical record, and the linked invoice.
- Shows patient name, appointment date, time, doctor name, phone number, and status/type badges.
- Action buttons (role-dependent, shown in banner): Confirm if pending (secretary/admin), No-show if confirmed (secretary/admin), Cancel Appointment (all roles, prompts for reason).
Visible only when the appointment is Pending or Confirmed and you are a Doctor or Admin. Appears at the top of the left column.
- Amount Collected Now — cash or card payment from the patient at checkout. Enter 0 if paying later. Select Payment Method: Cash, Card, Bank Transfer, Other.
- Click Complete & Invoice to mark the appointment done and auto-generate the invoice. The invoice amount is taken from the Billing Amount in the clinical record below.
- Fields: Diagnosis, Treatment, Prescription, Notes (multi-line text areas), Follow-up in Days (number), Billing Amount (currency), Billing Status (Unpaid / Paid / Partial / Waived).
- Click Save Record to persist changes. A green Saved chip flashes briefly to confirm. Closing the page with unsaved changes triggers a browser warning.
- After the appointment is Completed, the clinical record can still be edited by doctors and admins. Cancelled and No-show appointments lock the record.
- Shows name, age, gender, phone, blood type, emergency contact. Allergies display as red alert tags — a visual warning before writing a prescription.
- Click View Patient Profile to open the patient's full profile page.
- Shows invoice number, dates, total amount, amount paid, balance due, and status badge.
- If unpaid or partial, a Record Payment button appears for secretaries and admins. Click View Invoice (teal button) to open the full Invoices page for this invoice.
- Click Cancel Appointment in the hero banner. A confirmation modal opens with an optional Reason field. Enter the reason and click the red Cancel Appointment button to confirm.
- Completed and already-cancelled appointments cannot be cancelled.
Found in the sidebar as Visit Records (all roles). Lists completed appointments and their clinical notes. The fastest way to look up a patient's past visits without navigating appointment by appointment.
Click Search to run. Results show patient name, phone, date, doctor, type, diagnosis summary, billing amount, and billing status. Click any row to open the full Visit Record page. A stats strip shows total records and page counts.
Lists all active patients. All roles can search and view. Secretaries and Admins can create and edit. Admins can deactivate.
The search bar searches by first name, last name, or phone — partial match, updates as you type with a 320ms debounce. Press Enter for instant results. Click any row to open the patient's profile.
Click New Patient (top-right). A modal opens with a two-column form.
Click Save Patient to create. The patient is immediately available in typeahead searches when booking appointments.
Open by clicking the eye icon on any patient row, or via View Patient Profile from a Visit Record page. The most comprehensive single view of a patient in the system.
- Shows auto-generated initials avatar, full name, age (from DOB), gender, blood type, phone, email. Allergy pills shown in red directly in the hero for immediate visibility.
- Book Appointment button (secretary/admin) opens the New Appointment modal pre-filled with this patient. Edit button opens the edit patient modal.
- Details tab — all patient fields in a grid: personal info (DOB, gender, phone, email, address, blood type, allergies as pills) and medical/emergency section (emergency contact, general notes, created date).
- Visit History tab (count badge) — chronological list of all appointments. Each row: date/time, colour-coded status bar, doctor name, type, status badge. Click any row to open the Visit Record page.
- Invoices tab (count badge) — billing summary card (total invoiced, paid, outstanding) followed by a list of all invoices with number, date, total, balance, and status. Click to open in the Invoices page.
Four cards show: Total (all invoices + total amount), Unpaid, Partial, Paid — each with count and total amount. Click any card to instantly filter the list to that status. Click Total to clear the filter.
Click any invoice row or the eye icon to slide the Invoice Detail Drawer open from the right. Press Esc or click the overlay to close it.
- Header shows invoice number and patient name. A coloured status banner indicates state: green=paid, orange=partial, red=unpaid.
- Invoice details: doctor name, invoice date, due date, appointment date and type. Amount breakdown: Subtotal, Tax, Total, Amount Paid, Balance Due, last payment method.
- Payment history: each payment shows amount, date, method (coloured tag), notes, and who recorded it.
- Footer: View Appointment button navigates to the linked appointment's Visit Record page.
- Pencil (Edit) — change full name, role, active status, or the force-change-password flag. Username cannot be changed.
- Key icon (Change Password) — set a new password for any user immediately. An optional checkbox forces another password change on their next login.
- Assignment icon (secretary rows only) — opens the doctor assignment modal for that secretary. Saving replaces all assignments for that secretary.
- Trash icon (Deactivate / Reactivate) — soft-deletes the account; the user can no longer log in. Historical data is preserved. Icon turns green for inactive users to allow reactivation.
Lists all active secretaries and their currently assigned doctors as teal pill tags. Click Edit next to any secretary to open the assignment modal. Check doctors to assign and click Save Assignments. Saving replaces all assignments for that secretary — uncheck a doctor to remove the assignment.
The Reports page is accessible to Admins only. Choose a report from the six cards at the top. Set filters in the workspace below. Click Run Report. Results display as summary KPI cards and a detailed table. Export to CSV or print.
- Export CSV button appears after running a report. Downloads the result table as a comma-separated file. The button is hidden until data is loaded.
- Print button (printer icon, top-right of page) opens the browser print dialog. The sidebar, filter bar, and action buttons are hidden automatically so only the report content prints.
Settings has two panels accessible via the left navigation: Clinic Information (admin only) and My Account (all roles).
Not visible to secretaries or doctors. Loads the current clinic settings on open. Fields:
Click Save Changes. A green checkmark and “Saved” message appears on success. The topbar header on all pages updates immediately on the next page load.
Available to all roles. Non-admin users land here directly since Clinic Information is hidden for them.
- Enter your Current Password, then New Password, then Confirm New Password. Use the eye icon on each field to toggle visibility. Click Update Password. A confirmation message appears on success.
- The current password field is required for verification. If new passwords do not match, an error is shown and no change is made.
- Always fill in allergies when registering a patient. They appear as prominent red alert tags in every Visit Record, giving the doctor an immediate visual warning before prescribing.
- Use call notes when booking. Anything the patient says on the phone — symptoms, concerns, referral source — typed into Call Notes is visible to the doctor before the visit, which helps them prepare.
- Mark no-shows promptly. Outstanding Pending or Confirmed appointments inflate the Remaining counter and distort the Doctor Revenue report. Marking no-shows keeps data clean.
- Run Outstanding Balances weekly. The report shows invoices bucketed by 30-day aging intervals. Acting early on 31–60 day buckets is far more effective than chasing 90+ day debt.
- Keep at least two active admin accounts. The system blocks deactivating the last admin. If only one admin account exists and it is ever locked out, recovery requires direct database access.