Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从文件中读取HL7数据并将其插入SQL Server表中_Sql Server_Mirth - Fatal编程技术网

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

Sql server 从文件中读取HL7数据并将其插入SQL Server表中,sql-server,mirth,Sql Server,Mirth,有人可以帮助我使用MIRTHCONNECT将HL7数据捕获到SQL server中吗。我在搜索一些示例,但找不到任何演示多段循环的教程。通过阅读教程,我能够将记录插入到数据库中,但我仍然被困在循环过程中 请有人给我分享一些链接或给我一些想法,让我可以通过这些 这是我最初循环遍历每个段的想法,因为我假设Mirth connect逐行读取文件 谢谢你的帮助 逻辑(我不确定这是否是正确的方法) 样本原始数据 MSH|^~&|LAB|CCF|||20040920080937||ORM^O01|4

有人可以帮助我使用MIRTHCONNECT将HL7数据捕获到SQL server中吗。我在搜索一些示例,但找不到任何演示多段循环的教程。通过阅读教程,我能够将记录插入到数据库中,但我仍然被困在循环过程中

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

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

谢谢你的帮助

逻辑(我不确定这是否是正确的方法)

样本原始数据

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

您希望从HL7文件中提取信息并插入到DB中,而不考虑类型。 所以,创建一个入站消息类型为HL7的通道,不管您从文件中获取HL7消息还是打开TCP/IP连接

转到source,转到transformer,创建JS transformer,在入站模板中提供HL7消息,现在从消息中提取信息并将其存储在变量中。像下面这样

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

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

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

channelMap.put('first_name',firstname)

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

不要选择使用Javascript,只需编写插入查询,如下所示

插入患者(名字)值(channelMap.get('first_name');

在Mirth上有很多文档可以帮助您使用DB writer


希望这能有所帮助!

听起来您已经完成了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';
    }
  }
}
var segCount=0;
//循环浏览消息并计算OBX段的数量
对于每个(msg.children()中的段){
if(segment.name(){
segCount++;
}
}
//如果存在OBX线段,则进行更改
如果(segCount>0){
对于(变量i=0;i
每个Hl7段将以单独的行出现。因此,您可以逐行分割段,并通过使用“|”分割段来解析属性。谢谢您的帮助。您可以与我共享几个链接吗
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';
    }
  }
}