Browse Source

添加按拼音检索的方法

MarkHuang 4 years ago
parent
commit
c43be128a6

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

@@ -62,12 +62,12 @@ public class EntityFacade {
             switch (clsname) {
                 case "LisName":
                     LisNameNode lisNode = new LisNameNode();
-                    keys = getKeys(lisRepository.getKeys(), "name");
+                    keys = getKeys(baseNodeRepository.getLisNameKeys(), "name");
                     neoEntityDTO = lisNode.updateEntity(name, props, keys, lisRepository);
                     break;
                 case "LisSet":
                     LisSetNode lisPackNode = new LisSetNode();
-                    keys = getKeys(lisSetRepository.getKeys(), "name");
+                    keys = getKeys(baseNodeRepository.getLisSetKeys(), "name");
                     neoEntityDTO = lisPackNode.updateEntity(name, props, keys, lisSetRepository);
                     break;
             }

+ 16 - 24
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -103,10 +103,10 @@ public class RetrievalFacade {
     /*
      * 获取化验套餐名称列表
      */
-    public List<String> getLisPacks(String name) {
+    public List<String> getLisPacks(String info) {
 
         LisSetNode lisPackNode = new LisSetNode();
-        List<String> lisPacklist = lisPackNode.getLISPackNameList(name, lisSetRepository);
+        List<String> lisPacklist = lisPackNode.getLISPackNameList(info, lisSetRepository, baseNodeRepository);
 
         return lisPacklist;
     }
@@ -115,10 +115,10 @@ public class RetrievalFacade {
     /*
      * 获取化验细项名称列表
      */
-    public List<LisDetailDTO> getLis(String name) {
+    public List<LisDetailDTO> getLis(String info) {
 
         LisNameNode lisNode = new LisNameNode();
-        List<LisDetailDTO> lislist = lisNode.getLisDetailList(name, lisRepository);
+        List<LisDetailDTO> lislist = lisNode.getLisDetailList(info, lisRepository, baseNodeRepository);
 
         return lislist;
     }
@@ -127,10 +127,10 @@ public class RetrievalFacade {
     /*
      * 获取辅检名称列表
      */
-    public List<String> getPACSs(String name) {
+    public List<String> getPACSs(String info) {
 
         PacsNameNode pacsNode = new PacsNameNode();
-        List<String> pacslist = pacsNode.getPACSNameList(name, pacsRepository);
+        List<String> pacslist = pacsNode.getPACSNameList(info, pacsRepository, baseNodeRepository);
 
         return pacslist;
     }
@@ -139,10 +139,10 @@ public class RetrievalFacade {
     /*
      * 获取疾病名称列表
      */
-    public List<DiseaseInfoDTO> getDiseases(String name) {
+    public List<DiseaseInfoDTO> getDiseases(String info) {
 
         YiBaoDiseaseNode yiBaoDiseaseNode = new YiBaoDiseaseNode();
-        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNameList(name, icdDiseaseRepository);
+        List<DiseaseInfoDTO> diseaselist = yiBaoDiseaseNode.getDiseaseNameList(info, icdDiseaseRepository, baseNodeRepository);
 
         return diseaselist;
     }
@@ -151,10 +151,10 @@ public class RetrievalFacade {
     /*
      * 获取药品商品名称列表
      */
-    public List<DrugInfoDTO> getMedicines(String name) {
+    public List<DrugInfoDTO> getMedicines(String info) {
 
         MedicineNode medicineNode = new MedicineNode();
-        List<DrugInfoDTO> medslist = medicineNode.getMedicineList(name, medicineRepository);
+        List<DrugInfoDTO> medslist = medicineNode.getMedicineList(info, medicineRepository, baseNodeRepository);
 
         return medslist;
     }
@@ -163,10 +163,10 @@ public class RetrievalFacade {
     /*
      * 获取手术和操作名称列表
      */
-    public List<OperationInfoDTO> getOperations(String name) {
+    public List<OperationInfoDTO> getOperations(String info) {
 
         YiBaoOperationNameNode operationNode = new YiBaoOperationNameNode();
-        List<OperationInfoDTO> opslist = operationNode.getOperationList(name, operationRepository);
+        List<OperationInfoDTO> opslist = operationNode.getOperationList(info, operationRepository, baseNodeRepository);
 
         return opslist;
     }
@@ -175,21 +175,12 @@ public class RetrievalFacade {
     /*
      * 获取输血方式列表
      */
-    public List<String> getTransfusion(String name) {
-        List<String> transfusionNames = transfusionRemindRepository.findTransfusionByName(name);
+    public List<String> getTransfusion(String info) {
+        List<String> transfusionNames = transfusionRemindRepository.findTransfusionByName(info);
 
         return transfusionNames;
     }
 
-    /*
-     * 按拼音获取名称列表
-     */
-    public List<String> getNamebyPinYin(String pycode) {
-        List<String> namelist = baseNodeRepository.getNamebyPinYin(pycode);
-
-        return namelist;
-    }
-
 
     /*
      * 获取科室名称列表
@@ -197,11 +188,12 @@ public class RetrievalFacade {
     public List<String> getDepts(String name) {
 
         DeptNode deptNode = new DeptNode();
-        List<String> deptlist = deptNode.getDeptNameList(name, deptRepository);
+        List<String> deptlist = deptNode.getDeptNameList(name, deptRepository, baseNodeRepository);
 
         return deptlist;
     }
 
+
     /**
      * 医学知识(静态信息)检索
      *

+ 28 - 2
src/main/java/com/diagbot/repository/BaseNodeRepository.java

@@ -1,6 +1,7 @@
 package com.diagbot.repository;
 
 
+import com.diagbot.entity.node.*;
 import com.diagbot.entity.node.base.BaseNode;
 import org.springframework.data.neo4j.annotation.Query;
 import org.springframework.data.neo4j.repository.Neo4jRepository;
@@ -15,6 +16,12 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     @Query("MATCH (n) RETURN DISTINCT(LABELS(n))")
     List<String> getLabels();
 
+    @Query("MATCH (n:实验室检查套餐) RETURN DISTINCT(KEYS(n))")
+    List<List<String>> getLisSetKeys();
+
+    @Query("MATCH (n:实验室检查) RETURN DISTINCT(KEYS(n))")
+    List<List<String>> getLisNameKeys();
+
     @Query("MATCH (c:药品化学物质类别)<-[r:药品相关药品化学物质类别]-(y:药品代码通用名)-[r1:药品相关药品通用名称]->(m:药品通用名称) " +
             " RETURN DISTINCT(m.name)+'::'+c.name")
     List<String> getMedHuaXueClass();
@@ -43,6 +50,25 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
     @Query("match(d:医保疾病名称)-[r:医保疾病名称相关发病率]->(h) return DISTINCT d.name+'&'+h.name")
     List<String> getDisdistributionClass();
 
-    @Query("MATCH (n) WHERE EXISTS(n.拼音编码) AND n.拼音编码={py} RETURN n.name")
-    List<String> getNamebyPinYin(@Param("py") String pycode);
+    @Query("MATCH (n:实验室检查套餐名) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<LisSet> getLisSetbyPinYin(@Param("py") String pycode);
+
+    @Query("MATCH (n:实验室检查名称) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<LisName> getLisbyPinYin(@Param("py") String pycode);
+
+    @Query("MATCH (n:辅助检查名称) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<PacsName> getPacsbyPinYin(@Param("py") String pycode);
+
+    @Query("MATCH (n:医保疾病名称) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<YiBaoDiseaseName> getYiBaoDiseasebyPinYin(@Param("py") String pycode);
+
+    @Query("MATCH (n:医保手术与操作名称) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<YiBaoOperationName> getYiBaoOperationbyPinYin(@Param("py") String pycode);
+
+    @Query("MATCH (n:药品通用名称) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<Medicine> getMedicinebyPinYin(@Param("py") String pycode);
+
+    @Query("MATCH (n:科室) WHERE EXISTS(n.拼音编码) AND n.拼音编码 CONTAINS {py} RETURN n")
+    List<Dept> getDeptbyPinYin(@Param("py") String pycode);
+
 }

+ 3 - 1
src/main/java/com/diagbot/repository/DeptNode.java

@@ -11,11 +11,13 @@ public class DeptNode {
     /**
      * 获取科室名称列表
      */
-    public List<String> getDeptNameList(String name, DeptRepository deptRepository) {
+    public List<String> getDeptNameList(String name, DeptRepository deptRepository, BaseNodeRepository baseNodeRepository) {
 
         List<String> deptlt = new ArrayList<>();
 
         List<Dept> deptlist = deptRepository.findByNameContaining(name);
+        deptlist.addAll(baseNodeRepository.getDeptbyPinYin(name));
+
         if (ListUtil.isNotEmpty(deptlist) && deptlist.size() > 100) {
             deptlist = deptlist.subList(0, 100);
         }

+ 3 - 1
src/main/java/com/diagbot/repository/LisNameNode.java

@@ -173,7 +173,7 @@ public class LisNameNode {
 	/**
 	 * 获取化验细项名称列表
 	 */
-	public List<LisDetailDTO> getLisDetailList(String name, LisNameRepository lisRepository) {
+	public List<LisDetailDTO> getLisDetailList(String name, LisNameRepository lisRepository, BaseNodeRepository baseNodeRepository) {
 		String nodename, unit;
 		Double min, max;
 
@@ -181,6 +181,8 @@ public class LisNameNode {
 		LisDetailDTO lisDetailDTO;
 
 		List<LisName> lislt = lisRepository.findByNameContaining(name);
+		lislt.addAll(baseNodeRepository.getLisbyPinYin(name));
+
 		if (ListUtil.isNotEmpty(lislt) && lislt.size() > 100) {
 			lislt = lislt.subList(0, 100);
 		}

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

@@ -14,9 +14,6 @@ public interface LisNameRepository extends Neo4jRepository<LisName, Long> {
 
     List<LisName> findByNameContaining(String name);
 
-    @Query("MATCH (n:实验室检查) RETURN DISTINCT(KEYS(n))")
-    List<List<String>> getKeys();
-
     List<LisName> findByNameIn(List<String> names);
 
     @Query("MATCH (n:实验室检查名称)-[r]->(b) where n.name contains {name} return n, collect(r), collect(b) limit 100")

+ 2 - 1
src/main/java/com/diagbot/repository/LisSetNode.java

@@ -143,12 +143,13 @@ public class LisSetNode {
 	/**
 	 * 获取化验套餐名称列表
 	 */
-	public List<String> getLISPackNameList(String name, LisSetRepository lisPackRepository) {
+	public List<String> getLISPackNameList(String name, LisSetRepository lisPackRepository, BaseNodeRepository baseNodeRepository) {
 		String nodename;
 
 		List<String> lispacklist = new ArrayList<>();
 
 		List<LisSet> lisSetlist = lisPackRepository.findByNameContaining(name);
+		lisSetlist.addAll(baseNodeRepository.getLisSetbyPinYin(name));
 
 		if (ListUtil.isNotEmpty(lisSetlist) && lisSetlist.size() > 100) {
 			lisSetlist = lisSetlist.subList(0, 100);

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

@@ -13,9 +13,6 @@ public interface LisSetRepository extends Neo4jRepository<LisSet, Long> {
 
     List<LisSet> findByNameContaining(String name);
 
-    @Query("MATCH (n:实验室检查套餐) RETURN DISTINCT(KEYS(n))")
-    List<List<String>> getKeys();
-
     List<LisSet> findByNameIn(List<String> names);
 }
 

+ 2 - 1
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -113,13 +113,14 @@ public class MedicineNode {
     /**
      * 获取药品商品名称列表
      */
-    public List<DrugInfoDTO> getMedicineList(String name, MedicineRepository medicineRepository) {
+    public List<DrugInfoDTO> getMedicineList(String name, MedicineRepository medicineRepository, BaseNodeRepository baseNodeRepository) {
         String nodename;
 
         List<DrugInfoDTO> medslist = new ArrayList<>();
         DrugInfoDTO drugInfoDTO;
 
         List<Medicine> medicines = medicineRepository.findByNameContaining(name);
+        medicines.addAll(baseNodeRepository.getMedicinebyPinYin(name));
 
         if (ListUtil.isNotEmpty(medicines) && medicines.size() > 100) {
             medicines = medicines.subList(0, 100);

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

@@ -14,6 +14,7 @@ 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.node.base.BaseNode;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 
@@ -183,12 +184,14 @@ public class PacsNameNode {
     /**
      * 获取辅检名称列表
      */
-    public List<String> getPACSNameList(String name, PacsNameRepository pacsRepository) {
+    public List<String> getPACSNameList(String name, PacsNameRepository pacsRepository, BaseNodeRepository baseNodeRepository) {
         String pacsname;
 
         List<String> pacslist = new ArrayList<>();
 
         List<PacsName> pacslt = pacsRepository.findByNameContaining(name);
+        pacslt.addAll(baseNodeRepository.getPacsbyPinYin(name));
+
         if (ListUtil.isNotEmpty(pacslt) && pacslt.size() > 100) {
             pacslt = pacslt.subList(0, 100);
         }

+ 3 - 1
src/main/java/com/diagbot/repository/YiBaoDiseaseNode.java

@@ -246,13 +246,15 @@ public class YiBaoDiseaseNode {
 	/**
 	 * 获取疾病名称列表
 	 */
-	public List<DiseaseInfoDTO> getDiseaseNameList(String name, YiBaoDiseaseRepository diseaseRepository) {
+	public List<DiseaseInfoDTO> getDiseaseNameList(String name, YiBaoDiseaseRepository diseaseRepository, BaseNodeRepository baseNodeRepository) {
 		String icdname;
 
 		List<String> dislist = new ArrayList<>();
 		List<DiseaseInfoDTO> diseaseInfoDTOList = new ArrayList<>();
 
 		List<YiBaoDiseaseName> diseases = diseaseRepository.findByNameContaining(name);
+		diseases.addAll(baseNodeRepository.getYiBaoDiseasebyPinYin(name));
+
 		if (ListUtil.isNotEmpty(diseases) && diseases.size() > 100) {
 			diseases = diseases.subList(0, 100);
 		}

+ 3 - 1
src/main/java/com/diagbot/repository/YiBaoOperationNameNode.java

@@ -168,13 +168,15 @@ public class YiBaoOperationNameNode {
     /**
      * 获取手术操作名称列表
      */
-    public List<OperationInfoDTO> getOperationList(String name, YiBaoOperationNameRepository operationRepository) {
+    public List<OperationInfoDTO> getOperationList(String name, YiBaoOperationNameRepository operationRepository, BaseNodeRepository baseNodeRepository) {
         String nodename;
 
         List<OperationInfoDTO> opslist = new ArrayList<>();
         OperationInfoDTO opInfoDTO;
 
         List<YiBaoOperationName> operations = operationRepository.findByNameContaining(name);
+        operations.addAll(baseNodeRepository.getYiBaoOperationbyPinYin(name));
+
         if (ListUtil.isNotEmpty(operations) && operations.size() > 100) {
             operations = operations.subList(0, 100);
         }