Przeglądaj źródła

术语检索截取前100

zhaops 4 lat temu
rodzic
commit
3c31c40f66

+ 6 - 33
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -113,11 +113,7 @@ public class RetrievalFacade {
     public List<String> getLisPacks(String name) {
 
         LisSetNode lisPackNode = new LisSetNode();
-        List<String> lisPacklist = lisPackNode.getLISPackNameList(name, lisSetRepository);
-
-        if (ListUtil.isNotEmpty(lisPacklist) && lisPacklist.size() > 100) {
-            lisPacklist = lisPacklist.subList(0, 100);
-        }
+        List<String> lisPacklist = lisPackNode.getLISPackNameListLimit100(name, lisSetRepository);
 
         return lisPacklist;
     }
@@ -129,11 +125,7 @@ public class RetrievalFacade {
     public List<LisDetailDTO> getLis(String name) {
 
         LisNameNode lisNode = new LisNameNode();
-        List<LisDetailDTO> lislist = lisNode.getLisDetailList(name, lisRepository);
-
-        if (ListUtil.isNotEmpty(lislist) && lislist.size() > 100) {
-            lislist = lislist.subList(0, 100);
-        }
+        List<LisDetailDTO> lislist = lisNode.getLisDetailListLimit100(name, lisRepository);
 
         return lislist;
     }
@@ -145,11 +137,7 @@ public class RetrievalFacade {
     public List<String> getPACSs(String name) {
 
         PacsNameNode pacsNode = new PacsNameNode();
-        List<String> pacslist = pacsNode.getPACSNameList(name, pacsRepository);
-
-        if (ListUtil.isNotEmpty(pacslist) && pacslist.size() > 100) {
-            pacslist = pacslist.subList(0, 100);
-        }
+        List<String> pacslist = pacsNode.getPACSNameListLimit100(name, pacsRepository);
 
         return pacslist;
     }
@@ -161,11 +149,7 @@ public class RetrievalFacade {
     public List<DiseaseInfoDTO> getDiseases(String name) {
 
         YiBaoDiseaseNode yiBaoDiseaseNode = new YiBaoDiseaseNode();
-        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNameList(name, icdDiseaseRepository);
-
-        if (ListUtil.isNotEmpty(diseaselist) && diseaselist.size() > 0) {
-            diseaselist = diseaselist.subList(0, 100);
-        }
+        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNameListLimit100(name, icdDiseaseRepository);
 
         return diseaselist;
     }
@@ -177,11 +161,7 @@ public class RetrievalFacade {
     public List<DrugInfoDTO> getMedicines(String name) {
 
         MedicineNode medicineNode = new MedicineNode();
-        List<DrugInfoDTO> medslist = medicineNode.getMedicineList(name, medicineRepository);
-
-        if (ListUtil.isNotEmpty(medslist) && medslist.size() > 100) {
-            medslist = medslist.subList(0, 100);
-        }
+        List<DrugInfoDTO> medslist = medicineNode.getMedicineListLimit100(name, medicineRepository);
 
         return medslist;
     }
@@ -193,11 +173,7 @@ public class RetrievalFacade {
     public List<OperationInfoDTO> getOperations(String name) {
 
         YiBaoOperationNameNode operationNode = new YiBaoOperationNameNode();
-        List<OperationInfoDTO> opslist = operationNode.getOperationList(name, operationRepository);
-
-        if (ListUtil.isNotEmpty(opslist) && opslist.size() > 100) {
-            opslist = opslist.subList(0, 100);
-        }
+        List<OperationInfoDTO> opslist = operationNode.getOperationListLimit100(name, operationRepository);
 
         return opslist;
     }
@@ -209,9 +185,6 @@ public class RetrievalFacade {
     public List<String> getTransfusion(String name) {
         List<String> transfusionNames = transfusionRemindRepository.findTransfusionByName(name);
 
-        if (ListUtil.isNotEmpty(transfusionNames) && transfusionNames.size() > 0) {
-            transfusionNames = transfusionNames.subList(0, 100);
-        }
         return transfusionNames;
     }
 

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

@@ -210,6 +210,59 @@ public class LisNameNode {
 		return lislist;
 	}
 
+	/**
+	 * 获取化验细项名称列表
+	 */
+	public List<LisDetailDTO> getLisDetailListLimit100(String name, LisNameRepository lisRepository) {
+		String nodename, unit;
+		Double min, max;
+
+		List<LisDetailDTO> lislist = new ArrayList<>();
+		LisDetailDTO lisDetailDTO;
+
+		List<LisName> lislt = lisRepository.findByNameContainingLimit100(name);
+
+		for (LisName lis: lislt) {
+			lisDetailDTO = new LisDetailDTO();
+			nodename = lis.getName();
+			lisDetailDTO.setUniqueName(nodename);
+
+
+			if (null!=lis.getMaxval()) {
+				max = lis.getMaxval();
+			}
+
+			if (null!=lis.getMinval()) {
+				min = lis.getMinval();
+			}
+
+			if (StringUtil.isNotBlank(lis.getUnit())) {
+				unit = lis.getUnit();
+			}
+
+			if (lis.getLissets().size()>0) {
+				List<LisSet> lissetlist = new ArrayList<>(lis.getLissets());
+				for (LisSet lisset : lissetlist) {
+					lisDetailDTO = new LisDetailDTO();
+					nodename = lis.getName();
+					lisDetailDTO.setUniqueName(nodename);
+					lisDetailDTO.setName(lisset.getName());
+					lisDetailDTO.setMaxValue(lis.getMaxval());
+					lisDetailDTO.setMinValue(lis.getMinval());
+					lisDetailDTO.setUnits(lis.getUnit());
+					lislist.add(lisDetailDTO);
+				}
+			}
+			else {
+				lisDetailDTO.setName(nodename+"(套餐)");
+				lislist.add(lisDetailDTO);
+			}
+		}
+
+
+		return lislist;
+	}
+
 
 
 	/**

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

@@ -3,6 +3,7 @@ package com.diagbot.repository;
 import com.diagbot.entity.node.LisName;
 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;
 
@@ -13,6 +14,9 @@ public interface LisNameRepository extends Neo4jRepository<LisName, Long> {
 
     List<LisName> findByNameContaining(String name);
 
+    @Query("MATCH (n:实验室检查) where n.name contains {name} return n limit 100 ")
+    List<LisName> findByNameContainingLimit100(@Param("name") String name);
+
     @Query("MATCH (n:实验室检查) RETURN DISTINCT(KEYS(n))")
     List<List<String>> getKeys();
 

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

@@ -159,6 +159,26 @@ public class LisSetNode {
 		return lispacklist;
 	}
 
+	/**
+	 * 获取化验套餐名称列表
+	 */
+	public List<String> getLISPackNameListLimit100(String name, LisSetRepository lisPackRepository) {
+		String nodename;
+
+		List<String> lispacklist = new ArrayList<>();
+
+		List<LisSet> lisSetlist = lisPackRepository.findByNameContainingLimit100(name);
+
+		for (LisSet lisSet : lisSetlist) {
+			nodename = lisSet.getName();
+			if (!lispacklist.contains(nodename)) {
+				lispacklist.add(nodename);
+			}
+		}
+
+
+		return lispacklist;
+	}
 
 
 	/**

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

@@ -3,6 +3,7 @@ package com.diagbot.repository;
 import com.diagbot.entity.node.LisSet;
 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;
 
@@ -13,6 +14,9 @@ public interface LisSetRepository extends Neo4jRepository<LisSet, Long> {
 
     List<LisSet> findByNameContaining(String name);
 
+    @Query("MATCH (n:实验室检查套餐) where n.name contains {name} return n limit 100 ")
+    List<LisSet> findByNameContainingLimit100(@Param("name") String name);
+
     @Query("MATCH (n:实验室检查套餐) RETURN DISTINCT(KEYS(n))")
     List<List<String>> getKeys();
 

+ 24 - 3
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -21,7 +21,6 @@ public class MedicineNode {
     }
 
 
-
     /**
      * 处理处方开单合理性
      */
@@ -44,7 +43,7 @@ public class MedicineNode {
 
             medicine = medicineRepository.findByNameIs(medname);
 
-            if (medicine != null && medicine.size()>0) {
+            if (medicine != null && medicine.size() > 0) {
                 drugBillNeoDTO = MedicinetoDrugDTO(medicine.get(0));
 
                 billNeoDTO.setDrugBillNeoDTO(drugBillNeoDTO);
@@ -58,7 +57,6 @@ public class MedicineNode {
     }
 
 
-
     /**
      * 获取药品商品名称列表
      */
@@ -83,6 +81,29 @@ public class MedicineNode {
     }
 
 
+    /**
+     * 获取药品商品名称列表
+     */
+    public List<DrugInfoDTO> getMedicineListLimit100(String name, MedicineRepository medicineRepository) {
+        String nodename;
+
+        List<DrugInfoDTO> medslist = new ArrayList<>();
+        DrugInfoDTO drugInfoDTO;
+
+        List<Medicine> medicines = medicineRepository.findByNameContainingLimit100(name);
+
+        for (Medicine med : medicines) {
+            drugInfoDTO = new DrugInfoDTO();
+            nodename = med.getName();
+
+            drugInfoDTO.setName(nodename);
+            medslist.add(drugInfoDTO);
+        }
+
+
+        return medslist;
+    }
+
 
 }
 

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

@@ -1,7 +1,9 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.Medicine;
+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;
 
@@ -12,6 +14,9 @@ public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
 
     List<Medicine> findByNameContaining(String name);
 
+    @Query("MATCH (n:药品通用名称) where n.name contains {name} return n limit 100 ")
+    List<Medicine> findByNameContainingLimit100(@Param("name") String name);
+
     List<Medicine> findByNameIn(List<String> names);
 }
 

+ 35 - 4
src/main/java/com/diagbot/repository/PacsNameNode.java

@@ -2,7 +2,18 @@ package com.diagbot.repository;
 
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.PacsBillNeoDTO;
-import com.diagbot.entity.node.*;
+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.util.NeoUtil;
 
 import java.util.ArrayList;
@@ -19,7 +30,7 @@ public class PacsNameNode {
 
 
         Gender gender = pacs.getGender();
-        if (gender!=null) {
+        if (gender != null) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(gender.getName());
             nodeInfo.setTypeval(Constants.gender);
@@ -27,7 +38,6 @@ public class PacsNameNode {
         }
 
 
-
         Set<ClinicalFinding> clinicalfindings = pacs.getClinicalfindings();
         for (ClinicalFinding clinicalfinding : clinicalfindings) {
             nodeInfo = new NodeInfo();
@@ -156,7 +166,7 @@ public class PacsNameNode {
 
             pacslt = pacsRepository.findByNameIs(pacsname);
 
-            if (pacslt != null && pacslt.size()>0) {
+            if (pacslt != null && pacslt.size() > 0) {
                 pacsBillNeoDTO = PacstoPACSDTO(pacslt.get(0));
             }
 
@@ -187,6 +197,27 @@ public class PacsNameNode {
         }
 
 
+        return pacslist;
+    }
+
+    /**
+     * 获取辅检名称列表
+     */
+    public List<String> getPACSNameListLimit100(String name, PacsNameRepository pacsRepository) {
+        String pacsname;
+
+        List<String> pacslist = new ArrayList<>();
+
+        List<PacsName> pacslt = pacsRepository.findByNameContainingLimit100(name);
+
+        for (PacsName pacs : pacslt) {
+            pacsname = pacs.getName();
+            if (!pacslist.contains(pacsname)) {
+                pacslist.add(pacsname);
+            }
+        }
+
+
         return pacslist;
     }
 }

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

@@ -3,6 +3,7 @@ package com.diagbot.repository;
 import com.diagbot.entity.node.PacsName;
 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;
 
@@ -13,6 +14,9 @@ public interface PacsNameRepository extends Neo4jRepository<PacsName, Long> {
 
     List<PacsName> findByNameContaining(String name);
 
+    @Query("MATCH (n:辅助检查名称) where n.name contains {name} return n limit 100 ")
+    List<PacsName> findByNameContainingLimit100(@Param("name") String name);
+
     List<PacsName> findByNameIn(List<String> names);
 }
 

+ 51 - 19
src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java

@@ -1,19 +1,25 @@
 package com.diagbot.repository;
 
-import com.diagbot.dto.*;
-import com.diagbot.entity.node.*;
-import com.diagbot.util.NeoUtil;
+import com.diagbot.dto.DiseaseInfoDTO;
+import com.diagbot.dto.NeoPushDTO;
+import com.diagbot.dto.PushBaseDTO;
+import com.diagbot.entity.node.GuoLinDiseaseName;
+import com.diagbot.entity.node.GuoLinICD_10Code;
+import com.diagbot.entity.node.PathwayName;
+import com.diagbot.entity.node.YiBaoDiseaseName;
+import com.diagbot.entity.node.YiBaoICD_10Code;
 import com.diagbot.vo.NeoPushVO;
 
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
 
 public class YiBaoDiseaseNode {
 
 	public NeoPushDTO YiBaoDiseasetoDiseaseDTO(YiBaoDiseaseName disease, NeoPushVO neoPushVO) {
 
-        NeoPushDTO pushDTO = new NeoPushDTO();
-        PushBaseDTO pushBaseDTO;
+		NeoPushDTO pushDTO = new NeoPushDTO();
+		PushBaseDTO pushBaseDTO;
 
 		int gender = neoPushVO.getSex();
 		int age = neoPushVO.getAge();
@@ -212,26 +218,25 @@ public class YiBaoDiseaseNode {
 
 		String gender = null;
 
-		if (gender_code==1) {
+		if (gender_code == 1) {
 			gender = "男";
-		}
-		else if (gender_code==2) {
+		} else if (gender_code == 2) {
 			gender = "女";
 		}
 
-		if (null!=disease.getGender() && gender!=null) {
+		if (null != disease.getGender() && gender != null) {
 			if (!disease.getGender().contains(gender)) {
 				match = false;
 			}
 		}
 
-//		if (null!=disease.getAge()) {
-//			int min = disease.getAge().getMinval();
-//			int max = disease.getAge().getMaxval();
-//			if (age < min || age > max) {
-//				match = false;
-//			}
-//		}
+		//		if (null!=disease.getAge()) {
+		//			int min = disease.getAge().getMinval();
+		//			int max = disease.getAge().getMaxval();
+		//			if (age < min || age > max) {
+		//				match = false;
+		//			}
+		//		}
 
 		return match;
 	}
@@ -254,7 +259,34 @@ public class YiBaoDiseaseNode {
 				dislist.add(icdname);
 				DiseaseInfoDTO diseaseInfoDTO = new DiseaseInfoDTO();
 				diseaseInfoDTO.setName(icdname);
-				if (!dis.getYibaoicd_10codes().isEmpty()){
+				if (!dis.getYibaoicd_10codes().isEmpty()) {
+					diseaseInfoDTO.setIcd10Code(dis.getYibaoicd_10codes().iterator().next().getName());
+				}
+				diseaseInfoDTOList.add(diseaseInfoDTO);
+			}
+		}
+
+		return diseaseInfoDTOList;
+	}
+
+	/**
+	 * 获取疾病名称列表
+	 */
+	public List<DiseaseInfoDTO> getDiseaseNameListLimit100(String name, YiBaoDiseaseRepository diseaseRepository) {
+		String icdname;
+
+		List<String> dislist = new ArrayList<>();
+		List<DiseaseInfoDTO> diseaseInfoDTOList = new ArrayList<>();
+
+		List<YiBaoDiseaseName> diseases = diseaseRepository.findByNameContainingLimit100(name);
+
+		for (YiBaoDiseaseName dis : diseases) {
+			icdname = dis.getName();
+			if (!dislist.contains(icdname)) {
+				dislist.add(icdname);
+				DiseaseInfoDTO diseaseInfoDTO = new DiseaseInfoDTO();
+				diseaseInfoDTO.setName(icdname);
+				if (!dis.getYibaoicd_10codes().isEmpty()) {
 					diseaseInfoDTO.setIcd10Code(dis.getYibaoicd_10codes().iterator().next().getName());
 				}
 				diseaseInfoDTOList.add(diseaseInfoDTO);

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

@@ -1,7 +1,9 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.YiBaoDiseaseName;
+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;
 
@@ -12,6 +14,9 @@ public interface YiBaoDiseaseRepository extends Neo4jRepository<YiBaoDiseaseName
 
     List<YiBaoDiseaseName> findByNameContaining(String name);
 
+    @Query("MATCH (n:医保疾病名称) where n.name contains {name} return n limit 100 ")
+    List<YiBaoDiseaseName> findByNameContainingLimit100(@Param("name") String name);
+
     List<YiBaoDiseaseName> findByNameIn(List<String> names);
 }
 

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

@@ -174,6 +174,29 @@ public class YiBaoOperationNameNode {
         return opslist;
     }
 
+    /**
+     * 获取手术操作名称列表
+     */
+    public List<OperationInfoDTO> getOperationListLimit100(String name, YiBaoOperationNameRepository operationRepository) {
+        String nodename;
+
+        List<OperationInfoDTO> opslist = new ArrayList<>();
+        OperationInfoDTO opInfoDTO;
+
+        List<YiBaoOperationName> operations = operationRepository.findByNameContainingLimit100(name);
+
+        for (YiBaoOperationName op : operations) {
+            opInfoDTO = new OperationInfoDTO();
+            nodename = op.getName();
+
+            opInfoDTO.setName(nodename);
+            opslist.add(opInfoDTO);
+        }
+
+
+        return opslist;
+    }
+
 
 
     /**

+ 5 - 1
src/main/java/com/diagbot/repository/YiBaoOperationNameRepository.java

@@ -1,7 +1,9 @@
 package com.diagbot.repository;
 
 import com.diagbot.entity.node.YiBaoOperationName;
+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;
 
@@ -12,6 +14,8 @@ public interface YiBaoOperationNameRepository extends Neo4jRepository<YiBaoOpera
 
     List<YiBaoOperationName> findByNameContaining(String name);
 
+    @Query("MATCH (n:医保疾病名称) where n.name contains {name} return n limit 100 ")
+    List<YiBaoOperationName> findByNameContainingLimit100(@Param("name") String name);
+
     List<YiBaoOperationName> findByNameIn(List<String> names);
 }
-