DRG医保控费预警系统需要实时或定期获取HIS(医院信息系统)中的患者就诊数据,包括住院信息、诊断信息、手术信息、费用信息等,用于DRG/DIP分组、费用预警、医保控费等核心业务。
当前系统前端页面(DataSync.tsx、MedicalRecords.tsx)使用模拟数据,缺乏真实的HIS数据对接能力。HIS系统已提供REST API接口(如接口示例文件所示),采用统一的请求/响应格式,需要通过标准化的方式对接。
系统技术栈:
code(接口编码)、params(业务参数)、session(会话信息)Goals:
Non-Goals:
选择:采用「定时增量同步(每30分钟)+ 手动全量同步」的组合方式
备选方案:
理由:
stDate/endDate)拉取指定范围内的数据,效率高;全量同步用于初始化和历史数据补录(选择C)增量比对策略:
admDateTime(入院时间)作为增量时间窗口的依据最后同步时间作为stDate选择:在IRIS中创建独立的 DRG.HIS.APIClient 类,封装所有HIS接口调用
备选方案:
理由:
%Net.HttpRequest),无需外部中间件(排除C)API客户端核心方法:
CallInterface(code, params) -> %DynamicObject:通用接口调用方法GetInpatientData(stDate, endDate) -> %DynamicArray:获取住院患者就诊数据(接口编码:05900014)BuildSession() -> %DynamicObject:构建session对象(从配置表读取locID、hospID等)HandleError(response) -> %Status:统一错误处理选择:HIS接口数据直接映射到IRIS表,使用 admID(HIS就诊ID)作为唯一键,存在则更新,不存在则插入
备选方案:
理由:
admID唯一键保证幂等性核心数据表设计:
DRG_HIS_PatientAdm(患者就诊主表)
AdmID(HIS就诊ID)、PatID(HIS患者ID)PatName、PatSexCode、PatNo、PatMedicalNo、AdmDocDesc、AdmDateTime、AdmInDays、AdmDiag、InLocDesc、InWardDescAdmDateTime(增量查询)、PatMedicalNo(病案号查询)DRG_HIS_DRGParams(DRG分组参数表)
AdmID(关联患者就诊主表)PsnNo(医保个人编号)、InsuranceAreaCode(医保统筹区代码)、InsuType(医保类型)、MainDiagnosisCode、MainOperationCode、Sex、Age、TotalCost等drgParams.result 对象DRG_HIS_OprnInfo(手术信息表)
AdmID + OprnSn(手术序号)MainFlag(主手术标志)、OprnCode、OprnName、OprnDatedrgParams.result.oprnInfo 数组DRG_HIS_SyncLog(同步日志表)
LogID(自增)SyncType(full/incremental/manual)、StartTime、EndTime、Status(success/failed/partial)、TotalCount、SuccessCount、FailedCount、ErrorMessage、CreatedTime选择:改造现有 DataSync.tsx 页面,调用后端同步任务API,替换模拟数据
备选方案:
理由:
前端改造要点:
DataSync.tsx:调用 GET /api/his-sync/tasks 获取同步任务列表,调用 POST /api/his-sync/tasks/{taskId}/start 手动触发同步MedicalRecords.tsx:调用 GET /api/his-sync/patients?startDate=&endDate= 查询已同步的患者数据frontend/src/api/hisSync.js,封装所有HIS同步相关API调用选择:采用「接口层重试 + 业务层失败记录 + 告警通知」的分层错误处理策略
重试规则:
errorCode != 0:不重试,记录错误日志,人工介入告警机制:
风险:HIS系统升级可能导致接口返回格式变化,影响数据同步
缓解措施:
DRG_HIS_RawData 备份表),便于问题排查和数据修复风险:若HIS系统中某条记录的 admDateTime 被修正为更早日期,而该日期已在上次同步时间窗口之前,会导致数据遗漏
缓解措施:
stDate 向前回溯N天风险:日同步数据量增大(如多院区部署)时,频繁写入可能影响数据库性能
缓解措施:
DRG_HIS_PatientAdm 表建立合适索引,避免全表扫描风险:HIS接口需要正确的 session 信息(locID、hospID、fixmedinsCode等),配置错误会导致认证失败
缓解措施:
^DRG.HIS.Config("Session") 中,提供管理界面进行配置HIS接口的分页机制是什么?
HIS接口的认证方式细节?
sessionID 是如何获取的?是否需要定期刷新?刷新机制是什么?生产环境HIS接口地址和测试环境地址?
数据同步频率最终确认?
历史数据初始化范围?