乐于分享
好东西不私藏

别再手动登录了!国家传染病前置软件单点登录,一个 BAT 脚本搞定

别再手动登录了!国家传染病前置软件单点登录,一个 BAT 脚本搞定
信息科接口实战
  国家传染病前置软件单点登录怎么实现?
         从接口文档到 BAT 脚本,一次把 secretKey 获取、登录参数拼接、常见报错排查讲清楚。       
一、读者的问题
         有读者咨询:国家传染病前置软件已经安装在本机,文档里提供了 getSecretKey 和 login 两个接口,如何通过脚本实现单点登录?       
         简单来说:先用授权 license 获取一次性或临时的 secretKey,再带着 secretKey、用户 id、机构编码、科室编码调用登录接口。
二、接口调用流程
第 1 步:获取 secretKey
接口地址一般为:         
           http://127.0.0.1:12306/getSecretKey?license=授权码        
第 2 步:调用 login 登录
           带上 secretKey、用户 id、机构编码 orgCode、科室编码 deptCode,POST 到登录接口。         
           http://127.0.0.1:12306/login         
三、BAT 脚本实现
         下面是一个最小可用版本:启动前置软件、等待服务起来、获取 secretKey,然后调用登录接口。       
         依赖说明:Windows 需要能使用 curl;如果使用 jq 解析 JSON,需要提前安装 jq 并加入 PATH。    
@echo offtaskkill /F /IM datahub.exestart "" D:\tools\datahub_win64\datahub.exetimeout /t 5 /nobreak >nulREM Step 1: 获取 secretKeyfor /f "delims=" %%A in ('curl -s "http://127.0.0.1:12306/getSecretKey?license=XXX" ^| jq -r .secretKey'do set secretKey=%%AREM 检查是否成功获取 secretKeyif "%secretKey%"=="" (    echo [ERROR] Failed to get secretKey    exit /b 1)echo %secretKey%REM Step 2: 使用 secretKey 调用 /login 接口curl --location "http://127.0.0.1:12306/login" --header "Content-Type: application/json" ^--data "{\"secretKey\": \"%secretKey%\",\"id\": \"XXX\",\"orgCode\": \"XXX\", \"deptCode\": \"XXX\"}"
四、参数从哪里来?
license
医院机构对应的软件授权码,用于换取 secretKey。
id
用户 ID,uaams_user_app表的 user_id前置机系统生成的,这也是这个系统鸡肋的地方之一,需要将该表信息同步到his。
orgCode
机构编码,config.properties 的 reportOrgCode(部署时https://59.255.31.78:8888/gateway.html#/login 下载的
deptCode
科室编码,uaams_user_app表的 department
五、常见问题排查
1. secretKey 为空
           优先检查 datahub.exe 是否启动、12306 端口是否监听、license 是否正确。         
2. jq 不是内部或外部命令
           说明没有安装 jq,或者 jq.exe 没有加入 PATH。可以改用上面的 PowerShell 版本。         
3. login 接口返回失败
           检查 id、orgCode、deptCode 是否匹配。特别是用户是否有该机构、该科室权限。         
4. BAT 中文乱码
           文件建议保存为 UTF-8;脚本开头保留 chcp 65001。老系统如仍乱码,可改为 ANSI 保存。         
六、生产环境建议
         这个脚本适合测试和本机快速调用。正式使用时,建议做到以下几点:       
1. 不要把 license、用户 ID、机构编码直接暴露到公开文档或代码仓库。
2. 建议把参数放到单独的 config.ini 或环境变量中,方便维护。         
 3. 调用失败时记录日志,方便排查接口、端口、参数、权限问题。         
4. 单点登录只应在授权范围内使用,不要绕过系统权限控制。         
写在最后
         国家传染病前置软件的单点登录,本质上不是复杂开发,而是把接口文档里的两个步骤自动化:       
         获取 secretKey → 组装登录参数 → 调用 login 接口       
         咨询过很多医院,前置软件大都是公卫老师在使用,HIS基本都是沿用之前的报卡模式。有种不祥的预感,疾控会强推前置软件报卡,拭目以待吧。