从文件中读取 HL7 数据并将其插入 table SQL 服务器
Reading HL7 data from file and inserting it into the table SQL Server
有人可以帮助我使用 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 ();
}
}
样本原始数据
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 文件中提取信息并插入任何类型的数据库中。
因此,创建一个入站消息类型为 HL7 的通道,无论您是从文件中获取 HL7 消息还是打开 TCP/IP 连接。
转到源代码,转到转换器,创建一个 JS 转换器,在入站模板中提供 HL7 消息,现在从消息中提取信息并将其存储在变量中。如下所示。
var firstname=msg[PID][PID.5][PID.5.2].toString();
一个有用的提示是从入站消息模板中拖放元素并将其存储在变量中。
现在,在通道映射中移动这个变量,以便我们可以在目标中捕获它。
channelMap.put('first_name',firstname);
现在是第二部分,
转到同一通道的目标并创建一个将信息写入数据库的数据库编写器。
不要 select 使用 Javascript,而只需编写您的 INSERT 查询,如下所示。
INSERT INTO PATIENT(first_name) VALUES (channelMap.get('first_name');
Mirth 提供了大量文档来帮助您使用数据库编写器。
希望对您有所帮助!
听起来您的数据库插入工作正常,但您对如何处理重复段有疑问。这是我在欢笑中用于处理重复片段的一些代码。当然,您的里程可能会有所不同,但这应该可以满足您的需求。
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';
}
}
}
有人可以帮助我使用 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 ();
}
}
样本原始数据
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 文件中提取信息并插入任何类型的数据库中。 因此,创建一个入站消息类型为 HL7 的通道,无论您是从文件中获取 HL7 消息还是打开 TCP/IP 连接。
转到源代码,转到转换器,创建一个 JS 转换器,在入站模板中提供 HL7 消息,现在从消息中提取信息并将其存储在变量中。如下所示。
var firstname=msg[PID][PID.5][PID.5.2].toString();
一个有用的提示是从入站消息模板中拖放元素并将其存储在变量中。
现在,在通道映射中移动这个变量,以便我们可以在目标中捕获它。
channelMap.put('first_name',firstname);
现在是第二部分, 转到同一通道的目标并创建一个将信息写入数据库的数据库编写器。
不要 select 使用 Javascript,而只需编写您的 INSERT 查询,如下所示。
INSERT INTO PATIENT(first_name) VALUES (channelMap.get('first_name');
Mirth 提供了大量文档来帮助您使用数据库编写器。
希望对您有所帮助!
听起来您的数据库插入工作正常,但您对如何处理重复段有疑问。这是我在欢笑中用于处理重复片段的一些代码。当然,您的里程可能会有所不同,但这应该可以满足您的需求。
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';
}
}
}