HIS 住院患者接口(code=05900014,由后端接口服务 02010067 → src.DRG.HISData.HisDataService.GetInpatientData 调用)的返回结构近期扩展,在原有患者就诊信息、诊断(diseInfo)、手术(oprnInfo)基础上,每条就诊记录新增了 feeInfo[] 住院费用明细数组。
现状问题:
02010067 只解析并落库了就诊主表(BS_HIS_PatAdm)、DRG 参数(BS_HIS_DRGParams)、诊断(BS_HIS_DiseInfo)、手术(BS_HIS_OprnInfo),feeInfo 被整体丢弃,费用明细在 DRG 系统中无任何留存。02010068(GetInpatientFeeData)已在 src.DRG.HISData.Interface 中声明但方法体为空,对应的费用明细后端表类也尚未创建。以本次样例报文(2 个住院就诊、387 条费用明细)为基准,需要补齐"费用明细解析 + 落库"这一环,使 DRG 系统具备完整的就诊—诊断—手术—费用数据链。
新建后端表类 User.BSHISFeeDetail(SqlTableName = BS_HIS_FeeDetail)
feeInfo 数组元素的全部 key,已按样例报文全量枚举),覆盖医保结算清单明细命名(feedetl_sn、medins_list_codg、det_item_fee_sumamt、pric、cnt、fee_ocur_time…)及 HIS 私有扩展字段(ecCode/ecDesc、exp_content、localDrInsuCode、outApartFlag 等)。FeeDetailJson 冗余列保存单条明细原始 JSON,防止 HIS 后续扩展字段丢失,也便于排查对账。Deleted/DeleteDate/DeleteTime、AdmDr(外键 → User.BSHISPatAdm)、CreateDate/CreateTime。(AdmDr, FeedetlSn) 作为业务唯一键(唯一索引),支撑增量 Upsert。实现接口服务 02010068 → src.DRG.HISData.HisDataService.GetInpatientFeeData
params 中直接传入 HIS 原始返回(患者数组或 feeInfo 数组),本接口只负责解析 + 校验 + 入库,避免对 HIS 的重复调用。feeInfo 缺失/为空的就诊直接跳过;逐条映射 51 个字段并写入 FeeDetailJson;金额/数量/单价做数值化归一化(det_item_fee_sumamt、pric、cnt 在 HIS 返回中存在字符串与数字混用的情况)。(AdmID, feedetl_sn) 增量 Upsert —— 已存在则更新金额/数量/价格等易变字段,不存在则插入,不做整就诊删除重建。src.util.operatetable.Insert/Update、..LogSyncError、..WriteSyncLog 工具方法,错误码沿用 04000007 体系。{errorCode, errorMessage, result:{totalCount, successCount, failedCount, admCount}}。BS_HISSyncConfig 增加费用同步开关 FeeFlag
'Y';同步配置查询 02010079/保存 02010080 透传该字段;HisDataService.GetSynConfig 增加 feeFlag 输出。02010067(GetInpatientData)在保存就诊数据后,按 FeeFlag 决定是否将本次已拿到的 feeInfo 直接转交费用同步逻辑落库——复用同一次 HIS 请求,零额外 HTTP 调用。02010068 保持可独立调用(前端菜单/调度/其它后端流程均可直接喂数据)。接口注册与部署脚本
scripts/insert_his_fee_sync_interface.sql:CB_MapInterface 注册 02010068(ClassName=src.DRG.HISData.Interface、MethodName=GetInpatientFeeData、ServiceType=A)。scripts/alter_his_sync_config_feeflag.sql:为既有 BS_HISSyncConfig 表补列并回填 'Y'。his-fee-detail-sync:HIS 住院费用明细同步与落库。负责解析 HIS feeInfo 明细数组、按 (AdmID, feedetl_sn) 增量写入 BS_HIS_FeeDetail 表,并对外提供独立接口服务 02010068;同时定义 BS_HISSyncConfig.FeeFlag 开关以控制 02010067 是否顺带同步费用明细。his-data-sync-consolidation(既有 spec):新增需求——GetInpatientData 在完成就诊/诊断/手术落库后,SHALL 依据 FeeFlag 开关将当次 HIS 返回中的 feeInfo 一并持久化,使 HIS 数据同步链路覆盖费用明细。src/src/User/BSHISFeeDetail.cls(新建表类,约 60 个属性 + 索引)。src/src/DRG/HISData/HisDataService.cls:GetInpatientFeeData(新建,约 150 行)、SaveInpatientFeeData(新建,约 200 行)、GetSynConfig(改造,增加 feeFlag)、GetInpatientData(改造,末尾按开关调用费用保存)。src/src/DRG/HISData/SyncTaskService.cls:GetSyncConfig/SaveSyncConfig 增加 FeeFlag 字段透传。src/src/User/BSHISSyncConfig.cls:增加 FeeFlag 属性(仓库内该类文件与生产表存在字段偏差,需同步核对生产表实际列)。BS_HIS_FeeDetail 及 (Adm_Dr, FeedetlSn) 唯一索引、AdmID 索引。BS_HISSyncConfig 增加 FeeFlag 列并回填。scripts/insert_his_fee_sync_interface.sql、scripts/alter_his_sync_config_feeflag.sql(新建)。frontend/src/pages/HIS/SyncTaskConfig.tsx 增加"费用明细同步"开关(对齐既有 synFlag/warningFlag 两个 Switch 的写法),frontend/src/api/hisData.ts 类型增加 feeFlag。02010067 的分组/预警主逻辑不变。02010068 此前为空实现,无既有调用方;FeeFlag 默认 'Y' 但仅新增落库动作,不影响 02010067 既有返回结构。User.BSHISFeeDetail、User.BSHISSyncConfig、src.DRG.HISData.* 后生效。