ГОСТ Р HCO/HL7 27951— 2016
В.2.33.3 Свойство equal: BL (унаследовано от типа данных ANY)
Два значения типа МО равны, если совпадают значения их атрибутов value и currency.
■invariant(МОх, у)
where x.nonKull.and(y.nonNull) (
х.equal(у).equal(х.value.equal(у.value)
.and(x.unit.equal(y.umt))};
11
B.2.33.4 Свойство compares: BL (унаследовано от типа данных OTY)
Два значения типа МО сравнимы (упорядочены и имеют разность), если равны их свойства currency.
Если их свойства currency не идентичны, то нельзя сравнивать значения их свойств values. Конверсия валют не
входи г в область применения настоящей спецификации. На практике обменные курсы валют чрезвычайно изменчивы не
только в течениедлительных и кратких периодов времени, но даже зависят от места идоступности обменных пунктов.
invariant(МО х, у)
where x.nonKull.and(y.nonKull) (
х.compares.equal(x.currency.equal(y.currency)I;
1;
B.2.33.5 Тип данных diffType: TYPE (унаследован от типа данных QTY)
invariant (IKT x)
\
x.raifГТуре. implies(MO|;
i ;
Разность между двумя значениями типа МО имеет тип данных МО.
В.2.33.6 Свойство plus: МО
Определение: два значения типа МО можно сложить, если у них равны значения свойство сипепсу.
invariant (МО х, у|
where х.currency.equal
(у .
currency) (
x.plus
(у )
.currency.equal(х.currency);
x.plus(y>.value.equal(x.value.plus(y.value));
I ;
B.2.33.7 С
войство
times: МО (умножение на значение типа REAL)
Определение: при умножении на значение типа REAL образуется масштабированная сумма. Она сравнима
с исходной суммой.
invariant (МО х; REAL г)
where x.nonKull.and(г.nonNull) t
x.times(r).value.equal(x.value.times(r));
x.times(r).currency.equal(x.currency);
I;
B.2.33.8 Литеральная форма
Литеральная форма типа данных МО состоит из кода валюты, необязательного пробельного символа и ли
терала значения REAL, представляющего величину суммы.
Например, строка «USD189.95» является литералом суммы 189.95 долларов США.
МО.literal ST (
МО
: сиггепсу value( 5-currency.equal(31); )
$.value.equal($2
) ;
CS currency
:
STt $.currency.value.equal($1);
§.currency.codeSystem
.equal(2.16.840.1.111863.6.9); I
REAL value : REAL( S.value.equal($1); I
i ;
375