似乎无法将段移动到重复字段中

时间:2014-09-17 12:23:50

标签: javascript hl7 mirth

我有一段代码,我正试图在界面上工作。基本上我们采取一些领域并进入其他领域。问题似乎是它将数据留在原来的位置而不是将其移动到索引的PID段。此外,CP变量由于某种原因返回'undefined'。

var i = msg['PID']['PID.13'].length(); 
var homeNum;
var netNum;
var cpNum;

while(i--)
{
if (msg['PID']['PID.13'][i]['PID.13.2'].toString() == "PRN")
{
    homeNum = msg['PID']['PID.13'][i]['PID.13.9'];
}

if (msg['PID']['PID.13'][i]['PID.13.2'].toString() == "NET")
{
    netNum = msg['PID']['PID.13'][i]['PID.13.4'];
}

if (msg['PID']['PID.13'][i]['PID.13.2'].toString() == "CP")
{
    cpNum = msg['PID']['PID.13'][i]['PID.13.9'];
}

msg['PID']['PID.13'][i] = "";
}

msg['PID']['PID.13'][0]['PID.13.1'] = homeNum;
msg['PID']['PID.13'][0]['PID.13.4'] = netNum;
msg['PID']['PID.13'][1]['PID.13.1'] = cpNum;

示例HL7 msg我在转换之前使用(来自我们的测试系统,不是实时数据)

它应该类似于:

| 9999999999 ^^^ test@test.com~99999999999~~~ |

关于它为什么不移动的任何想法/指示?

1 个答案:

答案 0 :(得分:3)

设置变量时缺少toString()。 一个典型的Mirth事物,因为你将E4X对象放回变量而不是你期望的值。

除此之外,在将结构设置为新结构之前,应检查未定义值的变量,否则最终会在字段中显示“未定义”。

这是一个有效的解决方案:

var i = msg['PID']['PID.13'].length(); 
var homeNum;
var netNum;
var cpNum;

while(i--)
{
	if (msg['PID']['PID.13'][i]['PID.13.2'].toString() == "PRN")
	{
	    homeNum = msg['PID']['PID.13'][i]['PID.13.9'].toString();
	}

	if (msg['PID']['PID.13'][i]['PID.13.2'].toString() == "NET")
	{
	    netNum = msg['PID']['PID.13'][i]['PID.13.4'].toString();
	}

	if (msg['PID']['PID.13'][i]['PID.13.2'].toString() == "CP")
	{
	    cpNum = msg['PID']['PID.13'][i]['PID.13.9'].toString();
	}

	msg['PID']['PID.13'][i] = "";
}

if(homeNum != null) msg['PID']['PID.13'][0]['PID.13.1'] = homeNum;
if(netNum != null) msg['PID']['PID.13'][0]['PID.13.4'] = netNum;
if(cpNum != null) msg['PID']['PID.13'][1]['PID.13.1'] = cpNum;