Selaa lähdekoodia

诊断依据后台维护返回修改

kongwz 5 vuotta sitten
vanhempi
commit
788fb82007

+ 1 - 0
graphdb/pom.xml

@@ -83,6 +83,7 @@
             <version>1.2.47</version>
             <scope>compile</scope>
         </dependency>
+
         <dependency>
             <groupId>org.diagbot</groupId>
             <artifactId>public</artifactId>

+ 74 - 17
graphdb/src/main/java/org/diagbot/repository/DiseaseRepository.java

@@ -22,48 +22,48 @@ public interface DiseaseRepository extends Neo4jRepository<Disease, Long> {
     //删除诊断依据
     //删除关系1
     @Query("match(d:Disease)<-[r:拟诊|:确诊|:警惕]-(c:Condition)<-[r1]-(k:Condition)<-[r2]-(h:Condition) where d.disId={0} detach delete c,k,h")
-    void deleteRelation1(Integer disId);
+    void deleteRelation1(Long disId);
     //删除关系2
     @Query("match(d:Disease)<-[r:拟诊|:确诊|:警惕]-(c:Condition)<-[r1]-(k:Condition) where d.disId={0} detach delete c,k")
-    void deleteRelation2(Integer disId);
+    void deleteRelation2(Long disId);
     //删除关系3
     @Query("match(d:Disease)<-[r:拟诊|:确诊|:警惕]-(c:Condition) where d.disId={0} detach delete r")
-    void deleteRelation3(Integer disId);
+    void deleteRelation3(Long disId);
     //删除排除关系4
     @Query("match(d:Disease)<-[r:排除]-(l) where d.disId={0} detach delete l")
-    void deleteRelation4(Integer disId);
+    void deleteRelation4(Long disId);
     //删除排除关系5
     @Query("match(d:Disease)-[r:表现]->(j)-[r1:属于]-(k) where d.disId={0} detach delete r")
-    void deleteRelation5(Integer disId);
+    void deleteRelation5(Long disId);
     //删除排除关系6
     @Query("match(d:Disease)-[r:表现]->(j) where d.disId={0} detach delete r")
-    void deleteRelation6(Integer disId);
+    void deleteRelation6(Long disId);
     //删除排除关系7
     @Query("match(d:Disease)-[r:推荐]->(j:LIS) where d.disId={0} detach delete r")
-    void deleteRelation7(Integer disId);
+    void deleteRelation7(Long disId);
     //删除排除关系8
     @Query("match(d:Disease)-[r:推荐]->(j:PACS) where d.disId={0} detach delete r")
-    void deleteRelation8(Integer disId);
+    void deleteRelation8(Long disId);
     //删除排除关系9
     @Query("match(d:Disease)-[r:鉴别诊断]->(b) where d.disId={0} detach delete r")
-    void deleteRelation9(Integer disId);
+    void deleteRelation9(Long disId);
 
     //更新图谱
     //存储疾病
     @Query("merge(d:Disease{name:{0},disId:{1},emergency:{2}})")
-    void mergeDis(String name,Integer disId,Integer emergency);
+    void mergeDis(String name,Long disId,Integer emergency);
     //存储确诊,拟诊,警惕
     @Query( "merge(c:Condition{name:{0},path:{1}})")
     void mergeCondition(String disName,Integer path);
     @Query("match(c:Condition{name:{0}}),(d:Disease{disId:{1}})" +
             " merge(c)-[:确诊]->(d)")
-    void mergeQueNiHigh(String conditionName,Integer disId);
+    void mergeQueNiHigh(String conditionName,Long disId);
     @Query("match(c:Condition{name:{0}}),(d:Disease{disId:{1}})" +
             " merge(c)-[:拟诊]->(d)")
-    void mergeNiHigh(String conditionName,Integer disId);
+    void mergeNiHigh(String conditionName,Long disId);
     @Query("match(c:Condition{name:{0}}),(d:Disease{disId:{1}})" +
             " merge(c)-[:警惕]->(d)")
-    void mergeHigh(String conditionName,Integer disId);
+    void mergeHigh(String conditionName,Long disId);
     //任几的condition
     @Query("merge(c:Condition{name:{0},path:{1},relation:{2}})")
     void mergeRenCondition(String conditionName,Integer path,String relation);
@@ -75,8 +75,65 @@ public interface DiseaseRepository extends Neo4jRepository<Disease, Long> {
     @Query("match(c:Condition{name:{0}}),(s:Condition{name:{1}}) merge(c)-[r:诊断依据]->(s)")
     void mergeNUMCondition(String c1,String c2);
     //开始添加所有的词语
-    //添加标准词
-    @Query("merge(d:Symptom{name:?2})")
-    void mergeStandard(String name);
-
+    //添加症状标准词
+    @Query("merge(d:Symptom{name:{0}})")
+    void mergeStandardSymptom(String name);
+    //疾病表现症状标准词
+    @Query("match(d:Disease{disId:{0}}),(s:Symptom{name:{1}}) merge(d)-[r:表现]->(s)")
+    void mergeRelationStandard(Long disId,String name);
+    //属于症状标准词
+    @Query("match(d:Condition{name:{0}}),(s:Symptom{name:{1}}) merge(d)<-[r:属于]-(s)")
+    void mergeRelationStandardshuyu(String conditionName,String name);
+    //添加体征标准词
+    @Query("merge(d:Vital{name:{0}})")
+    void mergeStandardVital(String name);
+    //疾病表现体征标准词
+    @Query("match(d:Disease{disId:{0}}),(s:Vital{name:{1}}) merge(d)-[r:表现]->(s)")
+    void mergeRelationStandardVital(Long disId,String name);
+    //属于体征标准词
+    @Query("match(d:Condition{name:{0}}),(s:Vital{name:{1}}) merge(d)<-[r:属于]-(s)")
+    void mergeRelationStandardVitalshuyu(String conditionName,String name);
+    //添加病史标准词
+    @Query("merge(d:History{name:{0}})")
+    void mergeStandardHistory(String name);
+    //疾病表现病史标准词
+    @Query("match(d:Disease{disId:{0}}),(s:History{name:{1}}) merge(d)-[r:表现]->(s)")
+    void mergeRelationStandardHistory(Long disId,String name);
+    //属于病史标准词
+    @Query("match(d:Condition{name:{0}}),(s:History{name:{1}}) merge(d)<-[r:属于]-(s)")
+    void mergeRelationStandardHistoryshuyu(String conditionName,String name);
+    //添加诱因标准词
+    @Query("merge(d:Cause{name:{0}})")
+    void mergeStandardCause(String name);
+    //疾病表现诱因标准词
+    @Query("match(d:Disease{disId:{0}}),(s:Cause{name:{1}}) merge(d)-[r:表现]->(s)")
+    void mergeRelationStandardCause(Long disId,String name);
+    //属于诱因标准词
+    @Query("match(d:Condition{name:{0}}),(s:Cause{name:{1}}) merge(d)<-[r:属于]-(s)")
+    void mergeRelationStandardCauseshuyu(String conditionName,String name);
+    //添加病程标准词
+    @Query("merge(d:Prognosis{name:{0}})")
+    void mergeStandardPrognosis(String name);
+    //疾病表现病程标准词
+    @Query("match(d:Disease{disId:{0}}),(s:Prognosis{name:{1}}) merge(d)-[r:表现]->(s)")
+    void mergeRelationStandardPrognosis(Long disId,String name);
+    //属于病程标准词
+    @Query("match(d:Condition{name:{0}}),(s:Prognosis{name:{1}}) merge(d)<-[r:属于]-(s)")
+    void mergeRelationStandardPrognosisshuyu(String conditionName,String name);
+    //添加其他标准词
+    @Query("merge(d:Other{name:{0}})")
+    void mergeStandardOther(String name);
+    //疾病表现其他标准词
+    @Query("match(d:Disease{disId:{0}}),(s:Other{name:{1}}) merge(d)-[r:表现]->(s)")
+    void mergeRelationStandardOther(Long disId,String name);
+    //属于其他标准词
+    @Query("match(d:Condition{name:{0}}),(s:Other{name:{1}}) merge(d)<-[r:属于]-(s)")
+    void mergeRelationStandardOthershuyu(String conditionName,String name);
+    //添加鉴别诊断
+    @Query("merge(d:DifferentDis{name:{0}})")
+    void mergeDifferentDis(String disName);
+    //疾病和鉴别诊断创建关系
+    @Query("match(d:Disease{disId:{0}}),(s:DifferentDis{name:{1}}) merge(d)-[r:鉴别诊断]->(s)")
+    void mergeRelationDifferentDis(Long disId,String name);
 }
+

+ 1 - 1
graphdb/src/main/java/org/diagbot/service/KnowledgeService.java

@@ -55,6 +55,6 @@ public interface KnowledgeService {
     //更新图谱
     RespDTO updateNeoDisease(NeoParamVO singleDisease);
     //删除图谱
-    Integer deleteNeoDisease(NeoParamVO singleDisease);
+    RespDTO deleteNeoDisease(NeoParamVO singleDisease);
 
 }

+ 145 - 17
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -1420,16 +1420,13 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
      */
     @Override
     public RespDTO updateNeoDisease(NeoParamVO singleDisease) {
-        RespDTO respDTO = new RespDTO();
-        respDTO.data=true;
-        respDTO.code="1";
-        Integer disId = singleDisease.getDisId();
+        RespDTO respDTO = RespDTO.onSuc(true);;
+        Long disId = singleDisease.getId();
         String disName = this.getDisName(disId);
         if(StringUtils.isNotEmpty(disName)){
             diseaseRepository.mergeDis(disName,disId,0);
         }else {
-            respDTO.code="0";
-            respDTO.msg="在数据库中没有找个这个疾病!!!";
+            respDTO = RespDTO.onError("在数据库中没有找到"+disId+"对应的疾病!!");
         }
         //获取每个诊断依据的全部数据
         List<Map<String, String>> allData = this.getAllData(disId);
@@ -1437,7 +1434,6 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
         Map<String, List<String>> allNiQueZhenCollection = this.getAllNiQueZhenCollection(disId);
         this.saveNiQue2Neo(allData,allNiQueZhenCollection,disName,disId);
         this.saveData2Neo4j(allData,disId,disName);
-
         System.out.println();
 
 
@@ -1450,7 +1446,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
      * @param disId
      * @return
      */
-    public List<Map<String,String>> getAllData(Integer disId){
+    public List<Map<String,String>> getAllData(Long disId){
         List<Map<String,String>> contentList = new ArrayList<>();
         conn = this.getConn();
         Statement st = null;
@@ -1497,7 +1493,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
      * @param disId
      * @return
      */
-    public Map<String,List<String>> getAllNiQueZhenCollection(Integer disId)  {
+    public Map<String,List<String>> getAllNiQueZhenCollection(Long disId)  {
         Map<String,List<String>> queNiMap = new HashMap<>();
         conn = this.getConn();
         Statement st = null;
@@ -1556,7 +1552,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
      * @param disId
      * @return
      */
-    public String getDisName(Integer disId){
+    public String getDisName(Long disId){
         Statement st = null;
         ResultSet rs = null;
         conn = this.getConn();
@@ -1583,7 +1579,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
     /**
      * 把确诊,拟诊,警惕存入图谱
      */
-    public void saveNiQue2Neo(List<Map<String, String>> allData,Map<String, List<String>> allNiQueZhenCollection,String disName,Integer disId){
+    public void saveNiQue2Neo(List<Map<String, String>> allData,Map<String, List<String>> allNiQueZhenCollection,String disName,Long disId){
         List<String> stringList =null;
         String[] types = {"确诊","拟诊","警惕"};
         Integer path = 1;
@@ -1724,7 +1720,7 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
      * @param disId
      * @param disName
      */
-    public void saveData2Neo4j(List<Map<String, String>> allData,Integer disId,String disName){
+    public void saveData2Neo4j(List<Map<String, String>> allData,Long disId,String disName){
 //        Map<String, Map<String, String>> standard_info_synonym_map = NlpCache.standard_info_synonym_map;
         for (Map<String,String> row:allData) {
             String code = row.get("code");//编码
@@ -1734,13 +1730,141 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
             String relation = row.get("relation");//关联词
             String result = row.get("result");//结果
             if(StringUtils.isNotEmpty(type)){
+                String[] split =null;
                 if(!"3".equals(type) && !"4".equals(type) && !"5".equals(type)){
                     //添加词语之前,要找标准词
                     //添加standard
-                    diseaseRepository.mergeStandard(Label.getLabel(type),standard);
+                    switch (type){
+                        case "1": //症状
+                            diseaseRepository.mergeStandardSymptom(standard);
+                            diseaseRepository.mergeRelationStandard(disId,standard);
+                            diseaseRepository.mergeRelationStandardshuyu(disName+code,standard);
+                            if(StringUtils.isNotEmpty(relation)){
+                                split = relation.split("、");
+                                if(split!=null && split.length>0){
+                                    for (String ci:split) {
+                                        if(StringUtils.isNotEmpty(ci)){
+                                            //找标准词
+                                            diseaseRepository.mergeStandardSymptom(ci);
+                                            diseaseRepository.mergeRelationStandardshuyu(disName+code,ci);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case "2"://体征结果
+                            diseaseRepository.mergeStandardVital(standard);
+                            diseaseRepository.mergeRelationStandardVital(disId,standard);
+                            diseaseRepository.mergeRelationStandardVitalshuyu(disName+code,standard);
+                            if(StringUtils.isNotEmpty(relation)){
+                                split = relation.split("、");
+                                if(split!=null && split.length>0){
+                                    for (String ci:split) {
+                                        if(StringUtils.isNotEmpty(ci)){
+                                            //找标准词
+                                            diseaseRepository.mergeStandardVital(ci);
+                                            diseaseRepository.mergeRelationStandardVitalshuyu(disName+code,ci);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case "6"://病史
+                            diseaseRepository.mergeStandardHistory(standard);
+                            diseaseRepository.mergeRelationStandardHistory(disId,standard);
+                            diseaseRepository.mergeRelationStandardHistoryshuyu(disName+code,standard);
+                            if(StringUtils.isNotEmpty(relation)){
+                                split = relation.split("、");
+                                if(split!=null && split.length>0){
+                                    for (String ci:split) {
+                                        if(StringUtils.isNotEmpty(ci)){
+                                            //找标准词
+                                            diseaseRepository.mergeStandardHistory(ci);
+                                            diseaseRepository.mergeRelationStandardHistoryshuyu(disName+code,ci);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case "7"://诱因
+                            diseaseRepository.mergeStandardCause(standard);
+                            diseaseRepository.mergeRelationStandardCause(disId,standard);
+                            diseaseRepository.mergeRelationStandardCauseshuyu(disName+code,standard);
+                            if(StringUtils.isNotEmpty(relation)){
+                                split = relation.split("、");
+                                if(split!=null && split.length>0){
+                                    for (String ci:split) {
+                                        if(StringUtils.isNotEmpty(ci)){
+                                            //找标准词
+                                            diseaseRepository.mergeStandardCause(ci);
+                                            diseaseRepository.mergeRelationStandardCauseshuyu(disName+code,ci);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case "8"://病程
+                            diseaseRepository.mergeStandardPrognosis(standard);
+                            diseaseRepository.mergeRelationStandardPrognosis(disId,standard);
+                            diseaseRepository.mergeRelationStandardPrognosisshuyu(disName+code,standard);
+                            if(StringUtils.isNotEmpty(relation)){
+                                split = relation.split("、");
+                                if(split!=null && split.length>0){
+                                    for (String ci:split) {
+                                        if(StringUtils.isNotEmpty(ci)){
+                                            //找标准词
+                                            diseaseRepository.mergeStandardPrognosis(ci);
+                                            diseaseRepository.mergeRelationStandardPrognosisshuyu(disName+code,ci);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                        case "9"://其他
+                            diseaseRepository.mergeStandardOther(standard);
+                            diseaseRepository.mergeRelationStandardOther(disId,standard);
+                            diseaseRepository.mergeRelationStandardOthershuyu(disName+code,standard);
+                            if(StringUtils.isNotEmpty(relation)){
+                                split = relation.split("、");
+                                if(split!=null && split.length>0){
+                                    for (String ci:split) {
+                                        if(StringUtils.isNotEmpty(ci)){
+                                            //找标准词
+                                            diseaseRepository.mergeStandardOther(ci);
+                                            diseaseRepository.mergeRelationStandardOthershuyu(disName+code,ci);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                    }
+                }else if("5".equals(type)){   //鉴别诊断
+                    //找标准词
+                    diseaseRepository.mergeDifferentDis(standard);
+                    diseaseRepository.mergeRelationDifferentDis(disId,standard);
+                    if(StringUtils.isNotEmpty(relation)){
+                        split = relation.split("、");
+                        if(split !=null && split.length>0){
+                            for (String dis:split) {
+                                if(StringUtils.isNotEmpty(dis)){
+                                    //找标准词
+                                    diseaseRepository.mergeDifferentDis(dis);
+                                    diseaseRepository.mergeRelationDifferentDis(disId,dis);
+                                }
+                            }
+                        }
+                    }
+                }else if("3".equals(type)){ //处理化验
+                    String lis = "";
+                    //查找化验大项的标准词
+                    if(StringUtils.isNotEmpty(relation) && standard.equals(relation)){
+                        lis = standard;
+                    }else if(StringUtils.isNotEmpty(standard) && StringUtils.isEmpty(relation)){
+                        lis = standard;
+                    }else if(StringUtils.isNotEmpty(standard)&& StringUtils.isNotEmpty(relation)&&!standard.equals(relation)){
 
+                    }
                 }
-
             }
         }
 
@@ -1751,8 +1875,9 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
      * @return
      */
     @Override
-    public Integer deleteNeoDisease(NeoParamVO singleDisease) {
-        Integer disId = singleDisease.getDisId();
+    public RespDTO deleteNeoDisease(NeoParamVO singleDisease) {
+        Long disId = singleDisease.getId();
+        RespDTO respDTO = null;
         if(disId != null){
             diseaseRepository.deleteRelation1(disId);
             diseaseRepository.deleteRelation2(disId);
@@ -1763,8 +1888,11 @@ public class    KnowledgeServiceImpl implements KnowledgeService {
             diseaseRepository.deleteRelation7(disId);
             diseaseRepository.deleteRelation8(disId);
             diseaseRepository.deleteRelation9(disId);
+            respDTO = RespDTO.onSuc(true);
+        }else {
+            respDTO = RespDTO.onError(disId +" 删除失败!!!");
         }
-        return 1;
+        return respDTO;
     }
 
     @Override

+ 8 - 13
graphdb/src/main/java/org/diagbot/vo/domain/NeoParamVO.java

@@ -1,27 +1,22 @@
 package org.diagbot.vo.domain;
 
-public class NeoParamVO {
-    private  Integer disId; //诊断依据id,是唯一的
+import java.io.Serializable;
 
-    public Integer getDisId() {
-        return disId;
-    }
-
-    public void setDisId(Integer disId) {
-        this.disId = disId;
-    }
+public class NeoParamVO implements Serializable {
+    private  Long id; //诊断依据id,是唯一的
 
-    public NeoParamVO() {
+    public Long getId() {
+        return id;
     }
 
-    public NeoParamVO(Integer disId) {
-        this.disId = disId;
+    public void setId(Long id) {
+        this.id = id;
     }
 
     @Override
     public String toString() {
         return "NeoParamVO{" +
-                "disId=" + disId +
+                "id=" + id +
                 '}';
     }
 }

+ 1 - 17
graphdb/src/main/java/org/diagbot/web/KnowledgeController.java

@@ -192,20 +192,7 @@ public class KnowledgeController {
      */
     @RequestMapping("/deleteDisease")
     public RespDTO deleteDiseaseData(@Valid @RequestBody NeoParamVO disease){
-        String code = "1";
-        String mess = "";
-        RespDTO respDTO = new RespDTO();
-        Integer integer = knowledgeService.deleteNeoDisease(disease);
-        if(integer == 1){
-            code = "1";
-            mess = disease.getDisId()+"删除成功!!!!!!!!";
-        }else {
-            code = "0";
-            mess = disease.getDisId()+"删除失败!!!!!!!";
-        }
-        respDTO.code = code;
-        respDTO.msg = mess;
-        respDTO.data = true;
+        RespDTO respDTO = knowledgeService.deleteNeoDisease(disease);
         return respDTO;
     }
 
@@ -216,10 +203,7 @@ public class KnowledgeController {
      */
     @RequestMapping("/updateDisease")
     public RespDTO updateDiseaseData(@Valid @RequestBody NeoParamVO disease){
-        String code = "1";
-        String mess = "";
         RespDTO respDTO = knowledgeService.updateNeoDisease(disease);
-
         return respDTO;
     }
 }