Browse Source

添加科室过滤

kongwz 4 years ago
parent
commit
78bb5f78ed

+ 7 - 6
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -312,7 +312,7 @@ public class NeoFacade {
             lises = lisPushVo.getLises();
         }
 
-        pushDis = pushDisBySpecialLis(age, sex, pd, lises, presentDiags);
+        pushDis = pushDisBySpecialLis(depts,age, sex, pd, lises, presentDiags);
         if (ListUtil.isNotEmpty(pushDis)) {
             return pushDis;
         }
@@ -324,7 +324,7 @@ public class NeoFacade {
         pushDisByLis(allDis, lises);
         //辅检推出的疾病
         pushDisByPacs(pushVO, allDis);
-        filterAndSort(pushDis, allDis, sex, age, pd);
+        filterAndSort(pushDis, allDis, sex, age, pd,depts);
         pushDis = addDiagFromPresent(pushDis, presentDiags);
 
         return pushDis;
@@ -339,14 +339,14 @@ public class NeoFacade {
      * @param lises
      * @return
      */
-    private List<String> pushDisBySpecialLis(Double age, Integer sex, PD pd, List<Lis> lises, List<String> presentDiags) {
+    private List<String> pushDisBySpecialLis(List<String> depts, Double age, Integer sex, PD pd, List<Lis> lises, List<String> presentDiags) {
         List<String> neoPushDTOS = new ArrayList<>();
         if (ListUtil.isNotEmpty(lises)) {
             List<String> lis_dis = lises.parallelStream()
                     .map(x -> nodeRepository.getDisByLis_Special(x.getName(), x.getUniqueName() + x.getResult()))
                     .flatMap(List::stream).collect(Collectors.toList());
             if (ListUtil.isNotEmpty(lis_dis)) {
-                filterAndSort(neoPushDTOS, lis_dis, sex, age, pd);
+                filterAndSort(neoPushDTOS, lis_dis, sex, age, pd, depts);
                 neoPushDTOS = addDiagFromPresent(neoPushDTOS, presentDiags);
             }
         }
@@ -448,14 +448,15 @@ public class NeoFacade {
         allDis.addAll(allDis_bySymptom);
     }
 
-    private void filterAndSort(List<String> dises, List<String> allDis, int gender_code, double age, PD pd) {
+    private 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<>();
         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))
+            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"))));

+ 0 - 15
src/main/java/com/diagbot/process/PushProcess.java

@@ -97,22 +97,15 @@ public class PushProcess {
 
     private void reversePushPackage(int length, PushDTO pushDTO, List<String> ruleTypeList, Map<String, List<String>> typeWords, NeoPushVO pushVO, Map<String, List<PushBaseDTO>> dis) {
         NeoPushDTO reversePush = neoFacade.getReversePush(pushVO);
-        //        if(ListUtil.isNotEmpty(reversePush)){
         // 症状
         if (ruleTypeList.contains("1")) {
             if (ListUtil.isNotEmpty(reversePush.getSymptoms())) {
                 List<String> symptoms = reversePush.getSymptoms().stream().map(x -> x.getName()).collect(Collectors.toList());
-                /*reversePush.stream().filter(x -> ListUtil.isNotEmpty(x.getSymptoms())).forEach(x -> {
-                    List<String> symptomList = x.getSymptoms().stream().map(y -> y.getName()).collect(Collectors.toList());
-                    symptoms.removeAll(symptomList);
-                    symptoms.addAll(symptomList);
-                });*/
                 if (symptoms.size() > 0) {
                     List<PushBaseDTO> filtervitals = getPackagePushBaseDTO(typeWords, symptoms, StandConvertEnum.symptom);
                     pushDTO.setSymptom(filtervitals.subList(0, filtervitals.size() >= length ? length : filtervitals.size()));
                 }
             }
-
         }
         // 查体
         if (ruleTypeList.contains("4")) {
@@ -123,7 +116,6 @@ public class PushProcess {
                     pushDTO.setVital(filtervitals.subList(0, filtervitals.size() >= length ? length : filtervitals.size()));
                 }
             }
-
         }
         // 化验
         if (ruleTypeList.contains("5")) {
@@ -134,7 +126,6 @@ public class PushProcess {
                     pushDTO.setLis(filterlis.subList(0, filterlis.size() >= length ? length : filterlis.size()));
                 }
             }
-
         }
         // 辅检
         if (ruleTypeList.contains("6")) {
@@ -145,12 +136,10 @@ public class PushProcess {
                     pushDTO.setPacs(filterpacs.subList(0, filterpacs.size() >= length ? length : filterpacs.size()));
                 }
             }
-
         }
         // 药品
         if (ruleTypeList.contains("8")) {
             if (reversePush.getTreat() != null && ListUtil.isNotEmpty(reversePush.getTreat().get(MedicalAdviceEnum.drug.getName()))) {
-
                 List<String> drugs = reversePush.getTreat().get(MedicalAdviceEnum.drug.getName()).stream().map(x -> x.getName()).collect(Collectors.toList());
                 /*reversePush.stream().filter(x ->x.getTreat() != null && ListUtil.isNotEmpty(x.getTreat().get(MedicalAdviceEnum.drug.getName())))
                         .forEach(x -> {
@@ -163,7 +152,6 @@ public class PushProcess {
                     pushDTO.setMedicines(filterdrugs.subList(0, filterdrugs.size() >= length ? length : filterdrugs.size()));
                 }
             }
-
         }
         // 手术
         if (ruleTypeList.contains("9")) {
@@ -187,7 +175,6 @@ public class PushProcess {
                     pushDTO.setDis(dis);
                 }
             }
-
         }
         if (ruleTypeList.contains("10") && pushVO.getDiaeaseName() != null) {
             List<TreatDTO> collect = new ArrayList<>();
@@ -198,8 +185,6 @@ public class PushProcess {
             collect.add(treatDTO);
             pushDTO.setTreat(collect);
         }
-        //        }
-        //            return pushDTO;
     }
 
     private List<PushBaseDTO> getPackagePushBaseDTO(Map<String, List<String>> typeWords, List<String> symptoms, StandConvertEnum symptom) {

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

@@ -178,6 +178,18 @@ public class NeoUtil {
         return match;
     }
 
+    public static boolean matchDept(Map<String,String> disease, List<String> depts){
+        boolean match = true;
+        if(disease != null && ListUtil.isNotEmpty(depts)) {
+            String deptgender_neo4j = disease.get("dept");
+            if((depts.contains("妇科") && !deptgender_neo4j.equals("妇科"))
+            || (depts.contains("产科") && !deptgender_neo4j.equals("产科"))){
+                match = false;
+            }
+        }
+        return match;
+    }
+
     public static boolean matchPds(String disName, PD pd){
         boolean match = true;
         if(pd != null){