瀏覽代碼

添加症状查询的功能

MarkHuang 4 年之前
父節點
當前提交
8f933b481b

+ 4 - 0
src/main/java/com/diagbot/dto/RetrievalDTO.java

@@ -45,4 +45,8 @@ public class RetrievalDTO {
      * 输血
      */
     private List<String> transfusionNames;
+    /**
+     * 症状
+     */
+    private List<String> symptomNames;
 }

+ 19 - 17
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -14,23 +14,7 @@ import com.diagbot.entity.node.YiBaoDiseaseName;
 import com.diagbot.entity.node.YiBaoOperationName;
 import com.diagbot.entity.relationship.LisNameLisSet;
 import com.diagbot.enums.StaticTypeEnum;
-import com.diagbot.repository.BaseNodeRepository;
-import com.diagbot.repository.DeptNode;
-import com.diagbot.repository.DeptRepository;
-import com.diagbot.repository.LisNameNode;
-import com.diagbot.repository.LisNameRepository;
-import com.diagbot.repository.LisSetNode;
-import com.diagbot.repository.LisSetRepository;
-import com.diagbot.repository.MedicineNode;
-import com.diagbot.repository.MedicineRepository;
-import com.diagbot.repository.PacsNameNode;
-import com.diagbot.repository.PacsNameRepository;
-import com.diagbot.repository.PacsSubNameRepository;
-import com.diagbot.repository.TransfusionRemindRepository;
-import com.diagbot.repository.YiBaoDiseaseNode;
-import com.diagbot.repository.YiBaoDiseaseNameRepository;
-import com.diagbot.repository.YiBaoOperationNameNode;
-import com.diagbot.repository.YiBaoOperationNameRepository;
+import com.diagbot.repository.*;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
@@ -75,6 +59,9 @@ public class RetrievalFacade {
     @Autowired
     TransfusionRemindRepository transfusionRemindRepository;
 
+    @Autowired
+    SymptomNameRepository symptomNameRepository;
+
     @Autowired
     BaseNodeRepository baseNodeRepository;
 
@@ -114,6 +101,9 @@ public class RetrievalFacade {
             case 8:
                 retrievalDTO.setTransfusionNames(getTransfusion(retrievalVO.getInputStr()));
                 break;
+            case 9:
+                retrievalDTO.setSymptomNames(getSymptoms(retrievalVO.getInputStr()));
+                break;
         }
 
         return retrievalDTO;
@@ -214,6 +204,18 @@ public class RetrievalFacade {
     }
 
 
+    /**
+     * 获取症状列表
+     */
+    public List<String> getSymptoms(String name) {
+
+        SymptomNameNode symptomNameNode = new SymptomNameNode();
+        List<String> symplist = symptomNameNode.getSymptomList(name, symptomNameRepository, baseNodeRepository);
+
+        return symplist;
+    }
+
+
     /**
      * 医学知识(静态信息)检索
      *

+ 28 - 0
src/main/java/com/diagbot/repository/SymptomNameNode.java

@@ -0,0 +1,28 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.Symptom;
+import com.diagbot.util.ListUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SymptomNameNode {
+
+    /**
+     * 获取症状名称列表
+     */
+    public List<String> getSymptomList(String name, SymptomNameRepository symptomNameRepository, BaseNodeRepository baseNodeRepository) {
+        List<String> symplt = new ArrayList<>();
+        List<Symptom> symplist = symptomNameRepository.index(name, name, 100);
+
+        if (ListUtil.isNotEmpty(symplist) && symplist.size() > 100) {
+            symplist = symplist.subList(0, 100);
+        }
+
+        for (Symptom symptom : symplist) {
+            symplt.add(symptom.getName());
+        }
+        return symplt;
+    }
+}
+

+ 16 - 0
src/main/java/com/diagbot/repository/SymptomNameRepository.java

@@ -16,6 +16,22 @@ public interface SymptomNameRepository extends Neo4jRepository<Symptom, Long> {
 
     List<Symptom> findByNameContaining(String name);
 
+    @Query("MATCH (n:`症状`) WHERE toLower(n.`name`) = toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) = toLower($pycode)  \n" +
+            "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n" +
+            "union\n" +
+            "MATCH (n:`症状`) WHERE toLower(n.`name`) starts with toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) starts with toLower($pycode)  \n" +
+            "WITH n SKIP 0 LIMIT $size\n" +
+            "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n" +
+            "union\n" +
+            "MATCH (n:`症状`) WHERE toLower(n.`name`) CONTAINS toLower($name) \n" +
+            "OR toLower(n.`拼音编码`) CONTAINS toLower($pycode)  \n" +
+            "WITH n SKIP 0 LIMIT $size\n" +
+            "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
+    List<Symptom> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+
     @Query("match(d:医保疾病名称)-[r{典型:1}]->(s) where any(label in labels(s) WHERE label in ['症状', '体征']) and s.name in {py} return d.name")
 //    @Query("match(d:医保疾病名称)-[r]->(s) where any(label in labels(s) WHERE label in ['症状', '体征']) and s.name in {py} return d.name")
     List<String> getDisBySymptoms(@Param("py")List<String> symptoms);

+ 1 - 1
src/main/java/com/diagbot/web/RetrievalController.java

@@ -35,7 +35,7 @@ public class RetrievalController {
     private ConceptFacade conceptFacade;
 
     @ApiOperation(value = "术语检索[zhaops]",
-            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血 <br>" +
+            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、9-症状 <br>" +
                     "inputStr: 检索内容<br>" +
                     "sex: 性别:1-男、2-女、3-通用 <br>" +
                     "age: 年龄<br>")