在医疗方面投入的资源越来越多,药品的成本不断上升,而且医疗专家分散在世界各地。这些因素都要求快速、可靠且方便地交换信息,以便在医疗保健环境中实现有效的协作。机构、企业和国家之间的信息交换问题不但出现在医疗保健环境中,在需要协作的任何环境中都会出现。
支持协作的应用程序必须能够以通用的标准化格式交换信息。这些公认的格式常常是由政府、行业协会和标准开发组织(比如医疗保健领域的 Health Level 7 (HL7))创建的。HL7 开发了 Clinical Document Architecture (CDA) 规范,这个规范用于对患者信息的交换进行标准化。
越来越多的患者信息按照 HL7 CDA 等医疗保健格式以电子方式显示、存储和交换,这些格式通常是使用 Extensible Markup Language (XML) 实现的。由于以电子方式提供患者信息,就有可能通过即时消息传递等现代技术使用这些信息。在医疗保健环境中已经开始使用即时消息传递,但是本文描述的原型基于端到端 XML 体系结构。在这个端到端 XML 体系结构中,以相同的格式把 HL7 CDA XML 文档中的信息存储在 IBM DB2 pureXML 数据库中、通过 Web 服务交换以及使用 IBM Lotus Sametime Connect Client 显示。
本文介绍一个医疗保健场景和端到端 XML 体系结构的原理。解释如何使用一个用于即时消息传递客户机的原型 Sametime 插件访问和显示数据库中存储的 XML 患者数据。在两个或更多参与方之间进行即时消息传递时,输入的特定文本会触发对 XML 患者数据的访问。只要安装了这个插件,即时消息传递的所有参与方都可以看到显示的患者数据。本文还解释如何安装和配置这个插件,以及如何针对另一个场景重新配置插件。本文示例中的插件配置文件设置适合访问 pureXML 行业格式演示程序,但是很容易改为访问其他 Web 服务。本文最后总结可以进一步改进的相关领域。
Sametime 应用程序提供实时接口,从而支持统一的交流和协作服务。在人员交流(或缺少人员交流)可能导致业务过程变慢或停止的环境中,可以在业务过程定义中包含这些接口。换句话说,Sametime 应用程序的目的是帮助减少或尽可能消除业务过程中的人为延迟。在定义中包含统一交流和协作服务的业务过程称为支持交流的业务过程(Communications-Enabled Business Processes,CEBP)。使用 CEBP 定义的业务过程自动化解决方案称为基于 CEBP 的解决方案。本文描述的场景就是一个 CEBP 示例。
为了说明即时消息传递对协作的支持能力,请考虑下面的场景(见 图 1)。患者 Sully Van 感到剧烈的头疼,他去见了本地医院的 Durenda Flor 医生。在完成诊疗之后,Durenda Flor 医生把在诊疗时收集的新信息添加到 Sully Van 的电子医疗记录中。Sully Van 还被告之他应该在一周之后到当地的开业医生那里复诊,以便最终确诊。因此,一周之后,Sully Van 去见当地开业医生 Chuck Smart 并说明上一次看病的情况。如果当地开业医生 Chuck Smart 能够看到他的同行 Durenda Flor 在一周前记录的信息,那对他的诊断会很有帮助。
图 1. 在专业医务人员之间共享患者信息的医疗保健协作
![在专业医务人员之间共享患者信息的医疗保健协作](https://i-blog.csdnimg.cn/blog_migrate/055ee181c4fded2845375a30da110c25.png)
对于这个示例场景,Chuck Smart 可以以不同的方式向 Durenda Flor 请求提供信息。Chuck 可以打电话给 Durenda,请她说明一下上次诊疗的结果。另一个办法是,Chuck 请求 Durenda 把患者记录传真到自己的诊所。第三种方法是通过 Lotus Sametime Connect 等即时消息传递技术请求患者信息。本文描述的原型介绍一个 Lotus Sametime Connect 插件,它可以获取 DB2 pureXML 数据库中存储的 HL7 CDA XML 文档。当 Chuck 和 Durenda 使用 Lotus Sametime Connect 进行即时消息传递时,Chuck 可以向 Durenda 发送一条即时消息,询问关于患者 Sully Van 的情况。在幕后,Chuck 的 Lotus Sametime Connect 客户机中的插件会分析这条消息并访问 Durenda 的系统中此患者的信息,然后把数据提供给 Chuck。
HL7 CDA XML 文档最初的目标是为交换患者信息提供一种标准化的格式。但是在这个示例中,HL7 CDA XML 文档也用来存储患者信息。这里描述的方法还通过结合使用 HL7 CDA XML 文档和现有的 XML 处理技术向应用程序的用户显示患者信息。使用 HL7 CDA XML 文档存储、交换和显示信息,就实现了 图 2 所示的端到端 XML 体系结构:
这个端到端 XML 体系结构包含三层 — 数据层、Universal Services 层和用户交互层:
- 数据层:数据层代表一个使用 DB2 原生 XML 存储功能的 DB2 pureXML 数据库。原生 XML 存储意味着可以在数据库中直接存储 XML 文档,不需要把 XML 文档的元素和属性中存储的信息分解存储到关系表中。因此,数据库服务器可以作为 HL7 CDA XML 文档的数据存储。这个数据库是使用所谓的行业包(industry bundle)创建的,这是创建和填充数据库的一种简便方法。可以免费获取针对许多行业格式的行业包,包括 HL7 CDA。关于行业包的更多信息,请参见本文的 参考资料。
- Universal Services 层:Universal Services 是一组简单的、固定的操作,包括插入、更新、删除和查询操作,可以通过 Web 服务操作 DB2 pureXML 数据库的任何 XML 列。可以通过简单的 Web 服务请求访问数据库中存储的 HL7 CDA XML 文档。可以免费获得 Universal Services,包括设置和配置服务所需的所有组件。关于 Universal Services 的更多信息,请参见本文的 参考资料。
- 用户交互层:用户交互层让用户可以与应用程序交互(例如,显示数据库中存储的信息)。在这个示例中,Lotus Sametime Connect Client 的插件允许通过 Universal Services 访问数据库,获取并显示患者信息。下面提供关于插件功能的更多信息,比如如何通过 Lotus Sametime Connect Client 获取患者信息。
通过实现一个原型插件扩展了 Lotus Sametime Connect Client,这个插件可以获取 DB2 pureXML 数据库中存储的包含患者信息的 HL7 CDA XML 文档。本节讨论这个插件的实现,见 图 3。 对功能的说明基于以下假设:一个医疗从业人员启动 Lotus Sametime Connect Client(下面简称为客户机),希望向另一个从业人员请求患者信息。
图 3. 提供获取和查看 XML 的功能的插件实现如图 3 所示,客户机在启动时装载一个可定制的初始化文件(1)。这个初始化文件(见 清单 1 中的示例初始化文件)包含客户机的配置参数,比如用于访问数据库中存储的 HL7 CDA XML 文档的 Universal Services 端点。客户机使用这个端点提交 Web 服务请求,从而访问数据库中存储的 HL7 CDA XML 文档。在后面介绍功能时,会同时介绍初始化文件中的所有参数。在装载所有配置参数并启动之后,客户机就可以接收和处理用户输入的消息了。
清单 1. pureXML 插件的初始化文件
patient\s([^\s]++)\s([^\s<]++) XQUERY declare default element namespace "urn:hl7-org:v3"; for $patient in db2-fn:xmlcolumn('DB2ADMIN.CDA.DOCUMENT')/ClinicalDocument where ($patient/recordTarget/patientRole/patient/name/given/text() = "${1}" and $patient/recordTarget/patientRole/patient/name/family/text() = "${2}") return <entry id="{$patient/id/@root}" label="{$patient/title/text()}"/> XQUERY declare default element namespace "urn:hl7-org:v3"; for $doc in db2-fn:xmlcolumn('DB2ADMIN.CDA.DOCUMENT')/ClinicalDocument where ($doc/id[@root = "${key}"]) return $doc
当用户在聊天窗口中输入的文本包含特定的关键字时,就会触发客户机向数据库请求信息(图 3 中的 2)。文本消息必须符合的模式是通过初始化文件中的 元素中定义的正则表达式定义的。当前示例中的正则表达式定义为单词 “patient”,后面跟着代表患者姓名的另外两个单词。例如,“patient Sully Van” 就符合这个文本模式。
如果从业人员输入一条包含此模式的消息,就会触发客户机在数据库中查询特定患者的 HL7 CDA XML 文档(图 3 中的 3)。在数据库中查询 HL7 CDA XML 文档的 XQuery 表达式是通过初始化文件中的 元素定义的。这个查询返回在数据库中找到的每个记录的惟一标识符,以及对 XML 文档本身的描述。插件本身需要用查询返回的惟一标识符来处理 XML 文档。查询表达式返回的描述用来向从业人员提供与输入参数(例如,名为 Sully Van 的患者)匹配的 HL7 CDA XML 文档列表(图 3 中的 2 和 3)。
从业人员选择一个 HL7 CDA XML 文档之后,客户机在数据库中查询所选的 XML 文档(4)。在获取 XML 文档时,客户机使用初始化文件中的 元素定义的 XQuery 表达式和前一个 XQuery 表达式返回的键之一。使用的键与用户选择的键匹配。
客户机获取 XML 文档之后,在显示文档之前,用一个 XML 样式表转换文档(图 3 中的 5)。使用的样式表是通过初始化文件中的 元素定义的。在使用 XML 样式表转换从数据库获取的 HL7 CDA XML 文档之后,插件向用户显示转换结果(6)。
在了解了端到端 XML 体系结构的目标和插件的功能之后,我们来看看这个 IBM Lotus Sametime Connect Client 插件的效果。这个插件让客户机能够访问 DB2 pureXML 数据库中存储的 XML 文档。
为了更好地理解,这里仍然使用本文 “简介” 一节中描述的示例场景。正如前面提到的,如果 Chuck Smart 医生能够看到他的同行 Durenda Flor 在一周前记录的患者信息,那对他会很有帮助。因此,Chuck Smart 医生启动 IBM Lotus Sametime Connect Client。Chuck 可以通过客户机看到他的同行 Durenda 目前在线,这由 Durenda 的姓名旁边的绿色图标表示,见 图 4:
图 4. IBM Lotus Sametime Connect Client 中的联系人列表因为 Durenda 目前在线,Chuck 启动与她的即时消息对话。与即时消息传递环境的典型情况一样,双击 Durenda 的姓名就会打开一个聊天窗口。Chuck 可以通过这个聊天窗口与 Durenda 对话,见 图 5:
图 5. IBM Lotus Sametime Connect Client 的聊天窗口在聊天窗口中,Chuck 输入并提交消息 “Hello Durenda, can you please provide me with information on our patient Sully Van ?”,从而开始对话,见 图 6:
图 6. 在 IBM Lotus Sametime Connect Client 的聊天窗口中输入消息正如前面提到的,插件扩展了即时消息传递客户机,它会根据初始化文件中的正则表达式,分析消息并寻找特定的关键词。看一下前一步中输入的文本消息,消息中包含这个场景使用的关键词 “patient”。因此,插件使用 Chuck 的消息中关键词后面的两个单词(即 “Sully” 和 “Van”)作为患者姓名,并在 Durenda 的数据库中查询对应的医疗保健信息。
然后,聊天窗口会扩展,向用户 Chuck 显示与患者 Sully Van 相关的文档列表,见 图 7:
为了查看找到的信息,Chuck 双击搜索结果中的一项,就会打开一个单独的窗口,见 图 8:
Chuck 能够看到 Durenda 对 Sully Van 的诊疗的详细信息,从而了解患者的健康状况并与 Durenda 进行讨论。
可以使用 IBM Lotus Sametime Connect Manage Updates 用户界面安装 DB2 pureXML 插件。在开始安装之前,需要下载存档文件 sametime_purexml_plugin.zip(见 下载)并把存档文件解压到一个本地临时工作目录中。下面的说明中使用的本地临时工作目录是 C:\temp\sametime_plugin。
为了启动向导,在客户机的主窗口中打开菜单项 Tools。在 Tools 菜单中,选择 Plug-ins > Install Plug-ins...。然后,向导让您选择是更新当前已经安装的插件,还是安装新插件。选择 Search for new features to install 选项并单击 Next,见 图 9:
下一步是选择存放安装文件的位置,也就是解压存档文件的目录。因此,单击 Add Folder Location... 并选择使用的目录,见 图 10。(在本文中,选择的目录是 C:\temp\sametime_plugin)。
然后,向导列出在指定的本地目录中可以安装的所有插件。因为本文提供的存档文件只包含一个插件,所以这里只列出一个插件。选择这个插件(见 图 11)并单击 Finish:
每个插件都由一组特性组成,因此向导允许选择要安装的特性。选择 pureXML Collaboration Demo 0.0.1(见 图 12),然后单击 Next:
图 12. 选择 pureXML Collaboration Demo 0.0.1 特性然后,向导要求您接受许可协议,见 图 13。选择 I accept the terms in the license agreements 并单击 Next。
在完成安装之前,向导提供要安装的特性的汇总信息,见 图 14。单击 Finish 完成安装过程。
为了最终完成安装,需要重新启动 IBM Lotus Sametime Connect Client。客户机会自动提供重新启动选项,见 图 15:
另外,需要向客户机提供支持医疗保健协作的初始化文件。为此,把 st_purexml 文件夹复制到本地硬盘的根目录(例如,C:\)。如果把存档文件 sametime_purexml_plugin.zip 解压到 C:\temp\sametime_plugin,那么可以在 C:\temp\sametime_plugin\DB2pureXMLDemo\sampleConfig 目录中找到要复制的文件夹。在复制初始化文件之后,需要重新启动客户机,以便正确地装载所有设置。
正如前面提到的,这个插件在客户机启动时从初始化文件装载所需的所有工件。“插件功能” 一节解释了一个初始化文件示例。要想让客户机支持另一个场景中的协作,需要创建另一个初始化文件并让客户机使用这个文件。
本节讨论如何创建另一个初始化文件,让 IBM Lotus Sametime Connect Client 可以使用 US IRS Tax 1120 电子文件格式。这个初始化文件使用 XML 编码,其根元素为 。
在根元素中是配置应用程序所需的所有参数。第一个参数是一个正则表达式,它代表触发客户机从数据库获取 XML 文档的关键字。这个正则表达式在 元素中指定。
taxdocuments
下一步是定义客户机用来访问数据库的 Web 服务端点。端点是使用 元素的 url 属性定义的。
下一个元素是 ,其中指定用于从数据库获取一组与搜索条件匹配的 XML 文档的 XQuery 表达式。
清单 5. 定义用于获取一组 XML 文档的 XQuery 表达式XQUERY declare default element namespace "http://www.irs.gov/efile"; for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT') return <entry id="{$doc/Return/ReturnHeader/ReturnId/text()}" label="{$doc/Return/ReturnHeader/PreparerFirm /PreparerFirmBusinessName/BusinessNameLine1/text()}"/>
获取一组 XML 文档的 XQuery 表达式后面是另一个 XQuery 表达式,它用于从数据库获取指定的一个 XML 文档。第二个 XQuery 表达式是使用 元素定义的。
清单 6. 定义用于获取特定 XML 文档的 XQuery 表达式XQUERY declare default element namespace "http://www.irs.gov/efile"; for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT') where ($doc/Return/ReturnHeader/ReturnId[text() = "${key}"]) return $doc
客户机从数据库获取特定的 XML 文档之后,需要使用一个 XML 样式表把原始的 XML 文档转换为对用户更友好的形式。因此,要使用 元素的 url 属性指定用于转换的 XML 样式表。
针对另一个场景配置了客户机参数之后,需要添加结束元素 以确保初始化文件是良构的。为了便于理解,清单 8 给出完整的初始化文件:
清单 8. 针对 IRS 1120 电子文件格式的完整初始化文件taxdocuments XQUERY declare default element namespace "http://www.irs.gov/efile"; for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT') return <entry id="{$doc/Return/ReturnHeader/ReturnId/text()}" label="{$doc/Return/ReturnHeader/PreparerFirm /PreparerFirmBusinessName/BusinessNameLine1/text()}"/> XQUERY declare default element namespace "http://www.irs.gov/efile"; for $doc in db2-fn:xmlcolumn('DB2ADMIN.TAX1120.DOCUMENT') where ($doc/Return/ReturnHeader/ReturnId[text() = "${key}"]) return $doc
创建初始化文件之后,还需要让客户机使用此文件。为此,在客户机的主窗口中打开 File 菜单项并选择 Preferences,这会打开另一个窗口。在此窗口中,选择 DB2 pureXML Demo,见 图 16:
可以使用 DB2 pureXML Demo 的首选项指定更多的初始化文件引用,或者删除对现有初始化文件的引用。
本文讨论了如何通过扩展 IBM Lotus Sametime Connect Client 和使用端到端 XML 体系结构简便地支持协作。使用相同的信息格式存储、交换和显示信息可以简化设计和加快开发,这会产生一个能够根据反馈及时改进的强大原型。
在医疗保健系统中,如果没有得到患者和主治医生的同意,就不能允许访问敏感信息。在进一步改进通过即时消息传递实现的协作时,安全性肯定是一个需要关注的主题。把插件的配置文件放在服务器系统上是另一个需要进一步开发的方面。可能改进的其他方面包括与基于表单的显示集成、支持修改数据和改进数据显示。另一种可能性是使用即时消息传递客户机作为更友好的数据库系统界面,在这种系统中,参与信息交换的一方是数据库代理,而不是人。
本文展示了让 IBM Lotus Sametime Connect Client 充分利用端到端 XML 体系结构的优势。这里提供的插件有助于开发更好的原型和解决方案。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-594509/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15082138/viewspace-594509/