陈希,刘翔,潘传迪
(1.皖南医学院第一附属医院,安徽 芜湖 241001;2.皖南医学院,安徽 芜湖 241001)
为了使信息在各种系统之间互联互通,信息系统之间的接口应用也越来越广泛。接口其实是指对协定进行定义的引用类型,顾名思义,是能让数据从一个系统导入到另一个系统之间的应用。就以医院信息系统为例,接口应用于药库与药房系统,财务与药房系统,医生站与护士站之间。接口主要是解决两个系统数据相互交换读写的问题,接口解决方法主要有如下五种,分别是表或视图方式、应用程序接口方式、中间表方式、消息方式、中间载体方式。下面就介绍这五种方式的实现、优缺点和应用体会。
用直接读写目标系统数据库表或视图的方式。按需将目标系统数据库表或视图的读写权限授权给接入方用户,如接入方用户不存在,先建立数据库访问用户[1]。
以这种方式接入方直接访问接口信息相关的表或视图,性能最佳,但由于接入方是直接读写目标系统数据库表或视图,需要双方约定数据读写规则,且要注意授权有效性,授权接入方只能访问接口信息相关的表或视图,确保数据安全性和一致性。在实践中常用于表或视图读操作。如基于Oracle 数据库的临床路径系统读取药品管理系统(用户名为drug)中的药品名称表(drug_drugname)中的药品名称和规格的代码如下:
Select drugname,standard from drug.drug_drugname.
应用程序接口(Application Programming Interface),又称为应用编程接口,简称API。就是软件系统不同组成部分衔接的约定。日渐庞大的软件规模要求我们将系统划分成各个部分来处理,设计编程接口则显得十分关键。程序设计实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性[2]。如图1 所示。
通过接口双方各自开发自己的API 接口,让对方系统调用,来实现数据访问。这是一种常用的信息系统之间接口方式,其数据安全性和一致性高,但性能不如直接读写目标系统数据库表或视图的方式。常用的应用程序接口方案包括WEB Service、WEB API、DLL 和数据库存储过程及函数等。
图1 应用程序接口方式
在数据库中建立中间表,中间表一般由接口双方中一方创建,也可由第三方创建,按需将中间表访问权限授权给接口双方,接口双方将需要交互的数据写入到中间表,对方通过读取中间表实现数据交互[3]。这种方式性能、数据安全性和一致性均较高,也是一种常用的信息系统之间接口方式。
为什么要使用中间表的接口模式?对于很多企业来说,经常需要多个业务系统支持。如果采用系统间相互的函数调用模式,会导致接口过多,难以管理。如图2 所示。
图2 系统间函数调用模式
基于此情况,多数企业会选择采用中间表,以满足多个系统间的数据流转。那么,中间表接口模式的工作机制是什么?
如果两个业务系统,采用建立中间数据库的模式进行数据交互,其工作原理可以简单理解为:首先,会部署一个专门的数据库或者数据系统,也有称为数据平台等,实际上,就是个专门用于存储系统间交互数据的数据库[4]。业务系统不会直接将要传输的数据传输给其他业务系统,而是会传输给这个中间的数据库,要使用这些数据的业务系统,会主动去中间数据库取自己需要的数据。如图3 所示,A 系统会将数据写入中间数据库,B 系统会从中间数据库取需要的数据,反之亦然。
图3 中间数据库
采取中间表接口的方式,在实际使用中,一般是存在多个系统之间有数据交互的业务情况,如图4所示。我们对比之前多系统接口采取RFC 方式的图例,我们很容易看出来,采取中间表接口的交互方式,其接口更加容易管理,且交互方式更加安全。
图4 中间表中多个系统数据交互情况
通过消息传送方式实现信息系统数据交互,常见的有Socket 和HL7 方式。接口双方将需要交互的数据通过消息方式发送给另一方,接收方收到消息后进行数据处理,如需反馈信息,同样以消息方式将反馈信息发送给发送方,从而实现数据双方的数据交互。这种方式性能高,数据安全性和一致性也高,是一种理想的信息系统之间接口方式,越来越被人们接受。由于该方式需要有消息传送系统,且接口双方需要提供软件开发支持,目前实现代价相对较高。
Socket 是应用层与TCP/IP 协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP 协议族隐藏在Socket 接口后面。对用户来说,一组简单的接口就是全部,让Socket 去组织数据,以符合指定的协议[5]。Socket 方式优势在于可以实现跨平台的数据交换,并能够解决操作系统、防火墙带来的困扰。但因部署要求严格,实现代价较高,实际应用不是很多。
HL7(Health Level 7)是标准化的卫生信息传输协议,用于不同应用之间数据传输。HL7 汇集了不同厂商用来设计应用软件之间接口的标准格式,它将允许各个医疗机构在异构系统之间进行数据交互[6]。
采用HL7 标准的信息交换的过程是:发送方在业务节点触发后,如果需要把业务信息传递给其它系统,首先要把应用系统数据按照集成规范定义的HL7 消息格式进行封装,并把消息发送给消息引擎[7]。消息引擎在接收消息后按照通道配置情况,依据标准的通讯规则将消息发送到对方系统;接收方在收到发来的HL7 消息后,解析消息内容,对收到的信息进行相关业务处理,将消息内容转变成业务应用系统数据。业务处理完成后,由接收方发送一条处理结果应答消息给消息引擎[8]。
使用文本文件、EXCEL、XML 等文件作为中间载体,接口双方先约定中间载体文件类型和格式,一方将数据导出,另一方将数据导入。这种方式实现起来简单,数据安全性和一致性高,但数据交互及时性差,常用于静态数据交互,不得已情况下才用于动态数据交互。
总的来说,上述各种接口解决方式各有优缺点。而分析接口解决方式时,主要从安全性、性能、代价这三个方面考虑。恰当运用这些接口方法,才能高效地实现数据的读写交换,保证信息系统之间信息交换的准确性、稳定性和安全性。相比而言,上述接口方式中,中间表方式与消息方式是市场应用最多的,因为这两者安全性较高,性能较稳定,在代价方面相对其他方式也比较合理,因此能被更多厂家、商家和客户接受。