Kaynağa Gözat

代码提交

SGTY 7 ay önce
ebeveyn
işleme
aabd95e86a

+ 5 - 5
src/main/java/com/qizhen/healsphere/common/ai/BaidubceUtil.java

@@ -6,8 +6,8 @@ import org.springframework.web.client.RestTemplate;
 import java.util.*;
 
 public class BaidubceUtil {
-    private static String apiUrl = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-pro-128k";
-
+    //private static String apiUrl = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-speed-pro-128k";
+    private static String apiUrl = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro";
     private static String apiKey = "JYVEqcv7o6IK7kgAw6fYkmZL";
  
     private static String apiSecret = "b15G2pqwVWIHDKHsAdN5yHouIzhe3J1H";
@@ -113,11 +113,11 @@ public class BaidubceUtil {
         List<Knowlege> list = new ArrayList<>();
         for(String disease:diseases) {
             disease = disease.trim();
-            String icd10Json = baidubceUtil.getChatResponse("你是一个医学专家,想知道"+disease+"对应的ICD-10疾病名称和编码是什么?请根据以下要求输出JSON数组格式的结果:\n" +
+/*            String icd10Json = baidubceUtil.getChatResponse("你是一个医学专家,想知道"+disease+"对应的ICD-10疾病名称和编码是什么?请根据以下要求输出JSON数组格式的结果:\n" +
                     "不需要输出json之外的其他内容!\n" +
                     "- 键 \"name\":疾病名称,字符串类型。\n" +
                     "- 键 \"code\":对应的ICD10编码",accessToken);
-            String icd10 = filte(icd10Json);
+            String icd10 = filte(icd10Json);*/
             for (String property : properties) {
                 property = property.trim();
                 String q = "你是一个医生。想知道"+disease+"有哪些"+property+"?";
@@ -134,7 +134,7 @@ public class BaidubceUtil {
                 knowlege.setProperty(property);
                 knowlege.setValue(chatResponse);
                 knowlege.setAnswer(answer);
-                knowlege.setIcd10(icd10);
+                //knowlege.setRefenrece(icd10);
                 list.add(knowlege);
             }
         }

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 118
src/main/java/com/qizhen/healsphere/common/ai/BaidubceUtilTest.java


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 118
src/main/java/com/qizhen/healsphere/common/ai/BaidubceUtilTest2.java


+ 20 - 21
src/main/java/com/qizhen/healsphere/common/ai/BaidubceUtilTest3.java

@@ -13,38 +13,41 @@ import java.util.HashMap;
 import java.util.Map;
 
 public class BaidubceUtilTest3 {
-
     public static void main(String[] args) {
-        String urlExcelPath = "C:\\Users\\17664\\Desktop\\dz_doctor_info_tag.xlsx"; // 包含URL的Excel文件路径
+        String urlExcelPath = "C:\\Users\\17664\\Desktop\\二期\\result.xlsx"; // 包含URL的Excel文件路径
         // 读取URL并检查文章内容
         try (InputStream urlInputStream = new FileInputStream(urlExcelPath)) {
             Workbook urlWorkbook = new XSSFWorkbook(urlInputStream);
-            Sheet doctorSheet = urlWorkbook.getSheetAt(2);
+            Sheet doctorSheet = urlWorkbook.getSheetAt(0);
 
             // 创建新列来存储包含的疾病名称和ID
             int starndarDiseaseIndex = doctorSheet.getRow(0).getLastCellNum() + 1;
-            //int unstandarDiseaseIndex = doctorSheet.getRow(0).getLastCellNum() + 2;
-            doctorSheet.getRow(0).createCell(starndarDiseaseIndex).setCellValue("标准疾病(大模型)");
-            //doctorSheet.getRow(0).createCell(unstandarDiseaseIndex).setCellValue("非标准疾病(大模型)");
-            for (int rowNum = 1; rowNum <= 575; rowNum++) {
+            int unstandarDiseaseIndex = doctorSheet.getRow(0).getLastCellNum() + 2;
+            doctorSheet.getRow(0).createCell(starndarDiseaseIndex).setCellValue("标准疾病(大模型)");
+            doctorSheet.getRow(0).createCell(unstandarDiseaseIndex).setCellValue("非标准疾病(大模型)");
+            for (int rowNum = 1; rowNum <= 397; rowNum++) {
                 Row row = doctorSheet.getRow(rowNum);
-                Cell goodAtCell = row.getCell(7); // good_at
+                Cell goodAtCell = row.getCell(6); // good_at
                 if (goodAtCell != null) {
                     String goodAt = goodAtCell.getStringCellValue();
-                    if(StringUtils.isEmpty(goodAt) || goodAt.length()<2){
-                        goodAt = row.getCell(6).getStringCellValue();
+                    if(StringUtils.isNotBlank(goodAt)) {
+                        goodAt += "\n" + row.getCell(5).getStringCellValue();
+                    }else{
+                        goodAt = row.getCell(5).getStringCellValue();
+                    }
+                    if(StringUtils.isBlank(goodAt)) {
+                        goodAt = "";
                     }
-
                     Cell diseasesNameCell = row.createCell(starndarDiseaseIndex);
-                    //Cell unstandarDisease = row.createCell(unstandarDiseaseIndex);
+                    Cell unstandarDisease = row.createCell(unstandarDiseaseIndex);
                     Map<String, String> diseases = getDiseases(goodAt);
-                    diseasesNameCell.setCellValue(diseases.get("unstandar"));
-                    //unstandarDisease.setCellValue(diseases.get("unstandar"));
+                    diseasesNameCell.setCellValue(diseases.get("standar"));
+                    unstandarDisease.setCellValue(diseases.get("unstandar"));
                 }
             }
 
             // 将更新后的Excel文件写回到磁盘
-            try (OutputStream outputStream = new FileOutputStream("C:\\Users\\17664\\Desktop\\dz_doctor_info_tag1.xlsx")) {
+            try (OutputStream outputStream = new FileOutputStream("C:\\Users\\17664\\Desktop\\二期\\result3.xlsx")) {
                 urlWorkbook.write(outputStream);
             }
             urlWorkbook.close();
@@ -67,10 +70,11 @@ public class BaidubceUtilTest3 {
         //不在疾病列表里的疾病不需要
         StringBuilder message = new StringBuilder("你是一个医学标注师,需要根据医生简介给医生打疾病标签。" +
                 "\n\n医生简介如下:\n\n" +goodAtOrDesc+
-                "\n\n\n" + "请严格按照指定的疾病列表的疾病名称给该医生打上疾病标签!不需要额外说明性的文字,多个疾病标签以逗号隔开,没有适合的疾病就返回空字符串。\n\n\n疾病列表如下:");
+                "\n\n\n" + "#要求\n1、不要推理、不要发散。\n2、请严格按照指定的疾病列表的疾病名称给该医生打上疾病标签!不需要额外说明性的文字,多个疾病标签以逗号隔开,没有适合的疾病就返回空字符串。\n\n\n疾病列表如下:");
         message.append(disease.toString()+"。");
         BaidubceUtil baidubceUtil = new BaidubceUtil();
         String response = baidubceUtil.getChatResponse(message.toString(),accessToken);
+        System.out.println("====="+response);
         String diseaseString = ","+disease.append(",").toString();
         StringBuilder standarResult = new StringBuilder("");
         StringBuilder unstandarResult = new StringBuilder("");
@@ -110,9 +114,4 @@ public class BaidubceUtilTest3 {
         }
         return result;
     }
-
-    public static void main1(String[] args) {
-        //System.out.println(getDiseases("围孕期(孕前、孕期、产后)咨询、保健及检查;妊娠期高血压疾病、妊娠期糖尿病、妊娠期甲状腺疾病、胎儿宫内发育受限等妊娠期并发症诊治;妊娠合并子宫肌瘤及卵巢肿物的处理和手术治疗;多胎妊娠管理;高危妊娠、危重症抢救、产科手术和阴道助产技术娴熟。"));
-    }
-
 }

+ 12 - 102
src/main/java/com/qizhen/healsphere/common/ai/Knowlege.java

@@ -19,114 +19,24 @@ public class Knowlege {
     private String value;
     @ExcelProperty("回答")
     private String answer;
-    @ExcelProperty("icd10")
-    private String icd10;
+    @ExcelProperty("refenrece")
+    private String refenrece;
     @ExcelProperty("问题")
     private String question;
     @ExcelProperty("切片信息")
     private String chunk;
 
     public static void main(String[] args) {
-        String t = "Behcet病" +
-                ",EPS库欣综合征" +
-                ",Kell同种免疫性溶血" +
-                ",Maroteaux-Lamy综合征" +
-                ",Sanfillipo综合征" +
-                ",Tangier病" +
-                ",Tuomaala-Haapanen综合征" +
-                ",膀胱横纹肌肉瘤" +
-                ",膀胱损伤" +
-                ",表皮囊肿及皮样囊肿" +
-                ",鼻腔及鼻窦恶性肿瘤" +
-                ",鼻咽粘连" +
-                ",成骨细胞瘤" +
-                ",成人早老症" +
-                ",出血性膀胱炎" +
-                ",单一性促性腺激素缺乏症" +
-                ",骶管囊肿" +
-                ",低钾性周期性瘫痪" +
-                ",儿童的衣原体感染" +
-                ",儿童复发性腮腺炎" +
-                ",芳香族硝基或氨基化合物引起中毒Heinz小体的溶血性贫血" +
-                ",分离性焦虑障碍" +
-                ",肝结核" +
-                ",格子状角膜营养不良" +
-                ",肱骨上端骨骺分离或解剖颈骨折" +
-                ",钩端螺旋体葡萄膜炎" +
-                ",冠状动脉供血不足" +
-                ",骨纤维结构不良" +
-                ",颌骨朗格汉斯细胞病及其他病变颌骨朗格汉斯细胞病" +
-                ",化脓性脑膜炎" +
-                ",甲状旁腺功能亢进" +
-                ",结核性指(趾)炎" +
-                ",继发性糖尿病" +
-                ",颈部血管瘤" +
-                ",惊恐障碍" +
-                ",颈淋巴结结核" +
-                ",精神分裂症" +
-                ",急性泪腺炎" +
-                ",急性心力衰竭" +
-                ",巨唇" +
-                ",流行性出血性结膜炎" +
-                ",氯胺酮相关障碍" +
-                ",卵巢恶性生殖细胞肿瘤" +
-                ",慢性结节性耳轮软骨皮炎" +
-                ",麻疹的口腔表现" +
-                ",男子计划生育" +
-                ",脑干脑炎" +
-                ",黏多糖沉积病的视网膜病变" +
-                ",黏膜白斑" +
-                ",葡萄球菌脑膜炎" +
-                ",人工性口腔颌面部皮肤及黏膜瘘管" +
-                ",妊娠合并血友病" +
-                ",妊娠痒疹" +
-                ",肉碱酰基肉碱转运酶缺陷症" +
-                ",肉碱棕榈酰转移酶Ⅰ缺陷症" +
-                ",乳牙滞留" +
-                ",腮腺区良性肿瘤" +
-                ",腮腺炎性角膜炎" +
-                ",肾钙盐沉着症" +
-                ",社区获得性肺炎" +
-                ",史-莱-奥综合征" +
-                ",食管胃底静脉曲张破裂出血" +
-                ",视网膜中央静脉阻塞" +
-                ",水合氯醛中毒" +
-                ",损伤性腔颌面部皮肤及黏膜窦道" +
-                ",胎盘内绒毛膜癌" +
-                ",糖尿病酮症酸中毒" +
-                ",外斜视" +
-                ",外阴糜烂与湿疹" +
-                ",外源性过敏性肺炎" +
-                ",腕管综合征" +
-                ",胃肠道疾病所致的嗜酸性粒细胞增多症" +
-                ",胃大部切除术后溃疡复发" +
-                ",维生素C缺乏病" +
-                ",维生素C缺乏症" +
-                ",先天性肾上腺增生症新类型—细胞色素P450氧化还原酶缺陷综合征" +
-                ",先天性小眼球" +
-                ",小儿急性喉炎" +
-                ",小口病" +
-                ",心搏呼吸骤停" +
-                ",新生儿病理性黄疸" +
-                ",新生儿视网膜出血" +
-                ",系统性红斑狼疮" +
-                ",烟草相关障碍" +
-                ",羊水过多" +
-                ",眼外肌病" +
-                ",药物诱导玻璃体后脱离" +
-                ",遗传性异常纤维蛋白原血症" +
-                ",阴道闭锁与先天性无阴道" +
-                ",阴道内胚窦瘤" +
-                ",阴道炎" +
-                ",医源性非药物性内分泌疾病" +
-                ",远端肾小管酸中毒" +
-                ",原发性性腺腺功能减退" +
-                ",早产" +
-                ",早期视神经交叉前压迫综合征" +
-                ",枕部脑膨出" +
-                ",植物性食物中毒" +
-                ",转移性水泡状胎块" +
-                ",椎动脉型颈椎病";
+        String t = "并发症\t的并发症有哪些疾病" +
+                ",常见并发症\t的常见并发症有哪些疾病" +
+                ",提示病情加重或进展的临床指标\t的诊疗过程或病程中出现哪些指标或情况,可能提示疾病进一步进展、加重或恶化。" +
+                ",早期预警指标\t的早期临床预警指标有哪些" +
+                ",病因\t的病因或常见病因有哪些病因或致病原因" +
+                ",危险因素\t的危险因素或常见危险因素或危险诱发因素有哪些" +
+                ",遗传方式\t的遗传方式有哪些遗传方式(如果该病无遗传方式,可回答“无”)" +
+                ",遗传基因\t的遗传基因名称有哪些遗传基因名称" +
+                ",诱因\t的诱因或诱发因素或常见诱因有哪些诱因" +
+                ",出院标准\t的出院标准有哪些";
         if(t.startsWith("```json")){
             t = t.substring(7);
         }

+ 226 - 266
src/main/java/com/qizhen/healsphere/common/ai/QizhenAssistant.java

@@ -3,6 +3,7 @@ package com.qizhen.healsphere.common.ai;
 import cn.hutool.http.HttpRequest;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.http.Method;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.poi.hssf.usermodel.HSSFRow;
@@ -14,7 +15,12 @@ import org.springframework.util.CollectionUtils;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public class QizhenAssistant {
 
@@ -37,6 +43,16 @@ public class QizhenAssistant {
         }
     }
     public static final String domain = "https://console.bce.baidu.com/ai_apaas/personalSpace/knowledgeBase/document/detail/";
+
+    private static boolean contants(String content, String regex){
+        // 编译正则表达式
+        Pattern pattern = Pattern.compile(regex);
+
+        // 创建matcher对象
+        Matcher matcher = pattern.matcher(content);
+        return matcher.find();
+    }
+
     private static Map<String,String> getAnswer(String userInput, String conversationId) {
         Map<String,String> map = new HashMap<>();
         JSONObject json = new JSONObject();
@@ -60,6 +76,7 @@ public class QizhenAssistant {
         map.put("answer",answer == null ? noAnswer : answer);
         JSONArray contents = JSONObject.parseObject(resposne).getJSONArray("content");
         JSONArray docs = new JSONArray();
+        List<String> defaultReferences = new ArrayList<>();
         for(int i=0;i<contents.size();i++){
             JSONObject content = contents.getJSONObject(i);
             if("rag".equals(content.getString("content_type"))){
@@ -69,12 +86,18 @@ public class QizhenAssistant {
                     if (references != null && references.size() > 0) {
                         for (int j = 0; j < references.size(); j++) {
                             JSONObject reference = new JSONObject();
-                            reference.put("index", references.getJSONObject(j).getString("id"));
-                            reference.put("url", domain + references.getJSONObject(j).getString("knowledgebase_id") + "/" + references.getJSONObject(j).getString("document_id"));
+                            String id = references.getJSONObject(j).getString("id");
+                            if(!contants(answer,"\\^(\\[\\d+\\])*\\["+id+"\\](\\[\\d+\\])*\\^")){
+                                continue;
+                            }
+                            reference.put("index", id);
+                            //reference.put("url", domain + references.getJSONObject(j).getString("knowledgebase_id") + "/" + references.getJSONObject(j).getString("document_id"));
                             reference.put("content", references.getJSONObject(j).getString("content"));
-                            reference.put("title", references.getJSONObject(j).getString("title"));
-                            reference.put("chunk_id", references.getJSONObject(j).getString("chunk_id"));
+                            String title = references.getJSONObject(j).getString("title");
+                            reference.put("title", title);
+                            //reference.put("chunk_id", references.getJSONObject(j).getString("chunk_id"));
                             docs.add(reference);
+                            defaultReferences.add(title);
                         }
                     }
                 }
@@ -85,6 +108,7 @@ public class QizhenAssistant {
             return map;
         }
         map.put("references", docs.toJSONString());
+        map.put("defaultReferences", JSON.toJSONString(defaultReferences));
         System.out.println((System.currentTimeMillis() - l) / 1000 + userInput);
         return map;
     }
@@ -103,166 +127,68 @@ public class QizhenAssistant {
         return JSONObject.parseObject(resposne).getString("conversation_id");
     }
 
-    public static String fileName = "C:\\Users\\17664\\Desktop\\knowleges"+System.currentTimeMillis()+".xlsx";
     static HSSFWorkbook  workbook;
     public static void main(String[] args) {
         String conversationId = getConversationId();
         String accessToken = BaidubceUtil.getAccessToken();
+        String propertyStr = "并发症\t的并发症有哪些疾病" +
+                ",常见并发症\t的常见并发症有哪些疾病" +
+                ",提示病情加重或进展的临床指标\t的诊疗过程或病程中出现哪些指标或情况,可能提示疾病进一步进展、加重或恶化。" +
+                ",早期预警指标\t的早期临床预警指标有哪些" +
+                ",病因\t的病因或常见病因有哪些病因或致病原因" +
+                ",危险因素\t的危险因素或常见危险因素或危险诱发因素有哪些" +
+                ",遗传方式\t的遗传方式有哪些遗传方式(如果该病无遗传方式,可回答“无”)" +
+                ",遗传基因\t的遗传基因名称有哪些遗传基因名称" +
+                ",诱因\t的诱因或诱发因素或常见诱因有哪些诱因" +
+                ",出院标准\t的出院标准有哪些"+
+                ",合并症\t可能合并的疾病有哪些疾病" +
+                ",常合并的疾病\t常见的可能合并的疾病有哪些疾病" +
+                ",护理操作\t相关的护理操作有哪些护理操作名称" +
+                ",护理方案\t是一种疾病,请为该病做一个简要的护理方案" +
+                ",护理方式\t可能用到的护理方式或护理方法有哪些" +
+                ",分期\t的分期有哪些" +
+                ",分型\t的分型有哪些" +
+                ",分型分期标准\t的分型分期标准有哪些" +
+                ",父类\t的父类疾病名称或更大类的疾病名称有哪些疾病名称" +
+                ",严重程度\t按疾病严重程度分类有哪些" +
+                ",子类\t常见的子类疾病或疾病分类分型有哪些疾病" +
+                ",病原学检查\t的病原学检查项目名称有哪些" +
+                ",辅助检查\t的辅助检查项目名称有哪些" +
+                ",实验室检查\t的实验室检查项目名称或化验项目名称或检验项目名称有哪些" +
+                ",随访复查\t随访时需要复查的检查项目名称有哪些" +
+                ",体格检查\t的体格检查项目名称或体查项目名称有哪些" +
+                ",主要体格检查项目\t的主要体格检查项目名称或体查项目名称有哪些" +
+                ",相关B超检查\t相关的B超检查项目名称或超声检查项目名称或彩超检查项目名称有哪些" +
+                ",相关电学检查\t相关的心电图、脑电或肌电检查项目名称有哪些" +
+                ",相关检查\t相关的检查项目名称有哪些" +
+                ",关尿液检查\t相关的尿液检查项目名称或尿检名称有哪些" +
+                ",关血液检查\t相关的血液检查项目名称或血清学检查项目名称有哪些" +
+                ",血清学检查\t的血清学检查项目名称有哪些" +
+                ",相关影像学检查\t相关的影像学检查名称有哪些" +
+                ",诊断相关检查\t诊断相关的检查项目名称或诊断时需要的检查项目名称有哪些" +
+                ",治疗相关检查\t治疗相关检查项目名称或用于指导治疗的检查项目名称有哪些" +
+                ",与…鉴别诊断\t需要鉴别诊断的疾病名称有哪些疾病名称" +
+                ",就诊科室\t的就诊科室有哪些科室名称" +
+                ",最常见的就诊科室\t最常见的就诊科室有哪些科室名称" +
+                ",所属科室\t所属的科室有哪些科室名称" +
+                ",临床表现\t的临床表现有哪些临床表现" +
+                ",症状\t的症状有哪些症状" +
+                ",常见症状\t的常见症状有哪些症状" +
+                ",典型症状\t的典型症状有哪些症状" +
+                ",前驱症状\t的前驱症状或先兆症状有哪些症状" +
+                ",主要症状\t的主要症状有哪些症状";
 
-        String propertyStr = "标识符\t的标识符有哪些" +
-                    ",ICD-10编码\t的ICD-10编码是什么" +
-                    ",临床版ICD-10编码\t临床版ICD-10编码是什么" +
-                    ",医保版ICD-10编码\t医保版ICD-10编码是什么" +
-                    ",七巧板医学术语集概念ID\t的七巧板医学术语集概念ID是是什么" +
-                    ",并发症\t的并发症有哪些" +
-                    ",常伴发…\t的常伴发…有哪些" +
-                    ",常见并发症\t的常见并发症有哪些" +
-                    ",病理过程\t的病理过程有哪些病理过程" +
-                    ",发病机制\t的发病机制有哪些" +
-                    ",形态学改变\t在器官、组织或细胞水平上的形态学异常变化有哪些(如“心脏脓肿”的形态学异常改变是“脓肿”,“眼睑下垂”的形态学异常改变是“下垂”)" +
-                    ",病情监测\t的临床病情监测措施有哪些" +
-                    ",临床预警指标\t的临床预警指标有哪些" +
-                    ",早期预警指标\t的早期临床预警指标有哪些" +
-                    ",病因\t的病因有哪些" +
-                    ",发生于…期间\t发生于…期间或诱发因素有哪些" +
-                    ",危险因素\t的危险因素或危险诱发因素有哪些" +
-                    ",遗传方式\t遗传方式有哪些(如果该病无遗传方式,可回答“无”)" +
-                    ",遗传基因\t可能引起本病的相关遗传基因名称哪些"+
-                    ",诱因\t的诱因或诱发因素有哪些" +
-                    ",致病原因\t的致病原因有哪些" +
-                    ",发生部位\t的发生部位有哪些部位" +
-                    ",主要损害部位\t的主要损害部位有哪些部位" +
-                    ",出院标准\t的出院标准有哪些" +
-                    ",传播媒介\t的传播媒介有哪些" +
-                    ",传播途径\t的传播途径有哪些" +
-                    ",传染率\t的传染率或传染比例是多少" +
-                    ",传染源\t的传染源有哪些" +
-                    ",多发季节\t的多发季节有哪些季节" +
-                    ",发病率\t的发病率或单位时间内新发病例的比例是多少" +
-                    ",感染率\t的感染率或感染比例是多少" +
-                    ",高发地区\t的高发地区、高发地域或高发地点名称有哪些(只需给出:地区、地域或地点的名称)" +
-                    ",高危人群\t的高危人群有哪些人群" +
-                    ",隔离期\t的隔离期或隔离观察期是多长时间" +
-                    ",患病率\t的患病率或患病比例是多少" +
-                    ",接触者检疫\t的接触者检疫措施有哪些" +
-                    ",流行地区\t的流行地区、流行地域或流行地点名称有哪些(只需给出:地区、地域或地点的名称)" +
-                    ",高发流行地区\t的高发流行地区有哪些" +
-                    ",潜伏期\t的潜伏期或感染潜伏期是多长时间" +
-                    ",是否传染病\t是否为传染病(只需回答:“是”或“否”,不要其它任何信息)" +
-                    ",是否具有传染性\t是否具有传染性(只需回答:“是”或“否”,不要其它任何信息)" +
-                    ",相关人群\t的高相关人群有哪些人群" +
-                    ",易感人群\t的易感人群有哪些人群" +
-                    ",易患人群\t的易患人群有哪些人群" +
-                    ",等同于\t等同于哪些疾病" +
-                    ",合并症\t可能合并的疾病有哪些" +
-                    ",常合并的疾病\t常见的可能合并的疾病有哪些" +
-                    ",后发于\t的后发于有哪些(操作、手术、临床所见)" +
-                    ",护理操作\t该病可能用到的护理操作有哪些护理操作名称" +
-                    ",护理方案\t是一种疾病,请为该病做一个护理方案" +
-                    ",护理方式\t该病可能用到的护理方式或护理方法有哪些" +
-                    ",疾病的分类\t疾病的分类有哪些" +
-                    ",分期\t的分期有哪些" +
-                    ",分型\t的分型有哪些" +
-                    ",分型分期标准\t的分型分期标准有哪些" +
-                    ",父类\t的父类疾病名称或大类疾病名称有哪些" +
-                    ",严重程度\t按疾病严重程度分类有哪些" +
-                    ",子类\t常见的子类疾病有哪些" +
-                    ",高峰期\t的高峰期为起病、发病后或疾病发作后多长时间" +
-                    ",临床过程\t的临床过程有哪些临床过程或时期" +
-                    ",病原学检查\t的病原学检查项目有哪些" +
-                    ",辅助检查\t的辅助检查项目有哪些" +
-                    ",实验室检查\t的实验室检查项目有哪些" +
-                    ",随访复查\t随访时需要复查的检查项目有哪些" +
-                    ",体格检查\t的体格检查项目有哪些" +
-                    ",主要体格检查项目\t的主要体格检查项目有哪些" +
-                    ",相关B超检查\t相关的B超检查项目有哪些" +
-                    ",相关电学检查\t相关的电学检查项目(如心电图、脑电图、肌电图)有哪些" +
-                    ",相关检查\t相关的检查项目有哪些" +
-                    ",关尿液检查\t相关的尿液检查项目有哪些" +
-                    ",关血液检查\t相关的血液检查项目有哪些" +
-                    ",关血液检查\t相关的体液检查项目有哪些" +
-                    ",血清学检查\t的血清学检查项目有哪些" +
-                    ",相关影像学检查\t相关的影像学检查有哪些" +
-                    ",诊断相关检查\t的诊断相关检查项目或诊断高相关检查项目有哪些" +
-                    ",治疗相关检查\t的治疗相关检查项目或用于指导治疗决策的检查项目有哪些" +
-                    ",与{需要鉴别诊断的疾病名称}的鉴别诊断\t需要鉴别诊断的疾病名称,其中的每一个疾病名称如何与本病鉴别,请简单明要的描述出来。" +
-                    ",与…鉴别诊断\t需要鉴别诊断的疾病名称有哪些疾病名称" +
-                    ",科室\t的临床科室有哪些" +
-                    ",就诊科室\t的就诊科室有哪些" +
-                    ",最常见的就诊科室\t最常见的就诊科室有哪些科室" +
-                    ",所属科室\t的所属科室有哪些" +
-                    ",链接\t疾病相关文章链接或网址有哪些" +
-                    ",临床表现\t的临床表现有哪些" +
-                    ",症状\t的症状有哪些" +
-                    ",伴随症状\t的伴随症状有哪些" +
-                    ",常见症状\t的常见症状有哪些" +
-                    ",典型症状\t的典型症状有哪些" +
-                    ",前驱症状\t的前驱症状或先兆症状有哪些" +
-                    ",少见症状\t的少见或罕见症状有哪些" +
-                    ",主要症状\t的主要症状有哪些" +
-                    ",名称\t的名称有哪些名称" +
-                    ",别称\t的别称或别名有哪些" +
-                    ",常用名称\t的常用名称有哪些" +
-                    ",英文名称\t的英文名称有哪些" +
-                    ",评价对象\t的评价对象有哪些" +
-                    ",评价结果\t的评价结果有哪些" +
-                    ",描述\t做一个简要或重要的描述或概述" +
-                    ",图片\t请找几张与本病相关性高的图片" +
-                    ",文献\t与该疾病相关性较高的文献名称有哪些" +
-                    ",专家共识\t与该疾病相关性较高的专家共识文献名称有哪些" +
-                    ",预防措施\t的预防措施有哪些" +
-                    ",二级预防\t的二级预防措施有哪些" +
-                    ",一级预防\t的一级预防措施有哪些" +
-                    ",预防性治疗措施\t的预防性治疗措施有哪些" +
-                    ",预防用药\t的预防用药有哪些药物" +
-                    ",预防原则\t的预防原则有哪几条" +
-                    ",发展为…\t的发展为…有哪些疾病转归情况" +
-                    ",后遗症\t的后遗症有哪些" +
-                    ",相关评估量表\t疾病相关的评估量表名称有哪些" +
-                    ",诊断标准\t的诊断标准有哪些" +
-                    ",诊疗操作\t的诊断性操作和治疗性操作分别有哪些" +
-                    ",诊疗依据\t的诊疗依据有哪些" +
-                    ",\t的诊断依据有哪些" +
-                    ",\t的治疗依据有哪些" +
-                    ",体征\t的体征有哪些" +
-                    ",常见体征\t的常见体征有哪些" +
-                    ",少见体征\t的少见体征有哪些" +
-                    ",知识来源\t疾病的知识来源有哪些" +
-                    ",康复治疗\t的康复治疗措施有哪些" +
-                    ",抗病毒治疗\t的抗病毒治疗的方案或方法归纳总结后有哪几个(只需回答方案或方法的名称及其解释性描述)" +
-                    ",临床路径\t疾病的临床路径名称或临床路径的文件名称有哪些" +
-                    ",免疫治疗\t的免疫治疗措施或方法归纳后有哪些" +
-                    ",手术指征\t的手术指征有哪些" +
-                    ",手术治疗\t的手术治疗有哪些手术名称" +
-                    ",治疗性操作\t的治疗性操作哪些治疗性操作名称" +
-                    ",一般治疗\t的一般治疗措施或一般治疗注意事项有哪些" +
-                    ",一线治疗\t的一线治疗措施或方法归纳后有哪些" +
-                    ",治疗场所\t的适合的治疗场所或地点有哪些" +
-                    ",治疗方案\t可选的治疗方案名称或疾病治疗的整体方案名称有哪些" +
-                    ",治疗方式\t的治疗方式或方法名称有哪些" +
-                    ",治疗目标\t的治疗目标或期望达到的最终的治疗目标有哪些" +
-                    ",治疗器械\t的治疗器械或可能用的治疗器械有哪些医疗器械或器材" +
-                    ",治疗药物\t的治疗药物归纳后有哪些药物" +
-                    ",二线用药\t的二线用药归纳后有哪些药物" +
-                    ",解热镇痛抗炎治疗\t可用的解热镇痛抗炎治疗药物有哪些药物" +
-                    ",抗病毒治疗药物\t的抗病毒治疗药物有哪些药物" +
-                    ",抗菌治疗药物\t的抗菌治疗药物有哪些药物" +
-                    ",免疫治疗药物\t的免疫治疗药物有哪些药物" +
-                    ",三线用药\t的三线用药有哪些药物" +
-                    ",一线用药\t的一线用药有哪些药物" +
-                    ",可用的中成药\t可用的中成药有哪些中成药" +
-                    ",中药方剂\t可用的中药方剂名称哪些中药方剂名称" +
-                    ",治疗原则\t的治疗原则有哪些" +
-                    ",注意事项\t的注意事项有哪些" +
-                    ",出院后注意事项\t的出院后注意事项有哪些" +
-                    ",禁忌药物\t的禁忌药物有哪些药物或药物类别" +
-                    ",转出重症病房标准\t的转出重症病房标准有哪些";
+        saveExel(propertyStr, conversationId, accessToken,"前半生");
+    }
+
+    private static void saveExel(String propertyStr, String conversationId, String accessToken,String fileName) {
         String[] properties = propertyStr.split(",");
         workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
-        HSSFSheet sheet = workbook.createSheet("全科");;//工作表
+        HSSFSheet sheet = workbook.createSheet(fileName);
+        ;//工作表
         int rows = 0;
-        //for(String property:properties){
-            List<Knowlege> data = getData(conversationId, accessToken, "症状\t的症状有哪些症状");
+        for(String property:properties){
+            List<Knowlege> data = getData(conversationId, accessToken, property);
             if(!CollectionUtils.isEmpty(data)) {
                 for (Knowlege temp:data) {
                     HSSFRow row = sheet.createRow(rows++);
@@ -272,15 +198,16 @@ public class QizhenAssistant {
                     row.createCell(3).setCellValue(temp.getQuestion() == null ? "" : temp.getQuestion());
                     row.createCell(4).setCellValue(temp.getAnswer() == null ? "" : temp.getAnswer());
                     row.createCell(5).setCellValue(temp.getChunk() == null ? "" : temp.getChunk());
-                    row.createCell(6).setCellValue(temp.getIcd10() == null ? "" : temp.getIcd10());
+                    row.createCell(6).setCellValue(temp.getRefenrece() == null ? "" : temp.getRefenrece());
                 }
-            //}
-            save();
+            }
+            save(fileName);
         }
     }
 
-    private static synchronized void save() {
+    private static synchronized void save(String fileName) {
         try {
+            fileName="C:\\Users\\17664\\Desktop\\"+fileName+System.currentTimeMillis()+".xlsx";
             //文档输出
             FileOutputStream out = new FileOutputStream(new File(fileName));
             workbook.write(out);
@@ -297,112 +224,113 @@ public class QizhenAssistant {
             QizhenAssistant qizhenAssistant = new QizhenAssistant();
             BaidubceUtil baidubceUtil = new BaidubceUtil();
 
-            String diseaseStr = "Behcet病" +
-                    ",EPS库欣综合征" +
-                    ",Kell同种免疫性溶血" +
-                    ",Maroteaux-Lamy综合征" +
-                    ",Sanfillipo综合征" +
-                    ",Tangier病" +
-                    ",Tuomaala-Haapanen综合征" +
-                    ",膀胱横纹肌肉瘤" +
-                    ",膀胱损伤" +
-                    ",表皮囊肿及皮样囊肿" +
-                    ",鼻腔及鼻窦恶性肿瘤" +
-                    ",鼻咽粘连" +
-                    ",成骨细胞瘤" +
-                    ",成人早老症" +
-                    ",出血性膀胱炎" +
-                    ",单一性促性腺激素缺乏症" +
-                    ",骶管囊肿" +
-                    ",低钾性周期性瘫痪" +
-                    ",儿童的衣原体感染" +
-                    ",儿童复发性腮腺炎" +
-                    ",芳香族硝基或氨基化合物引起中毒Heinz小体的溶血性贫血" +
-                    ",分离性焦虑障碍" +
-                    ",肝结核" +
-                    ",格子状角膜营养不良" +
-                    ",肱骨上端骨骺分离或解剖颈骨折" +
-                    ",钩端螺旋体葡萄膜炎" +
-                    ",冠状动脉供血不足" +
-                    ",骨纤维结构不良" +
-                    ",颌骨朗格汉斯细胞病及其他病变颌骨朗格汉斯细胞病" +
-                    ",化脓性脑膜炎" +
-                    ",甲状旁腺功能亢进" +
-                    ",结核性指(趾)炎" +
-                    ",继发性糖尿病" +
-                    ",颈部血管瘤" +
-                    ",惊恐障碍" +
-                    ",颈淋巴结结核" +
+            String diseaseStr = "风湿性心脏病" +
+                    ",原发性高血压" +
+                    ",急性心肌梗死" +
+                    ",急性冠脉综合征" +
+                    ",冠状动脉粥样硬化性心脏病" +
+                    ",心力衰竭" +
+                    ",心源性休克" +
+                    ",酒精中毒" +
+                    ",咽炎" +
+                    ",急性扁桃体炎" +
+                    ",变应性鼻炎" +
+                    ",慢性鼻窦炎" +
+                    ",鼻出血" +
+                    ",急性牙髓炎" +
+                    ",牙周病" +
+                    ",溃疡性口炎" +
+                    ",反流性食管炎" +
+                    ",胃溃疡" +
+                    ",慢性萎缩性胃炎" +
+                    ",功能性消化不良" +
+                    ",急性阑尾炎" +
+                    ",克罗恩病" +
+                    ",肠梗阻" +
+                    ",肝硬化" +
+                    ",急性胰腺炎" +
+                    ",过敏性皮炎" +
+                    ",湿疹" +
+                    ",银屑病" +
+                    ",带状疱疹" +
+                    ",类风湿性关节炎" +
+                    ",系统性红斑狼疮" +
+                    ",慢性肾炎" +
+                    ",肾病综合征" +
+                    ",慢性肾衰竭" +
+                    ",肾结石" +
+                    ",输尿管结石" +
+                    ",膀胱炎" +
+                    ",前列腺增生" +
+                    ",子宫内膜异位症" +
+                    ",卵巢囊肿" +
+                    ",痛经" +
+                    ",女性更年期综合征" +
+                    ",异位妊娠" +
+                    ",妊娠剧吐" +
+                    ",鼻咽恶性肿瘤" +
+                    ",肝恶性肿瘤" +
+                    ",乳房恶性肿瘤" +
+                    ",宫颈恶性肿瘤" +
+                    ",多发性骨髓瘤" +
+                    ",急性白血病" +
+                    ",血管瘤" +
+                    ",子宫平滑肌瘤" +
+                    ",新生儿黄疸" +
+                    ",新生儿腹泻" +
+                    ",缺铁性贫血" +
+                    ",地中海贫血" +
+                    ",血友病" +
+                    ",甲状腺功能减退症" +
+                    ",甲状腺功能亢进症" +
+                    ",桥本甲状腺炎" +
+                    ",2型糖尿病" +
+                    ",糖尿病" +
+                    ",甲状旁腺功能减退症" +
+                    ",卵巢早衰" +
+                    ",坏血病" +
+                    ",高脂血症" +
+                    ",高尿酸血症" +
                     ",精神分裂症" +
-                    ",急性泪腺炎" +
-                    ",急性心力衰竭" +
-                    ",巨唇" +
-                    ",流行性出血性结膜炎" +
-                    ",氯胺酮相关障碍" +
-                    ",卵巢恶性生殖细胞肿瘤" +
-                    ",慢性结节性耳轮软骨皮炎" +
-                    ",麻疹的口腔表现" +
-                    ",男子计划生育" +
-                    ",脑干脑炎" +
-                    ",黏多糖沉积病的视网膜病变" +
-                    ",黏膜白斑" +
-                    ",葡萄球菌脑膜炎" +
-                    ",人工性口腔颌面部皮肤及黏膜瘘管" +
-                    ",妊娠合并血友病" +
-                    ",妊娠痒疹" +
-                    ",肉碱酰基肉碱转运酶缺陷症" +
-                    ",肉碱棕榈酰转移酶Ⅰ缺陷症" +
-                    ",乳牙滞留" +
-                    ",腮腺区良性肿瘤" +
-                    ",腮腺炎性角膜炎" +
-                    ",肾钙盐沉着症" +
+                    ",抑郁症" +
+                    ",化脓性脑膜炎" +
+                    ",帕金森病" +
+                    ",癫痫" +
+                    ",偏头痛" +
+                    ",脑梗死" +
+                    ",脑卒中" +
+                    ",阻塞性睡眠呼吸暂停综合征" +
+                    ",肺栓塞" +
+                    ",慢性肺源性心脏病" +
+                    ",急性上呼吸道感染" +
+                    ",病毒性肺炎" +
                     ",社区获得性肺炎" +
-                    ",史-莱-奥综合征" +
-                    ",食管胃底静脉曲张破裂出血" +
-                    ",视网膜中央静脉阻塞" +
-                    ",水合氯醛中毒" +
-                    ",损伤性腔颌面部皮肤及黏膜窦道" +
-                    ",胎盘内绒毛膜癌" +
-                    ",糖尿病酮症酸中毒" +
-                    ",外斜视" +
-                    ",外阴糜烂与湿疹" +
-                    ",外源性过敏性肺炎" +
-                    ",腕管综合征" +
-                    ",胃肠道疾病所致的嗜酸性粒细胞增多症" +
-                    ",胃大部切除术后溃疡复发" +
-                    ",维生素C缺乏病" +
-                    ",维生素C缺乏症" +
-                    ",先天性肾上腺增生症新类型—细胞色素P450氧化还原酶缺陷综合征" +
-                    ",先天性小眼球" +
-                    ",小儿急性喉炎" +
-                    ",小口病" +
-                    ",心搏呼吸骤停" +
-                    ",新生儿病理性黄疸" +
-                    ",新生儿视网膜出血" +
-                    ",系统性红斑狼疮" +
-                    ",烟草相关障碍" +
-                    ",羊水过多" +
-                    ",眼外肌病" +
-                    ",药物诱导玻璃体后脱离" +
-                    ",遗传性异常纤维蛋白原血症" +
-                    ",阴道闭锁与先天性无阴道" +
-                    ",阴道内胚窦瘤" +
-                    ",阴道炎" +
-                    ",医源性非药物性内分泌疾病" +
-                    ",远端肾小管酸中毒" +
-                    ",原发性性腺腺功能减退" +
-                    ",早产" +
-                    ",早期视神经交叉前压迫综合征" +
-                    ",枕部脑膨出" +
-                    ",植物性食物中毒" +
-                    ",转移性水泡状胎块" +
-                    ",椎动脉型颈椎病";
+                    ",支气管肺炎" +
+                    ",肺炎" +
+                    ",支气管哮喘" +
+                    ",呼吸衰竭" +
+                    ",肺部感染" +
+                    ",急性泪腺炎" +
+                    ",急性泪囊炎" +
+                    ",巩膜炎" +
+                    ",角膜炎" +
+                    ",中耳炎" +
+                    ",风湿性关节炎" +
+                    ",颈椎病" +
+                    ",颈肩综合征" +
+                    ",坐骨神经痛" +
+                    ",肩周炎" +
+                    ",骨质疏松" +
+                    ",锁骨骨折" +
+                    ",肱骨骨折" +
+                    ",肩关节脱位";
 
             //String diseaseStr1 = "表皮囊肿及皮样囊肿";
 
             String[] diseases = diseaseStr.split(",");
-            for (String disease : diseases) {
+            for (int i=0;i<diseases.length;i++) {
                 try {
+                    String disease = diseases[i];
                     disease = disease.trim();
                     String[] split = property.split("\t");
                     if(split.length<2){
@@ -415,6 +343,8 @@ public class QizhenAssistant {
                             "\n2、知识库里没有找到相应的知识,则返回\"未找到相关知识\"!";
                     Map<String, String> result = qizhenAssistant.getChatResponse(question, conversationId);
                     String answer = result.get("answer");
+                    String references = result.get("references");
+                    String defaultReferences = result.get("defaultReferences");
                     String chatResponse = "";
                     if (!("failed".equals(answer) || answer.contains(noAnswer))) {
                         String format = "你是专门处理医学领域文本的关系抽取专家。你将在指定的文本中抽取其中“"+disease+"的"+relation+"。\n" +
@@ -441,9 +371,39 @@ public class QizhenAssistant {
                         System.out.println(zhiling);
                         chatResponse = baidubceUtil.getChatResponse(zhiling, accessToken);
                         chatResponse = filte(chatResponse);
-                        addNode(disease, relation, chatResponse, answer, question, result, list);
+                        JSONArray jsonResult = new JSONArray();
+                        if(!StringUtil.isBlank(chatResponse)){
+                            try{
+                                JSONArray jsonArray = JSONArray.parseArray(chatResponse);
+                                JSONArray referenceJA = JSONArray.parseArray(references);
+                                for(int t=0;t<jsonArray.size();t++){
+                                   String name = jsonArray.getString(t);
+                                   JSONObject temp = new JSONObject();
+                                   temp.put("name", name);
+                                   JSONArray tempReferenceJA = new JSONArray();
+                                   for(int r=0;r<referenceJA.size();r++){
+                                       JSONObject referenceJO = referenceJA.getJSONObject(r);
+                                       String content = referenceJO.getString("content");
+                                       if(content.contains(name)){
+                                           //JSONObject clone = referenceJO.clone();
+                                           tempReferenceJA.add(referenceJO.getString("title"));
+                                       }
+                                   }
+                                   temp.put("reference", tempReferenceJA);
+                                   if(tempReferenceJA.size()<1){
+                                       temp.put("defaultReferences", defaultReferences);
+                                   }
+                                   jsonResult.add(temp);
+                                }
+                            }catch (Exception e){
+                                System.out.println("######"+chatResponse);
+                                e.printStackTrace();
+                                continue;
+                            }
+                        }
+                        addNode(disease, relation, chatResponse,jsonResult.toJSONString(), answer, question, result, list);
                     }else {
-                        addNode(disease, relation, "", answer, question, result, list);
+                        addNode(disease, relation, "","", answer, question, result, list);
                     }
                 }catch (Exception e){
                     System.out.println("抽取三元组失败!");
@@ -459,7 +419,7 @@ public class QizhenAssistant {
         }
     }
 
-    private static void extracted(String accessToken, String disease, String[] split, String answer, BaidubceUtil baidubceUtil, String question, Map<String, String> result, List<Knowlege> list) {
+    /*private static void extracted(String accessToken, String disease, String[] split, String answer, BaidubceUtil baidubceUtil, String question, Map<String, String> result, List<Knowlege> list) {
         String chatResponse;
         String format = "你是一个医学专业的关系抽取专家。需要从文本中提取" + disease +   "的"+ split[0] + ",请输出JSON数组格式的结果,不需要输出json之外的其他内容!按如下要求输出:" +
                 "\n" +
@@ -510,9 +470,9 @@ public class QizhenAssistant {
             }
             addNode(disease, split[0], resultArray2.toJSONString(), answer, question, result, list);
         }
-    }
+    }*/
 
-    private static void addNode(String disease, String property, String chatResponse, String answer, String question, Map<String, String> result, List<Knowlege> list) {
+    private static void addNode(String disease, String property, String chatResponse,String refences, String answer, String question, Map<String, String> result, List<Knowlege> list) {
         Knowlege knowlege = new Knowlege();
         knowlege.setEntity(disease);
         knowlege.setProperty(property);
@@ -520,7 +480,7 @@ public class QizhenAssistant {
         knowlege.setAnswer(answer);
         knowlege.setQuestion(question);
         knowlege.setChunk(result.get("references"));
-        //knowlege.setIcd10(icd10);
+        knowlege.setRefenrece(refences);
         list.add(knowlege);
     }
 

Dosya farkı çok büyük olduğundan ihmal edildi
+ 556 - 0
src/main/java/com/qizhen/healsphere/common/ai/QizhenAssistant1.java


Dosya farkı çok büyük olduğundan ihmal edildi
+ 486 - 0
src/main/java/com/qizhen/healsphere/common/ai/QizhenAssistant2.java