Description of the data format for the PASU

Input Format

Each .pasu instance is in a single file, containing a file header and three main sections (departments, rooms, patients). The header provides all scalar values and each main section provides the arrays for that specific aspect of the problem. The exact format is shown by the following example:

Date: Wednesday 7th of December 2011 11:19:56 AM
Departments: 4
Rooms: 8
Features: 4
Patients: 50
Specialisms: 3
Days: 14

DEPARTMENTS (name, age_constraint, main_specialisms_list, aux_specialisms_list):
Dept_0 * (0,2) (1)
Dept_1 * (0) (2)
Dept_2 * (1,2) (0)
Dept_3 * (1) (2)

ROOMS (name, capacity, dept_index, gender_policy (SG/Ma/Fe/All), features_list):
0 4 2 SG (1,2,3)
1 4 3 Fe (2,3)
2 4 1 Fe (2,3)
3 6 2 SG (0,1,3)
4 2 1 Fe (1,2)
5 1 1 Fe (0,1,2)
6 4 3 Fe (0,1,2,3)
7 2 0 Fe (0,1,2,3)

PATIENTS (name, age, gender, [registration, admission, discharge, variability, max_admission], treatment, preferred_capacity, room_property_list):
Pat_0 47 Ma [0, 0, 5, 0, *] 2 <=4 (0p,2p,3p)
Pat_1 22 Fe [0, 0, 3, 1, *] 0 * (0p,1p,2p,3p)
Pat_2 68 Fe [0, 0, 5, 0, *] 0 <=1 (0p,1p,2p)
Pat_3 80 Fe [4, 10, 13, 0, <=11] 2 <= 4 (1p,2p,3n)
Pat_4 85 Ma [1, 1, 4, 1, *] 1 <=1 (0p,1p,2p,3p)
Pat_5 10 Fe [0, 5, 6, 0, *] 0 <=1 (0p,2p,3p)
Pat_6 74 Ma [4, 9, 14, 0, *] 2 <=2 (0p,1p,2p,3p)
Pat_7 48 Ma [0, 1, 4, 0, *] 0 * (0p,1p,2p,3p)
Pat_8 36 Fe [0, 6, 14, 1, *] 1 <=4 -
Pat_9 69 Fe [2, 3, 9, 1, <=3] 2 <=2 (0p,3p)
Pat_10 11 Fe [1, 7, 11, 0, *] 0 <=4 (0p,1p,2p)
Pat_11 28 Fe [5, 8, 14, 1, <=8] 2 <=2 (0p,1p,2p,3n)
Pat_12 52 Ma [8, 9, 14, 0, *] 1 <=4 (1p,2n,3p)
Pat_13 76 Fe [8, 9, 14, 0, <=9] 1 <=4 (0p,1p,2p,3n)
Pat_14 35 Ma [2, 5, 10, 0, <=8] 1 <=2 (0p,1p,2p)
Pat_15 18 Ma [3, 6, 12, 0, *] 0 <=4 (0p,1p,2p,3p)
Pat_16 11 Ma [1, 5, 8, 0, <=8] 1 <=2 (0p,1p,2p,3p)
Pat_17 64 Ma [3, 4, 7, 0, *] 1 * (0p,1p,2p,3p)
Pat_18 29 Fe [0, 0, 1, 0, *] 0 * (0p,1p,3n)
Pat_19 47 Fe [8, 12, 14, 0, <=12] 0 <=1 (2p)
Pat_20 37 Ma [0, 6, 9, 0, <=7] 2 <=4 (0p,1p,2p,3p)
Pat_21 58 Ma [1, 2, 5, 0, <=10] 1 * (0p,3p)
Pat_22 13 Ma [1, 6, 9, 0, <=8] 0 <=4 (0p,1p,2p,3p)
Pat_23 34 Ma [1, 2, 4, 0, <=5] 0 * (0p,1p,2p,3p)
Pat_24 15 Ma [3, 3, 11, 0, *] 0 <=2 (0p,1p,3p)
Pat_25 48 Fe [3, 6, 9, 0, *] 1 <=1 (0p,1p,2p,3p)
Pat_26 77 Ma [0, 0, 2, 1, <=1] 2 <=4 (0p,1p,2p,3p)
Pat_27 83 Ma [2, 4, 6, 0, <=10] 1 <=1 (0p,1p,2p,3p)
Pat_28 62 Fe [1, 4, 7, 0, *] 1 <=1 (0p,1p,2p,3p)
Pat_29 28 Fe [3, 12, 14, 0, <=12] 1 <=1 (0p,1p,3p)
Pat_30 30 Fe [7, 13, 14, 1, *] 2 * (0p,1p,2p,3p)
Pat_31 89 Fe [7, 8, 10, 0, *] 2 * (1p,2p,3p)
Pat_32 65 Ma [8, 9, 14, 1, *] 0 * (1p)
Pat_33 48 Ma [9, 9, 11, 0, <=12] 2 <=1 (0p,1p,2p)
Pat_34 73 Fe [3, 6, 9, 1, <=8] 1 <=2 (0p,2p,3p)
Pat_35 10 Fe [6, 13, 14, 1, <=13] 2 <=4 (0p,3p)
Pat_36 73 Ma [2, 5, 8, 0, *] 0 <=1 (0p,1p,3p)
Pat_37 48 Ma [0, 0, 2, 0, <=5] 0 <=2 (0p,1p,3p)
Pat_38 33 Fe [1, 2, 7, 0, *] 1 <=4 -
Pat_39 56 Ma [10, 11, 13, 0, <=12] 2 <=4 (0p,1p,2p,3n)
Pat_40 21 Ma [2, 8, 13, 0, <=9] 1 <=2 (0p,1p,2p,3p)
Pat_41 89 Ma [2, 5, 9, 1, *] 2 * -
Pat_42 81 Ma [5, 7, 9, 0, <=8] 0 <=4 (0p,2p,3p)
Pat_43 78 Ma [1, 10, 11, 0, *] 0 <=1 -
Pat_44 54 Fe [7, 8, 12, 0, <=9] 1 <=4 (0p,1p,2p)
Pat_45 61 Ma [0, 5, 9, 0, <=10] 0 <=2 (0n,1p,2p,3p)
Pat_46 89 Ma [1, 8, 11, 0, <=9] 2 <=4 (1p,3p)
Pat_47 72 Ma [4, 11, 14, 1, *] 2 <=1 (0p,1p,2p,3p)
Pat_48 67 Ma [5, 7, 14, 1, *] 2 <=4 (0p,1p,2p,3n)
Pat_49 42 Ma [0, 1, 11, 0, <=2] 2 * (0p,1p,3n)

END.
--------------------------------------------------

The lines in the header and the following sections are always provided in the precise order as the example. The data in the various sections must be interpreted as follows:

DEPARTMENTS: <Department ID><Age Constraint><Main Specialisms List><Aux Specialisms List> <Age Constraint>:
  • *: all ages
  • <= 16: up to 16 years (e.g. the pediatric department)
  • >= 65: from 65 years (e.g the geriatric department)
ROOMS: <Room ID><#Beds><Department Index><Gender Policy><Features List> <Gender Policy>:
  • SG: same gender (both genders but on any day the patients in the room must be all of the same gender)
  • Ma: male
  • Fe: female
  • All: both genders
PATIENTS: <PatientID><Age><Gender>[<Registration Date><Planned Admission Date><Planned Discharge Date><Variability><Max Admission Date>]<Treatment><Preferred Capacity Room><Room Property List><Variability>:
  • 1: if there is an overstay risk
  • 0: otherwise
<Max Admission Date>:
  • *: no limitation
  • <= #days: a maximum admission date is fixed
<Treatment>: it corresponds to a specialism
<Preferred Capacity Room>:
  • *: any room
  • <= # beds: a room with a maximum number of beds
<Room Property List>: list of room features preferred (p) or needed(n) by the patient

Output Format

Each solution of a pasu instance is in a single file containing the final patient admission schedule and the list of the values of the cost components. The schedule can be seen as two-dimensional matrix where each row represents a patient and each column corresponds to a day within the planning horizon. An extract of a solutions is shown by the following example:

 Pat_33 (-D-)   -   -   -   -   -   -   -   -   -   -   -   3   3   -  [+2]

Each row has the following fields:
<Patient ID> <Patient Status> <Room Assigned Day 1><Room Assigned Day 2>... <Room Assigned Day n>[<Admission Delay>]
<Patient Status>:
  • D: if the patient was discharged
  • A: if the patient was admitted but not discharged
  • R: if the patient was registered but not already admitted
For each day in the planning horizon, <Room Assigned Day d>:
  • --: if the patient is not present in the hospital in the d day
  • r : if the room r is assigned to the patient in the d day
<Admission Delay>: number of days that the planned admission was delayed