头菜单配置调用EXE程序
业务系统中经常要打开友商EXE系统,且要传递参数,以下演示通过配置实现头菜单打开EXE系统。
一.新建菜单选择EXE程序

二.菜单信息填写

- exe路径为要调用程序的本地路径:
如:%PROGRAMFILES%/Google/Chrome/Application/chrome.exe
如:%LOCALAPPDATA%/Google/Chrome/Application/chrome.exe
如:%PROGRAMFILES%/Internet Explorer/iexplore.exe
如:calc.exe注:统一使用/来分割目录
注:需要医院信息部门或第三方在客户端电脑上将需调用的exe文件统一安装到对应路径下 - 表达式说明
作用是为传给Exe程序传递参数。
如:"//www.hisui.cn?&curUserCode=${SessUserCode}&curRegNo=${RegNo}&curMRNo=${MRNo}&curHospId=${SessHospId}"
如:"&admNo=${EpisodeId}&admTimes=${AdmTimes}"
如:"##class(web.DHCDocService).GetLinkEmrArgs(${EpisodeId},& quot;${SessUserCode}& quot;)"
如:BASE64(${IDCardNo})
如:EscapeURL(${PatName})20230211增加注: 表达式框中值是用双引号
"引起来的。${x}实际是占位符,支持任意字符串内容
注:方法返回参数,且二边双引号不可省略
注:示例中SessUserCode入参为字符串,所以二边加& quot;得到双引号
注:表达式二边带双引号会前台js运行。不带双引号会后台解析菜单时运行
注:支持对某参数进行BASE64 - 【是否与病人相关】说明,勾选时则表达式可以传入与病人/就诊相关的参数。如果与病人无关,可以传入与Session相关的信息。
三.表达式说明(占位方式仅支持头菜单)
点击右边小图标,可以修改及查看表达式。

参数名列表示exe参数名,参数值会在运行时生成对应值。
在参数值框中输入${后会自动弹出提示列表可便选择对应值。
"&UserName=${SessUserName}"

表达式可以直接编写M代码
""_$p(^SSU("SSUSR",%session.Data("LOGON.USERID")),"^",21)_",1,DOCTOR"
// 类方法内可以使用%session取值,Quit出字符串
""_##class(BSP.PAT.SRV.MenuArg).GetLisArg()
四. 测试效果
- 如果配置菜单时与病人相关,进入刚配置的菜单会提示【请先选择患者的就诊记录】

- 选中病人点头菜单效果

五.功能实现解释
- 实际是使用ActiveX或医为客户端管理程序调用cmd,以cmd运行命名。如:
chrome.exe https://www.hisui.cn?a=1&b=2。所以可以使用此功能打开三方医疗软件并传递病人信息。 - 只支持头菜单功能
javascripts函数中linkAdmExp表示与病人相关,linkSysExp表示与病人无关- 功能只支持iMedical8.4及以上版本

