- 电子病历组与CA厂商做好接口对接及相关功能
- 基础平台更新CA登录功能,提供CA状态判断方法dhcsys_getcacert
- 应用产品组修改相关签名判断代码。如医生站,护士站,药房,急诊。
二.CA签名示例
function signOrder(){
// 01: IE下调用基础平台CA登录状态方法
// 如果需要认证,又没登录过CA证书,则会自动弹出CA登录界面
var rtn = dhcsys_getcacert();
// rtn={IsSucc:true,ContainerName:""}
if (!rtn.IsSucc){
// rtn.IsSucc==false
alert("需要CA证书登录,但没有CA登录。");
return ;
}
if (rtn.ContainerName==""){
alert("当前无需CA认证");
SaveOrder(); // 保存医嘱
}else{
var toSignData = "待签名数据";
// 03: 对签名原文做Hash操作
var hashData = rtn.ca_key.HashData(toSignData);
// 04: 签名
var signData=rtn.ca_key.SignedData(hashData,rtn.ContainerName,AdmId);
if (signData ==""){
alert("SignedData 方法失败 签名值为空!");
return ;
} else {
//调用 ##Class(CA.DigitalSignatureService).Sign()方法保存签名数据
}
}
}
三. dhcsys_getcacert方法说明
dhcsys_getcacert方法存在websys.js中,主要用于通过当前科室或用户信息判断是否需求CA签名,如需要签名则判断是否已CA登录过,如果未登录过CA则弹出CA登录框登录,登录成功后返回签名证书信息及对象。
第一入参 Options
-
- isHeaderMenuOpen是否顶层打开弹框,默认true。false时表示当前界面打开
-
- SignUserCode期望签名用户HIS工号,默认””,会要求证书用户与参数匹配
-
- signUserType默认空表示签名用户与当前HIS用户一致,”ALL”时不验证用户是否相同
-
- notLoadCAJs默认0表示CA登录成功后动态初始化环境到头菜单,1时不改变
-
- loc科室描述,默认当前登录科室,用于切换科室时传入目标科室
-
- callback 默认undefined 。可传function,作为关闭弹窗或登录成功的回调函数,入参为object
第二入参 logonType 登录类型, 默认””表示系统默认或上次登录签名方式,也可强制”UKEY”,”PHONE”,”FACE”,”SOUND”
第三入参singleLogon是否单登录方式,默认1表示弹签名方式,0表示弹出已配置的所有签名方式
第四入参forceOpen强制弹签名窗口,默认0表示没登录过则弹出,登录过不弹,1弹制每次都弹出。
使用IE浏览器可得到正确的返回值,如果使用非IE浏览器则需要使用回调方式使用,且返回值与回调方法的入参都是Object类型格式如下
-
- IsSucc:业务顺序时返回true,如无须CA验证或CA验证成功。false时需要CA验证但验证失败
- ContainerName: 证书容器名,对于UKey证书是UKey的硬件ID,对于手机证书是虚拟的容器名(一般是用户唯一标识和证书唯一标识合并在一起的字符串)
- IsCA:是否CA证书登录。true:须CA证书登录,false:当前无须CA证书登陆
- UserName:此次CA登录对应的HIS用户工号
- varCert:Base64格式CA证书
- CALogonType:某种登录方式代码。如:’UKEY’,’PHONE’,’FACE’,’SOUND’。分别对应Ukey登录,手机扫码登录,人脸识别登录,声纹登录。
- CAUserCertCode:CA用户唯一标识
- CACertNo:CA证书唯一标识
- CAToken:证书登录票据,PHONE登录才有
- ca_key:当前证书登录方式对应的签名对象。包含HashData方法、SignedData方法、Login方法等
四. 获得服务器端签名图片方法
s imageBase64 = ##class(CA.BICAService).GetImageByUserID(userID)