Kaynağa Gözat

质控流程修改 demo版

zhaohan 6 ay önce
ebeveyn
işleme
387b6daa70

+ 4 - 0
ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/domain/bo/QualityControlRuleBo.java

@@ -1,9 +1,11 @@
 package org.ruoyi.domain.bo;
 
 import io.github.linpeilie.annotations.AutoMapper;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import jakarta.validation.constraints.*;
 import org.ruoyi.common.core.validate.AddGroup;
 import org.ruoyi.common.core.validate.EditGroup;
@@ -20,6 +22,8 @@ import java.util.List;
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = QualityControlRule.class, reverseConvertGenerate = false)
 public class QualityControlRuleBo extends BaseEntity {

+ 3 - 2
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/executor/QcRuleExecutor.java

@@ -7,9 +7,10 @@ import java.util.concurrent.atomic.AtomicInteger;
 public class QcRuleExecutor {
 
     /**
-     * 固定最大线程数 16,可根据需要动态调整
+     * 固定最大线程数 4,避免大模型 API 并发过高
+     * 可根据大模型服务承载能力调整:2/4/8/16
      * */
-    private static final int MAX_THREADS = 16;
+    private static final int MAX_THREADS = 4;
 
     /**
      * 线程池全局复用(避免频繁创建销毁)

Dosya farkı çok büyük olduğundan ihmal edildi
+ 778 - 189
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/MedicalRecordQc123Service.java


+ 169 - 0
质控流程说明.md

@@ -0,0 +1,169 @@
+# 医疗病历质控系统 - 新版流程说明
+
+## 📋 更新日期
+2025-10-19
+
+## 🎯 核心改动
+
+### 1. 数据库表更新
+`quality_control_rule` 表新增字段:
+- `rule_desc` - 规则描述
+- `qc_behavior` - 质控行为(common/specific)
+- `del_flag` - 删除标记
+
+### 2. 实体类更新
+`QualityControlRule.java` 新增字段:
+- `ruleDesc` - 规则描述
+- `qcBehavior` - 质控行为
+
+### 3. 质控逻辑重构
+`MedicalRecordQc123Service.java` 完全重写质控流程
+
+## 🔄 新版质控流程
+
+### 流程图
+```
+开始质控
+    ↓
+查询规则表 (quality_control_rule)
+    ↓
+过滤有效规则 (qc_type_list 不为空)
+    ↓
+按 qc_behavior 分类
+    ├─→ common 规则 (分开质控)
+    │       ↓
+    │   按 type 分组
+    │       ↓
+    │   逐个 type 执行规则
+    │       ↓
+    │   用 rule.ruleContent 查知识库
+    │       ↓
+    │   调用大模型质控
+    │       ↓
+    │   保存结果
+    │
+    └─→ specific 规则 (同时质控)
+            ↓
+        合并多个 type 的内容
+            ↓
+        用 rule.ruleContent 查知识库
+            ↓
+        调用大模型质控
+            ↓
+        保存结果
+            ↓
+        完成质控
+```
+
+## 📊 质控行为说明
+
+### Common 规则(分开质控)
+- **定义**: `qc_behavior = "common"`
+- **行为**: 规则对每个 type 分别质控
+- **示例**: 
+  - 规则A的 `qc_type_list = [0, 1, 3]`
+  - 执行3次质控:
+    1. 规则A + type=0的内容
+    2. 规则A + type=1的内容
+    3. 规则A + type=3的内容
+
+### Specific 规则(同时质控)
+- **定义**: `qc_behavior = "specific"`
+- **行为**: 规则对多个 type 的内容合并后一起质控
+- **示例**:
+  - 规则B的 `qc_type_list = [0, 1, 3]`
+  - 执行1次质控:
+    - 规则B + (type=0 + type=1 + type=3 的内容合并)
+
+## 🔢 Type 对应关系
+
+| Type | 病历部分 | 字段名 |
+|------|---------|--------|
+| 0 | 入院记录 | admission_note |
+| 1 | 首次病程记录 | first_course_record |
+| 2 | 病程记录 | course_records |
+| 3 | 阶段小结 | stage_summary |
+| 4 | 查房记录 | ward_rounds |
+| 5 | 会诊记录 | consultation_records |
+| 6 | 疑难病例讨论 | difficult_case_discussion |
+| 7 | 超长住院讨论 | long_stay_discussion |
+| 8 | 死亡病例讨论 | death_case_discussion |
+| 9 | 抢救记录 | rescue_records |
+| 10 | 手术记录 | surgery_records |
+| 11 | 检验报告 | lab_reports |
+| 12 | 检查报告 | exam_reports |
+| 13 | 医嘱记录 | orders |
+| 14 | 出院小结 | discharge_summary |
+
+## 🔍 知识库调用变化
+
+### 原来
+```java
+String ragResult = fetchMatchingRules(step.label);
+// 传入: "主诉记录不完整,不能支持第一诊断"
+```
+
+### 现在
+```java
+String ragResult = fetchMatchingRules(rule.getRuleContent());
+// 传入: 规则的 rule_content 字段内容
+// 返回: 该规则对应的正反例
+```
+
+## 💾 结果保存
+
+### Common 规则
+- 每个 type 保存一条结果
+- `qc_type` = 对应的 type 值
+
+### Specific 规则
+- 只保存一条结果
+- `qc_type` = qcTypeList 中第一个有效的 type
+
+## 🚀 多线程支持
+
+### 串行质控(默认)
+```java
+medicalRecordQc123Service.processAllUncontrolledRecords();
+```
+
+### 并行质控(推荐)
+```java
+medicalRecordQc123Service.processAllUncontrolledRecords(true);
+```
+- 使用 16 个线程并行处理多份病历
+- 理论提升 10-15 倍速度
+
+## 📝 提示词优化
+
+新版提示词包含:
+- 规则编码 (ruleCode)
+- 规则内容 (ruleContent)
+- 规则描述 (ruleDesc)
+- 病历原文
+- 参考正反例(来自知识库)
+
+## ⚠️ 注意事项
+
+1. **规则过滤**: `qc_type_list` 为空或 `[]` 的规则会被自动过滤
+2. **空内容跳过**: 病历某部分为空时,相关规则会跳过
+3. **错误处理**: 单条规则失败不影响其他规则执行
+4. **状态管理**: 
+   - 质控中: status = 3
+   - 质控完成: status = 2
+   - 失败回退: status = 1
+
+## 🎯 优势
+
+1. ✅ **灵活性**: 规则配置化,无需修改代码
+2. ✅ **可扩展**: 支持 common 和 specific 两种质控模式
+3. ✅ **高性能**: 支持多线程并行质控
+4. ✅ **易维护**: 规则与代码分离,便于管理
+5. ✅ **精准匹配**: 用规则内容查知识库,获取精准正反例
+
+## 📞 相关文件
+
+- 实体类: `org.ruoyi.domain.QualityControlRule`
+- 服务类: `org.ruoyi.chat.service.MedicalRecordQc123Service`
+- 多线程: `org.ruoyi.chat.executor.QcRuleExecutor`
+- 数据库表: `quality_control_rule`

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor