Как использовать Escape-символ в сообщении hl7 - PullRequest
0 голосов
/ 20 ноября 2018

Я использую ca.uhn.hl7v2.util.Terser для создания сообщения hl7.Для одного из полей hl7 мне нужно установить следующее значение "\ home \ one \ two".

Тип сообщения HL7 - MDM_T02 (версия 2.3.1).Поскольку "\" является escape-символом в сообщениях hl7, если я пытаюсь использовать

public void methodOne() {
   MDM_T02 mdmt02  = new MDM_T02();
   Terser terser = new Terser(mdmt02);
   terser.set("OBX-5-1", "\\\\usne-server\\Pathology\\Quantum"); 
}

В сообщении hl7 OBX-5-1 печатается как "\ E \ E \ usne-server \ E \ Pathology\ E \ Quantum ".

Может кто-нибудь помочь мне напечатать правильное сообщение.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Как упоминалось @ Амит Джоши , это связано с выходом HL7.Возможно, вы захотите попытаться изменить свой escape-символ на другой, отличающийся от обратной косой черты, которая вряд ли появится в вашем сообщении, поскольку ваш клиент все равно не следует за ним.

Это будет третий символ в MSH-2.

0 голосов
/ 20 ноября 2018

Вы можете сослаться на описание HL7 Escape Sequence здесь или здесь .

HL7 определяет последовательности символов для представления «специальных» символов, не разрешенных в сообщениях HL7. Эти последовательности начинаются и заканчиваются символом Escape сообщения (обычно ‘\’) и содержат идентифицирующий символ, за которым следуют 0 или более символов. Наиболее распространенное использование HL7 HL7 является организацией по разработке стандартов, аккредитованной Американским национальным институтом стандартов (ANSI) для разработки основанных на консенсусе стандартов, представляющих точку зрения совета директоров заинтересованных сторон системы здравоохранения. HL7 собрал коллекцию форм сообщения ... Подробнее escape-последовательности - это экранирование определенных HL7 символов-разделителей.

Character   Description Conversion
\Cxxyy\     Single-byte character set escape sequence with two hexadecimal values not converted
\E\         Escape character converted to escape character (e.g., ‘\’)
\F\         Field separator converted to field separator character (e.g., ‘|’)
\H\         Start highlighting not converted
\Mxxyyzz\   Multi-byte character set escape sequence with two or three hexadecimal values (zz is optional) not converted
\N\         Normal text (end highlighting) not converted
\R\         Repetition separator converted to repetition separator character (e.g., ‘~’)
\S\         Component separator converted to component separator character (e.g., ‘^’)
\T\         Subcomponent separator converted to subcomponent separator character (e.g., ‘&’)
\Xdd…\      Hexadecimal data (dd must be hexadecimal characters) converted to the characters identified by each pair of digits
\Zdd…\      Locally defined escape sequence not converted

Если \ является частью ваших данных, вам нужно экранировать их с помощью \E\.

Итак, ваша ценность:

"\ главная \ один \ два"

становится

"\ E \ главная \ E \ один \ Е \ два"

О втором номере:

В сообщении hl7 OBX-5-1 печатается как "\ E \ E \ usne-server \ E \ Pathology \ E \ Quantum"

При считывании значения вам нужно обратить процесс вспять. Это означает, что вы должны заменить \E\ на \ назад, чтобы получить исходное значение.

...