This is the full list of what the dashboard expects from you. It is on a public page, rather than inside the download, so you can decide whether the file fits your data before you spend anything. Everything comes from three exports you almost certainly already have, plus a one-row settings file. Match the column names and types; the order does not matter. One row is one event.
Twenty columns in total across the three tables. ● means required. ○ means optional: the dashboard still works without it, that one slice just shows blank.
Visits.csv one row per service delivered
| Column | Type | Req | Meaning and example |
|---|---|---|---|
| Date | Date | ● | Date of the visit. 2026-06-14 |
| Branch | Text | ● | Location or site. Single-site clinics put one value everywhere. |
| Doctor | Text | ● | Provider name. Must match Providers.Doctor exactly. |
| Specialty | Text | ● | Service line. Orthodontics |
| Service | Text | ● | Procedure or service. Aligners |
| VisitType | Text | ● | New or Returning — first visit versus repeat. |
| Revenue | Number | ● | Collected amount, net, cash in the door. Not the charge. |
| Billed | Number | ○ | Gross charge before adjustments. Drives collection rate. If you omit it, set it equal to Revenue. |
| Payer | Text | ○ | Insurance, card, cash, or whatever labels you use. Drives the by-payer widget. |
| PatientID | Text | ● | Internal patient key, never a name. Drives patient counts and retention. |
| Source | Text | ○ | Acquisition channel. Drives the acquisition widget. |
| Gender | Text | ○ | Drives the age and gender footer. |
| AgeBand | Text | ○ | 0–17, 18–34, 35–54, 55+. |
Appointments.csv one row per booked appointment
| Column | Type | Req | Meaning |
|---|---|---|---|
| Date | Date | ● | Appointment date. Drives no-shows by weekday, the funnel and the operations KPIs. |
| Doctor | Text | ● | Provider on the appointment. Matches Providers.Doctor. |
| Status | Text | ● | Exactly Completed, NoShow or Cancelled. |
Providers.csv one row per provider
| Column | Type | Req | Meaning |
|---|---|---|---|
| Doctor | Text | ● | Provider name. This is the key used by Visits and Appointments. |
| Specialty | Text | ● | Their specialty. |
| WeeklyCapacity | Whole number | ● | Bookable slots per week. This is the denominator for utilization and schedule fill. |
| Rating | Number | ○ | Average star rating, if you have one. |
Plus Settings.csv, a single row with ClinicName and Tagline for the header. That is branding, not data.
Estimating WeeklyCapacity: slots per day multiplied by days per week. A dentist seeing 8 patients a day, 4 days a week, is about 32. Rough is fine, because it is only the yardstick for utilization against a target. Part-time providers get a smaller number.
Where these come from in your system
You do not need a warehouse. Almost every EMR and practice-management system can export these three things under some name or other:
| This table | In your system it is usually called |
|---|---|
| Visits | Encounters · Ledger or Production · Procedures · Completed visits · Charges |
| Appointments | Schedule · Appointment book · Booking report |
| Providers | Provider list · Staff or Users · Scheduling resources |
For Visits, pull a line-level production or completed-procedures report for the last 12 to 24 months. Map service date to Date, rendering provider to Doctor, the procedure description to Service, the collected amount to Revenue and the charge to Billed. If your report is one row per payment rather than per procedure, that is fine, as long as Revenue sums to your real collections for the period.
For Appointments, export the schedule with a status column and rename your outcomes to the three the model expects. Most systems have exactly these three under other words, such as Seen, Failed or Broken.
In dental systems (Open Dental, Dentrix, Eaglesoft, Curve) the usual pairing is Production by Provider for Visits and the broken-appointment report for Appointments. On the medical side (athenahealth, DrChrono, Tebra, NextGen, Epic) it is a charges or encounters export plus the visit-status report. If you have no structured export at all, a CSV from your billing spreadsheet works, provided the columns line up. For a longer walkthrough of that first step, see Power BI for clinics, and for the dental specifics Open Dental and Dentrix reports.
Before you refresh, check five things
- Doctor is spelled identically in Visits, Appointments and Providers.
- Date columns are real dates, not text.
- Revenue totals match your actual collections for the period.
- Status values are exactly Completed, NoShow or Cancelled.
- PatientID is a code, not a name.
Six widgets ship with placeholder numbers
This is the part most template listings leave out, so here it is on the page you can read before buying. Six of the widgets show signals that are not in the three exports above. They arrive as clearly marked placeholders and stay that way until you supply the data behind them.
| Widget | What ships | How to make it real |
|---|---|---|
| Average wait (Operations KPI) | A fixed 12 minutes | Add a WaitMin column to Appointments and point the measure at it. |
| Funnel, confirmed and arrived | Fixed shares of booked | Add those statuses to Appointments and compute the stage counts. |
| Cancellations, same-day and rebooked | Fixed percentages | Add the two flags to Appointments. |
| Busiest hours | Fixed hour ranges | Add an appointment time and group by hour. |
| Retention cohorts (Patients) | A demo cohort table | Load a Cohorts table of cohort month, month number and retention rate. |
| Review count (Providers) | A calculated column | Add a Reviews column to Providers. |
Everything else on the five pages is live from your three exports. If those six matter to you more than the rest, that is a reason not to buy this, and I would rather you knew now.
Two more things the file asks of you
Neither is data, but both are part of the contract, and neither is visible in a screenshot.
- You set a folder path as a parameter. On first open, Power BI asks for the folder holding your three CSVs. That is one dialog, and it is the same mechanism I have criticised in other people's templates, with the difference that the folder is yours.
- You install one free custom visual. Every chart is drawn by a single free AppSource visual, HTML Content. If your organisation blocks AppSource visuals, the pages will render as blank rectangles, so check that before buying.
If your columns line up, the rest is a refresh
Clinic Vitals is a Power BI report for medical and dental practices: five pages covering revenue, patients, providers and operations, built on the three exports above instead of a live connection to one vendor's API.
See the dashboard →Most template sellers ship the column list inside the download, which means you find out whether the file fits your data after you have paid for it. I used to do that too. This page exists because I wrote an article taking other Power BI templates apart for hiding exactly this, and a fact-check pointed out that my own list was only available after purchase. Publishing it is the cheaper of the two ways to fix that. The placeholder table above is on this page for the same reason. If something here does not match your export and you are not sure whether it is fatal, the honest answer is usually in the first column of the tables above: required means required.