HISUI
iMedical签名功能
2021年01月12日 16时56分
  1. 电子病历组与CA厂商做好接口对接及相关功能
  2. 基础平台更新CA登录功能,提供CA状态判断方法dhcsys_getcacert
  3. 应用产品组修改相关签名判断代码。如医生站,护士站,药房,急诊。

二.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)

下一篇:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

访问量: 380080