SGTY 5 mēneši atpakaļ
vecāks
revīzija
7280d2e6e1

+ 51 - 100
src/main/java/com/qizhen/healsphere/common/ai/CRQizhenAssistant.java

@@ -191,106 +191,57 @@ public class CRQizhenAssistant {
             CRQizhenAssistant qizhenAssistant = new CRQizhenAssistant();
             BaidubceUtil baidubceUtil = new BaidubceUtil();
 
-            String diseaseStr = "风湿性心脏病" +
-                    ",原发性高血压" +
-                    ",急性心肌梗死" +
-                    ",急性冠脉综合征" +
-                    ",冠状动脉粥样硬化性心脏病" +
-                    ",心力衰竭" +
-                    ",心源性休克" +
-                    ",酒精中毒" +
-                    ",咽炎" +
-                    ",急性扁桃体炎" +
-                    ",变应性鼻炎" +
-                    ",慢性鼻窦炎" +
-                    ",鼻出血" +
-                    ",急性牙髓炎" +
-                    ",牙周病" +
-                    ",溃疡性口炎" +
-                    ",反流性食管炎" +
-                    ",胃溃疡" +
-                    ",慢性萎缩性胃炎" +
-                    ",功能性消化不良" +
-                    ",急性阑尾炎" +
-                    ",克罗恩病" +
-                    ",肠梗阻" +
-                    ",肝硬化" +
-                    ",急性胰腺炎" +
-                    ",过敏性皮炎" +
-                    ",湿疹" +
-                    ",银屑病" +
-                    ",带状疱疹" +
-                    ",类风湿性关节炎" +
-                    ",系统性红斑狼疮" +
-                    ",慢性肾炎" +
-                    ",肾病综合征" +
-                    ",慢性肾衰竭" +
-                    ",肾结石" +
-                    ",输尿管结石" +
-                    ",膀胱炎" +
-                    ",前列腺增生" +
-                    ",子宫内膜异位症" +
-                    ",卵巢囊肿" +
-                    ",痛经" +
-                    ",女性更年期综合征" +
-                    ",异位妊娠" +
-                    ",妊娠剧吐" +
-                    ",鼻咽恶性肿瘤" +
-                    ",肝恶性肿瘤" +
-                    ",乳房恶性肿瘤" +
-                    ",宫颈恶性肿瘤" +
-                    ",多发性骨髓瘤" +
-                    ",急性白血病" +
-                    ",血管瘤" +
-                    ",子宫平滑肌瘤" +
-                    ",新生儿黄疸" +
-                    ",新生儿腹泻" +
-                    ",缺铁性贫血" +
-                    ",地中海贫血" +
-                    ",血友病" +
-                    ",甲状腺功能减退症" +
-                    ",甲状腺功能亢进症" +
-                    ",桥本甲状腺炎" +
-                    ",2型糖尿病" +
-                    ",糖尿病" +
-                    ",甲状旁腺功能减退症" +
-                    ",卵巢早衰" +
-                    ",坏血病" +
-                    ",高脂血症" +
-                    ",高尿酸血症" +
-                    ",精神分裂症" +
-                    ",抑郁症" +
-                    ",化脓性脑膜炎" +
-                    ",帕金森病" +
-                    ",癫痫" +
-                    ",偏头痛" +
-                    ",脑梗死" +
-                    ",脑卒中" +
-                    ",阻塞性睡眠呼吸暂停综合征" +
-                    ",肺栓塞" +
-                    ",慢性肺源性心脏病" +
-                    ",急性上呼吸道感染" +
-                    ",病毒性肺炎" +
-                    ",社区获得性肺炎" +
-                    ",支气管肺炎" +
-                    ",肺炎" +
-                    ",支气管哮喘" +
-                    ",呼吸衰竭" +
-                    ",肺部感染" +
-                    ",急性泪腺炎" +
-                    ",急性泪囊炎" +
-                    ",巩膜炎" +
-                    ",角膜炎" +
-                    ",中耳炎" +
-                    ",风湿性关节炎" +
-                    ",颈椎病" +
-                    ",颈肩综合征" +
-                    ",坐骨神经痛" +
-                    ",肩周炎" +
-                    ",骨质疏松" +
-                    ",锁骨骨折" +
-                    ",肱骨骨折" +
-                    ",肩关节脱位";
+            String diseaseStr = "霍乱" +
+                    ",伤寒" +
+                    ",副伤寒"
+                   /* ",细菌性痢疾" +
+                    ",肠阿米巴病" +
+                    ",感染性腹泻" +
+                    ",急性肠炎" +
+                    ",婴儿腹泻" +
+                    ",肺结核" +
+                    ",结核性胸膜炎" +
+                    ",原发性肺结核" +
+                    ",结核性脑膜炎" +
+                    ",骨结核" +
+                    ",颈椎结核" +
+                    ",胸椎结核" +
+                    ",腰椎结核" +
+                    ",脊柱结核" +
+                    ",骶髂关节结核" +
+                    ",肾结核" +
+                    ",子宫内膜结核" +
+                    ",附睾结核" +
+                    ",颈淋巴结结核" +
+                    ",肠结核" +
+                    ",结核性腹膜炎" +
+                    ",鼠疫" +
+                    ",钩端螺旋体病" +
+                    ",麻风" +
+                    ",皮肤白喉" +
+                    ",白喉" +
+                    ",猩红热" +
+                    ",流行性脑脊髓膜炎" +
+                    ",先天性梅毒" +
+                    ",梅毒" +
+                    ",淋病" +
+                    ",流行性斑疹伤寒" +
+                    ",狂犬病" +
+                    ",流行性乙型脑炎" +
+                    ",登革热" +
+                    ",手足口病" +
+                    ",乙型病毒性肝炎" +
+                    ",慢性病毒性肝炎" +
+                    ",艾滋病" +
+                    ",疟疾" +
+                    ",内脏利什曼病" +
+                    ",黑热病" +
+                    ",埃及血吸虫病" +
+                    ",血吸虫病" +
+                    ",肺血吸虫病" +
+                    ",棘球蚴病" +
+                    ",丝虫病" +
+                    ",流行性感冒"*/;
 
             //String diseaseStr1 = "表皮囊肿及皮样囊肿";
 

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

@@ -27,16 +27,11 @@ public class Knowlege {
     private String chunk;
 
     public static void main(String[] args) {
-        String t = "并发症\t的并发症有哪些疾病" +
-                ",常见并发症\t的常见并发症或常并发的疾病有哪些疾病" +
-                ",提示病情加重或进展的临床指标\t的诊疗过程或病程中出现哪些指标或情况,可能提示疾病进一步进展、加重或恶化。" +
-                ",早期预警指标\t的早期临床预警指标有哪些" +
-                ",病因\t的病因或常见病因有哪些病因或致病原因" +
-                ",危险因素\t的危险因素或常见危险因素或危险诱发因素有哪些" +
-                ",遗传方式\t的遗传方式有哪些遗传方式(如果该病无遗传方式,可回答“无”)" +
-                ",遗传基因\t的遗传基因名称有哪些遗传基因名称" +
-                ",诱因\t的诱因或诱发因素或常见诱因有哪些诱因" +
-                ",出院标准\t的出院标准有哪些";
+        String t = "分类\t常见的子类疾病或疾病分类分型有哪些疾病" +
+                ",分期\t可分为哪些分期?(不要分类)" +
+                ",危险因素\t的危险因素有哪些危险因素" +
+                ",一般治疗\t患者的一般治疗方案或指导意见有哪些(不要药品,有一般治疗优先回答一般治疗)" +
+                ",就诊科室\t的就诊科室有哪些科室名称";
         if(t.startsWith("```json")){
             t = t.substring(7);
         }

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

@@ -54,7 +54,7 @@ public class QizhenAssistant {
         HttpRequest request = HttpUtil.createRequest(Method.POST, "https://qianfan.baidubce.com/v2/app/conversation/runs")
                 .header("X-Appbuilder-Authorization", "Bearer bce-v3/ALTAK-MyGbNEA18oT3boS2nOga1/d8b5057f7842f59b2c64971d8d077fe724d0aed5")
                 .header("Content-Type", "application/json")
-                .body(json.toJSONString()).timeout(120*1000);
+                .body(json.toJSONString()).timeout(60*1000);
         ;
         long l = System.currentTimeMillis();
         String resposne = request.execute().body();

+ 4 - 0
src/main/java/com/qizhen/healsphere/job/MigrateData.java

@@ -0,0 +1,4 @@
+package com.qizhen.healsphere.job;
+
+public class MigrateData {
+}

+ 29 - 0
src/main/java/com/qizhen/healsphere/repository/mapper/KgEdgeMapper.java

@@ -0,0 +1,29 @@
+package com.qizhen.healsphere.repository.mapper;
+
+import com.qizhen.healsphere.repository.mapper.entity.KgEdge;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 知识统计信息信息 Mapper 接口
+ * </p>
+ */
+@Mapper
+public interface KgEdgeMapper {
+    // 插入
+    int insertKgEdge(KgEdge kgEdge);
+
+    // 更新
+    int updateKgEdge(KgEdge kgEdge);
+
+    // 查询单个
+    KgEdge selectKgEdgeById(@Param("id") Long id);
+
+    KgEdge selectKgEdge(@Param("src_id") Long src_id,@Param("dest_id") Long dest_id,@Param("name") String name);
+
+    // 分页查询
+    List<KgEdge> selectKgEdgesByPage(@Param("pageSize") int pageSize, @Param("offset") int offset);
+}

+ 24 - 0
src/main/java/com/qizhen/healsphere/repository/mapper/KgNodeMapper.java

@@ -0,0 +1,24 @@
+package com.qizhen.healsphere.repository.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qizhen.healsphere.repository.mapper.entity.KgNode;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface KgNodeMapper extends BaseMapper<KgNode> {
+    KgNode getKgNode(@Param("name")String name,@Param("category")String category);
+    // 插入
+    int insertKgNode(KgNode kgNode);
+
+    // 更新
+    int updateKgNode(KgNode kgNode);
+
+    // 根据ID查询
+    KgNode selectKgNodeById(@Param("id") Long id);
+
+    // 分页查询
+    List<KgNode> selectKgNodesByPage(@Param("offset") int offset, @Param("pageSize") int pageSize);
+}

+ 17 - 0
src/main/java/com/qizhen/healsphere/repository/mapper/entity/KgEdge.java

@@ -0,0 +1,17 @@
+package com.qizhen.healsphere.repository.mapper.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class KgEdge implements Serializable {
+    private Long id;
+    private Long src_id;
+    private Long dest_id;
+    private String name;
+    private Integer status;
+    private String category;
+    private String version;
+
+}

+ 15 - 0
src/main/java/com/qizhen/healsphere/repository/mapper/entity/KgNode.java

@@ -0,0 +1,15 @@
+package com.qizhen.healsphere.repository.mapper.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class KgNode implements Serializable {
+    private Long id;
+    private String name;
+    private String category;
+    private String layout;
+    private Integer status;
+    private String version;
+}

+ 6 - 4
src/main/java/com/qizhen/healsphere/repository/neo4j/BaseNodeRepository.java

@@ -279,7 +279,7 @@ public class BaseNodeRepository {
             StatementResult result = session.run(query);
 
             if(result.hasNext()) {
-                return buildBaseEntity(result);
+                return buildBaseEntity(result.single().get("n").asNode());
             }
             return null;
         }
@@ -296,19 +296,21 @@ public class BaseNodeRepository {
         try(Session session = neo4jUtil.getSession()) {
             StatementResult result = session.run(query,Values.parameters("name", name));
             if(result.hasNext()) {
-                return buildBaseEntity(result);
+                return buildBaseEntity(result.single().get("n").asNode());
             }
             return null;
         }
 
     }
 
-    private BaseEntity buildBaseEntity(StatementResult result) {
+    public static BaseEntity buildBaseEntity(Node node) {
         BaseEntity baseEntity = new BaseEntity();
-        Node node = result.single().get("n").asNode();
         baseEntity.setId(node.id());
         baseEntity.setLabel((ArrayList)node.labels());
         baseEntity.setName(node.get("name").asString());
+        Map<String, Object> map = new HashMap<>(node.asMap());
+        map.remove("name");
+        baseEntity.setProperties(map);
         return baseEntity;
     }
 }

+ 34 - 1
src/main/java/com/qizhen/healsphere/repository/neo4j/BaseRelationshipRepository.java

@@ -2,7 +2,10 @@ package com.qizhen.healsphere.repository.neo4j;
 
 import cn.hutool.core.collection.CollUtil;
 import com.qizhen.healsphere.config.Neo4jUtil;
+import com.qizhen.healsphere.repository.neo4j.entity.BaseRelationship;
+import com.qizhen.healsphere.repository.neo4j.entity.Edge;
 import org.neo4j.driver.v1.*;
+import org.neo4j.driver.v1.types.Relationship;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
@@ -30,7 +33,6 @@ public class BaseRelationshipRepository {
                         "RETURN r",
                 startLabel, endLabel, relationshipType
         );
-
         try(Session session = neo4jUtil.getSession()) {
             StatementResult result = session.run(query, Values.parameters("startId", startId, "endId", endId));
             return result.hasNext();
@@ -136,4 +138,35 @@ public class BaseRelationshipRepository {
             session.run(query, Values.parameters("startId", startId,"endId",endId));
         }
     }
+
+
+    public List<Edge> triples(String startLabel, String relationship, String endLabel) {
+
+        String query = String.format("MATCH (n:`%s`)-[r:`%s`]->(m:`%s`)" +
+                "        RETURN n, r, m",startLabel,relationship,endLabel);
+
+        try(Session session = neo4jUtil.getSession()) {
+            StatementResult result = session.run(query);
+            List<Edge> list = new ArrayList<>();
+            if(result.hasNext()) {
+                List<Record> records = result.list();
+                for (Record record : records) {
+                    Edge edge = new Edge();
+                    edge.setStartNode(BaseNodeRepository.buildBaseEntity(record.get("n").asNode()));
+                    edge.setEndNode(BaseNodeRepository.buildBaseEntity(record.get("m").asNode()));
+                    edge.setRelationship(buildBaseRelationship(record.get("r").asRelationship()));
+                    list.add(edge);
+                }
+            }
+            return list;
+        }
+    }
+
+    public static BaseRelationship buildBaseRelationship(Relationship relationship) {
+        BaseRelationship baseRelationship = new BaseRelationship();
+        baseRelationship.setId(relationship.id());
+        baseRelationship.setType(relationship.type());
+        baseRelationship.setProperties(relationship.asMap());
+        return baseRelationship;
+    }
 }

+ 11 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/entity/BaseRelationship.java

@@ -0,0 +1,11 @@
+package com.qizhen.healsphere.repository.neo4j.entity;
+
+import lombok.Data;
+
+import java.util.Map;
+@Data
+public class BaseRelationship {
+    private Long id;
+    private String type;
+    private Map<String, Object> properties;
+}

+ 10 - 0
src/main/java/com/qizhen/healsphere/repository/neo4j/entity/Edge.java

@@ -0,0 +1,10 @@
+package com.qizhen.healsphere.repository.neo4j.entity;
+
+import lombok.Data;
+
+@Data
+public class Edge {
+    private BaseEntity startNode;
+    private BaseEntity endNode;
+    private BaseRelationship relationship;
+}

+ 50 - 0
src/main/resources/mapper/mysql/KgEdgeMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qizhen.healsphere.repository.mapper.KgEdgeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qizhen.healsphere.repository.mapper.entity.KgEdge">
+        <id column="id" property="id" />
+        <result column="src_id" property="src_id" />
+        <result column="dest_id" property="dest_id" />
+        <result column="name" property="name" />
+        <result column="status" property="status" />
+        <result column="category" property="category" />
+        <result column="version" property="version" />
+    </resultMap>
+
+    <!-- 插入 -->
+    <insert id="insertKgEdge" parameterType="com.qizhen.healsphere.repository.mapper.entity.KgEdge">
+        INSERT INTO kg_edge (id, src_id, dest_id, name, status, category, version)
+        VALUES (#{id}, #{src_id}, #{dest_id}, #{name}, #{status}, #{category}, #{version})
+    </insert>
+
+    <!-- 更新 -->
+    <update id="updateKgEdge" parameterType="com.qizhen.healsphere.repository.mapper.entity.KgEdge">
+        UPDATE kg_edge
+        SET src_id = #{src_id},
+            dest_id = #{dest_id},
+            name = #{name},
+            status = #{status},
+            category = #{category},
+            version = #{version}
+        WHERE id = #{id}
+    </update>
+
+    <!-- 查询单个 -->
+    <select id="selectKgEdgeById" parameterType="Long" resultMap="BaseResultMap">
+        SELECT * FROM kg_edge WHERE id = #{id}
+    </select>
+
+    <select id="selectKgEdge" resultMap="BaseResultMap">
+        SELECT * FROM kg_edge WHERE src_id = #{src_id} and dest_id = #{dest_id} and name=#{name}
+    </select>
+
+    <!-- 分页查询 -->
+    <select id="selectKgEdgesByPage" parameterType="map" resultMap="BaseResultMap">
+        SELECT * FROM kg_edge
+                          LIMIT #{pageSize} OFFSET #{offset}
+    </select>
+
+
+</mapper>

+ 46 - 0
src/main/resources/mapper/mysql/KgNodeMapper.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qizhen.healsphere.repository.mapper.KgNodeMapper">
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qizhen.healsphere.repository.mapper.entity.KgNode">
+        <id column="id" property="id" />
+        <result column="layout" property="layout" />
+        <result column="name" property="name" />
+        <result column="status" property="status" />
+        <result column="category" property="category" />
+        <result column="version" property="version" />
+    </resultMap>
+
+    <!-- 插入 -->
+    <insert id="insertKgNode" useGeneratedKeys="true" keyProperty="id" parameterType="com.qizhen.healsphere.repository.mapper.entity.KgNode">
+        INSERT INTO kg_node (name, category, layout, status, version)
+        VALUES (#{name}, #{category}, #{layout}, #{status}, #{version})
+    </insert>
+
+    <!-- 更新 -->
+    <update id="updateKgNode" parameterType="com.qizhen.healsphere.repository.mapper.entity.KgNode">
+        UPDATE kg_node
+        SET name = #{name},
+            category = #{category},
+            layout = #{layout},
+            status = #{status},
+            version = #{version}
+        WHERE id = #{id}
+    </update>
+    <!-- 根据ID查询 -->
+    <select id="getKgNode" resultMap="BaseResultMap">
+        SELECT * FROM kg_node WHERE name = #{name} and category = #{category},
+    </select>
+
+    <!-- 根据ID查询 -->
+    <select id="selectKgNodeById" parameterType="long" resultMap="BaseResultMap">
+        SELECT * FROM kg_node WHERE id = #{id}
+    </select>
+
+    <!-- 分页查询 -->
+    <select id="selectKgNodesByPage" parameterType="map" resultMap="BaseResultMap">
+        SELECT * FROM kg_node
+                          LIMIT #{pageSize} OFFSET #{offset}
+    </select>
+
+</mapper>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2 - 10637
src/test/java/com/qizhen/healsphere/DataWriteTest30.java


+ 91 - 4
src/test/java/com/qizhen/healsphere/DataWriteTest30zc.java

@@ -39,9 +39,58 @@ public class DataWriteTest30zc {
     @Autowired
     EntityService entityService;
 
-    private static String diseaseStr = "风湿性心脏病";
-
 
+    private static String diseaseStr = "霍乱" +
+            ",伤寒" +
+            ",副伤寒"+
+            ",细菌性痢疾" +
+            ",肠阿米巴病" +
+            ",感染性腹泻" +
+            ",急性肠炎" +
+            ",婴儿腹泻" +
+            ",肺结核" +
+            ",结核性胸膜炎" +
+            ",原发性肺结核" +
+            ",结核性脑膜炎" +
+            ",骨结核" +
+            ",颈椎结核" +
+            ",胸椎结核" +
+            ",腰椎结核" +
+            ",脊柱结核" +
+            ",骶髂关节结核" +
+            ",肾结核" +
+            ",子宫内膜结核" +
+            ",附睾结核" +
+            ",颈淋巴结结核" +
+            ",肠结核" +
+            ",结核性腹膜炎" +
+            ",鼠疫" +
+            ",钩端螺旋体病" +
+            ",麻风" +
+            ",皮肤白喉" +
+            ",白喉" +
+            ",猩红热" +
+            ",流行性脑脊髓膜炎" +
+            ",先天性梅毒" +
+            ",梅毒" +
+            ",淋病" +
+            ",流行性斑疹伤寒" +
+            ",狂犬病" +
+            ",流行性乙型脑炎" +
+            ",登革热" +
+            ",手足口病" +
+            ",乙型病毒性肝炎" +
+            ",慢性病毒性肝炎" +
+            ",艾滋病" +
+            ",疟疾" +
+            ",内脏利什曼病" +
+            ",黑热病" +
+            ",埃及血吸虫病" +
+            ",血吸虫病" +
+            ",肺血吸虫病" +
+            ",棘球蚴病" +
+            ",丝虫病" +
+            ",流行性感冒";
     @Test
     public void writeNeo4j() {
         String startLabel = "疾病";
@@ -121,13 +170,19 @@ public class DataWriteTest30zc {
 
     public static void main(String[] args) {
         String accessToken = BaidubceUtil.getAccessToken();
-        String propertyStr = "治疗药物\t的治疗药物或治疗药品归纳后有哪些药物或药品";
+        String propertyStr = "隔离期\t的隔离期或隔离观察期是多长时间" +
+                ",接触者检疫\t的接触者检疫措施有哪些";
 
-        saveExel(propertyStr, accessToken,"优先");
+        saveExel(propertyStr, accessToken,"3.1传染");
     }
 
     static HSSFWorkbook workbook;
 
+    static Long totalCount = 0l;
+    static Long successCount = 0l;
+    static Long failCount = 0l;
+    static Long unkonwCount = 0l;
+
     private static void saveExel(String propertyStr, String accessToken,String fileName) {
         String[] properties = propertyStr.split(",");
         workbook = new HSSFWorkbook();//这里也可以设置sheet的Name
@@ -148,7 +203,15 @@ public class DataWriteTest30zc {
                     row.createCell(6).setCellValue(temp.getRefenrece() == null ? "" : temp.getRefenrece());
                 }
             }
+            String successRate = String.format("%.2f", Double.valueOf(successCount)/ Double.valueOf(totalCount));
+            String unkonwRate = String.format("%.2f", Double.valueOf(unkonwCount)/ Double.valueOf(totalCount));
+            sheet.getRow(rows-1).createCell(7).setCellValue(successRate);
+            sheet.getRow(rows-1).createCell(8).setCellValue(unkonwRate);
             save(fileName);
+            totalCount = 0l;
+            successCount = 0l;
+            failCount = 0l;
+            unkonwCount = 0l;
         }
     }
 
@@ -239,6 +302,30 @@ public class DataWriteTest30zc {
                                             tempReferenceJA.add(referenceJO.getString("title"));
                                         }
                                     }
+
+                                    String llmQuestion = "你是一个资深的医学专家,请用“是”、“否”和“不确定”回答用户的问题回答。\n" +
+                                            "\n" +
+                                            "#要求\n" +
+                                            "1、只回答“是”、“否”和“不确定”,不要有额外的信息。\n" +
+                                            "\n" +
+                                            "#示例\n" +
+                                            "用户输入:急性上呼吸道感染的治疗药物是否包括“利巴韦林”?\n" +
+                                            "输出:是\n\n" +
+                                            "请回答:"+disease+"的"+relation+"是否包括“"+name+"”?";
+                                    String llmAnswer = BaidubceUtil.getChatResponse(llmQuestion, accessToken);
+                                    totalCount++;
+                                    temp.put("LLM-question",llmQuestion);
+                                    temp.put("LLM-answer",llmAnswer);
+                                    if(!StringUtils.isEmpty(llmAnswer) && llmAnswer.length()<7) {
+                                        if (llmAnswer.contains("是")) {
+                                            successCount++;
+                                        } else if (llmAnswer.contains("否")) {
+                                            failCount++;
+                                        }
+                                    }else{
+                                        unkonwCount++;
+                                    }
+
                                     temp.put("reference", tempReferenceJA);
                                     if(tempReferenceJA.size()<1){
                                         temp.put("defaultReferences", defaultReferences);

+ 83 - 0
src/test/java/com/qizhen/healsphere/MigrateDataTest.java

@@ -0,0 +1,83 @@
+package com.qizhen.healsphere;
+
+import com.alibaba.fastjson.JSON;
+import com.qizhen.healsphere.repository.mapper.KgEdgeMapper;
+import com.qizhen.healsphere.repository.mapper.KgNodeMapper;
+import com.qizhen.healsphere.repository.mapper.entity.KgEdge;
+import com.qizhen.healsphere.repository.mapper.entity.KgNode;
+import com.qizhen.healsphere.repository.neo4j.BaseRelationshipRepository;
+import com.qizhen.healsphere.repository.neo4j.entity.BaseEntity;
+import com.qizhen.healsphere.repository.neo4j.entity.Edge;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RunWith(SpringRunner.class)
+@ComponentScan(basePackages = {"com.qizhen.healsphere.model","com.qizhen.healsphere.repository"})
+@SpringBootTest
+public class MigrateDataTest {
+    String version = "knowledge_base";
+    @Autowired
+    BaseRelationshipRepository baseRelationshipRepository;
+
+    @Autowired
+    KgNodeMapper kgNodeMapper;
+
+    @Autowired
+    KgEdgeMapper kgEdgeMapper;
+    @Test
+    public void migrateData() {
+        String name = "疾病相关分型分类";
+        String category = "disease-related subtypes";
+        List<Edge> edges = baseRelationshipRepository.triples("疾病",name,"分型分类");
+        for(Edge temp: edges){
+            Long startNodeId = addNode(temp.getStartNode());
+            Long endNodeId = addNode(temp.getStartNode());
+            KgEdge kgEdge = kgEdgeMapper.selectKgEdge(startNodeId, endNodeId, name);
+            if(kgEdge==null){
+                kgEdge = new KgEdge();
+                kgEdge.setSrc_id(startNodeId);
+                kgEdge.setDest_id(endNodeId);
+                kgEdge.setName(name);
+                kgEdge.setCategory(category);
+                kgEdge.setVersion(version);
+                kgEdgeMapper.insertKgEdge(kgEdge);
+            }
+        }
+        System.out.println(JSON.toJSONString(edges));
+    }
+
+    private Long addNode(BaseEntity node) {
+        String category = node.getLabel().get(0);
+        if("疾病".equals(category)){
+            category = "Disease";
+        }else if("症状".equals(category)){
+            category = "Symptom";
+        }else if("厂商".equals(category)){
+            category = "Producer";
+        }else if("检查".equals(category)){
+            category = "Check";
+        }else if("药品".equals(category)){
+            category = "Drug";
+        }else if("科室".equals(category)){
+            category = "Department";
+        }else if("食品".equals(category)){
+            category = "Food";
+        }
+
+        KgNode kgNode = kgNodeMapper.getKgNode(node.getName(), category);
+        if(kgNode!=null) {
+            return node.getId();
+        }
+        kgNode.setVersion(version);
+        kgNodeMapper.insertKgNode(kgNode);
+        return kgNode.getId();
+    }
+}