2014-01-30 133 views
1

我有一个HL7消息导出。 有一个字段在输入中有一个tild符号(〜)。 HL7正在将它转换为符号“\ R \”在HL7消息中添加'〜'符号

我也尝试使用VBScript为'〜'字符使用ASCII值(126)导出此值,因为我是。 但是,这也被HL7转换为“\ R \”

如何获取'〜'导出? 任何帮助,将不胜感激。

回答

1

尝试用~~(十进制)替换波浪号字符。 查看unicode reference这个角色。

如果您已经这样做了,这不是错误的根源。我怀疑HL7赋予这个角色特殊的含义。根据this webpage它表示一个“场重复分离器”。

5

传送消息时,HL7将重复字符“〜”转义为“\ R \”。在使用该字段时,接收器应该变回到您的代字号。
但还有第二种方法来处理这个问题。 HL7允许更改编码字符。不幸的是,并非所有的HL7引擎都支持这一点

+0

是的,我认为这些变化是在HL7汇总或在配置某处进行。 –

4

该字符(〜)表示该字段可以有多个值。 从一个给定的消息HL7

12345^^^XYZ~6789^^^PQR

它意味着什么的是,所述患者具有2个患者ID不同来源即未来考虑此PID.3字段。 XYZ和PQR。这是(〜)字符在功能上的含义。

如果我去的声明在问题体,我相信你想达到的(〜)的功能。

要做到这一点,请尝试以下过程。我不知道VBScript,所以我不能给你代码,但是我有一些相同的Javascript代码,我想你可以在VBScript上模仿它。我会把这个任务交给你。

//Calculates number of current repetitions by counting the length 
var pidfieldlen=msg.PID['PID.3'].length(); 

//Store the last field node 
var lastpidnode=msg['PID']['PID.3'][pidfieldlen-1]; //If length is 5,node index is 4 

//Create new pid field and append with last pid node 
var newpidfield=<PID.3/>      //Creating new separate element for PID.3 
newpidfield['PID.3.1']="567832"    //Adding Field Values 
newpidfield['PID.3.4']="NEW SOURCE" 
lastpidnode.appendChild(newpidfield)   //Adding above created to the last node 

这将改变PID.3到

12345^^^XYZ~6789^^^PQR~567832^^^NEW SOURCE

+0

在这种情况下,重复字符的编码是错误的。它将失去它的含义,因为它实际上意味着重复。你只编码它,如果它不意味着重复。例如在OBX的值域中 – sqlab

+0

我没有跟着你,更准确地回答你! – Sid

+1

好的,再次。 问题是如何找回字段内容中的波浪号,该字段已由HL7更改为“\ R \”。 您展示了如何在重复字段中获得波浪号。这个答案在任何方面都没有帮助。 – sqlab