ГОСТР ИCO/HL7 27931-2015
Разделитель
Рекомендуе-
мое значение
Позиция ко
дирующего
символа
Назначение
он должен присутствовать
2.5 Правила составления сообщений
П рим ечание - Приведенные ниже правила составления сообщений образуют правила кодиро
вания сообщений стандарта HL7 в форме строк переменной длины с разделителями. Хотя начиная с вер
сии 2.3 стандарта HL7 определен только один свод правил кодирования, тем не менее допускаются и дру
гие своды правил (не будучи включенными в стандарт, они могут использоваться только на основе местных
соглашений).
2.5.1 Правила для отправителя
2.5.1.1 Псевдокод составления сообщения
процедура ПередатьСообщение (данные) {
иде нтифицир овать_необходимое_сооб щение;
про верить_правильность{ данные );
упорядочить_сегменты( данные, список_сегментов );
для_каждого сегмент в (список_сегментов ) {
передать сегмент.имя; /* например., MSH */
/* сформировать все данные для полей */
для_каждого поле в ( п оля( сегмент ) ) {
передать разделитель_поля; /* например, | */
/* сформировать экземпляры (может исполняться неоднократно только для
полей, которые могут повторяться) */
для_каждого экземпляр в ( экземпляры( поля ) ) {
ПередатьЭкземпляр( экземпляр );
если не последний ( сформированный экземпляр ) передать
разделительно втора; /* например, ~ */
)
прервать если последний ( сформированное поле );
терминатор_сегмента; /* всегда возврат каретки <сг> */
I
передать
}
завершить;
}
процедура ПередатЭкземпляр( экземпляр){
/* сформировать заполненные компоненты */
для_каждого компонент в ( компоненты ( экземпляр ) ) {
взять_данные_субкомпонента ( компонент );
/* сформировать все данные субкомпонентов */
для_каждого субкомпонент в ( субкомпоненты( компонент ) ) {
/* заменить разделитель поля на управляющую последовательность
символов */
заменить( разделитель_поля, \F \ );
/* заменить символы кодирования на управляющие последовательности */
заменить( разделитель_компонентов, \S \ );
заменить(разделитель_повтора, \R \ );
заменить( уп1завляющий_символ, \Е \ );
заменить ( разделит ель_субкомпонентов,
\т \
);
передать субкомпонент;
если не последний ( переданный субкомпонент) передать
разделитель_субкомпонентов; /* например,
& * /
62