What it is
A dental practice earns revenue by completing procedures, each with a fee. Production is the total value of completed procedures. Providers work different hours, so total production alone does not compare them fairly.
Production per hour divides production by clinical hours. It is measured separately for doctors and hygienists, because their procedures and schedules are different.
Why operators track it
- It shows whether the schedule holds the right work. A full schedule of low-value appointments can still produce a low number.
- It compares providers fairly when they work different hours.
- It guides scheduling templates, such as blocking time for larger procedures.
- For groups and DSOs, it separates locations with a capacity problem (schedule is full, production is low) from those with a demand problem (open time).
How it is calculated
Production per hour = production ÷ clinical hours
- Gross production values procedures at the practice's full fee schedule.
- Net production subtracts contractual write-offs for insurance plans. It is closer to what the practice will collect.
- Clinical hours are hours scheduled to see patients, excluding lunch and admin blocks.
Worked example
Over one week, a provider has 32 scheduled clinical hours and completes procedures worth $38,400 at full fee. Contractual write-offs are $6,800.
How to read it
- Higher is better, within the same role and payer mix. Comparing a doctor to a hygienist, or a heavy-PPO office to a fee-for-service office, is not meaningful.
- Gross and net can tell different stories. A large gap between them points to payer mix and fee schedules, not provider productivity.
- Read it with schedule utilization. Low production per hour with a full schedule is a different problem from low production per hour with open time.
- Production per hour varies by region, specialty, fee schedule, and payer mix. We will only show figures with a named source and year.
Definitional choices and common pitfalls
- Gross or net. Net is closer to cash. Many practices track both.
- Scheduled or worked hours. Scheduled hours are more common and easier to get. Worked hours are more accurate if providers often run late or leave early.
- Attribution. Decide whether a procedure counts for the provider who completed it or the one who diagnosed it, and keep it consistent.
- Averaging daily rates. Divide total production by total hours. Averaging daily per-hour numbers gives the wrong answer.
- Completed only. Scheduled procedures are not production until they are completed.
How different roles use it
| Role | How they use it |
|---|---|
| Owner dentist | Compares doctors and hygienists and decides on schedule templates and hiring. |
| Office manager | Watches the schedule day to day and fills open time with the right appointments. |
| Associate dentist | Tracks their own number, often tied to compensation. |
| DSO regional manager | Compares locations on one definition and looks for capacity or demand problems. |
Questions it answers
- Which providers produce the most per clinical hour?
- Is low production a scheduling problem or a demand problem?
- How much does payer mix reduce net production?
- Which locations are below the group on the same definition?
How to present it in a report
- Show doctors and hygienists in separate charts.
- Show gross and net side by side, or state clearly which one the report uses.
- Use the last four weeks or the last month, not a single day.
- State whether hours are scheduled or worked.
Data you need
Fields
| Field | What it means | Example value |
|---|---|---|
| Provider | Who did the work, and their role | Dr. A, doctor |
| Procedure code | The CDT code for the procedure | D2740 crown |
| Fee | The practice's full fee for the procedure | $1,450 |
| Status | Completed, scheduled, or treatment planned | Completed |
| Contractual write-off | Fee minus what the insurance plan allows | $310 |
| Schedule block | Provider time, marked clinical, lunch, or admin | 8:00 to 12:00, clinical |
| Location | The office, and its region for DSOs | Maple Grove, North region |
What the raw data looks like
Example data A few rows as they might come out of the source system.
| Date | Provider | Role | Code | Fee | Write-off | Status | Location |
|---|---|---|---|---|---|---|---|
| Oct 14 | Dr. A | Doctor | D2740 | $1,450 | $310 | Completed | Maple Grove |
| Oct 14 | Dr. A | Doctor | D2392 | $310 | $65 | Completed | Maple Grove |
| Oct 14 | K. Lee | Hygienist | D1110 | $135 | $28 | Completed | Maple Grove |
| Oct 15 | Dr. A | Doctor | D3330 | $1,150 | $0 | Scheduled | Maple Grove |
Where this data usually lives
- Practice management system (PMS) holds the schedule, procedures, fees, adjustments, treatment plans, and payments. For example: Dentrix and Dentrix Ascend (Henry Schein One), Eaglesoft (Patterson Dental), Open Dental.
- Insurance clearinghouse and eligibility tools hold claims, remittances, and payer details, which explain write-offs.
- Imaging systems hold x-rays and clinical images. They are rarely needed for these metrics.
- Payroll or HR may hold hours actually worked, if the schedule does not.
- DSO data warehouses combine data from many locations, sometimes from more than one PMS.
Common data gaps and traps
- Schedule blocks not labeled. If lunch and admin time are not marked, clinical hours are overstated.
- Write-offs mixed with other adjustments. Courtesy discounts and contractual write-offs may share one adjustment type.
- Scheduled procedures counted as production. Only completed procedures count.
- Provider attribution. Work done by a hygienist may be posted under the doctor, or the reverse.
- Hours worked not recorded. The schedule may hold planned hours only. Worked hours may need payroll data.
Related metrics
- Case acceptance rate: accepted treatment fills productive hours.
- Schedule utilization: low utilization caps production per hour. Coming soon.
- Collection rate: production only matters if it is collected.
- Hygiene reappointment rate: drives future hygiene production.
FAQ
- Should I use gross or net production?
- Use net if a large share of patients are on PPO plans, because gross overstates what the practice will collect. Many practices show both.
- Do I count hours scheduled or hours worked?
- Scheduled clinical hours is more common and easier to get from the schedule. Hours worked is more accurate if providers often run late or leave early.
- Why measure doctors and hygienists separately?
- Their procedures, fees, and schedules are different. A combined number hides problems in both.
- How do I raise production per hour?
- Common levers are scheduling higher-value procedures in prime time, reducing open chair time, improving case acceptance, and reviewing fee schedules.
For your data teamFormula variants, tables, SQL sketch, and dashboard spec
Formula details
production_per_hour[provider] = production[provider] / clinical_hours[provider]
- Production: the value of completed procedures attributed to the provider in the period. Decide whether you use gross production (at the practice's full fee schedule) or net production (after contractual write-offs for insurance plans). Net is closer to cash. Many practices track both.
- Clinical hours: hours the provider was scheduled to see patients, excluding lunch and admin blocks. Some practices use hours actually worked. Pick one and document it.
- Measure doctor and hygiene production per hour separately. They are different jobs with different procedure mixes.
Variants
| Variant | Use when |
|---|---|
| Gross production per hour | Comparing schedule productivity regardless of payer mix |
| Net production per hour | Practices with heavy PPO participation; closer to real revenue |
| Production per chair hour | Measuring the facility (operatories), not the person |
| Production per visit | You do not have reliable hour data |
Worked example detail
Dr. A, one week: 32 scheduled clinical hours. Completed procedures at full fee: $38,400. Contractual write-offs: $6,800. Gross production per hour = 38,400 / 32 = $1,200. Net production per hour = (38,400 - 6,800) / 32 = $987.50.
Tables and fields
| Table | Fields | Notes |
|---|---|---|
procedures |
procedure_id, patient_id, provider_id, location_id, cdt_code, fee, completed_at, status | Only status = completed counts |
adjustments |
procedure_id, type, amount | Contractual write-offs for net production |
provider_schedule |
provider_id, location_id, date, start_time, end_time, block_type | block_type separates clinical from lunch and admin |
providers |
provider_id, name, role | role = doctor, hygienist, specialist |
locations |
location_id, name, region | For DSOs |
SQL sketch
WITH prod AS (
SELECT p.provider_id, p.location_id, DATE_TRUNC('week', p.completed_at) AS week,
SUM(p.fee) AS gross_production,
SUM(p.fee) + COALESCE(SUM(a.amount) FILTER (WHERE a.type = 'contractual'), 0) AS net_production
-- adjustments stored as negative amounts
FROM procedures p
LEFT JOIN adjustments a ON a.procedure_id = p.procedure_id
WHERE p.status = 'completed'
GROUP BY 1, 2, 3
),
hours AS (
SELECT provider_id, location_id, DATE_TRUNC('week', date) AS week,
SUM(EXTRACT(EPOCH FROM end_time - start_time) / 3600.0) AS clinical_hours
FROM provider_schedule
WHERE block_type = 'clinical'
GROUP BY 1, 2, 3
)
SELECT h.provider_id, pr.role, h.location_id, h.week,
p.gross_production, p.net_production, h.clinical_hours,
p.gross_production / NULLIF(h.clinical_hours, 0) AS gross_production_per_hour,
p.net_production / NULLIF(h.clinical_hours, 0) AS net_production_per_hour
FROM hours h
JOIN providers pr ON pr.provider_id = h.provider_id
LEFT JOIN prod p ON p.provider_id = h.provider_id AND p.location_id = h.location_id AND p.week = h.week;
-- Note: the adjustments join can duplicate procedure rows if a procedure has several
-- adjustments; pre-aggregate adjustments per procedure in production.
As a dashboard card
- Card type: KPI card (production per hour, change vs prior period) and a bar chart by provider, split doctor vs hygiene.
- Measures:
gross_production,net_production,clinical_hours; per-hour measures computed as sum over sum, never as an average of daily rates. - Dimensions: provider, provider role, location, region, week, day of week.
- Default view: last 4 weeks, by provider, net production per hour.
- Per-tenant settings: gross vs net as default, scheduled vs worked hours, fiscal calendar. A single-office practice and a 40-location DSO use the same governed definition with different defaults and saved views.
- Security: a DSO regional manager sees only their locations; an associate dentist sees only their own row.
- Ask it: "Which provider had the lowest production per hour last month?"
Common mistakes
- Averaging daily per-hour numbers instead of dividing total production by total hours.
- Mixing doctor and hygiene hours in one number.
- Counting scheduled (not completed) procedures as production.
- Ignoring write-offs in practices with heavy PPO participation, which overstates productivity.