Explorar o código

Merge branch 'master' into dev/word

zhoutg %!s(int64=4) %!d(string=hai) anos
pai
achega
72c661e53e

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

@@ -49,4 +49,8 @@ public class RetrievalDTO {
      * 症状
      */
     private List<String> symptomNames;
+    /**
+     * 体征
+     */
+    private List<String> vitalNames;
 }

+ 18 - 0
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -62,6 +62,9 @@ public class RetrievalFacade {
     @Autowired
     SymptomNameRepository symptomNameRepository;
 
+    @Autowired
+    VitalRepository vitalRepository;
+
     @Autowired
     BaseNodeRepository baseNodeRepository;
 
@@ -147,6 +150,9 @@ public class RetrievalFacade {
             case 9:
                 retrievalDTO.setSymptomNames(getSymptomNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
+            case 10:
+                retrievalDTO.setVitalNames(getVitalNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
 
         }
 
@@ -366,6 +372,18 @@ public class RetrievalFacade {
     }
 
 
+    /**
+     * 获取体征列表
+     */
+    public List<String> getVitalNames(String name, Integer size) {
+
+        VitalNameNode vitalNameNode = new VitalNameNode();
+        List<String> vitallist = vitalNameNode.getVitals(name, size, vitalRepository);
+
+        return vitallist;
+    }
+
+
     /**
      * 医学知识(静态信息)检索
      *

+ 1 - 1
src/main/java/com/diagbot/repository/SymptomNameRepository.java

@@ -41,7 +41,7 @@ public interface SymptomNameRepository extends Neo4jRepository<Symptom, Long> {
             "match(d:医保疾病名称)-[r{典型:1}]->(s:体征) where  s.name in {py} return d.name")
     List<String> getDisBySymptoms_1(@Param("py")List<String> symptoms);
 
-    @Query("MATCH (n:医保疾病名称) return distinct(n.name) as name LIMIT {size}")
+    @Query("MATCH (n:症状) return distinct(n.name) as name LIMIT {size}")
     List<String> getSymptomNames(@Param("size") Integer size);
 }
 

+ 48 - 0
src/main/java/com/diagbot/repository/VitalNameNode.java

@@ -0,0 +1,48 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.Vital;
+import com.diagbot.util.ListUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class VitalNameNode {
+
+    /**
+     * 获取体征名称列表
+     */
+    public List<String> getVitalList(String name, Integer size, VitalRepository vitalRepository) {
+        List<String> vitallt = new ArrayList<>();
+        if (null == size) {
+            size = 100;
+        }
+
+        List<Vital> vitallist = vitalRepository.index(name, name, size);
+
+        if (ListUtil.isNotEmpty(vitallist) && vitallist.size() > size) {
+            vitallist = vitallist.subList(0, size);
+        }
+
+        for (Vital vital : vitallist) {
+            vitallt.add(vital.getName());
+        }
+        return vitallt;
+    }
+
+
+
+    /**
+     * 获取体征名称列表
+     */
+    public List<String> getVitals(String name, Integer size, VitalRepository vitalRepository) {
+        List<String> vitallt = new ArrayList<>();
+        if (null == size || size == 0) {
+            size = Constants.termsize;
+        }
+
+        vitallt = vitalRepository.getVitalNames(size);
+
+        return vitallt;
+    }
+}
+

+ 19 - 0
src/main/java/com/diagbot/repository/VitalRepository.java

@@ -17,5 +17,24 @@ public interface VitalRepository extends Neo4jRepository<Vital, Long> {
 
     List<Vital> 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<Vital> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+
+    @Query("MATCH (n:体征) return distinct(n.name) as name LIMIT {size}")
+    List<String> getVitalNames(@Param("size") Integer size);
+
 }
 

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

@@ -46,7 +46,7 @@ public class RetrievalController {
     }
 
     @ApiOperation(value = "术语名称检索[Mark]",
-            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、9-症状 <br>" +
+            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、9-症状、10-体征 <br>" +
                     "inputStr: 检索内容<br>" )
     @PostMapping("/namelist")
     public RespDTO<RetrievalDTO> namelist(@Valid @RequestBody RetrievalVO retrievalVO) {