Browse Source

更新高危药品查询逻辑

MarkHuang 4 years ago
parent
commit
763287d2cb

+ 21 - 23
src/main/java/com/diagbot/repository/MedRegNameNode.java

@@ -48,6 +48,8 @@ public class MedRegNameNode {
         List<MedCodeName> medcdnames;
         MedRegName medreg;
 
+        Long t1 = System.currentTimeMillis();
+
         for (Drug drug : druglist) {
             highRiskNeoDTO = new HighRiskNeoDTO();
 
@@ -60,33 +62,26 @@ public class MedRegNameNode {
 
             if (null != medicine) {
                 for (Medicine med : medicine) {
-                    for (MedCodeNameMedicine medCodeMed : med.getMedcodenameMedicines()) {
-                        if (NeoUtil.isExist(medCodeMed)) {
-                            MedCodeName medcdname = medCodeMed.getMedCodeName();
-                            if (NeoUtil.isExist(medcdname) && medcdname.getReg_JiXin().equals(drugform)) {
-                                medcdnames = medCodeRepository.findByNameIs(medcdname.getName());
-                                for (MedCodeName medcdnm : medcdnames) {
-                                    for (MedCodeNameMedRegName medCodeMedReg : medcdnm.getMedCodeNameMedregnames()) {
-                                        if (NeoUtil.isExist(medCodeMedReg)) {
-                                            medreg = medCodeMedReg.getMedRegName();
-                                            if (NeoUtil.isExist(medreg) && null != medreg.getRisklevel() && medreg.getRisklevel().trim().length() > 0) {
-                                                highRiskNeoDTO.setIsHighrisk(true);
-                                                highRiskNeoDTO.setHighLevel(medreg.getRisklevel());
-                                                highRiskNeoDTO.setType(Constants.yaoping);
-                                                highRiskNeoDTO.setForm(drugform);
-                                                highRiskNeoDTOS.add(highRiskNeoDTO);
-                                                break;
-                                            }
-                                        }
+                    List<MedCodeName> MedCodeNames = medRepository.findMedCodeNamebyDosage(med.getName(), drugform);
+                        for (MedCodeName medcdnm : MedCodeNames) {
+                            for (MedCodeNameMedRegName medCodeMedReg : medcdnm.getMedCodeNameMedregnames()) {
+                                if (NeoUtil.isExist(medCodeMedReg)) {
+                                    medreg = medCodeMedReg.getMedRegName();
+                                    if (NeoUtil.isExist(medreg) && null != medreg.getRisklevel() && medreg.getRisklevel().trim().length() > 0) {
+                                        highRiskNeoDTO.setIsHighrisk(true);
+                                        highRiskNeoDTO.setHighLevel(medreg.getRisklevel());
+                                        highRiskNeoDTO.setType(Constants.yaoping);
+                                        highRiskNeoDTO.setForm(drugform);
+                                        highRiskNeoDTOS.add(highRiskNeoDTO);
+                                        break;
                                     }
                                 }
-
-                                if (highRiskNeoDTO.getType() != null) {
-                                    break;
-                                }
                             }
                         }
-                    }
+
+                        if (highRiskNeoDTO.getType() != null) {
+                            break;
+                        }
 
                     if (highRiskNeoDTO.getType() != null) {
                         break;
@@ -95,6 +90,9 @@ public class MedRegNameNode {
                 }
             }
         }
+        Long t2 = System.currentTimeMillis();
+
+        System.out.println((t2-t1)/1000.0);
 
         return highRiskNeoDTOS;
     }

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

@@ -1,5 +1,6 @@
 package com.diagbot.repository;
 
+import com.diagbot.entity.node.MedCodeName;
 import com.diagbot.entity.node.Medicine;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -25,6 +26,9 @@ public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
 
     Page<Medicine> findByNameContainingIgnoreCaseOrPycodeContainingIgnoreCase(String name, String pycode, Pageable pageable);
 
+    @Query("match (n:药品通用名称)<-[r]-(m:药品代码通用名) where n.name={name} and m.注册剂型={dosage} return m")
+    List<MedCodeName> findMedCodeNamebyDosage(@Param("name") String name, @Param("dosage") String dosage);
+
     @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" +