Pārlūkot izejas kodu

Merge branch 'master' into dev/word

zhoutg 4 gadi atpakaļ
vecāks
revīzija
475a078d96
22 mainītis faili ar 401 papildinājumiem un 17 dzēšanām
  1. 26 9
      src/main/java/com/diagbot/facade/NeoFacade.java
  2. 150 0
      src/main/java/com/diagbot/facade/RetrievalFacade.java
  3. 2 0
      src/main/java/com/diagbot/repository/Constants.java
  4. 15 0
      src/main/java/com/diagbot/repository/DeptNode.java
  5. 4 0
      src/main/java/com/diagbot/repository/DeptRepository.java
  6. 25 0
      src/main/java/com/diagbot/repository/LisNameNode.java
  7. 3 0
      src/main/java/com/diagbot/repository/LisNameRepository.java
  8. 19 0
      src/main/java/com/diagbot/repository/LisSetNode.java
  9. 3 0
      src/main/java/com/diagbot/repository/LisSetRepository.java
  10. 25 0
      src/main/java/com/diagbot/repository/MedicineNode.java
  11. 3 0
      src/main/java/com/diagbot/repository/MedicineRepository.java
  12. 17 0
      src/main/java/com/diagbot/repository/PacsNameNode.java
  13. 5 0
      src/main/java/com/diagbot/repository/PacsNameRepository.java
  14. 16 0
      src/main/java/com/diagbot/repository/SymptomNameNode.java
  15. 3 0
      src/main/java/com/diagbot/repository/SymptomNameRepository.java
  16. 3 0
      src/main/java/com/diagbot/repository/TransfusionRemindRepository.java
  17. 4 0
      src/main/java/com/diagbot/repository/YiBaoDiseaseNameRepository.java
  18. 33 8
      src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java
  19. 26 0
      src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java
  20. 4 0
      src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java
  21. 6 0
      src/main/java/com/diagbot/util/RedisUtil.java
  22. 9 0
      src/main/java/com/diagbot/web/RetrievalController.java

+ 26 - 9
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -181,7 +181,12 @@ public class NeoFacade {
         if (ListUtil.isNotEmpty(diseaseProperty)) {
             Map map = diseaseProperty.stream().collect(Collectors.toMap(
                     k -> RedisEnum.symptomNumType.getName() + k.getDisease(),
-                    v -> v.getNum(),
+                    v -> {
+                        Map<String, String> desc = new HashMap<>();
+                        desc.put("name", v.getDisease());
+                        desc.put("num", v.getNum().toString());
+                        return desc;
+                    },
                     (v1, v2) -> (v2)
             ));
             redisTemplate.opsForValue().multiSet(map);
@@ -466,15 +471,21 @@ public class NeoFacade {
     public void filterAndSort(List<String> dises, List<String> allDis, int gender_code, double age, PD pd, List<String> depts) {
         //推送出的所有疾病进行性别和年龄的过滤
         List<Map<String, String>> diseases = null;
-        Map<String, Double> dis_fbl = new HashMap<>();
+//        Map<String, Double> dis_fbl = new HashMap<>();
+        Map<String, Integer> dis_symptom_num = new HashMap<>();
         if (ListUtil.isNotEmpty(allDis)) {
-            //            diseases = redisUtil.get(allDis);
             diseases = redisUtil.geth(allDis);
             allDis = diseases.stream().filter(x -> NeoUtil.matchBasic(x, gender_code, age) && NeoUtil.matchPds(x.get("name"), pd)
-            && NeoUtil.matchDept(x,depts))
-                    //            allDis = diseases.stream().filter(x -> NeoUtil.matchBasic(x, gender_code, age))
-                    .map(x -> x.get("name")).collect(Collectors.toList());
-            diseases.forEach(x -> dis_fbl.put(x.get("name"), Double.parseDouble(x.get("fbl"))));
+            && NeoUtil.matchDept(x,depts)).map(x -> x.get("name")).collect(Collectors.toList());
+//            diseases.forEach(x -> dis_fbl.put(x.get("name"), Double.parseDouble(x.get("fbl"))));
+            List<Map<String, String>> symptomNumOfDis = redisUtil.getSymptomNumOfDis(allDis);
+            if(ListUtil.isNotEmpty(symptomNumOfDis)){
+                symptomNumOfDis.forEach(x -> {
+                    String name = x.get("name");
+                    Integer num = Integer.parseInt(x.get("num"));
+                    dis_symptom_num.put(name,num);
+                });
+            }
         }
 
         Map<Long, List<String>> numberDiseasesMap = disCountSort(allDis);
@@ -483,12 +494,18 @@ public class NeoFacade {
         Map<Long, Map<String, Double>> disPack = new LinkedHashMap<>();
         numberDiseasesMap.forEach((x, y) -> {
             Map<String, Double> collect = y.stream()
-                    .collect(Collectors.toMap(v -> v, v -> dis_fbl.get(v), (e1, e2) -> e2));
+//                    .collect(Collectors.toMap(v -> v, v -> dis_fbl.get(v), (e1, e2) -> e2));
+                    .collect(Collectors.toMap(v -> v, v -> Double.valueOf(dis_symptom_num.get(v)), (e1, e2) -> e2));
             disPack.put(x, collect);
         });
         disPack.forEach((x, y) -> {
-            Map<String, Double> collect = y.entrySet().stream()
+            //倒序排序
+            /*Map<String, Double> collect = y.entrySet().stream()
                     .sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
+                    .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));*/
+            //正序排序
+            Map<String, Double> collect = y.entrySet().stream()
+                    .sorted(Map.Entry.comparingByValue())
                     .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new));
             disPack.put(x, collect);
             collect.forEach((k, n) -> {

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

@@ -110,6 +110,50 @@ public class RetrievalFacade {
     }
 
 
+
+     /**
+     * 检索名称
+     *
+     * @param retrievalVO
+     * @return
+     */
+    public RetrievalDTO getname(RetrievalVO retrievalVO) {
+        RetrievalDTO retrievalDTO = new RetrievalDTO();
+        switch (retrievalVO.getType()) {
+            case 1:
+                retrievalDTO.setLisNames(getLisPackNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 2:
+                retrievalDTO.setLisDetailNames(getLisNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 3:
+                retrievalDTO.setPacsNames(getPACSNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 4:
+                retrievalDTO.setDiseaseNames(getDiseaseNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 5:
+                retrievalDTO.setDrugNames(getMedicineNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 6:
+                retrievalDTO.setOperationNames(getOperationNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 7:
+                retrievalDTO.setDeptNames(getDeptNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 8:
+                retrievalDTO.setTransfusionNames(getTransfusionNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+            case 9:
+                retrievalDTO.setSymptomNames(getSymptomNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+
+        }
+
+        return retrievalDTO;
+    }
+
+
     /*
      * 获取化验套餐名称列表
      */
@@ -216,6 +260,112 @@ public class RetrievalFacade {
     }
 
 
+    /*
+     * 获取化验套餐名称列表
+     */
+    public List<String> getLisPackNames(String info, Integer size) {
+
+        LisSetNode lisPackNode = new LisSetNode();
+        List<String> lisPacklist = lisPackNode.getLISPackNames(info, size, lisSetRepository);
+
+        return lisPacklist;
+    }
+
+
+    /*
+     * 获取化验细项名称列表
+     */
+    public List<LisDetailDTO> getLisNames(String info, Integer size) {
+
+        LisNameNode lisNode = new LisNameNode();
+        List<LisDetailDTO> lislist = lisNode.getLisDetailNames(info, size, lisRepository);
+
+        return lislist;
+    }
+
+
+    /*
+     * 获取辅检名称列表
+     */
+    public List<String> getPACSNames(String info, Integer size) {
+
+        PacsNameNode pacsNode = new PacsNameNode();
+        List<String> pacslist = pacsNode.getPACSNameAndPACSSubNames(info, size, pacsRepository);
+
+        return pacslist;
+    }
+
+
+    /*
+     * 获取疾病名称列表
+     */
+    public List<DiseaseInfoDTO> getDiseaseNames(String info, Integer size) {
+
+        YiBaoDiseaseNode yiBaoDiseaseNode = new YiBaoDiseaseNode();
+        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNames(info, size, icdDiseaseRepository);
+
+        return diseaselist;
+    }
+
+
+    /*
+     * 获取药品商品名称列表
+     */
+    public List<DrugInfoDTO> getMedicineNames(String info, Integer size) {
+
+        MedicineNode medicineNode = new MedicineNode();
+        List<DrugInfoDTO> medslist = medicineNode.getMedicines(info, size, medicineRepository);
+
+        return medslist;
+    }
+
+
+    /*
+     * 获取手术和操作名称列表
+     */
+    public List<OperationInfoDTO> getOperationNames(String info, Integer size) {
+
+        YiBaoOperationNameNode operationNode = new YiBaoOperationNameNode();
+        List<OperationInfoDTO> opslist = operationNode.getOperationNameList(info, size, operationRepository);
+
+        return opslist;
+    }
+
+
+    /*
+     * 获取输血方式列表
+     */
+    public List<String> getTransfusionNames(String info, Integer size) {
+        List<String> transfusionNames = transfusionRemindRepository.getTransfusionNames(size);
+
+        return transfusionNames;
+    }
+
+
+    /*
+     * 获取科室名称列表
+     */
+    public List<String> getDeptNames(String name, Integer size) {
+
+        DeptNode deptNode = new DeptNode();
+        List<String> deptlist = deptNode.getDeptNames(name, size, deptRepository);
+
+        return deptlist;
+    }
+
+
+    /**
+     * 获取症状列表
+     */
+    public List<String> getSymptomNames(String name, Integer size) {
+
+        SymptomNameNode symptomNameNode = new SymptomNameNode();
+        List<String> symplist = symptomNameNode.getSymptoms(name, size, symptomNameRepository);
+
+        return symplist;
+    }
+
+
     /**
      * 医学知识(静态信息)检索
      *

+ 2 - 0
src/main/java/com/diagbot/repository/Constants.java

@@ -5,6 +5,8 @@ import java.util.List;
 
 public class Constants {
 
+    public static Integer termsize = 100000;
+
     public static String yaoping = "药品";
     public static String yaopingleibie = "药品类别";
     public static String shoushu = "手术";

+ 15 - 0
src/main/java/com/diagbot/repository/DeptNode.java

@@ -28,5 +28,20 @@ public class DeptNode {
         }
         return deptlt;
     }
+
+
+    /**
+     * 获取科室名称列表
+     */
+    public List<String> getDeptNames(String name, Integer size, DeptRepository deptRepository) {
+        List<String> deptlt = new ArrayList<>();
+        if (null == size || size == 0) {
+            size = Constants.termsize;
+        }
+
+        deptlt = deptRepository.getDeptNames(size);
+
+        return deptlt;
+    }
 }
 

+ 4 - 0
src/main/java/com/diagbot/repository/DeptRepository.java

@@ -34,4 +34,8 @@ public interface DeptRepository extends Neo4jRepository<Dept, Long> {
             "WITH n SKIP 0 LIMIT $size\n" +
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     List<Dept> 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> getDeptNames(@Param("size") Integer size);
 }

+ 25 - 0
src/main/java/com/diagbot/repository/LisNameNode.java

@@ -248,6 +248,31 @@ public class LisNameNode {
 	}
 
 
+	/**
+	 * 获取化验细项名称列表
+	 */
+	public List<LisDetailDTO> getLisDetailNames(String name, Integer size, LisNameRepository lisRepository) {
+		String nodename;
+
+		List<LisDetailDTO> lislist = new ArrayList<>();
+		LisDetailDTO lisDetailDTO;
+
+		if (null == size || size == 0) {
+			size = 100000;
+		}
+
+		List<String> lisdetails = lisRepository.getname(size);
+
+		for (String detail : lisdetails) {
+			lisDetailDTO = new LisDetailDTO();
+			lisDetailDTO.setName(detail);
+			lislist.add(lisDetailDTO);
+		}
+
+		return lislist;
+	}
+
+
 	/**
 	 * 获取化验细项危急值
 	 */

+ 3 - 0
src/main/java/com/diagbot/repository/LisNameRepository.java

@@ -49,4 +49,7 @@ public interface LisNameRepository extends Neo4jRepository<LisName, Long> {
             "WITH n SKIP 0 LIMIT $size\n" +
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     List<LisName> 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> getname(@Param("size") Integer size);
 }

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

@@ -185,6 +185,25 @@ public class LisSetNode {
 	}
 
 
+
+	/**
+	 * 获取化验套餐名称列表
+	 */
+	public List<String> getLISPackNames(String name, Integer size, LisSetRepository lisPackRepository) {
+		String nodename;
+
+		List<String> lispacklist;
+
+		if (null == size || size == 0) {
+			size = 100000;
+		}
+
+		lispacklist = lisPackRepository.getname(size);
+
+		return lispacklist;
+	}
+
+
 	/**
 	 * 更新实体属性信息
 	 */

+ 3 - 0
src/main/java/com/diagbot/repository/LisSetRepository.java

@@ -49,5 +49,8 @@ public interface LisSetRepository extends Neo4jRepository<LisSet, Long> {
             "WITH n SKIP 0 LIMIT $size\n" +
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     List<LisSet> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @Query("MATCH (n:实验室检查套餐名) RETURN DISTINCT(n.name) LIMIT $size")
+    List<String> getname(@Param("size") Integer size);
 }
 

+ 25 - 0
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -170,6 +170,31 @@ public class MedicineNode {
         }
 
 
+        return medslist;
+    }
+
+
+    /**
+     * 获取药品名称列表
+     */
+    public List<DrugInfoDTO> getMedicines(String name, Integer size, MedicineRepository medicineRepository) {
+        String nodename;
+
+        List<DrugInfoDTO> medslist = new ArrayList<>();
+        DrugInfoDTO drugInfoDTO;
+        if (null == size || size == 0) {
+            size = 10000;
+        }
+
+        List<String> medicines = medicineRepository.getMedicineNames(size);
+
+        for (String med : medicines) {
+            drugInfoDTO = new DrugInfoDTO();
+            drugInfoDTO.setName(med);
+            medslist.add(drugInfoDTO);
+        }
+
+
         return medslist;
     }
 }

+ 3 - 0
src/main/java/com/diagbot/repository/MedicineRepository.java

@@ -54,4 +54,7 @@ public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
             "WITH n SKIP 0 LIMIT $size\n" +
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     List<Medicine> 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> getMedicineNames(@Param("size") Integer size);
 }

+ 17 - 0
src/main/java/com/diagbot/repository/PacsNameNode.java

@@ -253,6 +253,7 @@ public class PacsNameNode {
         return pacslist;
     }
 
+
     /**
      * 获取辅检名称列表
      */
@@ -272,6 +273,22 @@ public class PacsNameNode {
 
         return pacslist;
     }
+
+
+    /**
+     * 获取辅检及子项目名称列表
+     */
+    public List<String> getPACSNameAndPACSSubNames(String name, Integer size, PacsNameRepository pacsRepository) {
+
+        List<String> pacslist;
+        if (null == size || size == 0) {
+            size = Constants.termsize;
+        }
+
+        pacslist = pacsRepository.getPACSNames(size);
+
+        return pacslist;
+    }
 }
 
 

+ 5 - 0
src/main/java/com/diagbot/repository/PacsNameRepository.java

@@ -89,4 +89,9 @@ public interface PacsNameRepository extends Neo4jRepository<PacsName, Long> {
             "and n.`name` IN  $names  \n" +
             "RETURN labels(n) as labels,n.name as name\n")
     List<BaseNodeInfo> findByNameInMultipleLabel(@Param("names") List<String> names);
+
+
+    @Query("MATCH (n) WHERE (n:辅助检查名称 OR n:辅助检查子项目名称)\n" +
+            "RETURN DISTINCT n.name as name LIMIT ($size)\n")
+    List<String> getPACSNames(@Param("size") Integer size);
 }

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

@@ -28,5 +28,21 @@ public class SymptomNameNode {
         }
         return symplt;
     }
+
+
+
+    /**
+     * 获取症状名称列表
+     */
+    public List<String> getSymptoms(String name, Integer size, SymptomNameRepository symptomNameRepository) {
+        List<String> symplt = new ArrayList<>();
+        if (null == size || size == 0) {
+            size = Constants.termsize;
+        }
+
+        symplt = symptomNameRepository.getSymptomNames(size);
+
+        return symplt;
+    }
 }
 

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

@@ -40,5 +40,8 @@ public interface SymptomNameRepository extends Neo4jRepository<Symptom, Long> {
             "union all\n" +
             "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)")
+    List<String> getSymptomNames(@Param("size") Integer size);
 }
 

+ 3 - 0
src/main/java/com/diagbot/repository/TransfusionRemindRepository.java

@@ -23,5 +23,8 @@ public interface TransfusionRemindRepository extends Neo4jRepository<Transfusion
     @Query("MATCH (n:输血提醒指标) where n.输注类型 in {names} return distinct(n.输注类型)")
     List<String> findTransfusionByTypeIn(@Param("names") List<String> names);
 
+    @Query("MATCH (n:输血提醒指标) return distinct(n.输注类型) as type LIMIT $(size)")
+    List<String> getTransfusionNames(@Param("size") Integer size);
+
 }
 

+ 4 - 0
src/main/java/com/diagbot/repository/YiBaoDiseaseNameRepository.java

@@ -49,5 +49,9 @@ public interface YiBaoDiseaseNameRepository extends Neo4jRepository<YiBaoDisease
             "WITH n SKIP 0 LIMIT $size\n" +
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     List<YiBaoDiseaseName> 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> getDiseaseNames(@Param("size") Integer size);
 }
 

+ 33 - 8
src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java

@@ -30,21 +30,21 @@ public class YiBaoDiseaseNode {
 			pushBaseDTO = new PushBaseDTO();
 			pushBaseDTO.setName(disease.getName());
 			pushDTO.setDisease(pushBaseDTO);
-			pushDTO.setSymptoms(disease.getSymptoms().stream().collect(Collectors.toMap(Symptom::getName,Symptom::getId,(e1, e2) -> e2))
+			pushDTO.setSymptoms(disease.getSymptoms().stream().collect(Collectors.toMap(Symptom::getName, Symptom::getId, (e1, e2) -> e2))
 					.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
-					.map(x ->NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
+					.map(x -> NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
 
-			pushDTO.setVitals(disease.getVitals().stream().collect(Collectors.toMap(Vital::getName,Vital::getId,(e1, e2) -> e2))
+			pushDTO.setVitals(disease.getVitals().stream().collect(Collectors.toMap(Vital::getName, Vital::getId, (e1, e2) -> e2))
 					.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
-					.map(x ->NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
+					.map(x -> NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
 
-			pushDTO.setLis(disease.getLisnames().stream().collect(Collectors.toMap(LisBigName::getName,LisBigName::getId,(e1, e2) -> e2))
+			pushDTO.setLis(disease.getLisnames().stream().collect(Collectors.toMap(LisBigName::getName, LisBigName::getId, (e1, e2) -> e2))
 					.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
-					.map(x ->NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
+					.map(x -> NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
 
-			pushDTO.setPacs(disease.getPacsnames().stream().collect(Collectors.toMap(PacsName::getName,PacsName::getId,(e1, e2) -> e2))
+			pushDTO.setPacs(disease.getPacsnames().stream().collect(Collectors.toMap(PacsName::getName, PacsName::getId, (e1, e2) -> e2))
 					.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
-					.map(x ->NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
+					.map(x -> NeoUtil.updatePushInfo(x.getKey())).collect(Collectors.toList()));
 
 
 
@@ -311,5 +311,30 @@ public class YiBaoDiseaseNode {
 
 		return diseaseInfoDTOList;
 	}
+
+
+	/**
+	 * 获取疾病名称列表
+	 */
+	public List<DiseaseInfoDTO> getDiseaseNames(String name, Integer size, YiBaoDiseaseNameRepository diseaseRepository) {
+
+		List<DiseaseInfoDTO> diseaselist = new ArrayList<>();
+		DiseaseInfoDTO diseaseInfoDTO;
+
+		if (null == size || size == 0) {
+			size = Constants.termsize;
+		}
+
+		List<String> diseases = diseaseRepository.getDiseaseNames(size);
+
+		for (String disease : diseases) {
+			diseaseInfoDTO = new DiseaseInfoDTO();
+			diseaseInfoDTO.setName(disease);
+			diseaselist.add(diseaseInfoDTO);
+		}
+
+		return diseaselist;
+	}
+
 }
 

+ 26 - 0
src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java

@@ -290,6 +290,32 @@ public class YiBaoOperationNameNode {
     }
 
 
+    /**
+     * 获取手术和操作名称
+     */
+    public List<OperationInfoDTO> getOperationNameList(String name, Integer size, YiBaoOperationNameRepository operationRepository) {
+
+        String nodename;
+
+        List<OperationInfoDTO> opslist = new ArrayList<>();
+        OperationInfoDTO opInfoDTO;
+
+        if (null == size || size == 0) {
+            size = Constants.termsize;
+        }
+
+        List<String> operations = operationRepository.getOperationNames(size);
+
+        for (String opname : operations) {
+            opInfoDTO = new OperationInfoDTO();
+            opInfoDTO.setName(opname);
+            opslist.add(opInfoDTO);
+        }
+
+        return opslist;
+    }
+
+
     public HighRiskNeoDTO isHighRisk(WordCrfDTO wordCrfDTO, YiBaoOperationName operation, HighRiskNeoDTO highRiskNeoDTO) {
 
         NodeNeoDTO nodeNeoDTO;

+ 4 - 0
src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java

@@ -49,4 +49,8 @@ public interface YiBaoOperationNameRepository extends Neo4jRepository<YiBaoOpera
             "WITH n SKIP 0 LIMIT $size\n" +
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     List<YiBaoOperationName> 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> getOperationNames(@Param("size") Integer size);
 }

+ 6 - 0
src/main/java/com/diagbot/util/RedisUtil.java

@@ -108,6 +108,12 @@ public class RedisUtil {
         return list;
     }
 
+    public List<Map<String,String>> getSymptomNumOfDis(List<String> keys) {
+        keys = keys.stream().map(x ->RedisEnum.symptomNumType.getName()+x).collect(Collectors.toList());
+        List<Map<String,String>> list = redisTemplate.opsForValue().multiGet(keys);
+        return list;
+    }
+
     public List<String> getSv(List<String> keys) {
         keys = keys.stream().map(x ->RedisEnum.symptomVitalType.getName()+x).collect(Collectors.toList());
         List<String> list = redisTemplate.opsForValue().multiGet(keys);

+ 9 - 0
src/main/java/com/diagbot/web/RetrievalController.java

@@ -45,6 +45,15 @@ public class RetrievalController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "术语名称检索[Mark]",
+            notes = "type: 类型:1-化验大项、2-化验小项、3-辅检、4-诊断、5-药品、6-手术和操作、7-科室、8-输血、9-症状 <br>" +
+                    "inputStr: 检索内容<br>" )
+    @PostMapping("/namelist")
+    public RespDTO<RetrievalDTO> namelist(@Valid @RequestBody RetrievalVO retrievalVO) {
+        RetrievalDTO data = retrievalFacade.getname(retrievalVO);
+        return RespDTO.onSuc(data);
+    }
+
     @ApiOperation(value = "医学知识(静态知识)检索[zhaops]",
             notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作 <br>" +
                     "inputStr: 检索内容<br>")