ГОСТ Р HCO/HL7 27951— 2016
Согласно настоящей спецификации, литералы календарных выражений григорианского календаря, исполь
зуемого по умолчанию, соответствуют ограничению ИСО 8601, определенному в разделе 32 (всемирное время)
ИСО 8824 (ASN.1) и в описании типа данных TS. приведенному в стандарте HL7 Версии 2.
Литеральные выражения являются последовательностями целых чисел, упорядоченных в соответствии с
графой «Порядок» таблицы В.36. Периоды с меньшими порядковыми номерами записываются слева от периодов с
большими порядковыми номерами. Периоды, которым порядковые номера не присвоены, не должны вхлючаться в
календарное выражение типа данных TS.
В графе «Цифры» таблицы В.36 указано точное число цифр в числе, задающем конкретный период.
Таким образом, в соответствии с таблицей В.36 календарные выражения западного календаря начинаются
с четырех цифр года (отсчет начинается с нуля), за которыми следуют две цифры месяца (отсчет начинается
с 1). за ними две цифры дня месяца (начиная с 1). две цифры часа дня (начиная с нуля) и т. д. Например, строка
«200004010315» является допустимым выражением для 3 ч 15 м 1апреля 2000 г.
Опуская правые компоненты, можно получить календарные выражения разной точности.
Например, строка «20000401» является календарным выражением с точностью только до дня месяца.
Наименьший определенный период календаря (например, секунда) может быть записан как число типа
REAL, в котором указаны цифры целой части секунд, за ними десятичная точка и любое число цифр дробной
части.
Например, строка «20000401031520.34» означает 20.34 с 3 ч 15 м 1 апреля 2000 г.
Если когда-нибудь будут использоваться другие календари, то перед западным (григорианским) календар
ным выражением может быть указан префикс «GREG:», отличающий его от других календарей. Каждый календарь
должен иметь собственный префикс. Но если префикс не указан, то по умолчанию используется западный
кален дарь.
В современном григорианском календаре (и во всех календарях, у которых время дня основано на Всемир
ном координируемом времени UTC) календарное выражение может содержать суффикс часовой зоны. Он на
чинается со знака плюса (+) или минуса (-). за которым указаны цифры циклов часов и минут. Часовая зона
UTC обозначается как смешение «+00» от «-00»; суффикс «Z», предложенный для этой зоны в стандартах ИСО
8601 и ИСО 8824. не разрешен.
TS.literal ST (
TS : cal timestamp(51)
I timestamp(GREG)
1 cycles(C.heaa, C.epoch)
Calenasr cal
PQ zone(Caleriaar C)
: "■*" cycles(C.2onehead, C.epoch)
I «-*’ cycles(C.zoneheaa, C.epoch)
( 5.equal(52); i
( 5.equal(51); t;
TS timestamp(Calendar C>
: cycles(C.heaa, C.epoch) zone(C)( 3.equal(51.minus(32)); l
5.Итегопе.equal(52); J
(
5 .
equal
(51)
;
5.timezone.unknown; i;
: /[a-zA-Z_)[a-2A-Z0-9_l*:/
( 5.equal (5 D ; t;
TS cycles(CalendarCycle c, TS t)
: eycle(c, t) cycles(c.next, 31)( 5.equal(52); )
I cycle(c, t)REAL.tractlonal( 5.equal(c.sum(51, S3));
5.precision.equal(
t.precision.plus(S3.precision)),- i
I cycle(c, t)( 5.equal(SI); 1;
TS cycle(CaleriaarCycle c, TS t)
: /[0-9)(c.ndigitsl/( 5.equal(c.sum(t, 51));
5.precision.equal(
t.precision.pius(c.ndigits)); i;
( 5.equal(52.minus(C.
epoch)
)
;
1
( 5.equal(C.
epoch.
minus(52)); );
381