Browse Source

Merge remote-tracking branch 'origin/master' into innerDevelop

kongwz 4 years ago
parent
commit
6b67677562
43 changed files with 1188 additions and 439 deletions
  1. 3 0
      src/main/java/com/diagbot/config/CacheDeleteInit.java
  2. 4 0
      src/main/java/com/diagbot/dto/RetrievalDTO.java
  3. 18 0
      src/main/java/com/diagbot/entity/SymptomNumOfDiS.java
  4. 0 1
      src/main/java/com/diagbot/entity/node/LisAlias.java
  5. 2 1
      src/main/java/com/diagbot/entity/relationship/LisNameLisAlias.java
  6. 1 0
      src/main/java/com/diagbot/enums/RedisEnum.java
  7. 2 2
      src/main/java/com/diagbot/facade/BillFacade.java
  8. 11 0
      src/main/java/com/diagbot/facade/CacheFacade.java
  9. 62 23
      src/main/java/com/diagbot/facade/NeoFacade.java
  10. 199 29
      src/main/java/com/diagbot/facade/RetrievalFacade.java
  11. 4 0
      src/main/java/com/diagbot/repository/BaseNodeRepository.java
  12. 42 30
      src/main/java/com/diagbot/repository/CombiOperationNode.java
  13. 4 1
      src/main/java/com/diagbot/repository/Constants.java
  14. 23 4
      src/main/java/com/diagbot/repository/DeptNode.java
  15. 4 0
      src/main/java/com/diagbot/repository/DeptRepository.java
  16. 17 0
      src/main/java/com/diagbot/repository/LisAliasRepository.java
  17. 21 0
      src/main/java/com/diagbot/repository/LisCriticalRepository.java
  18. 55 21
      src/main/java/com/diagbot/repository/LisNameNode.java
  19. 3 0
      src/main/java/com/diagbot/repository/LisNameRepository.java
  20. 41 14
      src/main/java/com/diagbot/repository/LisSetNode.java
  21. 3 0
      src/main/java/com/diagbot/repository/LisSetRepository.java
  22. 12 7
      src/main/java/com/diagbot/repository/MedRegNameNode.java
  23. 102 68
      src/main/java/com/diagbot/repository/MedicineCodeNode.java
  24. 46 12
      src/main/java/com/diagbot/repository/MedicineNode.java
  25. 3 0
      src/main/java/com/diagbot/repository/MedicineRepository.java
  26. 110 77
      src/main/java/com/diagbot/repository/PacsNameNode.java
  27. 5 0
      src/main/java/com/diagbot/repository/PacsNameRepository.java
  28. 79 57
      src/main/java/com/diagbot/repository/PacsSubNameNode.java
  29. 16 0
      src/main/java/com/diagbot/repository/SymptomNameNode.java
  30. 3 0
      src/main/java/com/diagbot/repository/SymptomNameRepository.java
  31. 3 0
      src/main/java/com/diagbot/repository/TransfusionRemindRepository.java
  32. 8 4
      src/main/java/com/diagbot/repository/TransfusionSuggestNode.java
  33. 48 0
      src/main/java/com/diagbot/repository/VitalNameNode.java
  34. 19 0
      src/main/java/com/diagbot/repository/VitalRepository.java
  35. 4 0
      src/main/java/com/diagbot/repository/YiBaoDiseaseNameRepository.java
  36. 56 20
      src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java
  37. 117 67
      src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java
  38. 4 0
      src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java
  39. 17 0
      src/main/java/com/diagbot/util/NeoUtil.java
  40. 6 0
      src/main/java/com/diagbot/util/RedisUtil.java
  41. 1 1
      src/main/java/com/diagbot/vo/BillNeoVO.java
  42. 1 0
      src/main/java/com/diagbot/web/CacheController.java
  43. 9 0
      src/main/java/com/diagbot/web/RetrievalController.java

+ 3 - 0
src/main/java/com/diagbot/config/CacheDeleteInit.java

@@ -38,6 +38,9 @@ public class CacheDeleteInit implements CommandLineRunner {
         cacheFacade.loadDiseaseTypeCache();
         log.info("CDSS-CORE服务启动加载疾病属性(性别、年龄、发病率)缓存成功!");
 
+        cacheFacade.getSymptomNumCache();
+        log.info("CDSS-CORE服务启动加载疾病对应的症状个数缓存成功!");
+
         /*neoFacade.getDisSexCache();
         log.info("CDSS-CORE服务启动加载图谱疾病对应性别信息缓存成功!");
 

+ 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/entity/SymptomNumOfDiS.java

@@ -0,0 +1,18 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.data.neo4j.annotation.QueryResult;
+
+/**
+ * @author kwz
+ * @date 2020/10/15
+ * @time 14:23
+ */
+@Getter
+@Setter
+@QueryResult
+public class SymptomNumOfDiS {
+    private String disease;
+    private Integer num;
+}

+ 0 - 1
src/main/java/com/diagbot/entity/node/LisAlias.java

@@ -16,7 +16,6 @@ import java.util.HashSet;
 @NodeEntity(label = "实验室检查别名")
 public class LisAlias extends BaseNode  {
 
-
 	@Relationship(type = "实验室检查名称相关实验室检查别名", direction = Relationship.INCOMING)
 	private Set<LisNameLisAlias> lisnameLisAlias = new HashSet<>();
 

+ 2 - 1
src/main/java/com/diagbot/entity/relationship/LisNameLisAlias.java

@@ -8,7 +8,8 @@ import lombok.Setter;
 import org.neo4j.ogm.annotation.*;
 
 @Getter
-@Setter@RelationshipEntity(type = "实验室检查名称相关实验室检查别名")
+@Setter
+@RelationshipEntity(type = "实验室检查名称相关实验室检查别名")
 public class LisNameLisAlias extends BaseRelation {
     @StartNode
     private LisName lisName;

+ 1 - 0
src/main/java/com/diagbot/enums/RedisEnum.java

@@ -13,6 +13,7 @@ public enum RedisEnum implements KeyedNamed {
 
     drugType(1, "drugType:"),
     symptomVitalType(3, "symptomVitalType:"),
+    symptomNumType(4, "symptomNumType:"),
     diseaseType(2, "diseaseType:");
 
     @Setter

+ 2 - 2
src/main/java/com/diagbot/facade/BillFacade.java

@@ -57,8 +57,8 @@ public class BillFacade {
         List<Drug> drugs = wordCrfDTO.getDrugOrder();
 
         for (Drug item : drugs) {
-            billNeoVO.getDrugList().add(new HashMap<String, String>()
-                        {{put(item.getName(), item.getUniqueName());}});
+            billNeoVO.getDrugList().add(new HashMap<String, Drug>()
+                        {{put(item.getName(), item);}});
         }
 
         List<Pacs> pacslist = wordCrfDTO.getPacsOrder();

+ 11 - 0
src/main/java/com/diagbot/facade/CacheFacade.java

@@ -88,6 +88,17 @@ public class CacheFacade {
 
     }
 
+    /**
+     * 加载图谱中的疾病对应的症状个数
+     *
+     * @return
+     */
+    public void getSymptomNumCache() {
+        redisUtil.deleteByPrex(RedisEnum.symptomNumType.getName());
+        neoFacade.symptomNumCache();
+
+    }
+
     public void clearLoadCache(String str) {
         redisUtil.deleteByPrex(str);
     }

+ 62 - 23
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -8,6 +8,7 @@ import com.diagbot.client.StandConvertServiceClient;
 import com.diagbot.dto.*;
 import com.diagbot.entity.DiseaseInfo;
 import com.diagbot.entity.DiseaseProperty;
+import com.diagbot.entity.SymptomNumOfDiS;
 import com.diagbot.entity.node.LisRemind;
 import com.diagbot.entity.relationship.LisRemindGroup;
 import com.diagbot.entity.relationship.LisRemindMedicine;
@@ -175,6 +176,23 @@ public class NeoFacade {
         }
     }
 
+    public void symptomNumCache() {
+        List<SymptomNumOfDiS> diseaseProperty = nodeRepository.getSymptomNum();
+        if (ListUtil.isNotEmpty(diseaseProperty)) {
+            Map map = diseaseProperty.stream().collect(Collectors.toMap(
+                    k -> RedisEnum.symptomNumType.getName() + k.getDisease(),
+                    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);
+        }
+    }
+
     /**
      * 返回图谱中所有症状缓存信息
      *
@@ -362,9 +380,11 @@ public class NeoFacade {
     public List<String> addDiagFromPresent(List<String> lis_dis, List<String> presentDiags) {
         List<String> lis_dis_new = Lists.newArrayList();
         if (ListUtil.isNotEmpty(lis_dis) && ListUtil.isNotEmpty(presentDiags)) {
-            if (lis_dis.size() >= 10) {
+//            if (lis_dis.size() >= 10) {
+            if (lis_dis.size() >= 1) {
                 for (int i = 0; i < lis_dis.size(); i++) {
-                    if (i == 10 - presentDiags.size()) {
+//                    if (i == 10 - presentDiags.size()) {
+                    if (i == 1) {
                         for (String dis : presentDiags) {
                             if (!lis_dis_new.contains(dis)) {
                                 lis_dis_new.add(dis);
@@ -440,6 +460,7 @@ public class NeoFacade {
         if (presentPushVo != null) {
             if (ListUtil.isNotEmpty(presentPushVo.getSymptoms())) {
                 symptom_present = presentPushVo.getSymptoms().stream().map(x -> x.getName()).collect(Collectors.toList());
+                symptom_present = symptom_present.size() >= 5? symptom_present.subList(0,5) : symptom_present;
             }
         }
         symptoms = Stream.of(symptom_chief, symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
@@ -451,15 +472,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);
@@ -468,12 +495,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) -> {
@@ -745,28 +778,34 @@ public class NeoFacade {
 
         for (LisRemindYiBaoDiseaseName lisReminddisease : lisRemind.getLisReminddisease()) {
             if (NeoUtil.isExist(lisReminddisease)) {
-                nodeNeoDTO = new NodeNeoDTO();
-                nodeNeoDTO.setName(lisReminddisease.getYiBaoDiseaseName().getName());
-                nodeNeoDTO.setTermtype(Constants.zhenduan);
-                nodeNeoDTOS.add(nodeNeoDTO);
+                if (NeoUtil.isExist(lisReminddisease.getYiBaoDiseaseName())) {
+                    nodeNeoDTO = new NodeNeoDTO();
+                    nodeNeoDTO.setName(lisReminddisease.getYiBaoDiseaseName().getName());
+                    nodeNeoDTO.setTermtype(Constants.zhenduan);
+                    nodeNeoDTOS.add(nodeNeoDTO);
+                }
             }
         }
 
         for (LisRemindGroup lisRemindGroup : lisRemind.getLisRemindgroup()) {
             if (NeoUtil.isExist(lisRemindGroup)) {
-                nodeNeoDTO = new NodeNeoDTO();
-                nodeNeoDTO.setName(lisRemindGroup.getGroup().getName());
-                nodeNeoDTO.setTermtype(Constants.group);
-                nodeNeoDTOS.add(nodeNeoDTO);
+                if (NeoUtil.isExist(lisRemindGroup.getGroup())) {
+                    nodeNeoDTO = new NodeNeoDTO();
+                    nodeNeoDTO.setName(lisRemindGroup.getGroup().getName());
+                    nodeNeoDTO.setTermtype(Constants.group);
+                    nodeNeoDTOS.add(nodeNeoDTO);
+                }
             }
         }
 
         for (LisRemindMedicine lisRemindmedicine : lisRemind.getLisRemindmedicines()) {
             if (NeoUtil.isExist(lisRemindmedicine)) {
-                nodeNeoDTO = new NodeNeoDTO();
-                nodeNeoDTO.setName(lisRemindmedicine.getMedicine().getName());
-                nodeNeoDTO.setTermtype(Constants.yaoping);
-                nodeNeoDTOS.add(nodeNeoDTO);
+                if (NeoUtil.isExist(lisRemindmedicine.getMedicine())) {
+                    nodeNeoDTO = new NodeNeoDTO();
+                    nodeNeoDTO.setName(lisRemindmedicine.getMedicine().getName());
+                    nodeNeoDTO.setTermtype(Constants.yaoping);
+                    nodeNeoDTOS.add(nodeNeoDTO);
+                }
             }
         }
 
@@ -799,7 +838,7 @@ public class NeoFacade {
     /**
      * 处理处方开单合理性
      */
-    public List<BillNeoDTO> getDrugBill(List<Map<String, String>> medsterm) {
+    public List<BillNeoDTO> getDrugBill(List<Map<String, Drug>> medsterm) {
 
         MedicineNode medicineNode = new MedicineNode();
         List<BillNeoDTO> billNeoDTOs = medicineNode.getMedicineBill(medsterm, medicineRepository, medRegNameRepository);

+ 199 - 29
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -62,6 +62,9 @@ public class RetrievalFacade {
     @Autowired
     SymptomNameRepository symptomNameRepository;
 
+    @Autowired
+    VitalRepository vitalRepository;
+
     @Autowired
     BaseNodeRepository baseNodeRepository;
 
@@ -78,28 +81,28 @@ public class RetrievalFacade {
         RetrievalDTO retrievalDTO = new RetrievalDTO();
         switch (retrievalVO.getType()) {
             case 1:
-                retrievalDTO.setLisNames(getLisPacks(retrievalVO.getInputStr()));
+                retrievalDTO.setLisNames(getLisPacks(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 2:
-                retrievalDTO.setLisDetailNames(getLis(retrievalVO.getInputStr()));
+                retrievalDTO.setLisDetailNames(getLis(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 3:
-                retrievalDTO.setPacsNames(getPACSs(retrievalVO.getInputStr()));
+                retrievalDTO.setPacsNames(getPACSs(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 4:
-                retrievalDTO.setDiseaseNames(getDiseases(retrievalVO.getInputStr()));
+                retrievalDTO.setDiseaseNames(getDiseases(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 5:
-                retrievalDTO.setDrugNames(getMedicines(retrievalVO.getInputStr()));
+                retrievalDTO.setDrugNames(getMedicines(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 6:
-                retrievalDTO.setOperationNames(getOperations(retrievalVO.getInputStr()));
+                retrievalDTO.setOperationNames(getOperations(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 7:
-                retrievalDTO.setDeptNames(getDepts(retrievalVO.getInputStr()));
+                retrievalDTO.setDeptNames(getDepts(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 8:
-                retrievalDTO.setTransfusionNames(getTransfusion(retrievalVO.getInputStr()));
+                retrievalDTO.setTransfusionNames(getTransfusion(retrievalVO.getInputStr(), retrievalVO.getSize()));
                 break;
             case 9:
                 retrievalDTO.setSymptomNames(getSymptoms(retrievalVO.getInputStr(), retrievalVO.getSize()));
@@ -110,13 +113,60 @@ 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;
+            case 10:
+                retrievalDTO.setVitalNames(getVitalNames(retrievalVO.getInputStr(), retrievalVO.getSize()));
+                break;
+
+        }
+
+        return retrievalDTO;
+    }
+
+
     /*
      * 获取化验套餐名称列表
      */
-    public List<String> getLisPacks(String info) {
+    public List<String> getLisPacks(String info, Integer size) {
 
         LisSetNode lisPackNode = new LisSetNode();
-        List<String> lisPacklist = lisPackNode.getLISPackNameList(info, lisSetRepository, baseNodeRepository);
+        List<String> lisPacklist = lisPackNode.getLISPackNameList(info, size, lisSetRepository, baseNodeRepository);
 
         return lisPacklist;
     }
@@ -125,10 +175,10 @@ public class RetrievalFacade {
     /*
      * 获取化验细项名称列表
      */
-    public List<LisDetailDTO> getLis(String info) {
+    public List<LisDetailDTO> getLis(String info, Integer size) {
 
         LisNameNode lisNode = new LisNameNode();
-        List<LisDetailDTO> lislist = lisNode.getLisDetailList(info, lisRepository, baseNodeRepository);
+        List<LisDetailDTO> lislist = lisNode.getLisDetailList(info, size, lisRepository, baseNodeRepository);
 
         return lislist;
     }
@@ -137,10 +187,10 @@ public class RetrievalFacade {
     /*
      * 获取辅检名称列表
      */
-    public List<String> getPACSs(String info) {
+    public List<String> getPACSs(String info, Integer size) {
 
         PacsNameNode pacsNode = new PacsNameNode();
-        List<String> pacslist = pacsNode.getPACSNameAndPACSSubNameList(info, pacsRepository);
+        List<String> pacslist = pacsNode.getPACSNameAndPACSSubNameList(info, size, pacsRepository);
 
         return pacslist;
     }
@@ -149,10 +199,10 @@ public class RetrievalFacade {
     /*
      * 获取疾病名称列表
      */
-    public List<DiseaseInfoDTO> getDiseases(String info) {
+    public List<DiseaseInfoDTO> getDiseases(String info, Integer size) {
 
         YiBaoDiseaseNode yiBaoDiseaseNode = new YiBaoDiseaseNode();
-        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNameList(info, icdDiseaseRepository, baseNodeRepository);
+        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNameList(info, size, icdDiseaseRepository, baseNodeRepository);
 
         return diseaselist;
     }
@@ -161,10 +211,10 @@ public class RetrievalFacade {
     /*
      * 获取药品商品名称列表
      */
-    public List<DrugInfoDTO> getMedicines(String info) {
+    public List<DrugInfoDTO> getMedicines(String info, Integer size) {
 
         MedicineNode medicineNode = new MedicineNode();
-        List<DrugInfoDTO> medslist = medicineNode.getMedicineList(info, medicineRepository, baseNodeRepository);
+        List<DrugInfoDTO> medslist = medicineNode.getMedicineList(info, size, medicineRepository, baseNodeRepository);
 
         return medslist;
     }
@@ -173,10 +223,10 @@ public class RetrievalFacade {
     /*
      * 获取手术和操作名称列表
      */
-    public List<OperationInfoDTO> getOperations(String info) {
+    public List<OperationInfoDTO> getOperations(String info, Integer size) {
 
         YiBaoOperationNameNode operationNode = new YiBaoOperationNameNode();
-        List<OperationInfoDTO> opslist = operationNode.getOperationList(info, operationRepository, baseNodeRepository);
+        List<OperationInfoDTO> opslist = operationNode.getOperationList(info, size, operationRepository, baseNodeRepository);
 
         return opslist;
     }
@@ -185,7 +235,7 @@ public class RetrievalFacade {
     /*
      * 获取输血方式列表
      */
-    public List<String> getTransfusion(String info) {
+    public List<String> getTransfusion(String info, Integer size) {
         List<String> transfusionNames = transfusionRemindRepository.findTransfusionByName(info);
 
         return transfusionNames;
@@ -195,10 +245,10 @@ public class RetrievalFacade {
     /*
      * 获取科室名称列表
      */
-    public List<String> getDepts(String name) {
+    public List<String> getDepts(String name, Integer size) {
 
         DeptNode deptNode = new DeptNode();
-        List<String> deptlist = deptNode.getDeptNameList(name, deptRepository, baseNodeRepository);
+        List<String> deptlist = deptNode.getDeptNameList(name, size, deptRepository, baseNodeRepository);
 
         return deptlist;
     }
@@ -216,6 +266,124 @@ 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;
+    }
+
+
+    /**
+     * 获取体征列表
+     */
+    public List<String> getVitalNames(String name, Integer size) {
+
+        VitalNameNode vitalNameNode = new VitalNameNode();
+        List<String> vitallist = vitalNameNode.getVitals(name, size, vitalRepository);
+
+        return vitallist;
+    }
+
+
     /**
      * 医学知识(静态信息)检索
      *
@@ -323,12 +491,14 @@ public class RetrievalFacade {
                 if (lis.getLisNamelissets().size() > 0) {
                     for (LisNameLisSet lisSet : lis.getLisNamelissets()) {
                         if (NeoUtil.isExist(lisSet)) {
-                            StaticKnowledgeIndexDTO staticLisSetDTO = new StaticKnowledgeIndexDTO();
-                            staticLisSetDTO.setRetrievalName(lis.getName());
-                            staticLisSetDTO.setName(lisSet.getLisSet().getName());
-                            staticLisSetDTO.setType(StaticTypeEnum.LISSET.getKey());
-                            staticLisSetDTO.setTypeName(StaticTypeEnum.LISSET.getName());
-                            lisSetRelatecLisRetList.add(staticLisSetDTO);
+                            if (NeoUtil.isExist(lisSet.getLisSet())) {
+                                StaticKnowledgeIndexDTO staticLisSetDTO = new StaticKnowledgeIndexDTO();
+                                staticLisSetDTO.setRetrievalName(lis.getName());
+                                staticLisSetDTO.setName(lisSet.getLisSet().getName());
+                                staticLisSetDTO.setType(StaticTypeEnum.LISSET.getKey());
+                                staticLisSetDTO.setTypeName(StaticTypeEnum.LISSET.getName());
+                                lisSetRelatecLisRetList.add(staticLisSetDTO);
+                            }
                         }
                     }
                 }

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

@@ -3,6 +3,7 @@ package com.diagbot.repository;
 
 import com.diagbot.entity.DiseaseInfo;
 import com.diagbot.entity.DiseaseProperty;
+import com.diagbot.entity.SymptomNumOfDiS;
 import com.diagbot.entity.node.*;
 import com.diagbot.entity.node.base.BaseNode;
 import org.springframework.data.neo4j.annotation.Query;
@@ -114,5 +115,8 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     @Query("match(d:医保疾病名称{name:{dis}})-[r]->(j) return type(r) as tp,collect(distinct j.name) as col")
     List<DiseaseInfo> getDiseaseInfo(@Param("dis") String dis);
 
+    @Query("match(d:医保疾病名称)-[r:医保疾病名称相关症状]->(s:症状) return d.name as disease,count(s) as num")
+    List<SymptomNumOfDiS> getSymptomNum();
+
 
 }

+ 42 - 30
src/main/java/com/diagbot/repository/CombiOperationNode.java

@@ -19,22 +19,26 @@ public class CombiOperationNode {
 
 		CombiOperationGender combiOpGender = combiOp.getCombiOpgender();
 		if (NeoUtil.isExist(combiOpGender)) {
-			Gender gender = combiOpGender.getGender();
-			nodeInfo = new NodeInfo();
-			nodeInfo.setName(gender.getName());
-			nodeInfo.setTypeval(Constants.gender);
-			combiOpBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+			if (NeoUtil.isExist(combiOpGender.getGender())) {
+				Gender gender = combiOpGender.getGender();
+				nodeInfo = new NodeInfo();
+				nodeInfo.setName(gender.getName());
+				nodeInfo.setTypeval(Constants.gender);
+				combiOpBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+			}
 		}
 
 
 		Set<CombiOperationGroup> combiOpGroups = combiOp.getCombiOpgroups();
 		for (CombiOperationGroup combiOpGroup : combiOpGroups) {
 			if (NeoUtil.isExist(combiOpGroup)) {
-				Group group = combiOpGroup.getGroup();
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(group.getName());
-				nodeInfo.setTypeval(Constants.group);
-				combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				if (NeoUtil.isExist(combiOpGroup.getGroup())) {
+					Group group = combiOpGroup.getGroup();
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(group.getName());
+					nodeInfo.setTypeval(Constants.group);
+					combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 
@@ -42,11 +46,13 @@ public class CombiOperationNode {
 		Set<CombiOperationLis> combiOplislist = combiOp.getCombiOpLiss();
 		for (CombiOperationLis combiOplis : combiOplislist) {
 			if (NeoUtil.isExist(combiOplis)) {
-				Lis lis = combiOplis.getLis();
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(lis.getName());
-				nodeInfo.setTypeval(Constants.lis);
-				combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				if (NeoUtil.isExist(combiOplis.getLis())) {
+					Lis lis = combiOplis.getLis();
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(lis.getName());
+					nodeInfo.setTypeval(Constants.lis);
+					combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 
@@ -54,11 +60,13 @@ public class CombiOperationNode {
 		Set<CombiOperationPacsDescribe> combiOpPacsDescribes = combiOp.getCombiOppacsdescs();
 		for (CombiOperationPacsDescribe combiOpPacsDesc : combiOpPacsDescribes) {
 			if (NeoUtil.isExist(combiOpPacsDesc)) {
-				PacsDescribe pacsdesc = combiOpPacsDesc.getPacsDescribe();
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(pacsdesc.getName());
-				nodeInfo.setTypeval(Constants.pacsdesc);
-				combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				if (NeoUtil.isExist(combiOpPacsDesc.getPacsDescribe())) {
+					PacsDescribe pacsdesc = combiOpPacsDesc.getPacsDescribe();
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(pacsdesc.getName());
+					nodeInfo.setTypeval(Constants.pacsdesc);
+					combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 
@@ -66,11 +74,13 @@ public class CombiOperationNode {
 		Set<CombiOperationDisease> combiOpDiseases = combiOp.getCombiOpdiseases();
 		for (CombiOperationDisease combiOpdisease : combiOpDiseases) {
 			if (NeoUtil.isExist(combiOpdisease)) {
-				Disease disease = combiOpdisease.getDisease();
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(disease.getName());
-				nodeInfo.setTypeval(Constants.disease);
-				combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				if (NeoUtil.isExist(combiOpdisease.getDisease())) {
+					Disease disease = combiOpdisease.getDisease();
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(disease.getName());
+					nodeInfo.setTypeval(Constants.disease);
+					combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 
@@ -78,11 +88,13 @@ public class CombiOperationNode {
 		Set<CombiOperationMedAllergen> combiOpMedAllergens = combiOp.getCombiOpmedallergens();
 		for (CombiOperationMedAllergen combiOpmedallergen : combiOpMedAllergens) {
 			if (NeoUtil.isExist(combiOpmedallergen)) {
-				MedAllergen medAllergen = combiOpmedallergen.getMedAllergen();
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(medAllergen.getName());
-				nodeInfo.setTypeval(Constants.medallergen);
-				combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				if (NeoUtil.isExist(combiOpmedallergen.getMedAllergen())) {
+					MedAllergen medAllergen = combiOpmedallergen.getMedAllergen();
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(medAllergen.getName());
+					nodeInfo.setTypeval(Constants.medallergen);
+					combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 

+ 4 - 1
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 = "手术";
@@ -86,7 +88,8 @@ public class Constants {
     public static String yibaooperation = "医保手术和操作";
 
     public static List<String> node_Labels = Arrays.asList("症状","体征","临床表现","过敏原","药物过敏原",
-            "实验室检查套餐名","实验室检查名称","实验室检查一级分类","实验室检查二级分类","辅助检查名称",
+            "实验室检查套餐名","实验室检查名称","实验室检查别名","实验室检查危急值","实验室检查一级分类",
+            "实验室检查二级分类","辅助检查名称",
             "辅助检查子项目名称","医保疾病名称","医保手术和操作名称","联合项目","科室","药品代码通用名",
             "药品通用名称","药品注册名称");
 }

+ 23 - 4
src/main/java/com/diagbot/repository/DeptNode.java

@@ -11,12 +11,16 @@ public class DeptNode {
     /**
      * 获取科室名称列表
      */
-    public List<String> getDeptNameList(String name, DeptRepository deptRepository, BaseNodeRepository baseNodeRepository) {
+    public List<String> getDeptNameList(String name, Integer size, DeptRepository deptRepository, BaseNodeRepository baseNodeRepository) {
         List<String> deptlt = new ArrayList<>();
-        List<Dept> deptlist = deptRepository.index(name, name, 100);
+        if (null == size) {
+            size = 100;
+        }
+
+        List<Dept> deptlist = deptRepository.index(name, name, size);
 
-        if (ListUtil.isNotEmpty(deptlist) && deptlist.size() > 100) {
-            deptlist = deptlist.subList(0, 100);
+        if (ListUtil.isNotEmpty(deptlist) && deptlist.size() > size) {
+            deptlist = deptlist.subList(0, size);
         }
 
         for (Dept dept : deptlist) {
@@ -24,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);
 }

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

@@ -0,0 +1,17 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.LisAlias;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+import java.util.List;
+
+
+public interface LisAliasRepository extends Neo4jRepository<LisAlias, Long> {
+
+    List<LisAlias> findByNameIs(String name);
+
+    List<LisAlias> findByNameContaining(String name);
+
+    List<LisAlias> findByNameIn(List<String> names);
+
+}

+ 21 - 0
src/main/java/com/diagbot/repository/LisCriticalRepository.java

@@ -0,0 +1,21 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.LisCritical;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.neo4j.annotation.Query;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
+
+
+public interface LisCriticalRepository extends Neo4jRepository<LisCritical, Long> {
+
+    List<LisCritical> findByNameIs(String name);
+
+    List<LisCritical> findByNameContaining(String name);
+
+    List<LisCritical> findByNameIn(List<String> names);
+
+}

+ 55 - 21
src/main/java/com/diagbot/repository/LisNameNode.java

@@ -34,10 +34,12 @@ public class LisNameNode {
 
 		LisNameGender lisNameGender = lis.getLisNamegender();
 		if (NeoUtil.isExist(lisNameGender) ) {
-			nodeInfo = new NodeInfo();
-			nodeInfo.setName(lisNameGender.getGender().getName());
-			nodeInfo.setTypeval(Constants.gender);
-			lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+			if (NeoUtil.isExist(lisNameGender.getGender())) {
+				nodeInfo = new NodeInfo();
+				nodeInfo.setName(lisNameGender.getGender().getName());
+				nodeInfo.setTypeval(Constants.gender);
+				lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+			}
 		}
 
 /*
@@ -125,11 +127,13 @@ public class LisNameNode {
 		Set<LisNameGroup> groups = lis.getLisNamegroups();
 		for (LisNameGroup group : groups) {
 			if (NeoUtil.isExist(group)) {
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(group.getGroup().getName());
-				nodeInfo.setTypeval(Constants.group);
+				if (NeoUtil.isExist(group.getGroup())) {
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(group.getGroup().getName());
+					nodeInfo.setTypeval(Constants.group);
 
-				lisBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+					lisBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 
@@ -178,17 +182,20 @@ public class LisNameNode {
 	/**
 	 * 获取化验细项名称列表
 	 */
-	public List<LisDetailDTO> getLisDetailList(String name, LisNameRepository lisRepository, BaseNodeRepository baseNodeRepository) {
+	public List<LisDetailDTO> getLisDetailList(String name, Integer size, LisNameRepository lisRepository, BaseNodeRepository baseNodeRepository) {
 		String nodename, unit;
 		Double min, max;
 
 		List<LisDetailDTO> lislist = new ArrayList<>();
 		LisDetailDTO lisDetailDTO;
+		if (null == size) {
+			size = 100;
+		}
 
-		List<LisName> lislt = lisRepository.index(name, name,100);
+		List<LisName> lislt = lisRepository.index(name, name,size);
 
-		if (ListUtil.isNotEmpty(lislt) && lislt.size() > 100) {
-			lislt = lislt.subList(0, 100);
+		if (ListUtil.isNotEmpty(lislt) && lislt.size() > size) {
+			lislt = lislt.subList(0, size);
 		}
 
 		for (LisName lis : lislt) {
@@ -213,14 +220,16 @@ public class LisNameNode {
 			if (lisNameSet != null && lisNameSet.size() > 0) {
 				for (LisNameLisSet lisset : lisNameSet) {
 					if (NeoUtil.isExist(lisset)) {
-						lisDetailDTO = new LisDetailDTO();
-						nodename = lis.getName();
-						lisDetailDTO.setUniqueName(nodename);
-						lisDetailDTO.setName(lisset.getLisSet().getName());
-						lisDetailDTO.setMaxValue(lis.getMaxval());
-						lisDetailDTO.setMinValue(lis.getMinval());
-						lisDetailDTO.setUnits(lis.getUnit());
-						lislist.add(lisDetailDTO);
+						if (NeoUtil.isExist(lisset.getLisSet())) {
+							lisDetailDTO = new LisDetailDTO();
+							nodename = lis.getName();
+							lisDetailDTO.setUniqueName(nodename);
+							lisDetailDTO.setName(lisset.getLisSet().getName());
+							lisDetailDTO.setMaxValue(lis.getMaxval());
+							lisDetailDTO.setMinValue(lis.getMinval());
+							lisDetailDTO.setUnits(lis.getUnit());
+							lislist.add(lisDetailDTO);
+						}
 					}
 				}
 			} else {
@@ -239,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;
+	}
+
+
 	/**
 	 * 获取化验细项危急值
 	 */
@@ -273,7 +307,7 @@ public class LisNameNode {
 						Set<LisNameLisCritical> lisNameLisCriticals = lis.getLisNameliscritials();
 
 						for (LisNameLisCritical lisNameCritical : lisNameLisCriticals) {
-							if (NeoUtil.isExist(lisNameCritical)) {
+							if (NeoUtil.isExist(lisNameCritical) && NeoUtil.isExist(lisNameCritical.getLisCritical())) {
 								lisCriticals.add(lisNameCritical.getLisCritical());
 							}
 						}

+ 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);
 }

+ 41 - 14
src/main/java/com/diagbot/repository/LisSetNode.java

@@ -26,11 +26,13 @@ public class LisSetNode {
 
 		LisSetGender lisSetGender = lisset.getLisSetgender();
 		if (NeoUtil.isExist(lisSetGender)) {
-			Gender gender = lisSetGender.getGender();
-			nodeInfo = new NodeInfo();
-			nodeInfo.setName(gender.getName());
-			nodeInfo.setTypeval(Constants.gender);
-			lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+			if (NeoUtil.isExist(lisSetGender.getGender())) {
+				Gender gender = lisSetGender.getGender();
+				nodeInfo = new NodeInfo();
+				nodeInfo.setName(gender.getName());
+				nodeInfo.setTypeval(Constants.gender);
+				lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+			}
 		}
 
 /*
@@ -102,11 +104,13 @@ public class LisSetNode {
 		Set<LisSetGroup> lisSetGroups = lisset.getLisSetGroups();
 		for (LisSetGroup lisSetGroup : lisSetGroups) {
 			if (NeoUtil.isExist(lisSetGroup)) {
-				Group group = lisSetGroup.getGroup();
-				nodeInfo = new NodeInfo();
-				nodeInfo.setName(group.getName());
-				nodeInfo.setTypeval(Constants.group);
-				lisBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				if (NeoUtil.isExist(lisSetGroup.getGroup())) {
+					Group group = lisSetGroup.getGroup();
+					nodeInfo = new NodeInfo();
+					nodeInfo.setName(group.getName());
+					nodeInfo.setTypeval(Constants.group);
+					lisBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+				}
 			}
 		}
 
@@ -154,15 +158,19 @@ public class LisSetNode {
 	/**
 	 * 获取化验套餐名称列表
 	 */
-	public List<String> getLISPackNameList(String name, LisSetRepository lisPackRepository, BaseNodeRepository baseNodeRepository) {
+	public List<String> getLISPackNameList(String name, Integer size, LisSetRepository lisPackRepository, BaseNodeRepository baseNodeRepository) {
 		String nodename;
 
 		List<String> lispacklist = new ArrayList<>();
 
-		List<LisSet> lisSetlist = lisPackRepository.index(name, name, 100);
+		if (null == size) {
+			size = 100;
+		}
 
-		if (ListUtil.isNotEmpty(lisSetlist) && lisSetlist.size() > 100) {
-			lisSetlist = lisSetlist.subList(0, 100);
+		List<LisSet> lisSetlist = lisPackRepository.index(name, name, size);
+
+		if (ListUtil.isNotEmpty(lisSetlist) && lisSetlist.size() > size) {
+			lisSetlist = lisSetlist.subList(0, size);
 		}
 
 		for (LisSet lisSet : lisSetlist) {
@@ -177,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);
 }
 

+ 12 - 7
src/main/java/com/diagbot/repository/MedRegNameNode.java

@@ -45,13 +45,13 @@ public class MedRegNameNode {
                     for (MedCodeNameMedicine medCodeMed : med.getMedcodenameMedicines()) {
                         if (NeoUtil.isExist(medCodeMed)) {
                             MedCodeName medcdname = medCodeMed.getMedCodeName();
-                            if (medcdname.getReg_JiXin().equals(drugform)) {
+                            if (NeoUtil.isExist(medcdname) && medcdname.getReg_JiXin().equals(drugform)) {
                                 medcdnames = medCodeRepository.findByNameIs(medcdname.getName());
                                 for (MedCodeName medcdnm : medcdnames) {
                                     for (MedCodeNameMedRegName medCodeMedReg : medcdnm.getMedCodeNameMedregnames()) {
                                         if (NeoUtil.isExist(medCodeMedReg)) {
                                             medreg = medCodeMedReg.getMedRegName();
-                                            if (null != medreg.getRisklevel() && medreg.getRisklevel().trim().length() > 0) {
+                                            if (NeoUtil.isExist(medreg) && null != medreg.getRisklevel() && medreg.getRisklevel().trim().length() > 0) {
                                                 highRiskNeoDTO.setIsHighrisk(true);
                                                 highRiskNeoDTO.setHighLevel(medreg.getRisklevel());
                                                 highRiskNeoDTO.setType(Constants.yaoping);
@@ -87,15 +87,18 @@ public class MedRegNameNode {
         Set<MedRegNameVital> medVitals = medRegName.getMedRegNameVital();
         for (MedRegNameVital medvital : medVitals) {
             if (NeoUtil.isExist(medvital)) {
-                NodeNeoDTO nodeNeoDTO = NeoUtil.fillNodeNeoDTO(medvital.getVital());
-                drugBillNeoDTO.setAgeNeoDTO(nodeNeoDTO);
+                if (NeoUtil.isExist(medvital.getVital())) {
+                    NodeNeoDTO nodeNeoDTO = NeoUtil.fillNodeNeoDTO(medvital.getVital());
+                    drugBillNeoDTO.setAgeNeoDTO(nodeNeoDTO);
+                }
             }
         }
 
 
         Set<MedRegNameGroup> medGroups = medRegName.getMedRegNameGroup();
         for (MedRegNameGroup medgroup : medGroups) {
-            if (NeoUtil.isExist(medgroup) && !NeoUtil.inlist(medgroup.getGroup().getName(),drugBillNeoDTO.getGroup())) {
+            if (NeoUtil.isExist(medgroup) && NeoUtil.isExist(medgroup.getGroup())
+                    && !NeoUtil.inlist(medgroup.getGroup().getName(),drugBillNeoDTO.getGroup())) {
                 NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
                 nodeNeoDTO.setName(medgroup.getGroup().getName());
                 nodeNeoDTO.setTermtype(Constants.group);
@@ -106,7 +109,8 @@ public class MedRegNameNode {
 
         Set<MedRegNameMedAllergen> medAllergens = medRegName.getMedRegNameMedAllergens();
         for (MedRegNameMedAllergen medAllergen : medAllergens) {
-            if (NeoUtil.isExist(medAllergen) && !NeoUtil.inlist(medAllergen.getMedAllergen().getName(), drugBillNeoDTO.getAllergicmeds())) {
+            if (NeoUtil.isExist(medAllergen) && NeoUtil.isExist(medAllergen.getMedAllergen())
+                    && !NeoUtil.inlist(medAllergen.getMedAllergen().getName(), drugBillNeoDTO.getAllergicmeds())) {
                 NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
                 nodeNeoDTO.setName(medAllergen.getMedAllergen().getName());
                 nodeNeoDTO.setTermtype(medAllergen.getMedAllergen().getMedtype());
@@ -117,7 +121,8 @@ public class MedRegNameNode {
 
         Set<MedRegNameMedRegName> medRegmedRegNames = medRegName.getMedRegNameMedregnames_out();
         for (MedRegNameMedRegName medRegnm : medRegmedRegNames) {
-            if (NeoUtil.isExist(medRegnm) && !NeoUtil.inlist(medRegnm.getMedRegName().getName(), drugBillNeoDTO.getAllergicmeds())) {
+            if (NeoUtil.isExist(medRegnm) && NeoUtil.isExist(medRegnm.getMedRegName())
+                    && !NeoUtil.inlist(medRegnm.getMedRegName().getName(), drugBillNeoDTO.getAllergicmeds())) {
                 NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
                 nodeNeoDTO.setName(medRegnm.getMedRegName().getName());
                 nodeNeoDTO.setTermtype(Constants.yaoping);

+ 102 - 68
src/main/java/com/diagbot/repository/MedicineCodeNode.java

@@ -42,10 +42,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedClass> medCodeNameClass = medcode.getMedCodeNameMedclasss();
         for (MedCodeNameMedClass medCls : medCodeNameClass) {
             if (NeoUtil.isExist(medCls)) {
-                NodeNeoDTO ageNeoDTO = new NodeNeoDTO();
-                nodeInfo.setName(medCls.getMedClass().getName());
-                nodeInfo.setTypeval(Constants.medcate);
-                drugBillNeoDTO.setAgeNeoDTO(ageNeoDTO);
+                if (NeoUtil.isExist(medCls.getMedClass())) {
+                    NodeNeoDTO ageNeoDTO = new NodeNeoDTO();
+                    nodeInfo.setName(medCls.getMedClass().getName());
+                    nodeInfo.setTypeval(Constants.medcate);
+                    drugBillNeoDTO.setAgeNeoDTO(ageNeoDTO);
+                }
             }
         }
 
@@ -53,10 +55,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedRegName> medCodeNameRegNames = medcode.getMedCodeNameMedregnames();
         for (MedCodeNameMedRegName medRegName : medCodeNameRegNames) {
             if (NeoUtil.isExist(medRegName)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medRegName.getMedRegName().getName());
-                nodeInfo.setTypeval(Constants.medregname);
-                drugBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medRegName.getMedRegName())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medRegName.getMedRegName().getName());
+                    nodeInfo.setTypeval(Constants.medregname);
+                    drugBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -64,10 +68,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedicine> medCodeNamemedicines = medcode.getMedCodeNameMedicines();
         for (MedCodeNameMedicine medicine : medCodeNamemedicines) {
             if (NeoUtil.isExist(medicine)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medicine.getMedicine().getName());
-                nodeInfo.setTypeval(Constants.medicine);
-                drugBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medicine.getMedicine())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medicine.getMedicine().getName());
+                    nodeInfo.setTypeval(Constants.medicine);
+                    drugBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -75,10 +81,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedChemClass> medCodeNameChemClasses = medcode.getMedCodeNameMedchemclass();
         for (MedCodeNameMedChemClass medChemCls : medCodeNameChemClasses) {
             if (NeoUtil.isExist(medChemCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medChemCls.getMedChemClass().getName());
-                nodeInfo.setTypeval(Constants.medhuaxue);
-                drugBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medChemCls.getMedChemClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medChemCls.getMedChemClass().getName());
+                    nodeInfo.setTypeval(Constants.medhuaxue);
+                    drugBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -86,10 +94,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedYaoLiClass> medCodeNameYaoLiClasses = medcode.getMedCodeNameMedyaoliclass();
         for (MedCodeNameMedYaoLiClass medYaoLiCls : medCodeNameYaoLiClasses) {
             if (NeoUtil.isExist(medYaoLiCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medYaoLiCls.getMedYaoLiClass().getName());
-                nodeInfo.setTypeval(Constants.medyaoli);
-                drugBillNeoDTO.getPacs().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medYaoLiCls.getMedYaoLiClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medYaoLiCls.getMedYaoLiClass().getName());
+                    nodeInfo.setTypeval(Constants.medyaoli);
+                    drugBillNeoDTO.getPacs().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -97,10 +107,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedZhiLiaoClass> medCodeNameZhiLiaoClasses = medcode.getMedCodeNameMedzhiliaoclass();
         for (MedCodeNameMedZhiLiaoClass medZhiLiaoCls : medCodeNameZhiLiaoClasses) {
             if (NeoUtil.isExist(medZhiLiaoCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medZhiLiaoCls.getMedZhiLiaoClass().getName());
-                nodeInfo.setTypeval(NeoUtil.getMedType(medZhiLiaoCls.getMedZhiLiaoClass().getName()));
-                drugBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medZhiLiaoCls.getMedZhiLiaoClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medZhiLiaoCls.getMedZhiLiaoClass().getName());
+                    nodeInfo.setTypeval(NeoUtil.getMedType(medZhiLiaoCls.getMedZhiLiaoClass().getName()));
+                    drugBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -108,10 +120,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedJiePouClass> medCodeNameJiePouClasses = medcode.getMedCodeNameMedjiepouclass();
         for (MedCodeNameMedJiePouClass medJiePouCls : medCodeNameJiePouClasses) {
             if (NeoUtil.isExist(medJiePouCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medJiePouCls.getMedJiePouClass().getName());
-                nodeInfo.setTypeval(Constants.medjiepou);
-                drugBillNeoDTO.getOperations().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medJiePouCls.getMedJiePouClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medJiePouCls.getMedJiePouClass().getName());
+                    nodeInfo.setTypeval(Constants.medjiepou);
+                    drugBillNeoDTO.getOperations().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -119,10 +133,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedCode> medCodeNameCodes = medcode.getMedCodeNameMedcodes();
         for (MedCodeNameMedCode medCode : medCodeNameCodes) {
             if (NeoUtil.isExist(medCode)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medCode.getMedCode().getName());
-                nodeInfo.setTypeval(Constants.medcode);
-                drugBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medCode.getMedCode())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medCode.getMedCode().getName());
+                    nodeInfo.setTypeval(Constants.medcode);
+                    drugBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -130,10 +146,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedProdName> medCodeNameProdNames = medcode.getMedCodeNameMedprodnames();
         for (MedCodeNameMedProdName medProdName : medCodeNameProdNames) {
             if (NeoUtil.isExist(medProdName)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medProdName.getMedProdName().getName());
-                nodeInfo.setTypeval(Constants.medprodname);
-                drugBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medProdName.getMedProdName())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medProdName.getMedProdName().getName());
+                    nodeInfo.setTypeval(Constants.medprodname);
+                    drugBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -141,10 +159,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameMedYiBaoClass> medCodeNameYiBaoClasses = medcode.getMedCodeNameMedyibaoclass();
         for (MedCodeNameMedYiBaoClass medYiBaoCls : medCodeNameYiBaoClasses) {
             if (NeoUtil.isExist(medYiBaoCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medYiBaoCls.getMedYiBaoClass().getName());
-                nodeInfo.setTypeval(Constants.medyibaocate);
-                drugBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medYiBaoCls.getMedYiBaoClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medYiBaoCls.getMedYiBaoClass().getName());
+                    nodeInfo.setTypeval(Constants.medyibaocate);
+                    drugBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -152,10 +172,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameRegName> medCodeNameregNames = medcode.getMedCodeNameRegnames();
         for (MedCodeNameRegName regName : medCodeNameregNames) {
             if (NeoUtil.isExist(regName)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(regName.getRegName().getName());
-                nodeInfo.setTypeval(Constants.regname);
-                drugBillNeoDTO.getConflictmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(regName.getRegName())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(regName.getRegName().getName());
+                    nodeInfo.setTypeval(Constants.regname);
+                    drugBillNeoDTO.getConflictmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -163,10 +185,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameHerbFangJiCate> medCodeNameherbFangJiCates = medcode.getMedCodeNameHerbfangjicates();
         for (MedCodeNameHerbFangJiCate herbFangJiCate : medCodeNameherbFangJiCates) {
             if (NeoUtil.isExist(herbFangJiCate)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(herbFangJiCate.getHerbFangJiCate().getName());
-                nodeInfo.setTypeval(Constants.herbfangjicate);
-                drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(herbFangJiCate.getHerbFangJiCate())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(herbFangJiCate.getHerbFangJiCate().getName());
+                    nodeInfo.setTypeval(Constants.herbfangjicate);
+                    drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -174,10 +198,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameHerbFangJiClass> medCodeNameherbFangJiClass = medcode.getMedCodeNameHerbfangjiclass();
         for (MedCodeNameHerbFangJiClass herbFangJiCls : medCodeNameherbFangJiClass) {
             if (NeoUtil.isExist(herbFangJiCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(herbFangJiCls.getHerbFangJiClass().getName());
-                nodeInfo.setTypeval(Constants.herbfangjiclass);
-                drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(herbFangJiCls.getHerbFangJiClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(herbFangJiCls.getHerbFangJiClass().getName());
+                    nodeInfo.setTypeval(Constants.herbfangjiclass);
+                    drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -185,10 +211,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameHerbZhiLiaoClass> medCodeNameherbZhiLiaoClasses = medcode.getMedCodeNameHerbzhiliaoclass();
         for (MedCodeNameHerbZhiLiaoClass herbZhiLiaoCls : medCodeNameherbZhiLiaoClasses) {
             if (NeoUtil.isExist(herbZhiLiaoCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(herbZhiLiaoCls.getHerbZhiLiaoClass().getName());
-                nodeInfo.setTypeval(Constants.herbzhiliaocate);
-                drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(herbZhiLiaoCls.getHerbZhiLiaoClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(herbZhiLiaoCls.getHerbZhiLiaoClass().getName());
+                    nodeInfo.setTypeval(Constants.herbzhiliaocate);
+                    drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -196,10 +224,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameHerbDeptClass> medCodeNameherbDeptClasses = medcode.getMedCodeNameHerbdeptclass();
         for (MedCodeNameHerbDeptClass herbDeptCls : medCodeNameherbDeptClasses) {
             if (NeoUtil.isExist(herbDeptCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(herbDeptCls.getHerbDeptClass().getName());
-                nodeInfo.setTypeval(Constants.herbdeptcate);
-                drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(herbDeptCls.getHerbDeptClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(herbDeptCls.getHerbDeptClass().getName());
+                    nodeInfo.setTypeval(Constants.herbdeptcate);
+                    drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -207,10 +237,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameHerbYiBaoClass> medCodeNameherbYiBaoClasses = medcode.getMedCodeNameHerbyibaoclass();
         for (MedCodeNameHerbYiBaoClass herbYiBaoCls : medCodeNameherbYiBaoClasses) {
             if (NeoUtil.isExist(herbYiBaoCls)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(herbYiBaoCls.getHerbYiBaoClass().getName());
-                nodeInfo.setTypeval(Constants.herbyibaocate);
-                drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(herbYiBaoCls.getHerbYiBaoClass())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(herbYiBaoCls.getHerbYiBaoClass().getName());
+                    nodeInfo.setTypeval(Constants.herbyibaocate);
+                    drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -218,10 +250,12 @@ public class MedicineCodeNode {
         Set<MedCodeNameProdName> medCodeNameprodNames = medcode.getMedCodeNameProdnames();
         for (MedCodeNameProdName prodName : medCodeNameprodNames) {
             if (NeoUtil.isExist(prodName)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(prodName.getProdName().getName());
-                nodeInfo.setTypeval(Constants.prodname);
-                drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(prodName.getProdName())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(prodName.getProdName().getName());
+                    nodeInfo.setTypeval(Constants.prodname);
+                    drugBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 

+ 46 - 12
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -11,6 +11,7 @@ import com.diagbot.entity.relationship.MedicineMedAllergen;
 import com.diagbot.entity.relationship.MedicineVital;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
+import com.diagbot.vo.Drug;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -26,14 +27,17 @@ public class MedicineNode {
         Set<MedicineVital> vitals = medicine.getMedicineVital();
         for (MedicineVital vital : vitals) {
             if (NeoUtil.isExist(vital)) {
-                NodeNeoDTO nodeNeoDTO = NeoUtil.fillNodeNeoDTO(vital.getVital());
-                drugBillNeoDTO.setAgeNeoDTO(nodeNeoDTO);
+                if (NeoUtil.isExist(vital.getVital())) {
+                    NodeNeoDTO nodeNeoDTO = NeoUtil.fillNodeNeoDTO(vital.getVital());
+                    drugBillNeoDTO.setAgeNeoDTO(nodeNeoDTO);
+                }
             }
         }
 
         Set<MedicineGroup> groups = medicine.getMedicineGroup();
         for (MedicineGroup group : groups) {
-            if (NeoUtil.isExist(group) && !NeoUtil.inlist(group.getGroup().getName(),drugBillNeoDTO.getGroup())) {
+            if (NeoUtil.isExist(group) && NeoUtil.isExist(group.getGroup())
+                    && !NeoUtil.inlist(group.getGroup().getName(),drugBillNeoDTO.getGroup())) {
                 NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
                 nodeNeoDTO.setName(group.getGroup().getName());
                 nodeNeoDTO.setTermtype(Constants.group);
@@ -44,7 +48,8 @@ public class MedicineNode {
 
         Set<MedicineMedAllergen> medAllergens = medicine.getMedicineMedAllergens();
         for (MedicineMedAllergen medAllergen : medAllergens) {
-            if (NeoUtil.isExist(medAllergen) && !NeoUtil.inlist(medAllergen.getMedAllergen().getName(), drugBillNeoDTO.getAllergicmeds())) {
+            if (NeoUtil.isExist(medAllergen) && NeoUtil.isExist(medAllergen.getMedAllergen())
+                    && !NeoUtil.inlist(medAllergen.getMedAllergen().getName(), drugBillNeoDTO.getAllergicmeds())) {
                 NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
                 nodeNeoDTO.setName(medAllergen.getMedAllergen().getName());
                 nodeNeoDTO.setTermtype(Constants.yaoping);
@@ -55,7 +60,8 @@ public class MedicineNode {
 
         Set<MedicineDisease> diseases = medicine.getMedicineDisease();
         for (MedicineDisease disease : diseases) {
-            if (NeoUtil.isExist(disease) && !NeoUtil.inlist(disease.getDisease().getName(), drugBillNeoDTO.getDisease())) {
+            if (NeoUtil.isExist(disease) && NeoUtil.isExist(disease.getDisease())
+                    && !NeoUtil.inlist(disease.getDisease().getName(), drugBillNeoDTO.getDisease())) {
                 NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
                 nodeNeoDTO.setName(disease.getDisease().getName());
                 nodeNeoDTO.setTermtype(Constants.disease);
@@ -93,7 +99,7 @@ public class MedicineNode {
     /**
      * 处理处方开单合理性
      */
-    public List<BillNeoDTO> getMedicineBill(List<Map<String, String>> medslist, MedicineRepository medicineRepository,
+    public List<BillNeoDTO> getMedicineBill(List<Map<String, Drug>> medslist, MedicineRepository medicineRepository,
                                             MedRegNameRepository medRegNameRepository) {
         List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
         BillNeoDTO billNeoDTO;
@@ -103,10 +109,10 @@ public class MedicineNode {
         List<MedRegName> medRegNames;
         String medname;
 
-        for (Map<String, String> medsterm : medslist) {
+        for (Map<String, Drug> medsterm : medslist) {
             for (String term : medsterm.keySet()) {
                 billNeoDTO = new BillNeoDTO();
-                medname = medsterm.get(term);
+                medname = medsterm.get(term).getUniqueName();
                 billNeoDTO.setName(term);
                 billNeoDTO.setStandname(medname);
 
@@ -140,16 +146,19 @@ public class MedicineNode {
     /**
      * 获取药品商品名称列表
      */
-    public List<DrugInfoDTO> getMedicineList(String name, MedicineRepository medicineRepository, BaseNodeRepository baseNodeRepository) {
+    public List<DrugInfoDTO> getMedicineList(String name, Integer size, MedicineRepository medicineRepository, BaseNodeRepository baseNodeRepository) {
         String nodename;
 
         List<DrugInfoDTO> medslist = new ArrayList<>();
         DrugInfoDTO drugInfoDTO;
+        if (null == size) {
+            size = 100;
+        }
 
-        List<Medicine> medicines = medicineRepository.index(name, name, 100);
+        List<Medicine> medicines = medicineRepository.index(name, name, size);
 
-        if (ListUtil.isNotEmpty(medicines) && medicines.size() > 100) {
-            medicines = medicines.subList(0, 100);
+        if (ListUtil.isNotEmpty(medicines) && medicines.size() > size) {
+            medicines = medicines.subList(0, size);
         }
 
         for (Medicine med : medicines) {
@@ -161,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);
 }

+ 110 - 77
src/main/java/com/diagbot/repository/PacsNameNode.java

@@ -3,18 +3,7 @@ package com.diagbot.repository;
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.PacsBillNeoDTO;
 import com.diagbot.entity.BaseNodeInfo;
-import com.diagbot.entity.node.Allergen;
-import com.diagbot.entity.node.ClinicalFinding;
-import com.diagbot.entity.node.ConflictDevice;
-import com.diagbot.entity.node.Disease;
-import com.diagbot.entity.node.Gender;
-import com.diagbot.entity.node.Group;
-import com.diagbot.entity.node.Lis;
-import com.diagbot.entity.node.MedAllergen;
-import com.diagbot.entity.node.OralMedicine;
-import com.diagbot.entity.node.PacsDescribe;
 import com.diagbot.entity.node.PacsName;
-import com.diagbot.entity.node.Vital;
 import com.diagbot.entity.relationship.*;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
@@ -35,24 +24,28 @@ public class PacsNameNode {
 
         PacsNameGender pacsNamegender = pacs.getPacsNameGender();
         if (NeoUtil.isExist(pacsNamegender)) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(pacsNamegender.getGender().getName());
-            nodeInfo.setTypeval(Constants.gender);
-            pacsBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(pacsNamegender.getGender())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(pacsNamegender.getGender().getName());
+                nodeInfo.setTypeval(Constants.gender);
+                pacsBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsNameClinicalFinding> pacsNameclinicalfindings = pacs.getPacsNameClinicalfindings();
         for (PacsNameClinicalFinding clinicalfinding : pacsNameclinicalfindings) {
             if (NeoUtil.isExist(clinicalfinding)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(clinicalfinding.getClinicalFinding().getName());
-                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMinval()));
-                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMaxval()));
-                nodeInfo.setUnit(clinicalfinding.getClinicalFinding().getUnit());
-                nodeInfo.setRange(clinicalfinding.getClinicalFinding().getRange());
-                nodeInfo.setTypeval(Constants.clinicalfinding);
-                pacsBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(clinicalfinding.getClinicalFinding())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(clinicalfinding.getClinicalFinding().getName());
+                    nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMinval()));
+                    nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMaxval()));
+                    nodeInfo.setUnit(clinicalfinding.getClinicalFinding().getUnit());
+                    nodeInfo.setRange(clinicalfinding.getClinicalFinding().getRange());
+                    nodeInfo.setTypeval(Constants.clinicalfinding);
+                    pacsBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -60,15 +53,17 @@ public class PacsNameNode {
         Set<PacsNameVital> pacsNamevitals = pacs.getPacsNameVitals();
         for (PacsNameVital vital : pacsNamevitals) {
             if (NeoUtil.isExist(vital)) {
-                nodeInfo = new NodeInfo();
-                String name = vital.getVital().getName();
-                nodeInfo.setName(name);
-                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMinval()));
-                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMaxval()));
-                nodeInfo.setUnit(vital.getVital().getUnit());
-                nodeInfo.setRange(vital.getVital().getRange());
-                nodeInfo.setTypeval(Constants.vital);
-                pacsBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(vital.getVital())) {
+                    nodeInfo = new NodeInfo();
+                    String name = vital.getVital().getName();
+                    nodeInfo.setName(name);
+                    nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMinval()));
+                    nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMaxval()));
+                    nodeInfo.setUnit(vital.getVital().getUnit());
+                    nodeInfo.setRange(vital.getVital().getRange());
+                    nodeInfo.setTypeval(Constants.vital);
+                    pacsBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -76,14 +71,16 @@ public class PacsNameNode {
         Set<PacsNameLis> pacsNameliss = pacs.getPacsNameLis();
         for (PacsNameLis lis : pacsNameliss) {
             if (NeoUtil.isExist(lis)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(lis.getLis().getName());
-                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMinval()));
-                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMaxval()));
-                nodeInfo.setUnit(lis.getLis().getUnit());
-                nodeInfo.setRange(lis.getLis().getRange());
-                nodeInfo.setTypeval(Constants.lis);
-                pacsBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(lis.getLis())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(lis.getLis().getName());
+                    nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMinval()));
+                    nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMaxval()));
+                    nodeInfo.setUnit(lis.getLis().getUnit());
+                    nodeInfo.setRange(lis.getLis().getRange());
+                    nodeInfo.setTypeval(Constants.lis);
+                    pacsBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -91,10 +88,12 @@ public class PacsNameNode {
         Set<PacsNamePacsDescribe> pacsNameconflict_pacsdesc = pacs.getPacsNamePacsdescribes();
         for (PacsNamePacsDescribe pacsdesc : pacsNameconflict_pacsdesc) {
             if (NeoUtil.isExist(pacsdesc)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(pacsdesc.getPacsDescribe().getName());
-                nodeInfo.setTypeval(Constants.pacsdesc);
-                pacsBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(pacsdesc.getPacsDescribe())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(pacsdesc.getPacsDescribe().getName());
+                    nodeInfo.setTypeval(Constants.pacsdesc);
+                    pacsBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -102,10 +101,12 @@ public class PacsNameNode {
         Set<PacsNameGroup> pacsNamegroups = pacs.getPacsNameGroups();
         for (PacsNameGroup group : pacsNamegroups) {
             if (NeoUtil.isExist(group)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(group.getGroup().getName());
-                nodeInfo.setTypeval(Constants.group);
-                pacsBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(group.getGroup())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(group.getGroup().getName());
+                    nodeInfo.setTypeval(Constants.group);
+                    pacsBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -113,10 +114,12 @@ public class PacsNameNode {
         Set<PacsNameOralMedicine> pacsNameconflict_medicines = pacs.getPacsNameOralmedicines();
         for (PacsNameOralMedicine conflict_medicine : pacsNameconflict_medicines) {
             if (NeoUtil.isExist(conflict_medicine)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(conflict_medicine.getOralMedicine().getName());
-                nodeInfo.setTypeval(Constants.yaoping);
-                pacsBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(conflict_medicine.getOralMedicine())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(conflict_medicine.getOralMedicine().getName());
+                    nodeInfo.setTypeval(Constants.yaoping);
+                    pacsBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -124,10 +127,12 @@ public class PacsNameNode {
         Set<PacsNameMedAllergen> pacsNamemedAllergens = pacs.getPacsNameMedallergens();
         for (PacsNameMedAllergen medAllergen : pacsNamemedAllergens) {
             if (NeoUtil.isExist(medAllergen)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medAllergen.getMedAllergen().getName());
-                nodeInfo.setTypeval(NeoUtil.getMedType(medAllergen.getMedAllergen().getName()));
-                pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(medAllergen.getMedAllergen())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medAllergen.getMedAllergen().getName());
+                    nodeInfo.setTypeval(NeoUtil.getMedType(medAllergen.getMedAllergen().getName()));
+                    pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -135,11 +140,13 @@ public class PacsNameNode {
         Set<PacsNameDisease> pacsNamediseases = pacs.getPacsNameDiseases();
         for (PacsNameDisease disease : pacsNamediseases) {
             if (NeoUtil.isExist(disease)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(disease.getDisease().getName());
-                nodeInfo.setTypeval(Constants.disease);
-                nodeInfo.setMatchtype(disease.getExactMatch());
-                pacsBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(disease.getDisease())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(disease.getDisease().getName());
+                    nodeInfo.setTypeval(Constants.disease);
+                    nodeInfo.setMatchtype(disease.getExactMatch());
+                    pacsBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -147,10 +154,12 @@ public class PacsNameNode {
         Set<PacsNameAllergen> pacsNameallergens = pacs.getPacsNameAllergens();
         for (PacsNameAllergen allergen : pacsNameallergens) {
             if (NeoUtil.isExist(allergen)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(allergen.getAllergen().getName());
-                nodeInfo.setTypeval(Constants.yaoping); // 过敏原归类成药物过敏原,与模型提取匹配
-                pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(allergen.getAllergen())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(allergen.getAllergen().getName());
+                    nodeInfo.setTypeval(Constants.yaoping); // 过敏原归类成药物过敏原,与模型提取匹配
+                    pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -158,10 +167,12 @@ public class PacsNameNode {
         Set<PacsNameConflictDevice> pacsNameconflictDevices = pacs.getPacsNameConflictdevices();
         for (PacsNameConflictDevice conflictDevice : pacsNameconflictDevices) {
             if (NeoUtil.isExist(conflictDevice)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(conflictDevice.getConflictDevice().getName());
-                nodeInfo.setTypeval(Constants.conflictdevice);
-                pacsBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(conflictDevice.getConflictDevice())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(conflictDevice.getConflictDevice().getName());
+                    nodeInfo.setTypeval(Constants.conflictdevice);
+                    pacsBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -169,10 +180,12 @@ public class PacsNameNode {
         Set<PacsNamePacsName> pacsNamepacsNames = pacs.getConflictPacsName_out();
         for (PacsNamePacsName pacsName : pacsNamepacsNames) {
             if (NeoUtil.isExist(pacsName)) {
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(pacsName.getConflict_pacsName().getName());
-                nodeInfo.setTypeval(Constants.fujian);
-                pacsBillNeoDTO.getPacsOrder().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(pacsName.getConflict_pacsName())) {
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(pacsName.getConflict_pacsName().getName());
+                    nodeInfo.setTypeval(Constants.fujian);
+                    pacsBillNeoDTO.getPacsOrder().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -240,22 +253,42 @@ public class PacsNameNode {
         return pacslist;
     }
 
+
     /**
      * 获取辅检名称列表
      */
-    public List<String> getPACSNameAndPACSSubNameList(String name, PacsNameRepository pacsRepository) {
+    public List<String> getPACSNameAndPACSSubNameList(String name, Integer size, PacsNameRepository pacsRepository) {
 
         List<String> pacslist = new ArrayList<>();
-        List<BaseNodeInfo> pacslt = pacsRepository.indexMultipleLabel(name, name, 100);
+        if (null == size) {
+            size = 100;
+        }
+        List<BaseNodeInfo> pacslt = pacsRepository.indexMultipleLabel(name, name, size);
 
-        if (ListUtil.isNotEmpty(pacslt) && pacslt.size() > 100) {
-            pacslt = pacslt.subList(0, 100);
+        if (ListUtil.isNotEmpty(pacslt) && pacslt.size() > size) {
+            pacslt = pacslt.subList(0, size);
         }
 
         pacslist = pacslt.stream().map(i -> i.getName()).collect(Collectors.toList());
 
         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);
 }

+ 79 - 57
src/main/java/com/diagbot/repository/PacsSubNameNode.java

@@ -22,113 +22,135 @@ public class PacsSubNameNode {
 
         PacsSubNameGender pacsSubNameGender = pacs.getPacsSubNameGender();
         if (NeoUtil.isExist(pacsSubNameGender)) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(pacsSubNameGender.getGender().getName());
-            nodeInfo.setTypeval(Constants.gender);
-            pacsBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(pacsSubNameGender.getGender())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(pacsSubNameGender.getGender().getName());
+                nodeInfo.setTypeval(Constants.gender);
+                pacsBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameClinicalFinding> clinicalfindings = pacs.getPacsSubNameClinicalfindings();
         for (PacsSubNameClinicalFinding clinicalfinding : clinicalfindings) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(clinicalfinding.getClinicalFinding().getName());
-            nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMinval()));
-            nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMaxval()));
-            nodeInfo.setUnit(clinicalfinding.getClinicalFinding().getUnit());
-            nodeInfo.setRange(clinicalfinding.getClinicalFinding().getRange());
-            nodeInfo.setTypeval(Constants.clinicalfinding);
-            pacsBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(clinicalfinding.getClinicalFinding())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(clinicalfinding.getClinicalFinding().getName());
+                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMinval()));
+                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getClinicalFinding().getMaxval()));
+                nodeInfo.setUnit(clinicalfinding.getClinicalFinding().getUnit());
+                nodeInfo.setRange(clinicalfinding.getClinicalFinding().getRange());
+                nodeInfo.setTypeval(Constants.clinicalfinding);
+                pacsBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameVital> vitals = pacs.getPacsSubNameVitals();
         for (PacsSubNameVital vital : vitals) {
-            nodeInfo = new NodeInfo();
-            String name = vital.getVital().getName();
-            nodeInfo.setName(name);
-            nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMinval()));
-            nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMaxval()));
-            nodeInfo.setUnit(vital.getVital().getUnit());
-            nodeInfo.setRange(vital.getVital().getRange());
-            nodeInfo.setTypeval(Constants.vital);
-            pacsBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(vital.getVital())) {
+                nodeInfo = new NodeInfo();
+                String name = vital.getVital().getName();
+                nodeInfo.setName(name);
+                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMinval()));
+                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getVital().getMaxval()));
+                nodeInfo.setUnit(vital.getVital().getUnit());
+                nodeInfo.setRange(vital.getVital().getRange());
+                nodeInfo.setTypeval(Constants.vital);
+                pacsBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameLis> liss = pacs.getPacsSubNameLis();
         for (PacsSubNameLis lis : liss) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(lis.getLis().getName());
-            nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMinval()));
-            nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMaxval()));
-            nodeInfo.setUnit(lis.getLis().getUnit());
-            nodeInfo.setRange(lis.getLis().getRange());
-            nodeInfo.setTypeval(Constants.lis);
-            pacsBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(lis.getLis())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(lis.getLis().getName());
+                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMinval()));
+                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getLis().getMaxval()));
+                nodeInfo.setUnit(lis.getLis().getUnit());
+                nodeInfo.setRange(lis.getLis().getRange());
+                nodeInfo.setTypeval(Constants.lis);
+                pacsBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNamePacsDescribe> conflict_pacsdesc = pacs.getPacsSubNamePacsdescribes();
         for (PacsSubNamePacsDescribe pacsdesc : conflict_pacsdesc) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(pacsdesc.getPacsDescribe().getName());
-            nodeInfo.setTypeval(Constants.pacsdesc);
-            pacsBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(pacsdesc.getPacsDescribe())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(pacsdesc.getPacsDescribe().getName());
+                nodeInfo.setTypeval(Constants.pacsdesc);
+                pacsBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameGroup> groups = pacs.getPacsSubNameGroups();
         for (PacsSubNameGroup group : groups) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(group.getGroup().getName());
-            nodeInfo.setTypeval(Constants.group);
-            pacsBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(group.getGroup())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(group.getGroup().getName());
+                nodeInfo.setTypeval(Constants.group);
+                pacsBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameOralMedicine> conflict_medicines = pacs.getPacsSubNameOralmedicines();
         for (PacsSubNameOralMedicine conflict_medicine : conflict_medicines) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(conflict_medicine.getOralMedicine().getName());
-            nodeInfo.setTypeval(Constants.yaoping);
-            pacsBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(conflict_medicine.getOralMedicine())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(conflict_medicine.getOralMedicine().getName());
+                nodeInfo.setTypeval(Constants.yaoping);
+                pacsBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameDisease> diseases = pacs.getPacsSubNameDiseases();
         for (PacsSubNameDisease disease : diseases) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(disease.getDisease().getName());
-            nodeInfo.setTypeval(Constants.disease);
-            pacsBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(disease.getDisease())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(disease.getDisease().getName());
+                nodeInfo.setTypeval(Constants.disease);
+                pacsBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameMedAllergen> medAllergens = pacs.getPacsSubNameMedallergens();
         for (PacsSubNameMedAllergen medAllergen : medAllergens) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(medAllergen.getMedAllergen().getName());
-            nodeInfo.setTypeval(NeoUtil.getMedType(medAllergen.getMedAllergen().getName()));
-            pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(medAllergen.getMedAllergen())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(medAllergen.getMedAllergen().getName());
+                nodeInfo.setTypeval(NeoUtil.getMedType(medAllergen.getMedAllergen().getName()));
+                pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameAllergen> allergens = pacs.getPacsSubNameAllergens();
         for (PacsSubNameAllergen allergen : allergens) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(allergen.getAllergen().getName());
-            nodeInfo.setTypeval(Constants.yaoping); // 过敏原归类成药物过敏原,与模型提取匹配
-            pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(allergen.getAllergen())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(allergen.getAllergen().getName());
+                nodeInfo.setTypeval(Constants.yaoping); // 过敏原归类成药物过敏原,与模型提取匹配
+                pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 
         Set<PacsSubNameConflictDevice> conflictDevices = pacs.getPacsSubNameConflictdevices();
         for (PacsSubNameConflictDevice conflictDevice : conflictDevices) {
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(conflictDevice.getConflictDevice().getName());
-            nodeInfo.setTypeval(Constants.conflictdevice);
-            pacsBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(conflictDevice.getConflictDevice())) {
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(conflictDevice.getConflictDevice().getName());
+                nodeInfo.setTypeval(Constants.conflictdevice);
+                pacsBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
 

+ 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);
+
 }
 

+ 8 - 4
src/main/java/com/diagbot/repository/TransfusionSuggestNode.java

@@ -95,8 +95,10 @@ public class TransfusionSuggestNode {
 			if (tf.getTransfusionSuggestDiseases().size()>0) {
 				for (TransfusionSuggestYiBaoDiseaseName tfDisease : tf.getTransfusionSuggestDiseases()) {
 					if (NeoUtil.isExist(tfDisease)) {
-						YiBaoDiseaseName ybdisease = tfDisease.getYiBaoDiseaseName();
-						disname = ybdisease.getName();
+						if (NeoUtil.isExist(tfDisease.getYiBaoDiseaseName())) {
+							YiBaoDiseaseName ybdisease = tfDisease.getYiBaoDiseaseName();
+							disname = ybdisease.getName();
+						}
 					}
 				}
 			}
@@ -104,8 +106,10 @@ public class TransfusionSuggestNode {
 			if (tf.getTransfusionSuggestOperations().size()>0) {
 				for (TransfusionSuggestYiBaoOperationName tfOperation : tf.getTransfusionSuggestOperations()) {
 					if (NeoUtil.isExist(tfOperation)) {
-						YiBaoOperationName yboperation = tfOperation.getYiBaoOperationName();
-						surgname = yboperation.getName();
+						if (NeoUtil.isExist(tfOperation.getYiBaoOperationName())) {
+							YiBaoOperationName yboperation = tfOperation.getYiBaoOperationName();
+							surgname = yboperation.getName();
+						}
 					}
 				}
 			}

+ 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);
+
 }
 

+ 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);
 }
 

+ 56 - 20
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()));
 
 
 
@@ -204,8 +204,10 @@ public class YiBaoDiseaseNode {
 			Set<YiBaoDiseaseNameYiBaoICD_10Code> yiBaoICD10Codes = disease.getYiBaoDiseaseNameYibaoicd_10codes();
 			for (YiBaoDiseaseNameYiBaoICD_10Code code : yiBaoICD10Codes) {
 				if (NeoUtil.isExist(code)) {
-					pushBaseDTO = new PushBaseDTO();
-					pushBaseDTO.setName(code.getYiBaoICD_10Code().getName());
+					if (NeoUtil.isExist(code.getYiBaoICD_10Code())) {
+						pushBaseDTO = new PushBaseDTO();
+						pushBaseDTO.setName(code.getYiBaoICD_10Code().getName());
+					}
 				}
 			}
 
@@ -213,24 +215,30 @@ public class YiBaoDiseaseNode {
 			Set<YiBaoDiseaseNameGuoLinICD_10Code> guoLinICD10Codes = disease.getYiBaoDiseaseNameGuolinicd_10codes();
 			for (YiBaoDiseaseNameGuoLinICD_10Code code : guoLinICD10Codes) {
 				if (NeoUtil.isExist(code)) {
-					pushBaseDTO = new PushBaseDTO();
-					pushBaseDTO.setName(code.getGuoLinICD_10Code().getName());
+					if (NeoUtil.isExist(code.getGuoLinICD_10Code())) {
+						pushBaseDTO = new PushBaseDTO();
+						pushBaseDTO.setName(code.getGuoLinICD_10Code().getName());
+					}
 				}
 			}
 
 			Set<YiBaoDiseaseNameGuoLinDiseaseName> guoLinDiseaseNames = disease.getYiBaoDiseaseNameGuolindiseasenames();
 			for (YiBaoDiseaseNameGuoLinDiseaseName glname : guoLinDiseaseNames) {
 				if (NeoUtil.isExist(glname)) {
-					pushBaseDTO = new PushBaseDTO();
-					pushBaseDTO.setName(glname.getGuoLinDiseaseName().getName());
+					if (NeoUtil.isExist(glname.getGuoLinDiseaseName())) {
+						pushBaseDTO = new PushBaseDTO();
+						pushBaseDTO.setName(glname.getGuoLinDiseaseName().getName());
+					}
 				}
 			}
 
 			Set<YiBaoDiseaseNamePathwayName> pathwayNames = disease.getYiBaoDiseaseNamePathwaynames();
 			for (YiBaoDiseaseNamePathwayName pwname : pathwayNames) {
 				if (NeoUtil.isExist(pwname)) {
-					pushBaseDTO = new PushBaseDTO();
-					pushBaseDTO.setName(pwname.getPathwayName().getName());
+					if (NeoUtil.isExist(pwname.getPathwayName())) {
+						pushBaseDTO = new PushBaseDTO();
+						pushBaseDTO.setName(pwname.getPathwayName().getName());
+					}
 				}
 			}
 
@@ -273,16 +281,19 @@ public class YiBaoDiseaseNode {
 	/**
 	 * 获取疾病名称列表
 	 */
-	public List<DiseaseInfoDTO> getDiseaseNameList(String name, YiBaoDiseaseNameRepository diseaseRepository, BaseNodeRepository baseNodeRepository) {
+	public List<DiseaseInfoDTO> getDiseaseNameList(String name, Integer size, YiBaoDiseaseNameRepository diseaseRepository, BaseNodeRepository baseNodeRepository) {
 		String icdname;
 
 		List<String> dislist = new ArrayList<>();
 		List<DiseaseInfoDTO> diseaseInfoDTOList = new ArrayList<>();
+		if (null == size) {
+			size = 100;
+		}
 
-		List<YiBaoDiseaseName> diseases = diseaseRepository.index(name, name, 100);
+		List<YiBaoDiseaseName> diseases = diseaseRepository.index(name, name, size);
 
-		if (ListUtil.isNotEmpty(diseases) && diseases.size() > 100) {
-			diseases = diseases.subList(0, 100);
+		if (ListUtil.isNotEmpty(diseases) && diseases.size() > size) {
+			diseases = diseases.subList(0, size);
 		}
 
 		for (YiBaoDiseaseName dis : diseases) {
@@ -300,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;
+	}
+
 }
 

+ 117 - 67
src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java

@@ -43,122 +43,142 @@ public class YiBaoOperationNameNode {
 
         YiBaoOperationNameGender yiBaoOperationNameGender = operation.getGender();
         if (NeoUtil.isExist(yiBaoOperationNameGender)) {
-            Gender gender = yiBaoOperationNameGender.getGender();
-            nodeInfo = new NodeInfo();
-            nodeInfo.setName(gender.getName());
-            nodeInfo.setTypeval(Constants.gender);
-            opBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+            if (NeoUtil.isExist(yiBaoOperationNameGender.getGender())) {
+                Gender gender = yiBaoOperationNameGender.getGender();
+                nodeInfo = new NodeInfo();
+                nodeInfo.setName(gender.getName());
+                nodeInfo.setTypeval(Constants.gender);
+                opBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
+            }
         }
 
         Set<YiBaoOperationNameClinicalFinding> yibaoOperationNameclinicalfindings = operation.getClinicalFindings();
         for (YiBaoOperationNameClinicalFinding yiBaoOperationNameclinicalfinding : yibaoOperationNameclinicalfindings) {
             if (NeoUtil.isExist(yiBaoOperationNameclinicalfinding)) {
-                ClinicalFinding clinicalfinding = yiBaoOperationNameclinicalfinding.getClinicalFinding();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(clinicalfinding.getName());
-                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getMinval()));
-                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getMaxval()));
-                nodeInfo.setUnit(clinicalfinding.getUnit());
-                nodeInfo.setRange(clinicalfinding.getRange());
-                nodeInfo.setTypeval(Constants.clinicalfinding);
-                opBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNameclinicalfinding.getClinicalFinding())) {
+                    ClinicalFinding clinicalfinding = yiBaoOperationNameclinicalfinding.getClinicalFinding();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(clinicalfinding.getName());
+                    nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getMinval()));
+                    nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getMaxval()));
+                    nodeInfo.setUnit(clinicalfinding.getUnit());
+                    nodeInfo.setRange(clinicalfinding.getRange());
+                    nodeInfo.setTypeval(Constants.clinicalfinding);
+                    opBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameVital> yiBaoOperationNamevitals = operation.getVitals();
         for (YiBaoOperationNameVital yiBaoOperationNamevital : yiBaoOperationNamevitals) {
             if (NeoUtil.isExist(yiBaoOperationNamevital)) {
-                Vital vital = yiBaoOperationNamevital.getVital();
-                nodeInfo = new NodeInfo();
-                String name = vital.getName();
-                nodeInfo.setName(name);
-                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(vital.getMinval()));
-                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getMaxval()));
-                nodeInfo.setUnit(vital.getUnit());
-                nodeInfo.setRange(vital.getRange());
-                nodeInfo.setTypeval(Constants.vital);
-                opBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNamevital.getVital())) {
+                    Vital vital = yiBaoOperationNamevital.getVital();
+                    nodeInfo = new NodeInfo();
+                    String name = vital.getName();
+                    nodeInfo.setName(name);
+                    nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(vital.getMinval()));
+                    nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getMaxval()));
+                    nodeInfo.setUnit(vital.getUnit());
+                    nodeInfo.setRange(vital.getRange());
+                    nodeInfo.setTypeval(Constants.vital);
+                    opBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameLis> yiBaoOperationNameLisSet = operation.getLiss();
         for (YiBaoOperationNameLis yiBaoOperationNameLis : yiBaoOperationNameLisSet) {
             if (NeoUtil.isExist(yiBaoOperationNameLis)) {
-                Lis lis = yiBaoOperationNameLis.getLis();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(lis.getName());
-                nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(lis.getMinval()));
-                nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getMaxval()));
-                nodeInfo.setUnit(lis.getUnit());
-                nodeInfo.setRange(lis.getRange());
-                nodeInfo.setTypeval(Constants.lis);
-                opBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNameLis.getLis())) {
+                    Lis lis = yiBaoOperationNameLis.getLis();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(lis.getName());
+                    nodeInfo.setMinval(NeoUtil.DoubletoBigDecimal(lis.getMinval()));
+                    nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getMaxval()));
+                    nodeInfo.setUnit(lis.getUnit());
+                    nodeInfo.setRange(lis.getRange());
+                    nodeInfo.setTypeval(Constants.lis);
+                    opBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameOralMedicine> yiBaoOperationNameOralMeds= operation.getOralmeds();
         for (YiBaoOperationNameOralMedicine yiBaoOperationNameOralMed : yiBaoOperationNameOralMeds) {
             if (NeoUtil.isExist(yiBaoOperationNameOralMed)) {
-                OralMedicine conflict_oralmed = yiBaoOperationNameOralMed.getOralMedicine();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(conflict_oralmed.getName());
-                nodeInfo.setTypeval(Constants.yaoping);
-                opBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNameOralMed.getOralMedicine())) {
+                    OralMedicine conflict_oralmed = yiBaoOperationNameOralMed.getOralMedicine();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(conflict_oralmed.getName());
+                    nodeInfo.setTypeval(Constants.yaoping);
+                    opBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameDisease> yiBaoOperationNameDiseases = operation.getDiseases();
         for (YiBaoOperationNameDisease yiBaoOperationNameDisease : yiBaoOperationNameDiseases) {
             if (NeoUtil.isExist(yiBaoOperationNameDisease)) {
-                Disease disease = yiBaoOperationNameDisease.getDisease();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(disease.getName());
-                nodeInfo.setTypeval(Constants.disease);
-                opBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNameDisease.getDisease())) {
+                    Disease disease = yiBaoOperationNameDisease.getDisease();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(disease.getName());
+                    nodeInfo.setTypeval(Constants.disease);
+                    opBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameGroup> yiBaoOperationNameGroups = operation.getGroups();
         for (YiBaoOperationNameGroup conflict_group : yiBaoOperationNameGroups) {
             if (NeoUtil.isExist(conflict_group)) {
-                Group group = conflict_group.getGroup();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(group.getName());
-                nodeInfo.setTypeval(Constants.group);
-                opBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(conflict_group.getGroup())) {
+                    Group group = conflict_group.getGroup();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(group.getName());
+                    nodeInfo.setTypeval(Constants.group);
+                    opBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNamePacsDescribe> yiBaoOperationNamePacsDescribes = operation.getPacsdescs();
         for (YiBaoOperationNamePacsDescribe yiBaoOperationNamePacsDescribe : yiBaoOperationNamePacsDescribes) {
             if (NeoUtil.isExist(yiBaoOperationNamePacsDescribe)) {
-                PacsDescribe pacsdesc = yiBaoOperationNamePacsDescribe.getPacsDescribe();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(pacsdesc.getName());
-                nodeInfo.setTypeval(Constants.pacsdesc);
-                opBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNamePacsDescribe.getPacsDescribe())) {
+                    PacsDescribe pacsdesc = yiBaoOperationNamePacsDescribe.getPacsDescribe();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(pacsdesc.getName());
+                    nodeInfo.setTypeval(Constants.pacsdesc);
+                    opBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameMedAllergen> yiBaoOperationNameMedAllergens = operation.getMedallergens();
         for (YiBaoOperationNameMedAllergen yiBaoOperationNameMedAllergen : yiBaoOperationNameMedAllergens) {
             if (NeoUtil.isExist(yiBaoOperationNameMedAllergen)) {
-                MedAllergen medAllergen = yiBaoOperationNameMedAllergen.getMedAllergen();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(medAllergen.getName());
-                nodeInfo.setTypeval(NeoUtil.getMedType(medAllergen.getName()));
-                opBillNeoDTO.getMedallegen().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNameMedAllergen.getMedAllergen())) {
+                    MedAllergen medAllergen = yiBaoOperationNameMedAllergen.getMedAllergen();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(medAllergen.getName());
+                    nodeInfo.setTypeval(NeoUtil.getMedType(medAllergen.getName()));
+                    opBillNeoDTO.getMedallegen().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
         Set<YiBaoOperationNameConflictDevice> yiBaoOperationNameConflictDevices = operation.getConflictdevices();
         for (YiBaoOperationNameConflictDevice yiBaoOperationNameConflictDevice : yiBaoOperationNameConflictDevices) {
             if (NeoUtil.isExist(yiBaoOperationNameConflictDevice)) {
-                ConflictDevice device = yiBaoOperationNameConflictDevice.getConflictDevice();
-                nodeInfo = new NodeInfo();
-                nodeInfo.setName(device.getName());
-                nodeInfo.setTypeval(Constants.conflictdevice);
-                opBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+                if (NeoUtil.isExist(yiBaoOperationNameConflictDevice.getConflictDevice())) {
+                    ConflictDevice device = yiBaoOperationNameConflictDevice.getConflictDevice();
+                    nodeInfo = new NodeInfo();
+                    nodeInfo.setName(device.getName());
+                    nodeInfo.setTypeval(Constants.conflictdevice);
+                    opBillNeoDTO.getMeddevice().add(NeoUtil.updateNodeInfo(nodeInfo));
+                }
             }
         }
 
@@ -200,16 +220,20 @@ public class YiBaoOperationNameNode {
     /**
      * 获取手术操作名称列表
      */
-    public List<OperationInfoDTO> getOperationList(String name, YiBaoOperationNameRepository operationRepository, BaseNodeRepository baseNodeRepository) {
+    public List<OperationInfoDTO> getOperationList(String name, Integer size, YiBaoOperationNameRepository operationRepository, BaseNodeRepository baseNodeRepository) {
         String nodename;
 
         List<OperationInfoDTO> opslist = new ArrayList<>();
         OperationInfoDTO opInfoDTO;
 
-        List<YiBaoOperationName> operations = operationRepository.index(name, name, 100);
+        if (null == size) {
+            size = 100;
+        }
 
-        if (ListUtil.isNotEmpty(operations) && operations.size() > 100) {
-            operations = operations.subList(0, 100);
+        List<YiBaoOperationName> operations = operationRepository.index(name, name, size);
+
+        if (ListUtil.isNotEmpty(operations) && operations.size() > size) {
+            operations = operations.subList(0, size);
         }
 
         for (YiBaoOperationName op : operations) {
@@ -266,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);
 }

+ 17 - 0
src/main/java/com/diagbot/util/NeoUtil.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.PushBaseDTO;
 import com.diagbot.entity.node.Vital;
 import com.diagbot.entity.node.YiBaoDiseaseName;
+import com.diagbot.entity.node.base.BaseNode;
 import com.diagbot.entity.relationship.YiBaoDiseaseNameLisBigName;
 import com.diagbot.entity.relationship.YiBaoDiseaseNamePacsName;
 import com.diagbot.entity.relationship.YiBaoDiseaseNameSymptom;
@@ -277,6 +278,22 @@ public class NeoUtil {
     }
 
 
+
+    public static boolean isExist(BaseNode node) {
+
+        if (null==node) {
+            return false;
+        }
+        else if (null==node.getStatus() ||
+                (null!=node.getStatus() && node.getStatus()==1)) {
+            return true;
+        }
+        else {
+            return false;
+        }
+    }
+
+
     public static YiBaoDiseaseName extract_node(YiBaoDiseaseName yiBaoDiseaseName) {
         for (YiBaoDiseaseNameSymptom symptom : yiBaoDiseaseName.getYiBaoDiseaseNameSymptoms()) {
             if (isExist(symptom)) {

+ 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);

+ 1 - 1
src/main/java/com/diagbot/vo/BillNeoVO.java

@@ -20,7 +20,7 @@ public class BillNeoVO {
     private List<Map<String, String>> pacsList = new ArrayList();
 
     // 药品入参
-    private List<Map<String, String>> drugList = new ArrayList();
+    private List<Map<String, Drug>> drugList = new ArrayList();
 
     // 诊断入参
     private List<Map<String, String>> diagList = new ArrayList();

+ 1 - 0
src/main/java/com/diagbot/web/CacheController.java

@@ -36,6 +36,7 @@ public class CacheController {
         cacheFacade.loadDrugTypeCache();
         cacheFacade.loadDiseaseTypeCache();
         cacheFacade.getSymptomCache();
+        cacheFacade.getSymptomNumCache();
         return RespDTO.onSuc(true);
     }
 

+ 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-症状、10-体征 <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>")