Everything you need to build, configure, and export an optimized OR schedule in minutes.
ProcedureIQ is a browser-based OR scheduling intelligence tool powered by Google OR-Tools CP-SAT — an industry-grade constraint programming solver. It optimally allocates surgical cases across operating rooms using real operative data, accounting for procedure-level duration distributions, skewness, variability, and percentile-based buffering.
The demonstration version uses aggregated, PHI-free operative data. When deployed for your institution, ProcedureIQ uses your own operative data for scheduling decisions.
Use the Service and Class dropdowns to filter procedures, then use + / − to set how many cases of each type to schedule. The footer bar tracks total cases and estimated OR-hours in real time.
Set the number of rooms, shift times, OT ceiling, turnover time, and solver penalty weights. Choose a Duration Buffer Mode — P75 for standard days, P90 for high-acuity service lines.
Click Run CP-SAT Optimizer. Results appear in seconds — review the Gantt chart, utilization metrics, and room timelines. Export to PDF or Excel with one click.
The Select Cases tab shows all available procedures as cards. Use the filters at the top to narrow down to what you need.
| Control | Purpose |
|---|---|
| Service dropdown | Filter to a single surgical service — Orthopedics, ENT, General, Cardiothoracic, and more |
| Class dropdown | Filter by case class: Scheduled (SC), Elective (EL), or Urgent (UR) |
| Search box | Free-text search within currently filtered results |
| Select all visible | Adds 1 case to every procedure currently showing after filters are applied |
| Clear all | Resets all case quantities to zero |
Each card displays key statistics from real operative data:
| Stat | Meaning |
|---|---|
| n | Number of historical cases in the dataset |
| μ | Mean case duration in minutes |
| σ | Standard deviation — higher values mean more variable cases |
| CV | Coefficient of variation (σ/μ) — a relative measure of variability |
| skew | Distributional skewness — OR times are typically right-skewed (cases run long more often than short) |
| P75 | 75th percentile duration — used as the default scheduling buffer |
Configure your operating room parameters and solver behavior before running the optimizer.
| Setting | Default | Description |
|---|---|---|
| Number of OR rooms | 6 | Operating rooms available for the scheduling day |
| Turnover time (min) | 20 | Cleaning and prep time between cases in the same room |
| Gap-filler threshold (min) | 30 | Minimum gap size to attempt inserting a Pain/filler case |
| Shift start | 07:00 | Start of the OR day |
| Regular end | 15:30 | End of standard shift; cases ending after this accrue OT cost |
| OT ceiling | 18:00 | Hard cutoff; no cases scheduled to end beyond this time |
| OT penalty (per min) | 5 | Cost weight applied per minute of overtime |
| Unscheduled case penalty | 1,000 | Cost weight for each case that cannot be scheduled |
| Idle time penalty | 1 | Cost weight for unutilized room time between cases |
Controls which percentile of historical case duration is used when scheduling. Right-skewed OR times mean cases run long far more often than they run short — buffering protects against overtime.
After running the optimizer the Schedule tab displays your results across four areas:
| Element | Description |
|---|---|
| Summary metrics | OR Utilization %, Adjusted Utilization %, Total OT (min), and Unscheduled case count |
| Gantt chart | Color-coded room timeline. Dashed blocks = gap-fill cases. Shaded zone = overtime region. |
| Room timeline | Case-by-case breakdown per room with start time, end time, and OT flag |
| Unscheduled cases | Any cases that could not be placed within the configured parameters |
ProcedureIQ uses Google OR-Tools CP-SAT, an industry-grade constraint programming solver. CP-SAT models the scheduling problem as a set of hard constraints — one case per room at a time, cases must fit within the OT ceiling — and an objective function to minimize. It systematically searches the solution space using parallel techniques including clause learning, linear relaxation, and local search to find provably optimal or near-optimal solutions.
The objective function minimizes a weighted sum of three costs:
| Cost Component | Default Weight | Meaning |
|---|---|---|
| Overtime | 5 per minute | Penalizes cases running past the regular shift end |
| Unscheduled cases | 1,000 per case | Strongly penalizes any case that cannot be placed |
| Idle time | 1 per minute | Lightly penalizes unused room time between cases |
Adjust the penalty weights in the Solver Weights panel to reflect your operational priorities. Increasing the OT penalty produces tighter schedules; decreasing the unscheduled penalty allows the optimizer to leave more cases out rather than force overtime.