Skip to main content
DoneThat

AI Adoption GuideHealthcareFollowup

Population health gap closure

ML identifies patients overdue for preventive care and generates a prioritized, actionable outreach list for care coordinators.

Healthcare processAccessIntakeAssessDiagnoseTreatDischargeBillFollowup

By Don, DoneThat’s AI coach · updated

Cite the missing measure and the last result date

A quality gap on this page is a named preventive measure the patient is overdue for, together with the date of the last result that proves the overdue. If that last result still falls inside the measure window, the row stays empty. The model does not invent a miss so the list looks complete. A coordinator still does the outreach.

You cannot call a patient with a row that only says "overdue." You also cannot argue with a clinician about a false miss if you cannot show the last date the rule used. The cite is the working object: measure name (or the identifier your quality team already uses) plus last-result date. When there has never been a result, the cite is the measure plus an explicit "no prior result on file." That phrase is not the same as a blank date. A blank date is a data defect. Do not treat it as a gap.

Population-health modules and EHRs from vendors such as Epic, Oracle Health, Microsoft, and athenahealth already hold measure definitions, last results, and worklists. Treat those products as one class of source system. The model reads what they store. It does not replace the measure engine, and this page does not assign unique features to any one of them.

Coordinators who also work social needs should keep those queues separate from this one. A missing food or housing screen is a different kind of miss; handle it with social support gap detection rather than stuffing it onto a preventive-care list.

Load the measure set and the last results first

Load the measure set the program actually runs. That means eligibility, lookback windows, and exclusions as quality already defined them, not a generic "preventive care" bucket. Then load the last result for every eligible patient: the lab, imaging, procedure, or immunization, and the date it posted.

Work in that order on purpose. A flag without a loaded measure set is a guess. A flag without last results is a gap with no last-result date, which you already know not to send.

Flag a gap only after both the measure definition and a last-result record (or a confirmed absence of any result) are in hand. Write the cite onto the row at flag time so a coordinator never has to reconstruct it from the chart during a call. If the last-result date is missing, and you cannot confirm a true absence, do not flag. Send that patient to data repair: chart, claims, and interface logs. A gap with no last-result date is the first failure mode. It produces confident outreach against a clock you cannot defend.

An actionable row is one a coordinator can use without rebuilding the chart during the call. Pull preferred phone, preferred language, last outreach attempt, and attributed clinician when those fields already exist in the source. Do not block a cited gap because a preference field is empty. The gap is still the gap.

Refresh last results on a schedule that matches how your interfaces actually land, not once a quarter. A result that posted yesterday should empty the row tomorrow. Stale last-result dates recreate gaps the clinician already closed.

Patients whose chronic course is changing still belong on this list only for measures that are actually overdue. Trajectory risk is a different follow-up problem; see chronic disease trajectory modeling when the question is worsening disease rather than a missed screen.

Empty is the correct output when the measure is current

If the last result is inside the window, leave that measure empty. Do not print "due soon," "consider screening," or a courtesy reminder to keep the panel busy. Coordinators work gaps. Rows that are not gaps train them to skim and miss the ones that are.

Do not invent an overdue screen because the panel looks thin, because a similar patient is due, or because a claim never posted and the model is "pretty sure" the test never happened. If any loaded source shows a result inside the window, the measure is current. If every loaded source is silent, say "no prior result on file" and cite the measure. Inventing an overdue screen is the third failure mode. It burns coordinator time and it burns clinician trust the next time the list is right.

Exclusions belong in the empty bucket too. A valid hysterectomy, a documented decline, or a hospice flag is not a gap. Load those the same way you load last results. If exclusion data is incomplete, that is another data-repair case, not an outreach case.

A Tuesday queue, one patient at a time

Consider a 58-year-old woman on the diabetes and women's health measure sets. Her last A1c is inside the window, so the A1c cell stays empty. Her last mammogram is outside the window, so the row cites the breast cancer screening measure and that mammogram date. There is no colonoscopy or stool test on file, so the colorectal row cites the colorectal measure with "no prior result on file," not a blank date. The coordinator calls about the mammogram and the colorectal screen, not A1c, and does not add a cervical screen the model never cited.

That is the whole example. No closure rate, no panel size, no hours saved. The point is the empty cell, the dated cite, and the absence cite, on the same person, in the same sitting.

If she is already on a written care plan that includes those screens, the outreach still starts from this list, then hands off to care plan adherence monitoring once the appointment is booked and the question becomes whether she kept it.

Coordinators close the loop; the list does not

Treating the prioritized list as outreach done is the second failure mode. The list is a work queue. Status stays open until a person attempts contact, documents the attempt, and either schedules the service, records a valid exclusion, or records a refusal. A generated row is not a call. A sorted row is not a letter. A "high priority" badge is not a completed gap.

Prioritize by number of cited gaps, by how soon the measurement window ends, or by the outreach channel that actually reaches that patient. Prioritization only decides who is next. It does not retire the row.

Document the attempt in the same system the rest of the care team reads. If the patient is already in a remote-monitoring program, do not open a second silent queue; coordinate with remote patient monitoring with escalation so the same coordinator is not calling twice in one week about unrelated alerts.

When the result posts, the gap empties. When the result does not post, the cite stays, and the next attempt is still a coordinator's job.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first