orion知识

 找回密码
 立即注册
搜索
查看: 2996|回复: 4

DataBase

[复制链接]

63

主题

75

帖子

1185

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1185
发表于 2020-1-11 18:04:53 | 显示全部楼层 |阅读模式
数据库通信点的使用情景使用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。 最终配置如下图所示:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

2

帖子

48

积分

新手上路

Rank: 1

积分
48
发表于 2020-10-20 14:35:58 | 显示全部楼层
楼主求指教
回复

使用道具 举报

63

主题

75

帖子

1185

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1185
 楼主| 发表于 2021-3-1 17:24:30 | 显示全部楼层

啥问题
回复

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2021-9-27 11:10:09 | 显示全部楼层
楼主请教一下,请问可以拓展支持其他的数据库嘛,例如国产的数据库
回复

使用道具 举报

63

主题

75

帖子

1185

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1185
 楼主| 发表于 2021-11-9 08:54:56 | 显示全部楼层
kylin 发表于 2021-9-27 11:10
楼主请教一下,请问可以拓展支持其他的数据库嘛,例如国产的数据库

需要加入第三方的lib包,然后在配置界面写上相应的链接URL
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|orion知识 ( 浙ICP备20002629号 )

GMT+8, 2024-4-15 08:18 , Processed in 0.106860 second(s), 19 queries .

快速回复 返回顶部 返回列表