How to use Escape character in hl7 message

霸气de小男生 提交于 2019-12-12 11:34:56

问题


I am using ca.uhn.hl7v2.util.Terser to create hl7 message. For one of the hl7 fields I need to set the following value "\home\one\two".

HL7 message type is MDM_T02(version is 2.3.1). Because "\" is an escape character in hl7 messages if I try to use

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

In the hl7 messge OBX-5-1 is printed as "\E\E\usne-server\E\Pathology\E\Quantum".

Can someone help me to print the proper message.


回答1:


You may refer description of HL7 Escape Sequences here or here.

HL7 defines character sequences to represent ’special’ characters not otherwise permitted in HL7 messages. These sequences begin and end with the message’s Escape character (usually ‘\’), and contain an identifying character, followed by 0 or more characters. The most common use of HL7 HL7 is a Standards Developing Organization accredited by the American National Standards Institute (ANSI) to author consensus-based standards representing a board view from healthcare system stakeholders. HL7 has compiled a collection of message form... More escape sequences is to escape the HL7 defined delimiter characters.

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

If \ is part of your data, you need to escape it with \E\.

So your value:

"\home\one\two"

becomes

"\E\home\E\one\E\two"

About second issue:

In the hl7 messge OBX-5-1 is printed as "\E\E\usne-server\E\Pathology\E\Quantum"

While reading the value, you have to reverse the process. That means, you should replace \E\ with \ back to get original value.




回答2:


As @Amit Joshi mentioned, this has to do with HL7 escaping. You may want to try to change your escape character to one other than a backslash that is unlikely to appear in your message as your client appears to not be following it anyway.

This would be the 3rd character in MSH-2.



来源:https://stackoverflow.com/questions/53387126/how-to-use-escape-character-in-hl7-message

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!