从文件中读取HL7数据并将其插入表SQL Server

时间:2015-12-16 00:57:25

标签: sql-server mirth

有人可以帮助我使用 MIRTHCONNECT 将HL7数据捕获到SQL服务器中。我正在搜索一些示例,但我找不到任何演示循环遍历多个段的教程。我能够通过阅读教程将记录插入到数据库中,但我仍然坚持做循环过程。

有人可以请我分享一些链接或给我一些想法,以便我可以通过这些。

这是我最初考虑循环遍历每个段,因为我假设Mirth connect逐行读取文件。

感谢您的帮助

LOGIC - (我不确定这是否是正确的做法)

for each (seg in RAWFILE) {
    if (seg.name().toString() == "MSH") {
       insert into table values ();
    }
   if (seg.name().toString() == "PID") {
       INSERT INTO TABLE2 VALUES ();
    }
}

样本RAW数据

MSH|^~&|LAB|CCF|||20040920080937||ORM^O01|42640000 009|P|2.3|
PID|||56797971||RESULTSREVIEW^TESTPATIENT^||196505 25|M||||||||||56797971|
PV1||O|UNKO^|||||
ORC|RE||A0203809||IP|||||||
OBR|1|A0203809|A0203809|400090^Complete Blood Count|||200609240000|||||||200609240847||deleted^^ ^^MD^^^^^^||||||200609241055|||P
OBX|1|ST|40010^White Blood Count (WBC) (x1000)||PENDING||||||P
OBX|2|ST|40020^Red Blood Count (RBC)||PENDING||||||P
ORC|RE||A0203809||CM|||||||
OBR|2|A0203809|A0203809|650300^Depakene (Valproic Acid) Level|||200609240000|||||||200609240847||^deleted^ ^^^MD^^^^^^||||||200609241055|||F
OBX|3|NM|65030^Depakene (Valproic Acid) Level||76.8|ug/ml|50-100||||F|||200609241054||

2 个答案:

答案 0 :(得分:2)

听起来你已经有了db插入工作,而且你对如何处理重复段感到疑问。这是我用于处理重复段的一些代码。当然,你的milage可能会有所不同,但这应该可以达到你想要的效果。

var segCount = 0;

// Loop through message and count number of OBX segments
for each (segment in msg.children()) {
  if(segment.name() === 'OBX') {
    segCount++;
  }
}

// Make changes if there are OBX segments
if (segCount > 0) {
  for (var i = 0; i < segCount; i++) {
    tmp=msg;

    // Add this segment to the database
   insert into table values ();        

    // Here I am changing each OBX-5.1 to contain normal if OBX-3.1 is 'Some Text'
    if (msg['OBX'][i]['OBX.3']['OBX.3.1'].toString() === 'Some text') {
       tmp['OBX']['OBX.5']['OBX.5.1'] = 'Normal';
    }
  }
}

答案 1 :(得分:1)

您想从HL7文件中提取信息并插入到数据库中,而不管其类型如何。 因此,创建一个入站消息类型为HL7的通道,无论您是从文件中获取HL7消息还是打开TCP / IP连接。

转到源代码,转到变换器,创建JS转换器,在入站模板中提供HL7消息,现在从消息中提取信息并将其存储在变量中。像下面的东西。

var firstname=msg[PID][PID.5][PID.5.2].toString();

一个有用的提示是从入站消息模板中拖放元素并存储在变量中。

现在,在通道Map中移动此变量,以便我们可以在目标中捕获它。

channelMap.put('first_name',firstname);

现在第二部分, 转到同一通道的目标并创建一个将信息写入数据库的DB编写器。

不要选择使用Javascript,而只需编写INSERT查询,如下所示。

INSERT INTO PATIENT(first_name) VALUES (channelMap.get('first_name');

Mirth提供了大量文档来帮助您使用DB编写器。

希望这有帮助!