Przeglądaj źródła

新添术语名称查询接口

MarkHuang 4 lat temu
rodzic
commit
390902c817

+ 150 - 0
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -110,6 +110,50 @@ 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;
+
+        }
+
+        return retrievalDTO;
+    }
+
+
     /*
      * 获取化验套餐名称列表
      */
@@ -216,6 +260,112 @@ 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;
+    }
+
+
     /**
      * 医学知识(静态信息)检索
      *

+ 15 - 0
src/main/java/com/diagbot/repository/DeptNode.java

@@ -28,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 = 10000;
+        }
+
+        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);
 }

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

@@ -248,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;
+	}
+
+
 	/**
 	 * 获取化验细项危急值
 	 */

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

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

@@ -185,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);
 }
 

+ 25 - 0
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -170,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);
 }

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

@@ -253,6 +253,7 @@ public class PacsNameNode {
         return pacslist;
     }
 
+
     /**
      * 获取辅检名称列表
      */
@@ -272,6 +273,22 @@ public class PacsNameNode {
 
         return pacslist;
     }
+
+
+    /**
+     * 获取辅检及子项目名称列表
+     */
+    public List<String> getPACSNameAndPACSSubNames(String name, Integer size, PacsNameRepository pacsRepository) {
+
+        List<String> pacslist;
+        if (null == size || size == 0) {
+            size = 10000;
+        }
+
+        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);
 }

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

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

+ 33 - 8
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()));
 
 
 
@@ -311,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 = 10000;
+		}
+
+		List<String> diseases = diseaseRepository.getDiseaseNames(size);
+
+		for (String disease : diseases) {
+			diseaseInfoDTO = new DiseaseInfoDTO();
+			diseaseInfoDTO.setName(disease);
+			diseaselist.add(diseaseInfoDTO);
+		}
+
+		return diseaselist;
+	}
+
 }
 

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

@@ -290,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 = 10000;
+        }
+
+        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);
 }

+ 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-症状 <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>")