为解决采用导入文件模式进行新农合医疗系统直报时存在的安全隐患,为此,本文采用流文件技术实现了对导出数据的加密保护,然后采用蓝牙技术实现数据在HIS和农合系统之间的传输。
一、HIS数据向新农合系统加密传输系统设置
1、HIS数据向新农合系统加密传输系统实现方法
首先我们需要用Delphi开发住院信息导出软件和农合离线接口软件。
住院信息导出软件运行在HIS端,连接HIS数据库,获取参合病人的基本信息和住院费用明细,转换成Excel文件导出,采用流文件加密技术对导出的Excel文件进行加密保存,然后通过安装在HIS和新农合系统台式机上的蓝牙适配器将加密文件传输到农合系统中:农合离线接口软件运行在农合网内台式机上,通过调用农合端提供给医院的动态连接库接口,实现对农合前置机数据库的数据操作,所有数据操作如入院登记、费用上传、出院结算等均通过调用不同的函数完成,在费用上传前。农合离线接口软件首先对Excel文件进行解密,然后调用农合系统的“费用上传“函数,完成住院费用的上传,最后再进行出院补偿结算。
2、流文件加密
在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法。本应用中病人住院数据需要通过Excel表在HIS和新农合系统间交换,Excel表不允许被人为修改,须对其进行加密,以实现对工作表数据的保护。本文采用Delphi实现对Excel表的加密保护,具体方法是通过流文件的方式在Excel文件前写入定长字符串,改变Excel文件头结构,使之打开成为乱码,无法被人识别。
3、蓝牙技术
利用“蓝牙”技术,能够有效地简化移动设备之间的通信,数据传输具有较高的传输速率和数据安全性等特点。蓝牙技术的关键是蓝牙芯片,可以装在各种设备上,对于普遍没有蓝牙模块的台式计算机,通过外接USB接口蓝牙适配器,即能实现蓝牙通讯。本应用在医院HIS和新农合系统之间传输的Excel文件大小约为60-200KB,适宜使用蓝牙技术传输。
二、HIS数据向新农合系统加密传输系统实现过程
1、HIS数据的获取方法
需要从HIS获取的数据包括参合病人的基本信息和住院费用明细,我院HIS的数据库为SQLServer2005,采用建立视图的方式获取新农合系统需要的数据。视图是一个虚拟表,其内容由查询定义,经常用到的查询、或较复杂的联合查询应创建视图,可将需要的多个表中的数据组合成为一个视图,视图可简化用户对数据的操作。根据农合系统的实际需要,在HIS数据库中新建视图
VW_BRJBXXI病人基本信息)和VW-ZYFYM×(住院费用明细:采取只读形式获得参合病人的基本信息和住院费用明细,在HIS数据库中新建用户,设置对视图的只读权限,程序与数据库基表被视图分割,没有对整个基表的访问权:保障了HIS数据库的稳定和安全。
2、数据导出
将SQL Server表导出成Excel文件的方法很多,BCP实用工具可以实现在SQL Server实例和数据文件之间以用户指定的格式复制数据,本文利用BCP实用工具将SQL Server表导出成Excel文件,因BCP不是SQL语句,只能在命令提示符下执行,如在SQL语句中调用,需使用xp_cmdshell扩展存储过程。实现语句如下:
E×EC master ×p-cmdshell 'bcp “select_from #temp“qUe ryout c:\temp.xls -c -q-S”,”-U”sa”-P “1 23“‘-SQL Server的用户名为sa,密码为123。
3、数据文件加密
创建一个目标流文件,文件后缀名为XLS,以病人住院号命名,将流指针移到开始位置,用WriteBuffer方法写入病人住院号,再将病人住院费用明细导出的Temp.xls文件以流文件的方式复制至目标流文件尾,从而改变Excel文件头结构,生成密文口具体实现步骤如下:
Try
zyh:=’201 21 2345‘://住院号作为密钥
Source: =TFileStraam.Create(c:/Temp.xls’,fmOpenRead);’//创建源流文件
Target:=TFileStrea m.
Create(’c=\l+zyh十1.xls’,fmcreate);//创建目标流文件
pzyh:=Pchar{zyh);//把字符串转成字符指针
Target.Position:=0://流指针移到开始位置复制
Target.WriteBuffer(pzyh^,9)://在目标文件开头写入9位住院号
Jarget.CopyFrom(Source,0); //用文件流将源文件复制
DeleteFile('c:\Te mp.xls'); //删除原始Excel文件
Finally
Targat.Free:
Source.Free;//释放流文件
End;
4、蓝牙传输
本文选择了两个基于Bluetooth SIG 2.1规范设计生产的USB接口蓝牙适配器,分别括在医院HIS和新农合系统台式电脑的USB接口上,安装好驱动程序,在电脑任务栏里出现兰色的蓝牙图标,使之具有蓝牙通信功能。在HIS电脑上用鼠标点击蓝牙图标,弹出菜单栏,选“添加Bluetooth设备”,按提示可搜索到新农合电脑上的蓝牙适配器,输入密钥后完成两台电脑的匹配。文件传输时,打开新农合电脑上的蓝牙设备,在HIS电脑上右。击病人住院费用导出的XLS文件,选“发送到”中的“Bluetooth设备”,按电脑的提示进行简单的操作即可完成文件的传输,新农合电脑的蓝牙适配器会自动接收HIS发送的加密文件,并保存到相应的文件夹中。
5、数据解密
解密时,先取流文件中的前9位,校验病人住院号是否正确,如正确,则将密文从流文件中读出,生成明文,否则提示住院号不符错误,此步骤和数据上传同步完成,上传结束后即将解密的Execl文件删除。读取Excal文件前,将流文件指针位置定位到9,即Excel在文件流中的起始位置,然后将Excel文件流复制至目标流文件,解密部分过程如下:
try
Source: =TFileStream.Create<ic:\Target.xls',fmOpenRead);创建源流文件
Target:=TFileStream.Create('c:\Source.xls'ifmcreate);//创建目标流文件
//此处略去住院号校验部分
source.Position:=9;//定位控制流中存取指针的位置
Target.CopyFrom(Source,Source.Size-9);将Excel部分文件流复制
Finally
Target.Free;
Source.Free;//释放流文件
end;
6、数据上传
SQL Server支持用OPENROWSET函数传入一个连接串或查询来提取OLE DB数据源的数据,如从Excel、Access等提取数据。本文即利用OPENROWSET函数提取Excel表中的数据,即将解密后的Excel用Sql语句导入临时表,经格式化后,按新农合系统要求调用“费用上传”函数,将病人住院费用明细上传至农合前置服务器。用OPENROWSET函数提取Excel表数据部分Sql语句如下:
Insert into #temp Salect-from
OPENROWSET(‘microsoft.jet.oledb.4.0‘,8.O;database=c:\zyh.xls‘,sheetl$)
7、住院结算
在住院结算前先调用“预结算“函数,确认结算病人的信息无误、住院费用已经全部上传,如预结算失败,根据接口返回的错误信息分析错误原因,重新进行预结算,然后通过住院号和参合号等参数调用“住院结算”函数,完成住院结算功能,并根据返回的补偿结果打印农合结算补偿报销单。医院对结算单中补偿费用部分先垫付,病人只需支付其自费部分,而后由医院和农合管理中心定期统一结算。
HIS数据向新农合系统加密传输方式对于网络安全要求较高,不允许网络实时连接的医院,具有重要的参考意义。
小知识之蓝牙技术
蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。