Healthcare

Problems:

In a hospital, managers responsible for the operating rooms (ORs) make several related planning and scheduling decisions. For elective patients, these decisions can be divided into three hierarchical phases as follows:

  • In the strategic phase, the Case Mix Planning Problem, which can have a planning horizon from several months to several years, involves assigning time in the ORs to surgical specialties.
  • In the tactical phase, the Master Surgical Scheduling Problem, which can have a planning horizon from one week to several weeks, involves assigning surgeons to time blocks in the ORs.
  • In the operational phase, there are two problems.
    • The Elective Surgery Scheduling Problem, which can have a planning horizon from one day to several days, involves assigning patients to time blocks in the ORs.
    • The Elective Surgery Sequencing Problem, which can have a planning horizon of one day, involves assigning orders to patients in each time block.

A decision support system (DSS) can help managers make these decisions.

User Interface:

C# is used for the user interface of the DSS. The user can use this to enter data, generate schedules, generate and perform simulations of schedules, etc.

A three-layer Model-View-Presenter pattern is used:

  • The Model layer is responsible for managing data. Entity Framework 6 is used for object-relational mapping between C# entity classes and a MySQL relational database management system.
  • The View layer is responsible for managing user interactions. Windows Presentation Foundation is used for windows, user controls, etc.
  • The Presenter layer is responsible for managing interactions between the Model and View layers and between the user interface and other modules.

StyleCop is used to enforce both style and consistency rules in the C# code.

Sandcastle Help File Builder is used to automatically generate documentation files from XML comments in the C# code.

Unit Test projects are used for unit testing.

Models:

The DSS is model-based and utilizes both mathematical programming and discrete event simulation models.

For example, one of the models for tactical planning utilizes stochastic goal programming to optimize the performance of both the ORs and the recovery ward.

A modified version of JaamSim is used for the discrete event simulation models. These models can be used for validation, performing experiments, etc.

Algorithms:

The mathematical programs can be solved using either exact or approximate algorithms.

OPTANO Modeling is used for interactions between the DSS and commercial solvers, some of which are open source (e.g., GLPK).

Metaheuristics, such as simulated annealing, are used for larger scheduling instances. These are programmed in C++ and use the Armadillo library. In addition, a different package is used for GPU-based versions of the metaheuristics.

Birattari's F-race approach is used to configure the metaheuristic algorithms.

Supporting Modules:

PdfSharp and MigraDoc are used to generate portable document format (PDF) files.

Interoperability:

The R4 version of the Health Level 7 (HL7) Fast Healthcare Interoperability Resources (FHIR) standard is used in both C# and Java to represent healthcare-related data. Many FHIR resources have mappings to other standards (DICOM, HL7 FiveWs, HL7 v2 messages, HL7 v3 RIM, HL7 v3 CDA, etc.).

nHAPI and HAPI are used in C# and Java, respectively, for HL7 v2 messaging.

R.NET is used for interoperability between the C# user interface and necessary R packages.

Platform Invoke is used to call unmanaged C++ code from the C# user interface.

Protocol Buffers and gRPC are used for interactions between the C# user interface and JaamSim, which is programmed in Java.