区域医疗卫生信息共享平台门户建设方案
3.4.3.3技术要点
本门户的应用服务主要分为内网和外网两大部分,其中,内网主要面向医生、 科教研人员、管理者、分级管理员等正式在编人员,外网主要面向患者的公众群 体。基于业务功能和平台管理的考虑, 内网与外网作为独立应用分别部署。Portal 的主要特性之一即对不同外部系统的应用功能实现统一用户登录的技术 支撑。对于本平台而言,应用均基于统一的平台,因此,对于单点登录,更多是 为平台扩展性考虑,从底层技术上对单点登录进行支持,以便于对今后外部系统 接入时的标准化单点登录支持,以提升安全性和整合效率。
3.4.1内部门户
电子病历共享部分,主要由 HTB 统一的标准的数据展现服务组件统一提供,主要包括:患者基本信息、病历摘要、门诊病历、住院病历、医嘱表单、处方表单、药品表单、检验结果、检查结果(影像除外)、手术麻醉、护理记录、出院小结、费用表单、病案首页,和患者个人健康档案的查询。
转诊转检医疗咨询等模块需要的即时性电子病历数据,也由HTB统一的标准的数据展现服务组件统一提供(影像除外),集成在定制的平台工具上。
科研、教学需要的电子病历,由HTB提供(影像数据 除外)。其中教学病历库,若是需要基于标准的HTB病历库修改、标注教学相关内容,则建议单独设立教学病历库。并且,统一由HTB数据展现服务支持用户检索选择电子病历。
第 9 页 共 30 页
区域医疗卫生信息共享平台门户建设方案
科研、教学需要的影像数据,由定制的数据库和服务提供,并且支持与HTB病历的文件索引。
3.4.2外部门户服务
外网业务组件,主要提供面向外部用户的服务,主要的服务包括:网上预约 挂号、患者反馈、个人健康档案、公共信息查询。
患者反馈和个人健康档案,需要调用HTB标准统一的电子病历展现服务患者反馈的意见、个人健康档案中个人信息的修改,需要定制数据到“其他业务数据”,并不同步HTB数据网上预约挂号,通过定制的功能服务,数据存储到“预约挂号数据”
公共信息,如健康教育、医院资源介绍等,定制开发服务,数据存储到“门 户系统数据”。
本平台中,单点登录的设计主要基于两个技术实现,基于 WAS 的 JAVA 验证与授权服务(Java Authentication and Authorization Service,JAAS)以及基于WPS的凭证保险库(Credential Vault)。
Portal 登录组件设计
在Portal登录组件中,平台采用JAAS认证方式以支持获取用户信息进行标 准化认证,即 HttpFormBasedAuthentication 认证方法。此方法对于 cookie 或 session 认证,有更好的安全性和通用性。Portal 的登录组件中的 form 设计遵循以下规则:
action属性为j_security_check; 以支持J2EE中的认证servlet进行用户 认证
j_username文本输入框; 作为用户名对象 j_password文本输入框; 作为密码对象
表单提交后由WAS中的认证servlet进行用户认证。对于用户密码,本平台 统一采用MD5方法对明文密码进行散列和存储,比对时,将用户提交的密码进行 散列后,与存储的散列值进行比对,相同时即认为通过。
为使WAS能够顺利对提交用户信息验证,需要在WAS中设置对应的用户信息 库,以进行记录比对。本平台中的用户库基于 IBM Tivoli Directory Server
第 10 页 共 30 页
区域医疗卫生信息共享平台门户建设方案
的LDAP目录数据库,在WAS的安全中心中,激活LTPA认证方式(Light-weight Third Party Authentication),并将对应LDAP目录数据库的域名信息、监听端口、基本专有名称(即用户数据所在的节点,cn=people, dc=sysu, dc=edu, dc=cn)置入WAS配置中。
此外,需要对认证页面逻辑流转进行控制。对于认证页面,主要包括登录页 面、登出页面、错误提示页面。通过在
web.xml
中
Portal 跨域认证设计
上述过程实现了基础的 JAAS 认证方法,当用户提交认证信息时,WAS 可即 时在预设的 LDAP 目录中进行验证,并返回验证结果。为使得其他应用程序能够 调用到该认证结果,并触发对应的登录过程,还需要进一步调用 Portal 中的方 法。
凭证保险库是整个用户认证信息在跨域认证信息交换过程中的基础。凭证保 险库由管理员在WPS后台进行创建和管理,管理员须在凭证保险库中创建凭证保险槽,用于指定和存放凭证保险数据。槽(slot)中的数据可通过
com.ibm.portal.portlet.service.
credentialvault.credentials.Credential的服务方法,被其他外部应用访问,以实现单点认证。
类似地,平台中通过HTTPFormBasedAuthCredential方法,采用主动凭证方 式,来保存和调用凭证信息(即用户认证信息)。跨域认证和保存凭证信息通过实现 doView()方法进行。首先通过PortletRequest.getData().getAttribute()方法获取预设的,将用户名、密码、登录和登出页面的 URL 以及 URL 属性置于一个 HashMap 对象中,通过 HTTPFormBasedAuthCredential.getCredential()方法获取凭证,随后调用HttpFormBasedAuthCredential.login()方法进行外部应用的认证,同样,可以用HttpFormBasedAuthCredential.logout()方法退出外部应用。
对于运行于同一应用中的功能组件,通过HTTPrequest.getRemoteUser()方 法得到用户 ID,实现单点登录过程,随后根据该用户 ID,处理并返回对应的功
第 11 页 共 30 页
区域医疗卫生信息共享平台门户建设方案
能页面。
对外部应用功能在同一页面上的登录和信息聚合是WPS的最主要功能。对于 WPS而言,在门户首页中进行多类信息内容的聚合显示是主要的应用目标。本平 台中的应用功能主要分为内外网两大部分,属于同一应用平台中的信息聚合。对 于信息部分,抽取了外网中的健康知识更新、内网的论坛和博客更新作为信息聚 合组件应用。另外集成了用户认证、用户组件视图、搜索引擎等服务组件,方便 在编员工的信息访问。
组件的安装与部署
动态页面是由多个组件组成的,这些组件由门户管理员统一管理。这些组件 都是根据具体的需求自定义开发的并且符合一定标准的web程序,开发完成之后 导出为war包就可以供门户使用了。门户管理员可以在门户管理平台安装和部署 war包,成功之后这些war包就可以作为组件被布局在页面中,供用户访问。
组件的安全性管理
门户管理员可以设置组件、页面等的访问权限,即设置可见组件和页面的角 色,从而提供了对组件的访问控制。门户使用基于角色(role based)的权限控 制。门户已预置了一些角色(角色不能被增加和修改),门户里的页面、组件等 都可以看成资源。此处的角色被用于定制大用户类型,在本平台中用于定义普通 用户可以看见的门户首页,以及门户管理员可以看见的管理员首页。
本平台的门户中使用的登录组件是自定义的,具体实现了 LoginModule API。用户登录的时候,通过使用Portal容器提供的JAAS (Java Authentication Authorization Service :Java验证和授权API)——JAAS是J2EE服务器用来 帮助应用系统实现安全功能——J2EE 容器就执行 LoginModule 接口,通过接口 和具体实现之间的关系, Portal 容器将结合具体应用系统实现特定的 JAAS 功 能。 这样就利用Portal提供的安全机制保证了安全性。
门户页面中的组件布局管理
在一个动态页面中,存在多个组件,门户管理员可以任意布局这些组件的位置。门户管理员可以选择将一个动态页面分为几个区域(门户提供了几种默认 的方案,管理员也可以自己设计),在每个区域布局不同的组件,当然在同一个 区域内也可以布局多个组件。这些区域的大小都是可以调整的。同时,页面的主
第 12 页 共 30 页