如何从重复的HL7分段中捕获和存储数据?

时间:2018-02-09 08:08:52

标签: hl7 mirth

我们目前从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 |

因此,在我的数据库表格中,我现在有更多列 - SITEIDACC_NOCODE1CODE2 ... 从上面的消息中,我需要将I22.8插入CODE 1,将A44.9插入CODE2,依此类推..

我应该如何首先从邮件中的多个DG1段中循环捕获这些代码? 然后我应该如何将它存储在数据库中?

谢谢

1 个答案:

答案 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来在同一行中创建更多列是个好主意,因为它没有规范化,也不是一个好的数据库设计实践。