ГОСТ Р HCO/HL7 27951—2016
В.1.9.5.1 Параметризованные коллекции
В настоящей спецификации активно используются параметризованные типы данных для коллекций. Среди
них наиболее важными являются:
Set (SET<T>) — множество, содержащее не упорядоченные и не повторяющиеся элементы.
Sequence (LIST<T>) — последовательность, представляющая собой коллекцию значений, имеющих про
извольный. но конкретный порядок. У последовательности есть голова и хвост, где головой является элемент, а
хвостом — последовательность без своей головы.
Interval (IVL<T>) — интервал, представляющий собой непрерывное подмножество упорядоченного типа
данных.
Эти и другие параметризованные типы данных полностью описаны в В. 1.9.5 «Параметризованные типы
данных». Эти параметризованные типы данных и их свойства используются в данной спецификации, начиная с
ранних разделов. Для лучшего понимания настоящей спецификации необходимо иметь определенные знания о
множестве, последовательности и интервале; когда речь пойдет об использовании параметризованного типа для
определениядругого типаданных, рекомендуется обратиться к пункту В.1.9.5 «Параметризованные типыданных».
В. 1.9.5.2 Расширения параметризованного типа данных
Расширения параметризованного типа данных являются параметризованными типами данных с одним ти
пом параметра, специализируемым параметризованным типом. На формальном языке определения типов данных
для специализации параметризованного типа используется следующий шаблон:
tempiate<ANY Т> type Genet:n-TypeExtensionName specializes T {
) ;
Такие расширения параметризованного типа наследуют свойства от своего базового типа и добавляют к ним
некоторые специфические особенности. Поскольку расширение параметризованного типа является специализа
цией базового типа, то значение, имеющее расширенный тип данных, может быть использовано вместо значения,
имеющего базовый тип данных1).
П р и м е ч а н и е — Значения, имеющие расширенный тип. могут быть заменены значениями, имеющими
его базовый тип. Однако спецификация реализуемой технологии может наложить некоторые ограничения на то.
какие расширения она допускает. В частности, расширения не должны определяться для тех компонентов, в кото
рых содержатся значения свойств значения данных. Таким образом, для любого типа данных может быть ухазана
аннотация вне спецификации типа данных, но спецификация реализуемой технологии может не обеспечивать воз
можность указания аннотации значения свойства значения данных.
ВН
•ММЮ BN{N0*0}
BL
♦and(BLx):BL
*n o t():
BL
»or(BL
x )
.BL
♦xor(BL x ): BL
•Hmp»e9(BLx) BL
A N Y
-<JataType() DataType
HionNuK) BN
•MiVkvorO CS
*ttNuK)
BN
*notApplcabte<): BL{nulFlavcf.mples(nulFlavor.NA)}
♦onknownO BL
V «ofterO BL
♦equaKAKY x>: BL
«metaclass»
DataType
♦shortNameO CS
*tongName(): CS
•tmptest) BN
Рисунок B.2 — Фундаментальные типы данных
В.1.10 Соответствие
Если приложение получает или разбирает экземпляр, который не является допустимым по отношению к на
стоящей спецификации, то получателю разрешается отклонить этот экземпляр таким способом, который он сочтет
наиболее приемлемым, однако это не является обязательным. Следует обратить внимание, что некоторые другие
стандарты HL7 или такие артефакты, как объявление соответствия, могут накладывать дополнительные ограниче
ния на поведение получателя в таких случаях.
11 Расширения параметризованного типа данных иногда называют «смесями» (mixins), поскольку их эффект
состоит в примешивании некоторых свойств к уже определенному типу данных.
298