Currently, there are three places in the AOM where Interval<Integer> is used:
It is proposed to replace this with a class MULTIPLICITY_INTERVAL, which is formally defined as inheriting from Interval<Integer>. It has the same data members, but provides a place to define useful functions such as :
- is_open: Boolean
- is_optional: Boolean
- as_string: String -- output in typical UML format, e.g. "0..1"
as well as various constructors that make sense for multiplicity intervals. It also ensures the lower_limit cannot be less than 0.
The other advantage is for formalisms like XML, the class MULTIPLICITY_INTERVAL can replace the pseudo type IntervalOfInteger in the BaseTypes.xsd (http://www.openehr.org/releases/1.0.2/its/XML-schema/documentation/BaseTypes.xsd.html#h1337655869).