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.
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.
- 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.