Improved State Machinery (Design Page)

Background

Programs and Workflows were added to OpenMRS in order to allow patients to be moved in & out of states within "programs", supporting treatment programs, studies, etc.  While the very basics of support for enrolling & removing patients from programs and defining workflows within those programs was created, we specifically avoided fully designing a state machine, because we did not believe that implementations would be willing/able to go through the detailed process of defining all the valid transitions between states.

Goal

The goal of this project would be to enhance the workflows within OpenMRS to support a more robust state machine – i.e., defining starting states, final states, valid transitions, etc.

Requirements

  • The user interface should guide users through defining transitions in a maner that doesn't confuse novices.
  • The system must support workflows without fully defined transitions (as it is now), so implementations are not forced to define all transitions before they can use workflows.