Background
We need a way for concepts to be classified into different types of orderables (e.g., some will be drugs, some will be tests, etc.). We realize that it's unlikely that one classification scheme will satisfy everyone's needs. In addition, we'd like a design that supports the notion of someone being able to come along and add new types of orders through a module. The most straightforward approach would be to use concept classes (similar to how we have already been doing) to classify concepts (via their Concept Class) into the appropriate order type – i.e., drug for drug orders, test for test orders, etc. The downside of this approach is that it requires that we align all implementations one a single classification scheme and does not allow for further granularity of classes (e.g., splitting tests into lab tests, radiology tests, procedures, etc.). So, we're looking for a design with the following requirements.
...