2015-12-16 162 views
1

有人可以帮助我使用MIRTHCONNECT捕获HL7数据到SQL服务器。我正在寻找一些例子,我无法找到任何教程来演示循环多个段。通过阅读教程,我能够将记录插入到数据库中,但仍然陷入循环过程。从文件读取HL7数据并将其插入表SQL Server

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

这是我最初的想法,循环通过每个段,因为我假设欢乐连接逐行读取文件。

感谢您的帮助

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|| 
+0

每个H17细分将分开行。所以你可以一行一行地分割段,并通过使用'|'分割段来解析属性。 – mindbdev

回答

2

听起来就像你有db插入工作,你有问题如何处理重复段。以下是我用于处理重复片断的一些代码。当然你的米劳可能会有所不同,但这应该完成你想要的。

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'; 
    } 
    } 
} 
+0

感谢您的帮助 –

0

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

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

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

一个有用的技巧是拖放从变量中的入站消息模板和存储的元素。

现在,在通道地图中移动这个变量,以便我们可以在目的地捕获它。

channelMap.put('first_name',firstname);

现在的第二部分, 转到同一信道的目的地,并创造一个DB笔者,到一个数据库中写入信息。

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

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

有一大堆可以在欢乐文档,以帮助你的DB作家。

希望这会有所帮助!

+0

感谢您的帮助。你可以请我分享几个链接 –

+0

谷歌是你的朋友。和欢乐论坛。 – Sid

相关问题