Skip to content

Clinical Posting Planning and Scheduling

Epic summary

The Clinical Posting Planning and Scheduling workspace converts the curriculum’s clinical-posting requirements into dated learner rotations.

Clinical postings are scheduled as blocks rather than ordinary course periods.

Curriculum clinical-posting requirement
-> Cohort clinical-posting plan
-> Stable clinical groups
-> Department rotation assignments
-> Posting-specific unit subgroups
-> Unit, site, and location allocation

For example, Clinical Group A may undertake General Medicine for four weeks. During that posting, its learners may be divided between Medicine Units 1, 2, and 3 according to the units and capacity available for those dates.

The posting requirement remains independent of a course offering. An optional curriculum relationship may show that the posting supports a course, but neither record owns the other.

Before you start

The following must already exist:

  • a cohort phase plan that is Ready for Detailed Planning or Active;
  • the cohort’s pinned curriculum version and applicable posting requirements;
  • Active main clinical groups with actual learner membership;
  • responsible department mappings;
  • eligible department units where the department uses units;
  • approved teaching hospitals or other clinical learning sites;
  • eligible wards, OPDs, emergency areas, community sites, or other locations;
  • unit, site, location, and supervisor capacity rules;
  • an academic calendar and posting-time pattern; and
  • the required Clinical Posting Coordinator and department roles.

The posting planner may be opened earlier to review requirements and projected capacity. It cannot create a final learner rotation until the clinical groups and operational delivery resources are ready.

Actors and access

Access sourceAccess in this epic
Institute member with Academic Registrar roleOversees phase-level clinical readiness and resolves cross-department exceptions
Institute member with Phase Coordinator roleCoordinates the posting plan with the phase calendar, course schedule, and learner roster
Institute member with Clinical Posting Coordinator rolePrepares the rotation, runs or adjusts scheduling proposals, resolves conflicts, and submits the plan for review
Department Admin, normally with HOD appointmentConfirms department participation, available units, capacity, and supervisor pools
Unit AdminConfirms unit availability, location use, learner capacity, and eligible team for applicable dates
Facilities Officer roleConfirms site and location capability and availability without assigning learners
Faculty or clinical supervisorViews assigned groups and records permitted later delivery, attendance, supervision, and sign-off work
StudentViews only the released posting assignment that applies to them
Auditor roleReads requirements, availability, scheduler inputs, proposals, manual changes, locks, approvals, and history

The user who prepares the schedule cannot confirm unit capacity on behalf of a department unless they also hold the required department or unit capability.

Posting-plan lifecycle

Draft
-> Ready for Scheduling
-> Partially Scheduled
-> Fully Scheduled
-> Submitted for Timetable Review
-> Active
-> Completed

A Draft plan may be Cancelled. A plan with released or completed learner assignments is retained and changed through controlled amendments rather than deletion.

Automatic scheduling creates a proposal only. It never submits, activates, or publishes the plan.

Workspace structure

The workspace contains:

  1. Posting Requirements
  2. Posting Plan and Rotation Calendar
  3. Clinical Groups
  4. Department, Unit, and Site Availability
  5. Department Rotation Scheduler
  6. Unit Subgroup Scheduler
  7. Manual Rotation Grid and Locks
  8. Coverage, Conflicts, and History

Screen 1: Posting Requirements

The screen reads the clinical-posting requirements from the cohort’s pinned curriculum version.

Each requirement shows:

  • posting code and name;
  • academic discipline;
  • curriculum phase;
  • required duration and unit;
  • required number of blocks;
  • minimum and maximum block length;
  • whether the posting may be split;
  • required sequence or prerequisite;
  • required site type;
  • attendance, supervision, sign-off, or exposure requirements;
  • responsible department and eligible delivery mappings; and
  • source reference.

These fields are read-only in the posting plan. An academic requirement change must be made through a successor curriculum version.

Screen 2: Posting Plan and Rotation Calendar

The user defines how the phase interval will be divided for clinical rotations.

FieldRequiredWhat the user defines
Cohort phase planYesPhase whose learners and curriculum requirements are being scheduled
Plan code and nameYesInstitute-unique identity for the rotation plan
Posting start and end datesYesClinical-posting window inside the phase-plan dates
Posting-time patternYesWorking days and daily clinical-posting hours
Rotation-period methodYesRequirement-led dates, common rotation boundaries, or another supported method
Calendar exceptionsNoApproved breaks, holidays, examinations, or protected dates that affect rotation periods
Clinical Posting CoordinatorYesCurrent authorised coordinator assignment
Planning notesNoPlain operational information that does not alter a curriculum requirement

The system creates dated rotation periods. Periods may have equal lengths where requirements permit, but unequal posting durations must also be supported.

For example:

Rotation 1 — 1 September to 28 September
Rotation 2 — 29 September to 26 October
Rotation 3 — 27 October to 23 November
Rotation 4 — 24 November to 21 December

A posting block reserves the learner group’s applicable clinical hours during the date range. It does not turn every day into a separate bedside-teaching record during this step.

Screen 3: Clinical Groups

The screen selects Active main clinical groups from Learner Group Management.

It shows:

  • group code and name;
  • actual learner count;
  • effective membership dates;
  • learners with restricted or partial availability;
  • existing posting assignments;
  • locked memberships; and
  • unresolved roster differences.

The posting scheduler does not permanently redefine main clinical groups. Posting-specific unit subgroups are created later from the selected group’s actual membership.

Screen 4: Department, Unit, and Site Availability

The responsible department comes from Curriculum Delivery Setup. The department then confirms which eligible resources can receive learners during this plan.

Department-level fields

FieldRequiredWhat the user defines
Posting requirementYesCurriculum posting being prepared
Responsible departmentInheritedApproved department responsible for delivery
Available date rangeYesDates within which the department can receive groups
Maximum simultaneous groupsYesDepartment-level concurrent capacity
Department confirmationYesHOD or authorised Department Admin confirmation

Unit-level fields

FieldRequiredWhat the user defines
UnitConditionalEligible department unit; omitted where the department does not operate through units
Available datesYesDates during which this unit can receive learners
Maximum learnersYesActual learner capacity of the unit
Maximum simultaneous subgroupsYesNumber of posting subgroups the unit can supervise at once
Primary siteYesTeaching hospital or other approved clinical site
Eligible locationsConditionalWard, OPD, emergency area, community centre, or another suitable location
Supervisor poolYesFaculty or clinical-supervisor assignments eligible for this posting and period
Whole-block availabilityYesWhether the unit can receive the subgroup for the complete posting block
Unavailable datesNoUnit-specific blackout dates
PreferenceNoPrimary or alternative delivery option used as a scheduling preference
ConfirmationYesUnit Admin or authorised department confirmation

The number of units alone is not enough. The scheduler uses the actual unit records, dates, capacity, sites, locations, and supervisor pools.

Units and locations remain separate. A unit is a clinical team; a ward or OPD is a physical place used by that team.

Screen 5: Department Rotation Scheduler

The first scheduling stage assigns stable clinical groups to department postings and dated rotation periods.

Inputs

  • actual learner membership of each clinical group;
  • curriculum posting requirements and durations;
  • rotation periods;
  • responsible departments;
  • department availability and concurrent capacity;
  • posting sequence and split rules;
  • protected academic periods;
  • existing locked assignments; and
  • any authorised group restriction.

Output

Rotation 1
Clinical A → General Medicine
Clinical B → General Surgery
Clinical C → Obstetrics and Gynaecology
Clinical D → Paediatrics
Rotation 2
Clinical A → General Surgery
Clinical B → Obstetrics and Gynaecology
Clinical C → Paediatrics
Clinical D → General Medicine

Hard constraints

The scheduler must ensure:

  • every group receives every mandatory posting and required duration;
  • a group is not in two postings during overlapping clinical hours;
  • the posting remains inside the phase and posting-plan dates;
  • department concurrent capacity is not exceeded;
  • required sequence and prerequisites are respected;
  • a posting is divided only when the curriculum permits it;
  • protected and authority-locked activities do not move; and
  • group membership is valid for the assignment dates.

Preferences

The scheduler should try to:

  • avoid unnecessary gaps;
  • distribute preferred and alternative sites fairly;
  • keep rotation boundaries simple;
  • balance department load; and
  • minimise changes to an earlier reviewed proposal.

A preference may be missed and reported. A hard constraint may not be violated.

Screen 6: Unit Subgroup Scheduler

The second scheduling stage takes each department posting assignment and divides its learners between the units available for that posting.

For example:

Clinical Group A — General Medicine — 32 learners
├── A1 — 12 learners → Medicine Unit 1
├── A2 — 10 learners → Medicine Unit 2
└── A3 — 10 learners → Medicine Unit 3

The same main clinical group may split differently in another department:

Clinical Group A — General Surgery — 32 learners
├── A1 — 16 learners → Surgery Unit 1
└── A2 — 16 learners → Surgery Unit 2

Posting-specific subgroups do not change the learner’s stable main clinical group.

Unit-allocation rules

  • Every learner in the department assignment must be placed in exactly one active unit subgroup for the applicable dates.
  • Unit capacity is checked using actual learner count.
  • The unit must be eligible, available, and confirmed for the whole allocation period.
  • The site and location must support the posting.
  • Required supervisor capacity must be available.
  • The subgroup cannot be larger than the selected unit’s capacity.
  • Existing learner or unit locks are preserved.
  • Subgroup sizes should be as balanced as capacity allows.
  • A department without units receives a department-level assignment without artificial units.

Where a department deliberately rotates subgroups between units within one posting, the plan may use dated unit segments only when the delivery configuration permits it. The scheduler must still preserve the total required posting duration for every learner.

Scheduling approach

Clinical scheduling should not rely on a simple first-fit greedy algorithm alone. An early flexible assignment can consume the only capacity available for a later constrained group.

The scheduling service should:

  1. generate every valid group, posting, period, department, and unit candidate;
  2. remove candidates that already violate hard rules;
  3. create a fast initial proposal using scarcity-first greedy allocation;
  4. pass the proposal to a constraint solver for repair and improvement;
  5. stop after a configured time limit with the best feasible result found; and
  6. explain every requirement or learner it could not place.

The greedy pass schedules the most constrained work first:

  1. locked assignments;
  2. postings with only one eligible department, site, or unit;
  3. lowest-capacity resources;
  4. longest postings;
  5. strict sequences;
  6. largest groups; and
  7. flexible assignments last.

A constraint-programming solver such as CP-SAT is suitable because the problem combines assignment, capacity, date, sequence, exclusivity, and preference rules. The algorithm is deterministic for a retained input snapshot and seed. It is not an AI-generated timetable.

The scheduler returns Feasible, Optimal within the configured objective, Infeasible, or Not Solved within the time limit. Infeasible must include the smallest practical set of conflicting requirements that the system can explain.

Screen 7: Manual Rotation Grid and Locks

The main review screen uses:

  • rows for stable clinical groups;
  • columns for rotation periods; and
  • cells showing the department posting, unit subgroups, sites, learner counts, and warnings.

The user can:

  • move a group to another valid posting period;
  • exchange two compatible group assignments;
  • redistribute learners between available units;
  • select another eligible unit or site;
  • lock an accepted department or unit allocation;
  • release a permitted lock with a reason;
  • rerun scheduling around locked work; and
  • inspect why an alternative is invalid.

Manual and automatic scheduling use the same validation service. A drag-and-drop action cannot bypass a hard rule.

Screen 8: Coverage, Conflicts, and History

Coverage is calculated per learner, group, posting requirement, duration, and unit allocation.

The screen identifies:

  • missing or excess posting duration;
  • a learner omitted from a unit subgroup;
  • duplicate subgroup membership;
  • department, unit, site, or supervisor capacity failure;
  • overlapping clinical or course work;
  • unavailable unit dates;
  • invalid or ended group membership;
  • a posting split that is not permitted;
  • an unresolved protected-period conflict;
  • a requirement that the scheduler could not place; and
  • changes made after review or release.

History retains every input snapshot, scheduling run, proposal, accepted assignment, manual change, lock, confirmation, submission, activation, completion, and reversal.

Use case 1: Prepare a clinical-posting plan

As a Clinical Posting Coordinator
I want to prepare the phase’s posting requirements and rotation calendar
So that clinical groups can be scheduled against the correct curriculum and dates.

Acceptance criteria

  • Requirements come from the cohort’s pinned curriculum version and are read-only.
  • Posting dates and time patterns remain within the phase plan and calendar.
  • Every requirement shows its responsible department and unresolved delivery gaps.
  • Rotation periods support equal and unequal posting durations.
  • The plan cannot become Ready for Scheduling until mandatory groups and delivery resources are available.

Use case 2: Confirm available departments, units, and sites

As a Department Admin or Unit Admin
I want to confirm when and how my department or unit can receive learners
So that the scheduler uses real clinical-teaching capacity.

Acceptance criteria

  • Only eligible units, sites, locations, and supervisor pools can be selected.
  • Unit capacity and simultaneous-subgroup capacity are separate fields.
  • Availability is effective-dated for the posting plan.
  • A unit and its physical locations remain separate records.
  • Confirmation records the responsible role, actor, and time.
  • An unavailable or unconfirmed resource is not used by the scheduler.

Use case 3: Generate the department rotation

As a Clinical Posting Coordinator
I want to automatically assign clinical groups to department postings
So that every group receives the required postings without clashes.

Acceptance criteria

  • Every mandatory posting and duration is considered.
  • Locked assignments remain unchanged.
  • Hard constraints are never traded for preferences.
  • The output shows every group by rotation period.
  • Unscheduled requirements include a plain reason.
  • The proposal is not activated or published automatically.

Use case 4: Generate posting-specific unit subgroups

As a Clinical Posting Coordinator
I want to divide each department group assignment across its available units
So that learners receive clinical teaching within real unit capacity.

Acceptance criteria

  • Actual learners, rather than only a group count, are allocated.
  • Every learner is assigned exactly once for the unit-allocation dates.
  • Subgroup sizes respect unit capacity and are balanced where possible.
  • A different subgroup pattern may be created for another department posting.
  • Main clinical-group membership is not changed.
  • A department without units remains department-level.

Use case 5: Review and manually adjust the rotation

As a Clinical Posting Coordinator
I want to adjust a proposed department or unit assignment while seeing conflicts
So that local operational knowledge can be applied safely.

Acceptance criteria

  • The user sees learner, duration, capacity, unit, site, supervisor, and timetable impact before saving.
  • Manual changes use the same hard validation rules as automatic scheduling.
  • A permitted warning override records its reason and authority.
  • Accepted allocations can be locked.
  • A new scheduling run works around the retained locks.

Use case 6: Review coverage and submit for timetable review

As a Phase Coordinator
I want to confirm complete posting and unit coverage
So that the clinical rotation can enter the master-timetable review.

Acceptance criteria

  • Coverage is shown for every learner, clinical group, posting requirement, and duration.
  • Every learner has a valid department assignment and, where applicable, unit subgroup assignment.
  • Hard conflicts and unexplained curriculum gaps block submission.
  • Department and unit confirmations are visible.
  • Submission does not itself publish the timetable.

Important business rules

  • Clinical-posting requirements and course placements are independent curriculum records.
  • Main clinical groups rotate across department postings.
  • Departments with multiple teaching units normally divide the assigned group into posting-specific unit subgroups.
  • Posting-specific subgroup membership does not alter the stable clinical group.
  • The same group may split differently in different departments.
  • Actual unit capacity, not merely the number of units, controls learner allocation.
  • Units and physical locations remain separate.
  • A department without units is scheduled at department level.
  • Every learner must receive the complete posting duration required by their curriculum version.
  • Automatic scheduling creates a proposal and never publishes it.
  • Manual and automatic changes use the same constraints and audit rules.
  • Daily actual supervisors and clinical delivery are recorded later in the Clinical Posting Workspace and Delivery without rewriting the planned rotation. Attendance, encounters, and competency evidence remain in their owning records.

Conceptual schema

RecordImportant fields
academic.clinical_posting_plantenant, institute, phase plan, code/name, date window, time pattern, coordinator, status
academic.posting_plan_requirementplan, curriculum posting requirement, responsible department, planned dates, readiness, status
academic.clinical_rotation_periodplan, code/name, start/end dates, time pattern, sequence, lock state
academic.posting_department_availabilityplan requirement, department, dates, simultaneous-group capacity, confirmation
academic.posting_unit_availabilityplan requirement, unit, dates, learner/subgroup capacity, site, locations, supervisor pool, preference, confirmation
academic.clinical_posting_assignmentplan requirement, main clinical group, rotation period, department, start/end dates, source, lock, status
academic.clinical_posting_subgroupposting assignment, code/name, unit, site, location options, dates, learner count, supervisor pool, lock, status
academic.clinical_posting_subgroup_memberposting subgroup, phase-plan participant, start/end dates, source, status
academic.clinical_schedule_runplan, stage, input snapshot, constraints, preferences, algorithm version, seed, time limit, result, summary
academic.clinical_schedule_proposal_itemrun, posting or subgroup assignment, proposed period/resource, result, warning or unscheduled reason
academic.clinical_posting_eventplan or assignment, event type, earlier/new value or state, actor, reason, recorded at

Process-layer responsibilities

The process layer:

  • reads posting requirements from the exact curriculum version pinned to the cohort;
  • creates requirement and rotation-plan records without changing the source curriculum;
  • resolves actual clinical groups and membership from Active learner-group records;
  • resolves eligible departments, units, sites, locations, and supervisor pools from effective-dated Setup records;
  • generates department-rotation candidates and unit-subgroup candidates;
  • applies hard date, duration, exclusivity, capacity, sequence, site, unit, supervisor, and lock constraints;
  • applies preferences only after every hard rule is satisfied;
  • uses scarcity-first construction followed by bounded constraint solving and repair;
  • records inputs, algorithm version, seed, time limit, result quality, and explanations;
  • calculates per-learner posting and unit-allocation coverage;
  • supports manual adjustments through the same validation service;
  • exposes protected posting times to course and master-timetable conflict checks;
  • retains confirmed and locked assignments across later scheduling runs; and
  • preserves every material proposal, acceptance, adjustment, activation, and completion event.

Success outcome

Every eligible learner has a complete, capacity-checked clinical rotation across the required departments and, where applicable, an explicit posting-specific assignment to an available clinical unit, ready for master-timetable review and later daily operation through the Clinical Posting Workspace and Delivery.