原有的自动同步仅依赖后端 SyncTaskService(02010083)的"敲门式"触发:它只周期性调用 02010083(RunScheduledTasks),由 IRIS 后端根据 BS_HISSyncConfig 判定并执行同步。它本身不构建业务 session、不调用具体业务接口 02010067、不感知机构与同步配置。原先配套的桌面触发程序 HISAutoSyncService 已从本项目移除,现由本方案小程序承担业务侧同步。
业务侧现在需要一个独立的小程序(桌面端),直接面向 DRG 平台做"按机构 + 按配置"的数据同步,并具备可运维的托盘与日志能力:
01010064(医疗机构信息)拿到机构主数据,并据此构建 session(session 中的医疗机构字段全部来自 01010064 返回值)。02010079(GetSyncConfig)拿到该机构的同步配置(syncType/frequency/scheduledTime/lookbackDays/enabled)。02010067(GetInpatientData 住院数据同步),调用时必须带 session。DRGInterfaceClient/(.NET Framework 4.8 WinForms,无第三方 NuGet 包,作为已移除的 HISAutoSyncService 的替代程序):
NotifyIcon:最小化到托盘、双击还原、右键菜单(打开主界面 / 立即执行一次 / 打开日志 / 退出)。TextBox,初始值取自 appsettings.json 的 Endpoint,操作员可随时修改;每次调用前校验非空,空则提示"接口地址不能为空"并中断)+ 机构下拉框(来自 01010064)+ 配置展示区(来自 02010079)+「加载机构」「加载配置」「立即执行一次」「开始调度」「停止调度」「注册任务计划」按钮 + 内嵌日志面板。DRGInterfaceClient.log,记录每次接口调用的接口码、HTTP 状态码、耗时(ms)、返回摘要/错误,支持界面内查看与打开日志文件。DrgApiClient.cs):
01010064 QueryHospitalInfo:拉机构列表,填充下拉框;返回项含 id/hospCode/code/descripts/MedinsLv。02010079 GetSyncConfig:按 hospCode 拉同步配置并展示。02010067 GetInpatientData:带完整 session 调用,参数 admID=''、hospID=hospCode、stDate/endDate(按 syncType+lookbackDays 计算)、SynFlag。CallAsync(code, params, session):POST http://127.0.0.1:52773/csp/drg/sysInternalMutiple,Header Authorization: Basic X1NZU1RFTTpwcnlrQDIwMjA= + Content-Type: application/json,请求体 {"code","params":[{}],"session":[{}]}。SessionBuilder.cs):
01010064:hospYBCode=code、hospCode=hospCode、hospDesc=descripts、hospID=id、medinsLv=MedinsLv。userID/userName/locID/locDesc/sessionID/...)来自 appsettings.json 的系统默认值。02010079/02010067)调用均被拦截并提示"请先选择医疗机构"。02010067(按 02010079 配置计算日期区间)。02010079 的 frequency 启用调度(满足"根据 02010079 配置设置定时调用任务"):hourly:程序内整点轮询——程序常驻托盘,内部定时器在下一个整点首次触发、之后每小时整点调一次 02010067(不注册 Windows 任务)。daily/weekly:外部 Windows 任务计划——以 schtasks 注册计划任务,操作为以 --sync 无头参数重新启动本程序。manual:不启用自动调度,仅手动「立即执行一次」。--sync 模式:供 daily/weekly 计划任务触发;读取 appsettings.ScheduledHospCode(按机构 code 医保编码匹配),完成"加载机构→构建 session→加载配置→调 02010067"一次后退出(退出码 0/1)。drg-interface-client:DRG 接口客户端小程序(桌面托盘程序)。负责从 01010064 加载机构、02010079 加载同步配置、构建业务 session,并按需调用 02010067 完成住院数据同步;支持托盘驻留、本地日志查看,以及经 Windows 任务计划程序驱动的外部定时调用。DRGInterfaceClient/(约 1 个 .csproj + 6~8 个 .cs 文件),依赖 .NET Framework 4.8(Windows 系统自带,免安装运行时),无第三方 NuGet 包。本项目原 HISAutoSyncService 已移除,本程序为其替代。01010064/02010079/02010067 三个既有接口)。schtasks 注册计划任务(程序内「注册任务计划」按钮自动完成)。127.0.0.1:52773(可改 appsettings.json 指向 172.16.2.15:52773);本地日志位于程序目录 DRGInterfaceClient.log。