将ASCII 10(0A)字符放在HL7消息段内的某处以表示新行字符。这有效吗?
从我所看到的建议使用\ X0D \或\ X0D0A \来表示纯文本格式HL7的新行字符。只使用0A ASCII字符明确无效的HL7?
答案 0 :(得分:2)
要回答“仅使用0A ASCII字符明确无效HL7?”的问题:
在HL7规范中任何地方提到的字符0A
都不是 是特殊的。
从HL7 2.5美国规格摘录:
2.5.4邮件分隔符
在构造消息时,使用某些特殊字符。它们是段终止符,即字段 分隔符,组件分隔符,子组件分隔符,重复分隔符和转义字符。该 段终止符始终是回车符(ASCII,十六进制0D)。其他分隔符在中定义 MSH段,字段分隔符位于第4个字符位置,其他分隔符出现在 称为编码字符的字段,它是段ID之后的第一个字段。使用的分隔符值 在MSH段中是整个消息中使用的分隔符值。在没有其他 考虑因素,HL7建议使用图2-1定界符值中的建议值。
严格地说,这意味着您可以像使用前面提到的6个字符一样使用字符0A
。
<“正式”回复结束>
话虽如此,我同意Dale H.你最好不要在HL7消息的内容中使用这个字符。由于大多数编辑器(Windows上的老式记事本除外)都会将此字符显示为新行,因此您可能会不情愿地认为某个段被截断或格式错误。我至少有一个实例,其中接口引擎确实将该字符作为段终止处理(它本身是无效的,并且接口引擎构建被修改为不再执行此操作)。
所以最好避免这种情况。但是在你不控制输出的情况下,它似乎不是一个正式不允许的角色......
答案 1 :(得分:1)
HL7消息中不允许换行(0x0A)。如果使用记事本,wordpad和许多其他文本编辑器编辑消息,它们会将回车符(0x0D)转换为CR / LF(0x0D 0x0A),如果保存,则现在有一个损坏的HL7消息。避免使用LF(0x0A)。
答案 2 :(得分:1)
如果您只发送0A
,则无法确定您是否需要ASCII 10 /换行符,并且假设您想要零和A。
标准HL7,转义字符为\
,然后建议的方式是\X0A\
。 \X
表示十六进制数据的开头,后跟两个字符的十六进制值,以\
结尾。
话虽这么说,如果您要将这些数据发送到系统,那么他们应该能够告诉您他们接受换行的内容。我见过使用\.br\
或重复字符~
来确定新行的系统。有时他们想要重复细分。例如,下面的每个OBX段都是系统中报告的新行。
OBX|1|TX|||This is line one
OBX|2|TX|||This is line two