Zdrovia reports in two places, and they answer different questions.
| Surface | Route | Answers |
|---|---|---|
| Analytics | /dashboard/analytics |
How is the clinic doing? Bookings, revenue, no-shows, providers |
| Graphs | /dashboard/graphs |
How is this patient doing? Anything recorded in a smart block, over time |
Analytics
Navigate to Analytics in the sidebar.
The reporting window
Choose Last 3 months, Last 6 months (default) or Last 12 months.
The window is a set of presets rather than a free-form date range on purpose: every figure on the page is bucketed by month, and an arbitrary start date mid-month produces a leading bucket that isn’t comparable with the others and reads as a dip. Whole months keep the trend lines honest.
Months are resolved in your clinic’s timezone, not the viewer’s. A clinic in Toronto and a manager checking in from Europe see the same numbers in the same buckets.
Headline figures
| Figure | What it counts |
|---|---|
| Total Patients | All patients on file |
| Appointments This Month | Bookings in the current month, with a month-over-month trend |
| No-Show Rate | Share of appointments not attended |
| Average Ticket | Average invoice value |
| Billed This Month | Total invoiced |
| Collected | Payments received |
| Outstanding | Invoiced and unpaid |
| Expiring Stock | Inventory approaching expiry — see Inventory |
The charts
| Chart | Shows |
|---|---|
| Appointments & New Patients | Both series over the window, monthly |
| Appointments by Day | Which days of the week fill up |
| Billing | Billed value over the window |
| Invoices by Status | Draft, sent, paid, overdue |
| Visit Outcomes | Completed vs cancelled vs no-show |
| By Provider | Booked value per staff member — see Staff |
| New vs Returning | Where the appointments are coming from |
Graphs
Navigate to Graphs in the sidebar (/dashboard/graphs).
Graphs plot clinical data — the values clinicians record in smart blocks. A pain score across a course of physiotherapy, a range of motion measurement per visit, a questionnaire total banded by severity.
How it works
Every smart block field declares whether it is a measure (something to plot) or a dimension (something to split or filter by), and the graph reads that declaration directly from the block. There is no mapping step in between — which is why authoring a field on a custom block makes it graphable immediately, and why renaming a field can never leave a graph pointing at something that no longer exists.
Building a graph
- Click New graph
- Choose a graph type — line, area, bar, scatter, and the other supported types
- Pick the measure to plot
- Choose what goes on the x-axis (usually the date the reading was recorded)
- Optionally split or filter by a dimension
- Save — the definition is stored and reusable
A saved graph definition opens at /dashboard/graphs/:id.
Graphs are patient-scoped
Graphs draw from a patient’s own records, which means a chart that isn’t attached to a service line still graphs. A phone-consult note with a pain score in it counts.
Chart report wizard
From a patient’s chart you can generate a report built from their recorded data — the readings, their trend, and the graphs you have defined — for a referral or a progress review.
Where else numbers appear
| Place | What it shows |
|---|---|
| Invoices | Outstanding, paid this month, overdue, drafts, revenue sparkline |
| Commissions | What each staff member has earned, by status |
| Tips | Collected, unallocated, awaiting payout, paid out |
| Insurance | Claims by stage, and what is ready to collect |
| Inventory | Stock at or below reorder threshold |
| Patient profile | Per-patient cards you arrange yourself — see Patients |
Tips
- Compare like with like: leave the window on the same preset when you check week to week, or the month-over-month trend arrows change meaning.
- If No-Show Rate is the number you care about, look at Visit Outcomes alongside it — the rate alone doesn’t tell you whether cancellations moved into no-shows or out of them.
- Build the graph once and save it. A saved definition is what makes “show me their pain score since March” a click rather than a rebuild.
- Mark fields as measures deliberately when authoring a custom block — a graph can only offer what a field declares.
