Переглянути джерело

Merge remote-tracking branch 'origin/master'

MarkHuang 4 роки тому
батько
коміт
39cdfee06a

+ 22 - 0
src/main/java/com/diagbot/entity/node/PacsResult.java

@@ -0,0 +1,22 @@
+package com.diagbot.entity.node;
+
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.Getter;
+import lombok.Setter;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Setter
+@Getter
+@NodeEntity(label = "辅助检查名称结果")
+public class PacsResult extends BaseNode  {
+
+
+	@Relationship(type = "辅助检查名称结果相关医保疾病名称", direction = Relationship.OUTGOING)
+	private Set<YiBaoDiseaseName> disease = new HashSet<>();
+
+
+}

+ 8 - 12
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -22,13 +22,7 @@ import com.diagbot.util.StringUtil;
 import com.diagbot.vo.NeoPushVO;
 import com.diagbot.vo.SearchData;
 import com.diagbot.vo.StandConvert;
-import com.diagbot.vo.neoPushEntity.ChiefPushVo;
-import com.diagbot.vo.neoPushEntity.Diag;
-import com.diagbot.vo.neoPushEntity.DiagVo;
-import com.diagbot.vo.neoPushEntity.Drug;
-import com.diagbot.vo.neoPushEntity.LisPushVo;
-import com.diagbot.vo.neoPushEntity.PresentPushVo;
-import com.diagbot.vo.neoPushEntity.Symptom;
+import com.diagbot.vo.neoPushEntity.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -290,9 +284,11 @@ public class CommonFacade {
         List<Lis> lis = wordCrfDTO.getLis();
 //        List<Pacs> pacs = wordCrfDTO.getPacs();
         // TODO 辅检
+        PacsLabel pacsLabel = wordCrfDTO.getPacsLabel();
         // List<PacsNew> pacsNewList = wordCrfDTO.getPacsLabel().getPacsNewList();
         pushVO.setAge(wordCrfDTO.getAge());
         pushVO.setSex(wordCrfDTO.getSex());
+        pushVO.setAgeNum(wordCrfDTO.getAgeNum());
         pushVO.setDiaeaseName(diseaseName);
         if (chiefLabel != null) {
             if(ListUtil.isNotEmpty(chiefLabel.getClinicals())){
@@ -346,11 +342,11 @@ public class CommonFacade {
             pushVO.setLisPushVo(lisPushVo);
         }
         // TODO 辅检
-        // if(ListUtil.isNotEmpty(pacsNewList)){
-        //     PacsPushVo pacsPushVo = new PacsPushVo();
-        //     pacsPushVo.setPacs(pacsNewList);
-        //     pushVO.setPacsPushVo(pacsPushVo);
-        // }
+        if(pacsLabel != null){
+            PacsPushVo pacsPushVo = new PacsPushVo();
+            pacsPushVo.setPacs(pacsLabel.getRes());
+            pushVO.setPacsPushVo(pacsPushVo);
+        }
         if(ListUtil.isNotEmpty(diags)){
             DiagVo diagVo = new DiagVo();
             List<Diag> diseases = diags.stream().map(x -> {

+ 45 - 91
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -1,25 +1,12 @@
 package com.diagbot.facade;
 
 import com.alibaba.fastjson.JSONArray;
+import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.BillNeoDTO;
-import com.diagbot.dto.CriticalNeoDTO;
-import com.diagbot.dto.HighRiskNeoDTO;
-import com.diagbot.dto.NeoPushDTO;
-import com.diagbot.dto.NodeNeoDTO;
-import com.diagbot.dto.OtherTipNeoDTO;
-import com.diagbot.dto.OtherTipPacsNeoDTO;
-import com.diagbot.dto.OtherTipTransfusionNeoDTO;
-import com.diagbot.dto.PushBaseDTO;
-import com.diagbot.dto.StandConvertCrfBatchDTO;
-import com.diagbot.dto.StandConvertCrfDTO;
-import com.diagbot.dto.WordCrfDTO;
-import com.diagbot.entity.node.LisRemind;
-import com.diagbot.entity.node.Medicine;
-import com.diagbot.entity.node.Symptom;
-import com.diagbot.entity.node.YiBaoDiseaseName;
+import com.diagbot.dto.*;
+import com.diagbot.entity.node.*;
 import com.diagbot.enums.RedisEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.exception.CommonErrorCode;
@@ -29,14 +16,9 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.BillNeoVO;
-import com.diagbot.vo.CriticalNeoVO;
-import com.diagbot.vo.Drug;
-import com.diagbot.vo.NeoPushVO;
-import com.diagbot.vo.StandConvert;
-import com.diagbot.vo.StandConvertCrfVO;
+import com.diagbot.vo.*;
 import com.diagbot.vo.neoPushEntity.ChiefPushVo;
-import com.diagbot.vo.neoPushEntity.Diag;
+import com.diagbot.vo.neoPushEntity.PacsPushVo;
 import com.diagbot.vo.neoPushEntity.PresentPushVo;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -50,14 +32,7 @@ import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -117,6 +92,8 @@ public class NeoFacade {
     TransfusionSuggestRepository transfusionSuggestRepository;
     @Autowired
     PacsRemindRepository pacsRemindRepository;
+    @Autowired
+    PacsResultRepository pacsResultRepository;
 
     /**
      * 返回药品缓存信息
@@ -225,14 +202,14 @@ public class NeoFacade {
      * @param pushVO
      * @return
      */
-    public List<NeoPushDTO> getReversePush(NeoPushVO pushVO) {
-        List<NeoPushDTO> neoPushDTOS = new ArrayList<>();
+    public NeoPushDTO getReversePush(NeoPushVO pushVO) {
+        NeoPushDTO neoPushDTO = new NeoPushDTO();
         // 如果有诊断名称,则通过诊断反推
         if (null != pushVO.getDiagVo() && pushVO.getDiagVo().getDiags().size() > 0) {
-            neoPushDTOS = getDiagInfo(pushVO);
+            neoPushDTO = getDiagInfo(pushVO);
         }
 
-        return neoPushDTOS;
+        return neoPushDTO;
     }
 
 
@@ -264,34 +241,22 @@ public class NeoFacade {
             }
         }
         symptoms = Stream.of(symptom_chief,symptom_present).flatMap(Collection::stream).distinct().collect(Collectors.toList());
-        //症状推疾病
+        //症状、体征推疾病
         List<String> allDis_bySymptom = getDisBySymptom(symptoms,age,sex);
         allDis.addAll(allDis_bySymptom);
-        //体征推出的疾病
-        //化验推出的疾病辅检
+        //化验推出的疾病
         //辅检推出的疾病
-        //推送出的所有疾病进行性别和年龄的过滤
-        Map<String, String> disSexCache = getDisSexCache();
-        Map<String, String> disAgeCache = getDisAgeCache();
-        Iterator<String> iterator_dis = allDis.iterator();
-        while (iterator_dis.hasNext()){
-            String disease = iterator_dis.next();
-            if(disSexCache.containsKey(disease)){
-                if((disSexCache.get(disease) == "男" && sex != 1) ||
-                        (disSexCache.get(disease) == "女" && sex != 2)){
-                    iterator_dis.remove();
-                    continue;
-                }
-            }
-            if(disAgeCache.containsKey(disease)){
-                String[] betweenAge = disAgeCache.get(disease).split("-");
-                if(betweenAge.length == 2 && (age < Double.parseDouble(betweenAge[0])
-                        || age > Double.parseDouble(betweenAge[1]))){
-                    iterator_dis.remove();
-                }
+        PacsPushVo pacsPushVo = pushVO.getPacsPushVo();
+        if(pacsPushVo !=null){
+            List<Item> pacs = pacsPushVo.getPacs();
+            if(ListUtil.isNotEmpty(pacs)){
+                List<String> pacsNames = pacs.stream().map(x -> x.getUniqueName()).collect(Collectors.toList());
+                List<String> allDis_byPacsResult = getDisByPacsResult(pacsNames, age, sex);
+                allDis.addAll(allDis_byPacsResult);
             }
         }
 
+        //推送出的所有疾病进行性别和年龄的过滤
         Map<Long,List<String>> numberDiseasesMap = disCountSort(allDis);
         //根据发病率排序
         Map<String, Double> disdistributionCache = self.getDisdistributionCache();
@@ -310,10 +275,10 @@ public class NeoFacade {
             y.forEach(dis -> dis_dbt.put(dis,disdistributionCache.get(dis)));
             disPack.put(x,dis_dbt);
         });
-        Map<Long,List<String>> num_sortDiseases = new HashMap<>();
-
         disPack.forEach((x,y)->{
-            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(Collections.reverseOrder(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)->{
                 NeoPushDTO neoPushDTO = new NeoPushDTO();
@@ -322,10 +287,8 @@ public class NeoFacade {
                 neoPushDTO.setDisease(pushBaseDTO);
                 neoPushDTOS.add(neoPushDTO);
             });
-
         });
 
-
         return neoPushDTOS;
     }
 
@@ -334,11 +297,19 @@ public class NeoFacade {
         //取交集
         symptoms.retainAll(symptomCache);
         long start = System.currentTimeMillis();
-        List<String> allDis_bySymptom = pushDis(symptomNameRepository, symptoms,age,sex);
+        List<String> allDis_bySymptom = pushDisBySymptom(symptomNameRepository, symptoms,age,sex);
         long end = System.currentTimeMillis();
         return allDis_bySymptom;
         }
 
+    public List<String> getDisByPacsResult(List<String> pacsResult,Double age,Integer sex){
+        List<PacsResult> byNameIn = pacsResultRepository.findByNameIn(pacsResult);
+        List<String> allDis = byNameIn.stream()
+                .map(z -> z.getDisease().stream().filter(o -> NeoUtil.matchBasic(o,sex,age)).map(y -> y.getName()).collect(Collectors.toList())).flatMap(List::stream)
+                .collect(Collectors.toList());
+        return allDis;
+    }
+
 
 
     /**
@@ -347,31 +318,16 @@ public class NeoFacade {
      * @param symptoms
      * @return
      */
-    public List<String> pushDis(SymptomNameRepository symptomNameRepository,List<String> symptoms,Double age,Integer sex){
+    public List<String> pushDisBySymptom(SymptomNameRepository symptomNameRepository,List<String> symptoms,Double age,Integer sex){
         List<String> allDis = Lists.newArrayList();
-
-        /*if(ListUtil.isNotEmpty(symptoms)){
-            symptoms.parallelStream().forEach(x ->{
-                List<Symptom> byNameIs = symptomNameRepository.findByNameIs(x);
-                if(ListUtil.isNotEmpty(byNameIs)){
-                    List<String> diseases = byNameIs.stream().filter(z -> z.getDisease() != null && z.getDisease().size() > 0)
-                            .map(z -> z.getDisease().stream().map(y -> y.getName()).collect(Collectors.toList())).flatMap(List::stream)
-                            .collect(Collectors.toList());
-                    allDis.addAll(diseases);
-                }
-            });
-        }*/
         List<Symptom> byNameIn = symptomNameRepository.findByNameIn(symptoms);
-        /*List<YiBaoDiseaseName> collect = byNameIn.stream()
-                .map(x -> x.getDisease().stream().filter(z -> NeoUtil.matchBasic(z,sex,age)).collect(Collectors.toList()))
-                .flatMap(List::stream).collect(Collectors.toList());*/
-
-        allDis = byNameIn.stream()
+        allDis = byNameIn.parallelStream()
                 .map(z -> z.getDisease().stream().filter(o -> NeoUtil.matchBasic(o,sex,age)).map(y -> y.getName()).collect(Collectors.toList())).flatMap(List::stream)
                 .collect(Collectors.toList());
         return allDis;
     }
 
+
     /**
      * 推送的疾病计数排序
      * @param allDis
@@ -684,16 +640,14 @@ public class NeoFacade {
      * @param neoPushVO
      * @return
      */
-    public List<NeoPushDTO> getDiagInfo(NeoPushVO neoPushVO) {
-
-        List<NeoPushDTO> neoPushDTOs = new ArrayList<>();
-        NeoPushDTO pushDTO;
+    public NeoPushDTO getDiagInfo(NeoPushVO neoPushVO) {
+        NeoPushDTO pushDTO = new NeoPushDTO();
 
         YiBaoDiseaseNode icdDiseaseNode = new YiBaoDiseaseNode();
         String term;
 
-        for (Diag diag : neoPushVO.getDiagVo().getDiags()) {
-            term = diag.getName();
+//        for (Diag diag : neoPushVO.getDiagVo().getDiags()) {
+        term = neoPushVO.getDiagVo().getDiags().get(0).getName();
             List<YiBaoDiseaseName> yiBaoName = yiBaoDiseaseRepository.findByNameIs(term);
             YiBaoDiseaseName icdDisease = null;
             if(ListUtil.isNotEmpty(yiBaoName)){
@@ -702,13 +656,13 @@ public class NeoFacade {
             if (icdDisease != null) {
                 pushDTO = icdDiseaseNode.YiBaoDiseasetoDiseaseDTO(icdDisease, neoPushVO);
 
-                if (null != pushDTO) {
+                /*if (null != pushDTO) {
                     neoPushDTOs.add(pushDTO);
-                }
+                }*/
             }
-        }
+//        }
 
-        return neoPushDTOs;
+        return pushDTO;
     }
 
 

+ 15 - 0
src/main/java/com/diagbot/facade/TestFacade.java

@@ -258,6 +258,21 @@ public class TestFacade {
                         String[] splitAge = bean.getNeoName().split(",|,");
                         indicationPushVO.setAgeNum(getValueNum(splitAge));
                         break;
+                    case "16": // 开单项互斥
+                        if ("辅助检查名称".equals(bean.getOrderType())) {
+                            List<Pacs> pacsOrder = new ArrayList<>();
+                            Pacs pacs = new Pacs();
+                            pacs.setUniqueName(bean.getStandName());
+                            pacs.setName(bean.getStandName());
+                            pacsOrder.add(pacs);
+
+                            Pacs pacs1 = new Pacs();
+                            pacs1.setUniqueName(bean.getNeoName());
+                            pacs1.setName(bean.getNeoName());
+                            pacsOrder.add(pacs1);
+                            indicationPushVO.setPacsOrder(pacsOrder);
+                        }
+                        break;
                     default:
                         continue;
                 }

+ 57 - 60
src/main/java/com/diagbot/process/PushProcess.java

@@ -89,102 +89,99 @@ 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) {
-        List<NeoPushDTO> reversePush = neoFacade.getReversePush(pushVO);
-        if(ListUtil.isNotEmpty(reversePush)){
+        NeoPushDTO reversePush = neoFacade.getReversePush(pushVO);
+//        if(ListUtil.isNotEmpty(reversePush)){
             // 症状
             if (ruleTypeList.contains("1")) {
-                 List<String> symptoms = new ArrayList<>();
-                reversePush.stream().filter(x -> ListUtil.isNotEmpty(x.getSymptoms())).forEach(x -> {
+                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 (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")) {
-                List<String> vitals = new ArrayList<>();
-                reversePush.stream().filter(x -> ListUtil.isNotEmpty(x.getVitals())).forEach(x -> {
-                    List<String> vitalList = x.getVitals().stream().map(y -> y.getName()).collect(Collectors.toList());
-                    vitals.removeAll(vitalList);
-                    vitals.addAll(vitalList);
-                });
-                if (vitals.size() > 0) {
-                    List<PushBaseDTO> filtervitals = getPackagePushBaseDTO(typeWords, vitals, StandConvertEnum.vital);
-                    pushDTO.setVital(filtervitals.subList(0, filtervitals.size() >= length ? length : filtervitals.size()));
+                if(ListUtil.isNotEmpty(reversePush.getVitals())){
+                    List<String> vitals = reversePush.getVitals().stream().map(x->x.getName()).collect(Collectors.toList());
+                    if (vitals.size() > 0) {
+                        List<PushBaseDTO> filtervitals = getPackagePushBaseDTO(typeWords, vitals, StandConvertEnum.vital);
+                        pushDTO.setVital(filtervitals.subList(0, filtervitals.size() >= length ? length : filtervitals.size()));
+                    }
                 }
+
             }
             // 化验
             if (ruleTypeList.contains("5")) {
-                List<String> lises = new ArrayList<>();
-                reversePush.stream().filter(x -> ListUtil.isNotEmpty(x.getLis())).forEach(x -> {
-                    List<String> lisList = x.getLis().stream().map(y -> y.getName()).collect(Collectors.toList());
-                    lises.removeAll(lisList);
-                    lises.addAll(lisList);
-                });
-                if (lises.size() > 0) {
-                    List<PushBaseDTO> filterlis = getPackagePushBaseDTO(typeWords, lises, StandConvertEnum.lis);
-                    pushDTO.setLis(filterlis.subList(0, filterlis.size() >= length ? length : filterlis.size()));
+                if(ListUtil.isNotEmpty(reversePush.getLis())){
+                    List<String> lises = reversePush.getLis().stream().map(x->x.getName()).collect(Collectors.toList());
+                    if (lises.size() > 0) {
+                        List<PushBaseDTO> filterlis = getPackagePushBaseDTO(typeWords, lises, StandConvertEnum.lis);
+                        pushDTO.setLis(filterlis.subList(0, filterlis.size() >= length ? length : filterlis.size()));
+                    }
                 }
+
             }
             // 辅检
             if (ruleTypeList.contains("6")) {
-                List<String> pacses = new ArrayList<>();
-                reversePush.stream().filter(x -> ListUtil.isNotEmpty(x.getPacs())).forEach(x -> {
-                    List<String> pacsList = x.getPacs().stream().map(y -> y.getName()).collect(Collectors.toList());
-                    pacses.removeAll(pacsList);
-                    pacses.addAll(pacsList);
-                });
-                if (pacses.size() > 0) {
-                    List<PushBaseDTO> filterpacs = getPackagePushBaseDTO(typeWords, pacses, StandConvertEnum.pacs);
-                    pushDTO.setPacs(filterpacs.subList(0, filterpacs.size() >= length ? length : filterpacs.size()));
+                if(ListUtil.isNotEmpty(reversePush.getPacs())){
+                    List<String> pacses = reversePush.getPacs().stream().map(x->x.getName()).collect(Collectors.toList());
+                    if (pacses.size() > 0) {
+                        List<PushBaseDTO> filterpacs = getPackagePushBaseDTO(typeWords, pacses, StandConvertEnum.pacs);
+                        pushDTO.setPacs(filterpacs.subList(0, filterpacs.size() >= length ? length : filterpacs.size()));
+                    }
                 }
+
             }
             // 药品
             if (ruleTypeList.contains("8")) {
-                List<String> drugs = new ArrayList<>();
-                reversePush.stream().filter(x ->x.getTreat() != null && ListUtil.isNotEmpty(x.getTreat().get(MedicalAdviceEnum.drug.getName())))
+                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 -> {
                             List<String> drugList = x.getTreat().get(MedicalAdviceEnum.drug.getName()).stream().map(y -> y.getName()).collect(Collectors.toList());
                             drugs.removeAll(drugList);
                             drugs.addAll(drugList);
-                        });
+                        });*/
                 if (drugs.size() > 0) {
                     List<PushBaseDTO> filterdrugs = getPackagePushBaseDTO(typeWords, drugs, StandConvertEnum.drug);
                     pushDTO.setMedicines(filterdrugs.subList(0, filterdrugs.size() >= length ? length : filterdrugs.size()));
                 }
+                }
+
             }
             // 手术
             if (ruleTypeList.contains("9")) {
-                List<String> operations = new ArrayList<>();
-                reversePush.stream().filter(x ->x.getTreat() != null && ListUtil.isNotEmpty(x.getTreat().get(MedicalAdviceEnum.operation.getName())))
-                        .forEach(x -> {
-                            List<String> operationList = x.getTreat().get(MedicalAdviceEnum.operation.getName()).stream().map(y -> y.getName()).collect(Collectors.toList());
-                            operations.removeAll(operationList);
-                            operations.addAll(operationList);
-                        });
-                if (operations.size() > 0) {
-                    List<PushBaseDTO> filteroperations = getPackagePushBaseDTO(typeWords, operations, StandConvertEnum.operation);
-                    pushDTO.setOperations(filteroperations.subList(0, filteroperations.size() >= length ? length : filteroperations.size()));
+                if(reversePush.getTreat() != null && ListUtil.isNotEmpty(reversePush.getTreat().get(MedicalAdviceEnum.operation.getName())))
+                {
+
+                    List<String> operations = reversePush.getTreat().get(MedicalAdviceEnum.operation.getName()).stream().map(x -> x.getName()).collect(Collectors.toList());
+                    if (operations.size() > 0) {
+                        List<PushBaseDTO> filteroperations = getPackagePushBaseDTO(typeWords, operations, StandConvertEnum.operation);
+                        pushDTO.setOperations(filteroperations.subList(0, filteroperations.size() >= length ? length : filteroperations.size()));
+                    }
                 }
             }
             //反推,推鉴别诊断
             if (ruleTypeList.contains("7")) {
-                List<String> differentDis = new ArrayList<>();
-                reversePush.stream().filter(x -> ListUtil.isNotEmpty(x.getDifferentialDis())).forEach(x -> {
-                    List<String> differentList = x.getDifferentialDis().stream().map(y -> y.getName()).collect(Collectors.toList());
-                    differentDis.removeAll(differentList);
-                    differentDis.addAll(differentList);
-                });
-                if (differentDis.size() > 0) {
-                    List<PushBaseDTO> filterpacs = getPackagePushBaseDTO(typeWords, differentDis, StandConvertEnum.disease);
-                    List<PushBaseDTO> pushDiffBaseDTOS = filterpacs.subList(0, filterpacs.size() >= length ? length : filterpacs.size());
-                    dis.put(DiseaseTypeEnum.identify.getName(),pushDiffBaseDTOS);
-                    pushDTO.setDis(dis);
+                if(ListUtil.isNotEmpty(reversePush.getDifferentialDis())){
+                    List<String> differentDis = reversePush.getDifferentialDis().stream().map(x->x.getName()).collect(Collectors.toList());
+                    if (differentDis.size() > 0) {
+                        List<PushBaseDTO> filterpacs = getPackagePushBaseDTO(typeWords, differentDis, StandConvertEnum.disease);
+                        List<PushBaseDTO> pushDiffBaseDTOS = filterpacs.subList(0, filterpacs.size() >= length ? length : filterpacs.size());
+                        dis.put(DiseaseTypeEnum.identify.getName(),pushDiffBaseDTOS);
+                        pushDTO.setDis(dis);
+                    }
                 }
+
             }
             if (ruleTypeList.contains("10") && pushVO.getDiaeaseName() != null) {
                 List<TreatDTO> collect = new ArrayList<>();
@@ -195,7 +192,7 @@ public class PushProcess {
                 collect.add(treatDTO);
                 pushDTO.setTreat(collect);
             }
-        }
+//        }
 //            return pushDTO;
     }
 

+ 52 - 0
src/main/java/com/diagbot/repository/PacsResultRepository.java

@@ -0,0 +1,52 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.PacsResult;
+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 PacsResultRepository extends Neo4jRepository<PacsResult, Long> {
+
+    List<PacsResult> findByNameIs(String name);
+
+    List<PacsResult> findByNameContaining(String name);
+
+    List<PacsResult> findByNameIn(List<String> names);
+
+    Page<PacsResult> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
+
+    @Query("MATCH (n:`辅助检查名称`) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) = toLower($name)  OR  toLower(n.`拼音编码`) = toLower($pycode))\n" +
+            "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n" +
+            "UNION\n" +
+            "MATCH (n:`辅助检查名称`) WHERE n.`静态知识标识` = $isKL \n" +
+            "AND (toLower(n.`name`) STARTS WITH toLower($name) 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 n.`静态知识标识` = $isKL  \n" +
+            "AND (toLower(n.`name`) CONTAINS toLower($name) 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<PacsResult> staticKnowledgeIndex(@Param("isKL") Integer isKL, @Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+
+    @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<PacsResult> index(@Param("name") String name, @Param("pycode") String pycode, @Param("size") Integer size);
+}

+ 1 - 1
src/main/java/com/diagbot/util/NeoUtil.java

@@ -132,7 +132,7 @@ public class NeoUtil {
         if((gender_neo4j != null && gender_neo4j.equals("男") && gender_code != 1) ||
                 (gender_neo4j != null && gender_neo4j.equals("女") && gender_code != 2)){
             match = false;
-        }else if(age_neo4j != null){
+        }else if(age_neo4j != null ){
             String[] betweenAge = age_neo4j.split("-");
             if(betweenAge.length == 2 && (age < Double.parseDouble(betweenAge[0])
                     || age > Double.parseDouble(betweenAge[1]))){

+ 8 - 8
src/main/java/com/diagbot/vo/RetrievalVO.java

@@ -19,12 +19,12 @@ public class RetrievalVO {
      * 检索内容
      */
     private String inputStr;
-    /**
-     * 性别:1-男、2-女、3-通用
-     */
-    private Integer sex;
-    /**
-     * 年龄
-     */
-    private Integer age;
+//    /**
+//     * 性别:1-男、2-女、3-通用
+//     */
+//    private Integer sex;
+//    /**
+//     * 年龄
+//     */
+//    private Integer age;
 }

+ 3 - 2
src/main/java/com/diagbot/vo/neoPushEntity/PacsPushVo.java

@@ -1,6 +1,6 @@
 package com.diagbot.vo.neoPushEntity;
 
-import com.diagbot.model.entity.PacsNew;
+import com.diagbot.biz.push.entity.Item;
 import lombok.Data;
 
 import java.util.List;
@@ -12,5 +12,6 @@ import java.util.List;
  */
 @Data
 public class PacsPushVo {
-    private List<PacsNew> pacs;
+//    private List<PacsNew> pacs;
+    private List<Item> pacs;
 }