opendentalsupport.com is an independent community resource. We are NOT affiliated with, endorsed by, or sponsored by Open Dental Software, Inc. Open Dental® is a registered trademark of Open Dental Software, Inc.

Open Dental Overdue Recall Query

SQL Queries3 min read3/28/2026

If you are struggling to identify which active patients have fallen through the cracks and are overdue for their hygiene visit, this open dental overdue recall query is the solution. It allows you to pull a clean list of patients based on their last completed hygiene appointment date, helping your front desk team prioritize their outreach efforts.

The Query

This query targets active patients who have not had a hygiene appointment within a specific timeframe. You can adjust the INTERVAL in the SET statement to define what "overdue" means for your practice (e.g., 6 months, 12 months, or 18 months).

/* Set the number of months to define "overdue" */
SET @MonthsOverdue = 12;

SELECT 
    p.LName, 
    p.FName, 
    p.HmPhone, 
    p.WirelessPhone, 
    p.Email, 
    MAX(a.AptDateTime) AS LastHygieneDate
FROM patient p
INNER JOIN appointment a ON p.PatNum = a.PatNum
WHERE p.PatStatus = 0
  AND a.AptStatus = 2 /* Complete */
  AND a.IsHygiene = 1
GROUP BY p.PatNum
HAVING MAX(a.AptDateTime) < DATE_SUB(CURDATE(), INTERVAL @MonthsOverdue MONTH)
ORDER BY LastHygieneDate ASC;

How to Run This Query

  1. In Open Dental, go to Reports in the Main Menu.
  2. Click User Query.
  3. Paste the query provided above into the large text box.
  4. Click Submit Query.
  5. The results will display in the grid below. You can click the "Export" button to save this list as a CSV file for use in Excel or your patient communication software.

Understanding the Results

How to Customize

You can easily modify this query to fit your specific needs:

Variations

Only Patients with Insurance

If you want to focus your retention efforts on patients who have active insurance benefits, you can add a join to the patplan table to filter out those without coverage:

/* Add this line after the FROM patient p line */
INNER JOIN patplan pp ON p.PatNum = pp.PatNum

Skip the Query — Use DentalCanvas Instead

Don't want to write SQL? DentalCanvas connects to your Open Dental database and shows you this data automatically in a visual dashboard — no queries required.


This article is provided by opendentalsupport.com, an independent community resource. We are not affiliated with Open Dental Software, Inc.

Stop Writing SQL.

DentalCanvas connects directly to your Open Dental database and shows you production, collections, scheduling, and more — in a visual dashboard you can understand at a glance. No queries. No exports. Just answers.

Try DentalCanvas

Was this article helpful?

Related Articles

opendentalsupport.com is an independent community resource. We are NOT affiliated with, endorsed by, or sponsored by Open Dental Software, Inc. Open Dental® is a registered trademark of Open Dental Software, Inc.