系统 SHALL 为接口服务 02010067(HisDataService.GetInpatientData)提供可选的异步受理模式,由入参 params[0].asyncFlag 控制。当 asyncFlag 未显式传入时,SHALL 依次回退取 BS_HISSyncConfig.AsyncFlag、再回退取 'N'。
当 asyncFlag = 'N' 时,系统 SHALL 完全保持现有同步执行语义与返回结构,result 仍为 HIS 原始数组,不得做任何裁剪。
当 asyncFlag = 'Y' 时,系统 SHALL 在毫秒级返回受理回执,不得等待同步完成。
02010067 且 params[0].asyncFlag = 'Y'BS_HISSyncTask 任务记录(Status='pending'){errorCode:'0', result:{taskId:<任务号>, status:'pending'}}02010067 且未传 asyncFlag,且 BS_HISSyncConfig.AsyncFlag = 'N'result 为 HIS 原始数组)02010067 且未传 asyncFlag,且 BS_HISSyncConfig 无对应配置记录asyncFlag 回退为 'N' 并同步执行系统 SHALL 维护 BS_HISSyncTask 任务表,任务状态在 pending / running / success / partial / failed 之间流转,并在执行过程中持续回写进度计数(admTotal、admProcessed、feeTotal、feeProcessed、successCount、failedCount、skippedCount)与阶段(phase:fetch / saveAdm / saveFee / done)。
Status 置为 running、Phase 置为 fetch、写入 StartTimeadmProcessed / feeProcessed 与 successCount / failedCountfailedCount = 0 且无异常Status 置为 success、Phase 置为 done、写入 EndTimefailedCount > 0 或 skippedCount > 0Status 置为 partial 并写入 ErrorMessage 摘要Status 置为 failed、ErrorMessage 记录异常摘要系统 SHALL 对相同的 (HospCode, StDate, EndDate, AdmID) 组合做并发去重:当已存在 pending 或 running 状态的任务时,SHALL 直接复用并返回既有 taskId,不得重复启动后台进程。
running 时再次提交相同机构与日期范围的同步请求taskIdsuccess / partial / failed系统 SHALL 提供接口服务 02010089(src.DRG.HISData.Interface.GetSyncTaskProgress → HisDataService.GetSyncTaskProgress),按 taskId 返回任务状态与进度。该接口 SHALL 为只读查询,不得触发任何同步动作。
02010089 传入一个 running 任务的 taskId{status, phase, admTotal, admProcessed, feeTotal, feeProcessed, successCount, failedCount, skippedCount, percent, startTime, errorMessage}percent 应为 0–100 的整数02010089 传入不存在的 taskIderrorCode 非 '0' 及对应错误提示,不得抛出异常系统 SHALL 识别并回收因后台进程异常退出而长期停留在 running 状态的任务,避免任务永久悬挂。
running 任务且其进度超过设定阈值(默认 30 分钟)无任何更新Status 置为 failed 并写入超时相关 ErrorMessage