数据库通信点的使用情景使用SQL Server将患者信息插入到多个表中
这种情况涉及采取HL7消息并将消息中的一些信息存储到SQL数据库中。 具体来说,将患者标识符,姓名,地址,最近的亲属和最近的亲属的地址插入到适当的数据库表中。 情景处理患者可能具有多个地址的情况,或多个指定的人员作为其最近的亲属。另外,每个近亲都可以有多个地址。 患者信息可以在HL7 PID段中找到,近亲信息可以在NK1段中找到。 这种情况适用于SQL Server,但可以针对Oracle进行微小更改。 此方案的SQL Server和Oracle版本都可以从样本菜单中的样本加载到Rhapsody数据库配置编辑器中。 由于有四组数据和四个表要插入,需要四个语句。 由于所有表都需要直接或间接的患者标识符(NextOfKinAddress表需要来自NextOfKin表的值,而NextOfKinAddress表又需要PatientID,因此首先必须先插入到患者表中,并检索标识符。 由于要求是插入所有患者地址,所有近亲和所有近亲的地址,需要一些语句迭代来循环消息中的重复元素。为了获取所有近亲的地址,近亲地址需要两个级别的迭代。 这给出了如下的配置大纲: •语句1:将患者姓名信息插入到患者表中,并检索数据库生成的新标识,以便在后续语句中使用。 •语句2:遍历患者所有的地址,并将每个地址插入到地址表中。 •语句3:遍历患者所有的近亲,并将每个亲属插入到NextOfKin表中。 •语句4:这是语句3的子语句,对每个亲属地址进行迭代。这些都被插入到NextOfKinAddress表中。 插入到患者表中 从Rhapsody数据库配置编辑器中的开始新配置,并将新的语句拖到编辑器上,如下图所示。
双击该语句或单击编辑语句图标编辑语句。 通过单击对话框顶部的重命名链接将语句重命名为插入病人。 通过从服务器资源管理器中选择患者表生成一个INSERT语句,并选择生成一个SQL语句,如下图所示:
生成的SQL INSERT语句如下:
这将生成SQL语句的概要,但需要进行一些修改,以使用来自输入消息的值。通过删除PatientID列(因为这是由SQLServer自动生成的)来修改语句,并从消息结构工具箱中的ADTA01消息中从PID段中拖动适当的字段。
将PID / PatientName /FamilyName,PID / PatientName / GivenName,PID / PatientName / Prefix和PID / Sex字段拖放到文本编辑器上,替换自动生成的相应消息属性。 SQL应该如下所示:
现在,需要从数据库检索自动生成的标识符,以便可以在后续查询中使用。 这是通过从SQL Server检索特殊的@@ IDENTITY值,并将其称为PatientID来完成的。 后续查询可以引用它,就好像它是从普通查询返回的列。
最后输入一个简短的摘要,以便稍后参考。 这对配置如何工作没有影响,但是稍后参考配置更简单,并记住它的工作原理。 插入到地址表中 在“概述编辑器”中,通过将其拖放到“插入病人”(InsertPatient)语句下方来创建新语句。 由于所有地址都需要插入,所以这个语句需要遍历消息中的所有地址。 单击StatementIteration图标,如下所示选择迭代路径。
这将显示字段路径选择器对话框。 浏览到ADTA01消息,并选择PID / PatientAddress重复字段,然后单击确定按钮。 如下图所示:
打开新语句,将其重命名为Insert PatientAddress,然后生成一个INSERT语句,从ServerExplorer中选择Address表,然后按Generate按钮。其结果如下所示:
通过删除对AddressID的引用(由数据库自动生成)来修改SQL,将要插入PatientId列的值更改为@PatientID以使用上一个语句生成的标识符,然后更新所有剩余的值 到PID /PatientAddress组合中的适当值。 这些可以从消息结构工具箱拖入文本编辑器。 最终SQL应该如下所示:
最后,给语句一个摘要来描述它的行为,并关闭SQL编辑器。 插入到NextOfKin表中在概览编辑器中,通过将其拖放到“插入病人地址”语句下方来创建新语句。随着所有近亲需要插入,这个语句需要迭代消息中的所有近亲。 单击Statement Iteration图标,然后在ADTA01消息中选择重复的NK1段。 单击确定按钮关闭对话框。 其结果如下图所示:
打开新语句,将其重命名为Insert Next OfKin,然后通过在“服务器资源管理器”中选择“NextOfKin”表,然后单击“生成SQL”按钮,生成一个INSERT语句。 其结果如下图所示:
通过删除对NextOfKinID(由数据库自动生成)的引用来修改SQL,并将要插入到PatientId列中的值更改为@PatientID以使用第一个语句生成的标识符。 然后将所有剩余的值更新为NK1段(NK1 / NextOfKinName / FamilyName,NK1 /NextOfKinName / GivenName,NK1 / Sex,NK1 / Relationship和NK1 / PhoneNumber)中适当的值。其结果如下图所示。
现在,需要从数据库检索自动生成的标识符,以便可以在后续查询中使用。 这是通过从SQL Server检索特殊的@@ IDENTITY值并调用NextOfKinID来完成的。 后续查询可以引用它,就好像它是从普通查询返回的列。
最后,给语句一个摘要来描述它的行为,并关闭SQL编辑器。 插入到NextOfKinAddress表在概览编辑器中,通过将其拖放到“InsertNext Of Kin”语句下创建一个新的语句。 由于需要插入每个近亲的所有地址,请使用缩进图标将新语句移动到一个级别。 然后单击“语句迭代”图标,然后选择重复的NK1 / Address字段。 按OK按钮关闭对话框。 其结果如下图所示:
打开新语句,将其重命名为Insert Next OfKin Address,然后通过在“服务器资源管理器”中选择“NextOfKin”表并单击“生成”按钮生成一个INSERT语句。 其结果如下所示:
通过删除对AddressID的引用(由数据库自动生成)来修改SQL,并将要插入到NextOfKinID列的值更改为@NextOfKinID以使用上一个语句生成的标识符。 然后将所有剩余的值更新为NK1/ Address字段(NK1 / Address / StreetAddress,NK1 / Address / City,NK1 / Address / StateOrProvince和NK1 / Address / Country)中的相应值。 其结果如下图所示:
最后,给语句一个总结来描述它的行为,并关闭SQLEditor。 最终配置如下图所示:
|