Selaa lähdekoodia

推送三院整改内容

feng 8 kuukautta sitten
vanhempi
commit
a8fad94a26

+ 118 - 0
ruoyi-admin/src/main/resources/application-lzsy.yml

@@ -0,0 +1,118 @@
+
+--- # 数据源配置
+spring:
+  datasource:
+    type: com.zaxxer.hikari.HikariDataSource
+    # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
+    dynamic:
+      # 性能分析插件(有性能损耗 不建议生产环境使用)
+      p6spy: true
+      # 设置默认的数据源或者数据源组,默认值即为 master
+      primary: master
+      # 严格模式 匹配不到数据源则报错
+      strict: true
+      datasource:
+        # 主库数据源
+        master:
+          type: ${spring.datasource.type}
+          driverClassName: com.mysql.cj.jdbc.Driver
+          url: jdbc:mysql://192.168.0.77:3306/emoon_ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
+          username: emoon_ai
+          password: AZZDHC5ZZzDeMJkN
+        open-db:
+          type: com.zaxxer.hikari.HikariDataSource
+          driverClassName: com.mysql.cj.jdbc.Driver
+          url: jdbc:mysql://192.168.0.77:3306/open_emoon_com?useSSL=false&serverTimezone=Asia/Shanghai
+          username: open_emoon_com
+          password: 4546JJfCCmAPpDJX
+        emoon-db:
+          type: com.zaxxer.hikari.HikariDataSource
+          driverClassName: com.mysql.cj.jdbc.Driver
+          url: jdbc:mysql://192.168.0.77:3306/emoon_com?useSSL=false&serverTimezone=Asia/Shanghai
+          username: emoon_com
+          password: KnjzLsBGLyrnWmmw
+      hikari:
+        # 最大连接池数量
+        maxPoolSize: 20
+        # 最小空闲线程数量
+        minIdle: 10
+        # 配置获取连接等待超时的时间
+        connectionTimeout: 30000
+        # 校验超时时间
+        validationTimeout: 5000
+        # 空闲连接存活最大时间,默认10分钟
+        idleTimeout: 600000
+        # 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
+        maxLifetime: 1800000
+        # 连接测试query(配置检测连接是否有效)
+        connectionTestQuery: SELECT 1
+        # 多久检查一次连接的活性
+        keepaliveTime: 30000
+
+--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
+spring.data:
+  redis:
+    # 地址
+    #    host: 59.110.174.106
+    # 端口,默认为6379
+    host: 192.168.0.77
+    port: 6379
+    # 数据库索引
+    database: 0
+    # 密码(如没有密码请注释掉)
+    password: sanyuan@123
+    # 连接超时时间
+    timeout: 10S
+redisson:
+  # redis key前缀
+  keyPrefix:
+  # 线程池数量
+  threads: 4
+  # Netty线程池数量
+  nettyThreads: 8
+  # 单节点配置
+  singleServerConfig:
+    # 客户端名称
+    clientName: ${ruoyi.name}
+    # 最小空闲连接数
+    connectionMinimumIdleSize: 8
+    # 连接池大小
+    connectionPoolSize: 32
+    # 连接空闲超时,单位:毫秒
+    idleConnectionTimeout: 10000
+    # 命令等待超时,单位:毫秒
+    timeout: 3000
+    # 发布和订阅连接池大小
+    subscriptionConnectionPoolSize: 50
+
+--- # sms 短信
+sms:
+  enabled: false
+  # 阿里云 dysmsapi.aliyuncs.com
+  # 腾讯云 sms.tencentcloudapi.com
+  endpoint: "dysmsapi.aliyuncs.com"
+  accessKeyId: xxxxxxx
+  accessKeySecret: xxxxxx
+  signName: 测试
+  # 腾讯专用
+  sdkAppId:
+file:
+  #上传附件保存本地地址
+  upload-path: /www/knowledge/files/
+  #上传附件访问地址
+  base-url: http://192.168.0.77:5666
+
+knowledge:
+  kid: 1965740023724711937
+  #燧原硬件信息接口
+enflame:
+  url: http://192.168.0.78:19997
+mcp:
+  server:
+    url: http://localhost:8085
+
+
+
+
+
+

+ 2 - 0
ruoyi-modules-api/ruoyi-system-api/src/main/resources/mapper/PatientRecordMapper.xml

@@ -15,6 +15,8 @@
             <if test="records[0].birthDate != null">birth_date,</if>
             <if test="records[0].nurse != null">nurse,</if>
             <if test="records[0].attendingDoctor != null">attending_doctor,</if>
+            <if test="records[0].admissionDate != null">admission_date,</if>
+            <if test="records[0].dischargeDate != null">discharge_date,</if>
             <if test="records[0].admissionDept != null">admission_dept,</if>
             <if test="records[0].dischargeDept != null">discharge_dept,</if>
             <if test="records[0].admissionNote != null">admission_note,</if>

+ 7 - 7
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/MedicalRecordQc123Service.java

@@ -41,7 +41,7 @@ public class MedicalRecordQc123Service {
     private String knowledgeKid;
 
 
-    private static final String RULE_MATCHING_URL = "http://localhost:6039/rag/schema";
+    private static final String RULE_MATCHING_URL = "http://192.168.0.77:6039/rag/schema";
 //    private static final String LLM_MODEL_URL = "http://60.164.133.40:19997/v1/chat/completions";
     private static final String QC_NAME = "AI智能质控系统";
 
@@ -139,7 +139,7 @@ public class MedicalRecordQc123Service {
         Map<String, Object> param = new HashMap<>();
 //        param.put("messages", sectionLabel);     // ✅ 动态传「入院记录」「首次病程记录」等
         param.put("messages", "入院记录");     // ✅ 动态传「入院记录」「首次病程记录」等
-        param.put("model", "qwen3-32B");
+        param.put("model", "deepseek-r1-70B");
         param.put("maxDistance", 0.75);
         param.put("kid", knowledgeKid);
 
@@ -181,11 +181,11 @@ public class MedicalRecordQc123Service {
     private String buildPrompt(String sectionLabel, String content, String ragResult) {
         StringBuilder instruction = new StringBuilder();
 
-        instruction.append("你是一名专业的医疗病历质控员,负责依据标准书写规则对【")
+        instruction.append("你扮演的是一名专业的医疗病历质控员,依据【质控规则】对提供的【")
                 .append(sectionLabel).append("】进行质量审查。\n");
-        instruction.append("当前病历原文如下:\n").append(content).append("\n\n");
+        instruction.append("【病历原文】:\n").append(content).append("\n\n");
         instruction.append("所有质控规则内容如下:\n").append(ragResult).append("\n\n");
-        instruction.append("根据我提供的规则筛选【").append(sectionLabel).append("】需要的规则进行质控\n\n");
+        instruction.append("根据我提供的病历【").append(sectionLabel).append("】筛选出需要的规则进行质控\n\n");
 
         // ✅ 保留你原来的输出格式规范
         instruction.append("如果病历完全符合所有规则,请严格输出以下内容:\\n");
@@ -229,7 +229,7 @@ public class MedicalRecordQc123Service {
      */
     private String callLLM(String prompt) {
         Map<String, Object> request = new HashMap<>();
-        request.put("model", "qwen3-32B");
+        request.put("model", "deepseek-r1-70B");
         request.put("stream", false);
 
         List<Map<String, String>> messages = new ArrayList<>();
@@ -238,7 +238,7 @@ public class MedicalRecordQc123Service {
 
         String jsonBody = JSON.toJSONString(
                 new HashMap<String, Object>() {{
-                    put("model", "qwen3-32B");
+                    put("model", "deepseek-r1-70B");
                     put("stream", false);
                     put("messages", messages);
                     put("max_tokens", 4096); // ✅ 限制最大输出token数

+ 18 - 1
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/PatientRecordServiceImpl.java

@@ -12,6 +12,7 @@ import jakarta.annotation.Resource;
 import org.ruoyi.chat.domain.dto.PatientRecordWithQCResultDTO;
 import org.ruoyi.chat.domain.dto.RecordDetailItemDTO;
 import org.ruoyi.chat.service.chat.PatientRecordService;
+import org.ruoyi.chat.util.XmlUtils;
 import org.ruoyi.core.page.PageQuery;
 import org.ruoyi.core.page.TableDataInfo;
 import org.ruoyi.domain.PatientRecord;
@@ -19,9 +20,12 @@ import org.ruoyi.mapper.MedicalRecordResultMapper;
 import org.ruoyi.mapper.PatientRecordMapper;
 import org.ruoyi.chat.util.HttpUtils;
 import org.springframework.stereotype.Service;
+
+import java.sql.SQLOutput;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -170,9 +174,19 @@ public class PatientRecordServiceImpl implements PatientRecordService {
             record.setDischargeDept(getString(data, "dischargeDept"));
             record.setAdmissionNote(getString(data, "admissionNote"));
             String dischargeSummary = getString(data, "dischargeSummary");
+            String admissionDate = getString(data, "admissionDate");
+            String dischargeDate = getString(data, "dischargeDate");
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            LocalDateTime admissionTime = LocalDateTime.parse(admissionDate, formatter);
+            LocalDateTime dischargeTime = LocalDateTime.parse(dischargeDate, formatter);
+            record.setAdmissionDate(admissionTime);
+            record.setDischargeDate(dischargeTime);
             record.setDischargeSummary(dischargeSummary != null && !dischargeSummary.isEmpty() ? dischargeSummary : "[]");
-            record.setFirstCourseRecord(getString(data, "firstCourseRecord"));
 
+
+            String firstCourseRecord = getString(data, "firstCourseRecord");
+            String firstCourseRecordStr = XmlUtils.parseMedicalRecordToText(firstCourseRecord);
+            record.setFirstCourseRecord(firstCourseRecordStr);
             // 年龄处理:"60岁" -> 60
             String ageStr = getString(data, "age");
             if (ageStr != null) {
@@ -203,6 +217,9 @@ public class PatientRecordServiceImpl implements PatientRecordService {
             serializeListToJson(record, data, "surgeryRecords");
             serializeListToJson(record, data, "consentForms");
 
+//            String roundRecords = record.getRoundRecords();
+//            String roundRecordsStr = XmlUtils.parseMedicalRecordToText(roundRecords);
+//            record.setRoundRecords(roundRecordsStr);
             // 其他字段
             record.setStatus(1); // 未质控
             record.setCreateDate(LocalDateTime.now());

+ 47 - 0
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/task/PatientDataTask.java

@@ -0,0 +1,47 @@
+package org.ruoyi.chat.task;
+
+
+import jakarta.annotation.Resource;
+import org.ruoyi.chat.service.chat.PatientRecordService;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+@Component
+@EnableScheduling
+public class PatientDataTask {
+
+    @Resource
+    private PatientRecordService patientRecordService;
+    @Scheduled(cron = "0 30 0 * * ?")
+    public void savePatientData() {
+        // 这里实现你的数据获取逻辑
+        System.out.println("开始获取数据: " + new Date());
+        try {
+            LocalDate today = LocalDate.now();
+            LocalDate previousDay = today.minusDays(1);
+            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            String previousDayStr = previousDay.format(formatter);
+            String startDate = previousDayStr +  " 00:00:00";
+            String endDate = previousDayStr +  " 23:59:59";
+            getPatientData(startDate,endDate);
+        } catch (Exception e) {
+            // 异常处理
+            System.err.println("数据获取失败: " + e.getMessage());
+        }
+    }
+
+    private void getPatientData(String startDate, String endDate) {
+
+        // 调用服务层,传入参数
+        patientRecordService.fetchAndSavePatientData(startDate, endDate);
+
+        // 实现具体的数据获取逻辑
+        // 例如:调用API、查询数据库等
+    }
+
+}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 101 - 0
ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/util/XmlUtils.java


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä