系统与不同CDSS友商做对接时,初始化cdss方式不同,为了统一初始化及统一获得cdss对象的方法,编写此说明。
首先需求拿到CDSS友商的服务信息,如服务器IP,应用路径,密钥。然后维护到临床决策支持服务配置界面
// 根据院区,科室,用户的配置引入对应CDSS资源,
do ##class(CF.BSP.SYS.SRV.CDSSService).InitCDSSJS(CTLodId,UserId) //代码写到csp中
会生成引用js或div的代码
一般在框架界面引入即可
如果cdss功能只是诊疗使用,则诊疗界面引入即可
如果cdss功能只是病历使用,则病历界面引入即可
initWebsysCDSS(type)
)先找到引用资源对应的window对象,然后调用initWebsysCDSS(type)
即可初始化对应类型的CDSS窗口,type为维护界面中代码
//如果是在头菜单引入CDSS情况, win示具体情况而定
var win = websys_getMenuWin(); // 获得顶层框架window对象
if (!win.initWebsysCDSS && websys_getMenuWin_origin) {
win = websys_getMenuWin_origin()
}
win.initWebsysCDSS('mediway'); // 会在顶层框架上初始化CDSS
// 诊疗界面引入cdss情况下,在诊疗界面调用js方法
initWebsysCDSS('mediway');
getWebsysCDSS(type)
初始化完成后与CDSS交互时,需要拿到CDSS对象,可以使用getWebsysCDSS(type)
来获得对象CDSS对象,type为维护界面中代码
var mayson = getWebsysCDSS('mayson');
// 使用cdss来监听cdss消息,或发送消息给cdss
——– 医为示例 ———————–
/// 医为示例
var cdss = getWebsysCDSS('mediway');
// 根据交互操作服务编码和具体的消息流进行相应的交互操作
// action为必填值,用于区分不同应用场景
// json 类型为标准消息请求流传给该参数
cdss.TriggerDHCDSS(action,json);
// 监听 dhcdss 开立医嘱/诊断数据
cdss.CopyDataForCDSS = function (Type,Data){
//Type 值为 ORDER、DIAG
}
//监听 dhcdss 写回病历数据
cdss.MonitorWriteData = function (Data){
//Data 为 String 类型文本
}
——– 惠每示例 ———————–
/// 惠每示例
var cdss = getWebsysCDSS('mayson');
/**
* 请求智能推荐
* @param maysonBean(⾮必填)如果存在则重置智能推荐对象,区别于setMaysonBean⽅法,会影响所有已设置过的请求参数
* @param callback 推荐请求完成回调(⾮必填)
*/
cdss.ai(maysonBean, callback);
/*
监听cdss消息
[{
//当前数据类型(诊断,检查,药品,检查解读,治疗⽅案)
type: '',
items: [{
id: '', // 数据编号
text: '' //数据⽂本
}]
}]
*/
cdss.listenViewData = function(currentEntity){
// currentEntity 当前cdss窗口中点击数据对象
}
———- 同方知网 —————–
由于同方知网cdss监听消息与发送消息,不是同一对象,所以提供二个方法来获得不同的cdss对象
// 发消息给【同方知网cdss】窗口
var tocdss = getWebsysToCDSS('cnki');
var objcase = { type: type, jsonData: json };
tocdss.targets["CNKI_CDSS"].send(JSON.stringify(objcase));
// 监听【同方知网cdss】消息
var cdss = getWebsysCDSS('cnki');
cdss.listen(function (msg) {
// 得到cdss消息
if (msg != undefined && msg != "" && msg != "undefined"){
msg = JSONparse(msg);
var type = msg.type;
var value = JSONstringify(msg.jsonData);
}
});
———- 深圳智慧医学CDSS —————–
由于深圳智慧医学cdss监听消息与发送消息是通过本地 ws服务,所以提供二个方法来与cdss对象交互
// 发消息给【智慧医学cdss】窗口
var cdss = getWebsysToCDSS('zhyx');
var loginParam = {
//wsid不用传,平台已封装好
//project:'CDSS-CHECK',默认为'CDSS-CHECK'表示业务接口决策校验,传'CDSS-JS'表示决策大框(静态知识库)
funcCode:'SET_LOGIN_USER',
msgJson:{
doctor_num:"skys",
doctor_name:"蛇口医生",
}
};
cdss.send(loginParam); //登录cdss
cdss.listen(function(msgJson){
console.log(msgJson); // 监听CDSS的返回数据
});
// 其它业务参数按友商入参传输
———– 嘉禾美康 ———–
// 发消息给【嘉禾美康cdss】窗口
var cdss = getWebsysCDSS('jhmk');
var loginParam = {};
cdss.cdssSendData("{业务场景json字符串}",""); //会自动登录
// 业务场景参数按友商要求传入
————腾讯————
// 发消息给腾讯cdss
// send方法入参分别为:腾讯请求URL,data数据(不带header节点),请求回调方法
var cdss = getWebsysCDSS('tencent');
cdss.send(
'/cgi-bin/v1/Diagnosis/RationalDrugServer/RationalDrugServant/PrescriptionReview',
{
"request_case": {
"case_type": 1,
"patient_baseinfo": {
"name": "张三",
"sex": "female",
"age": "24y",
"birth_place": "",
"live_place": "",
"height": "",
"weight": "",
"patient_id": "",
"id_card": "",
"birth_day": "2020-01-01 00:00:00"
}
}
},
function(rtn){ console.log(rtn); }
)
// 监听腾讯cdss回写事件
cdss.listen(function(evt){
console.log(evt);
})
initWebsysCDSS与getWebsysCDSS方法增加类型入参,以便处理同一界面引入多个CDSS服务。
2020-06-22
initWebsysCDSS与getWebsysCDSS方法不传入参,则默认处理最后一次引入的CDSS服务
2020-06-22
// 使用第1步引入CDSS资源后,可以使用以下方法获得所有CDSS服务配置
var CDSSConfig = getWebsysCDSSConfig();
///未开启返回:
/// -1^未发现CDSS科室配置接口
/// -2^该科室或用户未开启CDSS服务
/// -100^未开启CDSS服务
///开启则返回:
/// 1^第一个服务信息^第二个服务信息^第三个服务信息
/// 1^rowid,cdss服务代码,cdss服务描述,地址,服务版本,参数,启用时间^rowid,cdss服务代码,cdss服务描述,地址,服务版本,参数,启用时间
Set CDSSServerInfo = ##class(CF.BSP.SYS.SRV.CDSSService).GetEnableCDSS(CTLocId , UserId)
访问量: 509808