Proposed by George Assaf, Sven Löffler, and Petra Hofstedt

Model Description

The Medical Appointment Scheduling Problem (MASP) focuses on assigning a set of medical resources at specific times to constitute a medical appointment for a given patient.

Given a set of medical resources, e.g., physicians with their current schedules represented as calendars (each with M time slots per day), the MASP must satisfy the following constraints:


Model Parameters


Modelling

This section defines the decision variables, their domains, and the constraints governing the problem.


Problem Domains

We define two types of integer domains:

In the modeling, we make use of slot identifiers and column/row indcies to express various time/date-related constraints.

Time slot matrix encoding a resource calendar

Assumptions

In the prototype model (Choco implementation), we assume the duration of each time slot is 15 minutes and the number of slots per each calendar day is $M =24$ slots. Moreover, we assume that all resources have the same availability, i.e., they share slot identifiers. Please also note that, resource calendars are unfolded into 1 D array with previously calculated slot identifiers. To teach yourself on constructing time slot identifiers, please check our reference published paper.


Decision Variables


Constraints

The model includes hard constraints (structural rules) and soft constraints (patient preferences).

Hard Constraints

Soft Constraints

$$ v_{\text{date}, \text{aux}} = \bigvee_{p \in P_d} \left( \left\lfloor \frac{\text{aux}}{M} \right\rfloor = \text{dateIndex}(p) \right) = 0 $$

Function $\textbf{dateIndex}$ returns the date index corresponding to a give date $p$. The total number of violations over all resource calendars is:

$$ \text{totalDateViolation} = \sum_{a \in \mathcal{A}} v_{\text{date}, \text{a}} $$

$$ v_\text{resource} = {x \notin P_r} $$

Then the total number of violations over all preferred resources is:

$$ \text{totalResourceViolation} = \sum_{x \in \mathcal{V’}} v_{resource}(x) $$

$$ \text{weekDayMatch}_{aux,p_w} = \left\lfloor \frac{aux}{M} \right\rfloor \mod 7 = p_w $$

Time slots (start and end) matching for one resource for the appointment is expressed as

$$ \text{timeMatch}_{aux,p} = (aux \mod M) \in [s_p, e_p] $$

A violation occurs when: - Appointment is on the right day AND Outside the preferred time window

$$ v_{aux,p} = weekDayMatch_{aux,p_w} \cdot (1 - \text{timeMatch}_{aux,p} ) $$

Total violations over all calendars:

$$ \text{totalTimeviolation} = \sum_{a \in \mathcal{A}} \sum_{p \in \mathcal{P}} v_{a,p} $$

Optimization Function As the goal is to minimize the violation of patient preferences, we define the objective function as: $$ \text{Minimize} \quad F = \text{totalDateViolation} + \text{totalResourceViolation} + \text{totalTimeviolation} $$