User.BSDRGQCRule.cls(SqlTableName=BS_DRGQCRule),字段含 RuleCode(RuleCode 唯一索引)/RuleName/RuleDesc/RuleType/CheckerType/FieldName/CompareField/Operator/ThresholdType/ThresholdValue/RuleExpr/SuggestValue/IssueLevel/IssueCategory/MDCCode/ADRGCode/DRGCode/IsActive/SeqNo,继承 %Persistent+%XML.Adaptor+src.util.DynamicObject.Adapter,同构 BSDRGWarningRule 范式zPerformQCCheck:改为 SELECT * FROM BS_DRRGQCRule WHERE IsActive='1' ORDER BY SeqNo 循环,调用 DispatchCheck 分发,issue 写入 BS_DRGQCIssue(保持原 IssueType/IssueLevel/IssueCategory 映射)zDispatchCheck(checkerType, ruleRow, mr) 分发到 5 个 handlerzCheckRequired(01)/zCheckCompare(02)/zCheckRange(03)/zCheckDict(04 校验 ICD10/ICD9CM3 与性别匹配)/zCheckExpr(05)zEvalExpression(expr, mr):白名单校验,禁止 $system/^ 全局引用,间接执行表达式求值zQueryQCStats:返回 totalCount/pendingCount/processedCount/typeStats/levelStats/deptStats(原仅 type/level)zSaveQCRule(postObj)(接口 02010306):保存/修改规则、切换 IsActive,参数顺序 [ruleCode, ruleJson, isActive]frontend/src/api/qc.ts:performQCCheck(02010301)/queryQCIssues(02010302)/processQCIssue(02010303)/queryQCStats(02010304)/saveQCRule(02010306),params 数组顺序严格对应后端 $lgpages/QC/Issues.tsx:克隆 Center.tsx 结构(KPI 卡片+Tab+高级搜索+合计行+处理弹窗),字段映射 issueType/issueLevel/issueStatus 用字典 Tagpages/QC/Dashboard.tsx:复用 Center KPI 卡片样式,5 卡片(总数/待处理/已处理/严重待处理/处理率)pages/QC/Check.tsx:输入病案ID 调 02010301,展示病案信息卡 + 按级别排序的问题列表(严重红/警告黄/提示绿)pages/QC/Rules.tsx:表格展示 BS_DRGQCRule(编码/名称/类型/引擎/字段/级别/启用Switch/排序/操作),Switch 启停调 02010306,新增表达式规则表单/qc/dashboard /qc/issues /qc/check /qc/rules 与菜单(父菜单"病案质控"),接入 HBButtonAuth 权限