Background

A Dispensable is the atomic thing that is given/dispensed to a patient.  How we describe that Dispensable depends on the thing:


Some examples of Dispensable:


It's important to note that not all Dispensables are actually dispensed to a patient, some may be to help treat a patient (e.g. supplies for tests, syringes, etc).  This still draws a distinction between medical commodities and say equipment (microscopes, cold storage, etc) as the number of patients treatable with a Dispensable is more definitively understood.



Design Diagrams


Basic Structure


Global Product and Trade Item

A part of the design contract of OrderableProduct.canFulfil(OrderableProduct) is that the Dispensable between both OrderableProduct's is the same.  In fulfilling this contract, when a TradeItem is associated to a GlobalProduct, that contract must enforce that the Dispensable between the two is the same.  e.g. if a GlobalProduct Ibuprofen has Dispensable A, and its TradeItem Advil has Dispensable B, then logically A.equals(B) is true.