Skip to main content

Automated Work-Hour Violation Detection and Rules

Written by Medtrics

What it does

The platform checks logged work hours against a set of duty-hour rules and records a violation whenever a limit is exceeded. You can turn rules on or off and tune them per institution and per program.

Who it's for

Program administrators and program directors who configure which rules apply to their program, and institution administrators who set institution-wide defaults.

How it works

The rule set. The engine ships with eleven standard duty-hour rules, modeled on U.S. graduate medical education requirements:

  • A weekly hour cap (80 hours, averaged).

  • A continuous-duty cap (24 hours of patient care, plus up to 4 hours for transitions — 28 total).

  • A first-year 16-hour continuous-duty cap (off by default).

  • No moonlighting for first-year trainees.

  • At least one day in seven free of duty (averaged).

  • At least 8 hours off between shifts.

  • At least 14 hours off after 24 hours of continuous in-house duty.

  • A consecutive night-float limit (6 nights).

  • In-house call no more often than every third night (averaged).

  • No overnight in-house call for first-year trainees (over 6 hours between 21:00 and 05:00).

  • No home call for first-year trainees.

Each rule carries a severity, recorded on every violation it produces.

Scoped configuration. Institution administrators maintain an institution default set; programs see the effective merge of those defaults with their own overrides. Turning an inherited rule on or off at program level creates a program override — it doesn't touch the institution default. Numeric thresholds resolve in order: a per-role override, then the program's rule, then the institution's rule, then the built-in default. First-year-only rules apply automatically, based on the trainee's role.

Evaluation behavior. The engine only evaluates entries whose work type counts toward violations and counts as work time. It groups back-to-back entries into continuous-duty blocks and applies the institution's averaging mode for the weekly cap — a rotation average or a rolling multi-week window. It also honors the institution's choice of whether administrative time is separated from or combined with patient care under the continuous-duty cap. Each violation is written with the measured value and the limit, so reviewers see exactly how far over the line an event was.

Custom violation types. On the Violation Types tab, a program can define its own entries with a Code, Display Name, Severity, and optional Description — for example to track manually identified issues. A one-time Add ACGME Defaults action can populate a program with the standard set instead.

Legacy-carried violation types. Violations carried over from a prior system may show three extra rule codes the automated engine doesn't evaluate: a minimum weekly hours rule (min_40_hours) and rigid, non-averaged weekly maximum and minimum rules (max_week_hours_rigid, min_week_hours_rigid). These show in the queue and reports like any other violation. Only the import from the old system creates them — re-evaluation never does.

Before you start

  • You need work-hours management permission to change rules; trainees can't configure them.

  • Know your scope: institution admins edit the institution defaults; program admins and program directors edit their own program's rules, which start as the institution's inherited set.

  • Seeding Add ACGME defaults only works when no rules exist yet for that scope.

Do this

  1. Open the violation rules page (/work-hours/manage/rules) → you should see rule cards grouped into Hours, Rest & days off, Call & night float, and Moonlighting, each with a threshold badge and an enable switch.

  2. If no cards appear, select Add ACGME defaults on the page → the eleven standard rules appear as cards with their default thresholds and severities.

  3. On a rule's card, turn its switch on or off to enable or disable that rule → the card's icon changes color to show the new state, and at program scope a Program override badge appears.

  4. To change the numeric limit, select the pencil icon labeled Edit threshold on the card → the Edit threshold dialog opens showing the rule name and a Threshold value field.

  5. Enter the new value and select Save in the dialog → the dialog closes and the card's threshold badge shows the updated number and unit.

You're done when

  • ✓ The rule's card shows the enabled or disabled state you set.

  • ✓ A changed threshold shows the new value on the card's badge.

  • ✓ At program scope, a rule you changed shows a Program override badge instead of Institution default.

Boundaries and limits

  • Detection only considers entries flagged to count toward violations. Time off and work types set not to count are excluded.

  • The first-year 16-hour continuous-duty rule is off by default. Someone must turn it on.

  • Re-running evaluation is safe. It updates existing violations, adds new ones, and retires stale ones. It never deletes or changes an excused violation.

  • Disabling a rule clears the unexcused violations that rule produced for the evaluated range. It does not erase excused history.

  • Seeding the default rule set is blocked when the institution or program already has rules configured.

  • Configuring rules and evaluating other people's hours needs work-hours management permissions. Trainees can only trigger evaluation of their own hours.

  • Rule changes affect future evaluations. They do not rewrite past excused decisions.

Common questions

Q: Can one program have stricter limits than the rest of the institution? A: Yes. Programs inherit institution defaults and can override individual rules or thresholds. The program sees the merged set, with overrides marked.

Q: A trainee fixed a mistyped entry — does the violation go away? A: Yes, on the next evaluation. The engine retires violations whose cause no longer holds, unless the violation was already excused.

Q: Why didn't on-call-from-home hours trigger the weekly cap? A: It depends on the work type's setup. Types marked as not counting toward violations are excluded from detection.

Q: How is the weekly average calculated? A: The institution picks the averaging mode: an average across the rotation window, or a rolling multi-week window (four weeks by default). The recorded violation shows the computed average and the cap.

GME programs

Applies to: gme. Differences from the base article only.

How it works

In GME programs the rule set maps directly to the ACGME Common Program Requirements on clinical and educational work hours (Section VI.F), and each built-in rule carries its ACGME reference:

  • 80 hours per week, averaged — VI.F.1

  • 24 hours of continuous clinical duty plus up to 4 hours for care transitions (28-hour cap) — VI.F.2

  • PGY-1 16-hour continuous-duty cap — VI.F.2 under the 2011 standard; it ships disabled because the 2017 Common Program Requirements removed it. Enable it only if your program still applies the stricter standard.

  • One day in seven free of clinical work and education, averaged — VI.F.4

  • 8 hours off between scheduled clinical work periods — VI.F.3

  • 14 hours free after 24 hours of continuous in-house duty (PGY-2 and above) — VI.F.6

  • In-house call no more frequent than every third night, averaged — VI.F.6

  • PGY-1 no moonlighting — VI.F.5

  • Night float limits, PGY-1 no overnight in-house call, and PGY-1 no home call — VI.F

"First-year trainee" in the base article means PGY-1: the engine identifies PGY-1 and preliminary-year residents from their program role, and applies the PGY-1-only rules to them automatically.

Boundaries and limits

  • The PGY-1 16-hour rule is the only default rule shipped disabled; all other ACGME rules are active out of the box.

  • The averaging mode and the choice of whether administrative time is separated from patient care under the 24+4 rule are institution-level GME policy decisions that change how the same logged hours are judged.

Related articles

Did this answer your question?