我们目前从HL7
消息中捕获数据,如下所示,然后将其插入数据库中。这很容易,因为它是来自单个部分的价值
var vACC_NO =checkSize("ACC",msg['PID']['PID.3']['PID.3.1'].toString(),20);
INSERT INTO adt_tab ( SITEID,ACC_NO) VALUES (vSITEID,vACC_NO);
现在我需要捕获DG1
段数据,我们在DG1
消息中有多个HL7
段。并且还需要存储在数据库中
| DG1 | 1 | ICD10 | I22.8^MYOCARDIAL INFARCT^ICD10 | MYOCARDIAL | | | | | | | | | | | |
| INFARCTION | 201702010437 | B | | | | | | | | | 7 | | | | |
| DG1 | 2 | ICD10 | A44.9^ORGANISM^ICD10 | ORGANISM | 20170201 0437 | B | | | | | | | | | 7 |
因此,在我的数据库表格中,我现在有更多列 - SITEID
,ACC_NO
,CODE1
,CODE2
...
从上面的消息中,我需要将I22.8
插入CODE 1
,将A44.9
插入CODE2
,依此类推..
我应该如何首先从邮件中的多个DG1
段中循环捕获这些代码?
然后我应该如何将它存储在数据库中?
谢谢
答案 0 :(得分:0)
你可以像这样迭代片段
for each (dg1 in msg['DG1']){
variable1 = dg1['DG1.3']['DG1.3.1'];
variable2 = dg1['DG1.3']['DG1.3.2'];
// database call with the previus
databaseCall(variable1,variable2, ...
}
对于每个片段,您将进行插入。
除此之外,我不认为通过添加variable1,variable2,variable3来在同一行中创建更多列是个好主意,因为它没有规范化,也不是一个好的数据库设计实践。