第三方系统单点登录集成
单点登录实施流程
第三方系统接入类别说明
程序类别 | 接入方式 | 说明 |
---|---|---|
B/S | API改造 | 参照1.3接口函数说明 |
传参 | 参照1.4第三方应用传参方式 | |
C/S | API改造 | 参照1.3接口函数说明 |
传参 | 参照1.4第三方应用传参方式 |
说明:
第三方系统接入到平台是通过http地址注册
C/S程序没有对应的http注册,需要通过注册表配置生成一个http地址提供给平台方进行注册
接口函数说明
第三方应用传参方式
1、加密
token=#token# #token#是(账号|密码|时间)三个参数通过|分割进行base64编码后的值
2、非加密
用户名值用#account#
密码值用#password#
各方集成工作
接入系统厂家
API接口改造
业务流程
单点登录
说明:
第三方应用程序在登录窗口中的Open事件中调用SSO服务接口(getUserInfo)获取登录信息;
如果已经单点登录信息,则通过返回的用户、密码进行模拟登录;
如果返回信息中功能编码(funid)不为空,则还需要进行患者同步设置,详细见单点登录同时患者同步章节;
如果没有单点登录信息,则弹出登录窗口,进行正常登录。
单点登录同时患者同步
说明:
第三方应用程序在登录窗口中的Open事件中调用SSO服务接口(getUserInfo)获取登录信息;除返回当前系统编码、当前系统用户名、当前系统密码外,还会返回功能模块编码(也就是说登录后需要打开的模块);
第三方应用程序在获取登录信息后,模拟登录进入主窗口后,根据获得的功能模块编码直接进入此模块,在此模块中窗口激活事件(不是Open事件与窗口置顶事件,这样可以实现患者同步功能的复用)中,调用获取SSO服务接口(getPatient)获取当前病人,在获得当前病人后,定位病人同时触发改变病人事件(原有模块功能的调用)。
在此事件中需要由各应用程序进行当前病人与原病人的判断,如果是不同的病人需要程序提示操作者是否进行病人同步功能实现,如果操作者选择是则同步,选择否不进行同步(避免有些录入数据切换时数据丢失)。
患者同步
注:
当操作员某个系统切换到别的系统(在操作系统工具栏中进行系统选择时),窗口被激活,调用获取SSO服务接口(getPatient)获取当前病人,在获得当前病人后,定位病人同时触发改变病人事件(原有模块功能的调用),此事件在单点登录同时患者同步功能中已经实现好(所以不要再进行程序改造)。
程序改造说明
在第三方应用程序打开登录窗口时调用getUserInfo接口获取账号信息,获取账号信息模拟登录;
患者同步可选:在选择病人的时候设置病人信息到sso服务中,调用setPatient接口;在打开病人窗口的时候获取病人信息调用getPatient接口。
接口改造例子
JavaScript参考:
//第三方系统直接调用getUserInfo接口获取系统用户信息
function getUserInfo(appid) {
$.ajax({
url: "http://127.0.0.1:8088/datacenter/setting/ssoAction.do?reqCode=getUserInfo",
type: "get",
data: {
"appid": appid
},
dataType: "jsonp",
success: function(data) {
if (data.success == false) { //没有获取到单点登录信息
//弹出登录界面让用户自行输入登录
} else {
//获取到参数data信息示例
{
"result": "{\"bindPassword\":\"e10adc3949ba59abbe56e057f20f883e\",\"bindAccount\":\"sa\",\"bindAppID\":\"2160\",\"deptCode\":\"0014\",\"funID\":\"\"}",
"success": true
}
解析json后获取到bindAccount和bindPassword模拟登录
}
},
timeout: 20000,
error: function(XMLHttpRequest, textStatus, errorThrown) {
//单点登录接口异常处理
console.log(XMLHttpRequest)
}
});
}
Http地址提供给平台
Web程序地址
Web程序地址为Web程序入口的Http地址。
C/S程序地址
C/S程序没有Http地址,需要通过注册表方式生成Http地址。
注册流程如下:
新增注册表;
通过调用注册表并传参,启动exe程序;
exe程序打开时获取参数(账号account,密码password)内部处理登录。
注册表文件配置参考
注册文件参考
平台方(IT管理员)
分配接入系统账号
参考文档:《门户统一授权操作手册》。
第三方系统平台注册
给第三方系统分配appid
说明:
功能编码(appid):范围2000-3000;
功能名称:第三方系统名称;
多视图模式:默认否;
功能级别:设置成2;
父级编码:设置成0;
功能序号:显示顺序,建议设置成功能编码;
SSO标志:是否为单点登录系统,设置成是;
SSO密码类型:第三方系统获取单点登录服务时密码的加密类型。
第三方系统服务地址注册
BS程序配置访问网页地址
CS客户端程序需要配置生成注册文件的后的访问地址
第三方系统服务地址配置
说明:将第三方系统的服务地址配置到对应的【功能与视图配置】中的链接地址中,程序类别根据实际程序类型选择。
Web程序Http地址配置:
C/S程序注册表配置完成后Http地址配置:
业务用户
其他接口
病人360全景视图
接口
Http地址: | |
---|---|
方法说明 | 直接在地址后面拼接参数 |
入参 | 参数值说明 |
patientid | 病人ID |
clinicsn | 就诊流水号 |
viewcode | 固定视图编码:10101010 |
accountcode | 门户登录人员编码(可选项) |
org_code | 医疗机构代码 |
clinic_class | 就诊类别 |
示例
示例地址(ip地址根据实际情况修改):
病历夹
接口
Http地址: | |
---|---|
方法说明 | 直接在地址后面拼接参数 |
入参 | 参数值说明 |
patientid | 病人ID |
clinicsn | 就诊流水号 |
viewcode | 固定视图编码:10101020 |
accountcode | 门户登录人员编码(可选项) |
org_code | 医疗机构代码 |
clinic_class | 就诊类别 |
示例
示例地址(ip地址根据实际情况修改):
爱答
全文检索
Http地址: | http://127.0.0.1:9888/ds/search/query?index=&keyword=&offset=&limit |
---|---|
方法说明 | Post传json参数 |
入参 | 参数值说明 |
index | index索引名称 值有三种:cdr(数据中心);manager(行政管理);repository(知识库) |
keyword | 查询关键字 |
offset | 分页查询参数,如果为每页10行,则第一页传入0,第二页传入10; |
limit | 分页查询参数,每页多少行 |
接口说明
Http地址: | |
---|---|
方法说明 | 直接在地址后面拼接参数 |
入参 | 参数值说明 |
deptname | 科室名称(用于对当前科室相关文档的快速检索) |
TOP10关键字
Http地址: | |
---|---|
方法说明 | 不需要传参数,直接调用 |
入参 | 参数值说明 |
科室相关临床路径信息
Http地址: | |
---|---|
方法说明 | POST传参 |
入参 | 参数值说明 |
deptname | 科室名称(可选项) |
示例
示例地址(ip地址根据实际情况修改):
http://192.168.100.98:8080/cdss/elasticsearch.html?deptname=儿童抚触水疗室
二级页面
Http地址: | |
---|---|
方法说明 | 直接在地址后面拼接参数 |
入参 | 参数值说明 |
accountcode | 门户登录编码(可选项) |
url | 文档地址(传入参数需要用进行编码encodeURIComponent() ) |
title | 文档标题 |
示例地址(ip地址根据实际情况修改):
爱答资料外部索引
文档注册
Http地址: | |
---|---|
方法说明 | elasticsearch索引(Post传入Json参数) |
入参 | 参数值说明 |
index | index索引名称 值有三种:cdr(数据中心);cp临床路径;manager(行政管理);repository(知识库) |
type | 文档类别 |
docCode | 文档编码(文档唯一号) |
docTitie | 文档标题 |
docSummary | 文档摘要 |
docKeyword | 文档关键字 |
docContent | 文档内容 |
docUrl | 文档可访问地址 |
imageUrl | 影像文件地址 |
出参 | 参数说明 |
无 |
外部资料分享
接口说明
Http地址: | http://127.0.0.1:8080/cdss/share.html?accountcode=sa&contentype=2&content=1&title=12 |
---|---|
方法说明 | 外部调用分享接口 |
入参 | 参数值说明(所有参数都是必填) |
accountcode | 门户登录账号(可选项) |
contentype | 分享内容类型 值有三种:1(文档http地址);2(字符串文本);3(http超链接); |
title | 分享内容标题 |
content | 分享内容(传入参数需要用进行编码encodeURIComponent() ) |
出参 | 参数说明 |
无 |
示例
报表外部调用
参数说明
Http地址: | |
---|---|
方法说明 | 直接在地址后面拼接参数 |
入参 | 参数值说明 |
文件名称 | 已经定义好的报表名称 |
org_code | 组织机构代码 |
doccode | 文档编码 |
调用示例
示例地址(ip地址根据实际情况修改):
http://192.168.100.98:8080/report/ureport/preview?_u=file:laboratory.ureport.xml&doccode=20180925
日程安排
Http地址: | 192.168.100.98:8080/cdss/fullcalendar.html?accountcode=sa&stratime=2019-07-12%2008:00:00&endtime=2019-07-12%2008:00:00&title=手术排班&place=手术室&content=手术安排&epmlist=000026,000043&deptlist=0&out=1 |
---|---|
方法说明 | 消息流转详情 |
入参 | 参数值说明 |
accountcode | 门户登录账号 |
stratime | 日程开始时间 |
endtime | 日程结束时间 |
title | 日程标题 |
place | 地点 |
content | 日程内容 |
epmlist | 人员编码(多个用逗号“,”分割,例:000026,000043) |
deptlist | 群组列表(对应科室编码,多个用逗号“,”分割,0表示全院) |
out | 外部调用标志(第三方调用必填项 值为1) |
示例:
表单外部调用
同报表调用
消息流转
列表查询
示例:
消息流转查询
示例:
流程查询
示例: