Explorar el Código

从图谱添加药品缓存

MarkHuang hace 4 años
padre
commit
8b1c25a212

+ 3 - 3
src/main/java/com/diagbot/entity/node/Disease.java

@@ -107,13 +107,13 @@ public class Disease extends BaseNode  {
     private Medicine_Code medicine_code;
 
     @Relationship(type="药品通用名禁忌疾病", direction = Relationship.INCOMING)
-    private Set<Medicine> medicine_diseases;
+    private Set<Medicine> medicine_conflict_diseases;
 
     @Relationship(type="辅助检查禁忌疾病", direction = Relationship.INCOMING)
-    private Set<PACS> pacs_disease;
+    private Set<PACS> pacs_conflict_diseases;
 
     @Relationship(type="实验室检查禁忌疾病", direction = Relationship.INCOMING)
-    private Set<Disease> lis_diseases;
+    private Set<Disease> lis_conflict_diseases;
 }
 
 

+ 8 - 8
src/main/java/com/diagbot/entity/node/LIS.java

@@ -29,12 +29,6 @@ public class LIS extends BaseNode  {
     @Property(name = "单位")
     private String unit;
 
-    @Relationship(type="疾病相关化验", direction = Relationship.INCOMING)
-    private Set<Disease> lis_diseases;
-
-    @Relationship(type="疾病相关实验室检查", direction = Relationship.INCOMING)
-    private Set<Disease> lis_dis;
-
     @Relationship(type="实验室检查禁忌性别", direction = Relationship.OUTGOING)
     private Gender gender;
 
@@ -65,11 +59,17 @@ public class LIS extends BaseNode  {
     @Relationship(type="实验室检查禁忌人群", direction = Relationship.OUTGOING)
     private Set<Group> groups = new HashSet<>();
 
+    @Relationship(type="疾病相关化验", direction = Relationship.INCOMING)
+    private Set<Disease> disease_related_inspect;
+
+    @Relationship(type="疾病相关实验室检查", direction = Relationship.INCOMING)
+    private Set<Disease> disease_related_lis;
+
     @Relationship(type="药品通用名禁忌实验室检查", direction = Relationship.INCOMING)
-    private Set<Medicine> in_medicine;
+    private Set<Medicine> medicine_conflict_lis;
 
     @Relationship(type="辅助检查禁忌实验室检查", direction = Relationship.INCOMING)
-    private Set<PACS> in_pacs;
+    private Set<PACS> pacs_conflict_lis;
 }
 
 

+ 5 - 5
src/main/java/com/diagbot/entity/node/Medicine.java

@@ -18,9 +18,6 @@ import java.util.Set;
 @NodeEntity(label = "药品通用名")
 public class Medicine extends BaseNode implements Serializable {
 
-    @Relationship(type="疾病相关药品", direction = Relationship.INCOMING)
-    private Set<Disease> med_diseases;
-
     @Relationship(type = "药品通用名禁忌性别", direction = Relationship.OUTGOING)
     private Gender gender;
 
@@ -54,11 +51,14 @@ public class Medicine extends BaseNode implements Serializable {
     @Relationship(type = "药品通用名禁忌配伍", direction = Relationship.OUTGOING)
     private Set<ConflictMed> conflictmeds = new HashSet<>();
 
+    @Relationship(type="疾病相关药品", direction = Relationship.INCOMING)
+    private Set<Disease> disease_related_meds;
+
     @Relationship(type="辅助检查禁忌服用药品", direction = Relationship.INCOMING)
-    private Set<PACS> in_pacs;
+    private Set<PACS> pacs_conflict_medicine;
 
     @Relationship(type="实验室检查禁忌服用药品", direction = Relationship.INCOMING)
-    private Set<Medicine> in_medicine;
+    private Set<Medicine> lis_conflict_medicine;
 
 }
 

+ 5 - 1
src/main/java/com/diagbot/entity/node/Medicine_Code.java

@@ -14,6 +14,10 @@ import java.util.Set;
 @NodeEntity(label = "药品名及编码")
 public class Medicine_Code extends BaseNode  {
 
+    @Relationship(type="药品相关化学物质类别", direction = Relationship.OUTGOING)
+    private Set<OralMedicine> medicine_related_chem;
+
     @Relationship(type="疾病相关药品名及编码", direction = Relationship.INCOMING)
-    private Set<Disease> diseases;
+    private Set<Disease> disease_related_medicode;
+
 }

+ 34 - 0
src/main/java/com/diagbot/entity/node/OralMedicine.java

@@ -0,0 +1,34 @@
+package com.diagbot.entity.node;
+
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+@Setter
+@Getter
+@EqualsAndHashCode(callSuper = true)
+@NodeEntity(label = "服用药品")
+public class OralMedicine extends BaseNode implements Serializable {
+
+    @Relationship(type="疾病相关药品", direction = Relationship.INCOMING)
+    private Set<Disease> disease_related_meds;
+
+    @Relationship(type="药品相关化学物质类别", direction = Relationship.INCOMING)
+    private Set<Disease> medicine_related_chem;
+
+    @Relationship(type="辅助检查禁忌服用药品", direction = Relationship.INCOMING)
+    private Set<PACS> pacs_conflict_medicine;
+
+    @Relationship(type="实验室检查禁忌服用药品", direction = Relationship.INCOMING)
+    private Set<OralMedicine> lis_conflict_medicine;
+
+}
+
+

+ 5 - 5
src/main/java/com/diagbot/entity/node/PACS.java

@@ -29,9 +29,6 @@ public class PACS extends BaseNode  {
     @Property(name = "单位")
     private String unit;
 
-    @Relationship(type="疾病相关辅助检查", direction = Relationship.INCOMING)
-    private Set<Disease> pacs_diseases;
-
     @Relationship(type = "辅助检查禁忌性别", direction = Relationship.OUTGOING)
     private Gender gender;
 
@@ -62,11 +59,14 @@ public class PACS extends BaseNode  {
     @Relationship(type="辅助检查禁忌人群", direction = Relationship.OUTGOING)
     private Set<Group> groups = new HashSet<>();
 
+    @Relationship(type="疾病相关辅助检查", direction = Relationship.INCOMING)
+    private Set<Disease> disease_related_pacs;
+
     @Relationship(type="药品通用名禁忌辅助检查", direction = Relationship.INCOMING)
-    private Set<Medicine> in_medicines = new HashSet<>();
+    private Set<Medicine> medicine_conflict_pacs = new HashSet<>();
 
     @Relationship(type="实验室检查禁忌辅助检查", direction = Relationship.INCOMING)
-    private Set<LIS> in_lis;
+    private Set<LIS> lis_conflict_pacs;
 }
 
 

+ 27 - 17
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -5,18 +5,8 @@ import com.diagbot.dto.DrugBillNeoDTO;
 import com.diagbot.dto.LisBillNeoDTO;
 import com.diagbot.dto.PacsBillNeoDTO;
 import com.diagbot.dto.PushDTO;
-import com.diagbot.entity.node.Disease;
-import com.diagbot.entity.node.LIS;
-import com.diagbot.entity.node.Medicine;
-import com.diagbot.entity.node.PACS;
-import com.diagbot.repository.DiseaseNode;
-import com.diagbot.repository.DiseaseRepository;
-import com.diagbot.repository.LISNode;
-import com.diagbot.repository.LisRepository;
-import com.diagbot.repository.MedicineNode;
-import com.diagbot.repository.MedicineRepository;
-import com.diagbot.repository.PACSNode;
-import com.diagbot.repository.PacsRepository;
+import com.diagbot.entity.node.*;
+import com.diagbot.repository.*;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.PushNeoVO;
 import com.diagbot.vo.StandConvert;
@@ -24,11 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description: 图谱facade
@@ -46,6 +32,8 @@ public class NeoFacade {
     LisRepository lisRepository;
     @Autowired
     DiseaseRepository diseaseRepository;
+    @Autowired
+    MedicineCodeRepository medicineCodeRepository;
 
 
     /**
@@ -56,8 +44,30 @@ public class NeoFacade {
     @Cacheable(value = "cache", key = "'drugCache'")
     public Map<String, List<String>> getDrugCache() {
         Map<String, List<String>> res = new HashMap<>();
+
+        Iterator<Medicine_Code> iterator = medicineCodeRepository.findAll().iterator();
+        Medicine_Code current;
+        String med_code, med_type;
+        List<OralMedicine> sets;
+
+        while (iterator.hasNext()) {
+            current = iterator.next();
+            if (current.getMedicine_related_chem().size()>0) {
+                sets = new ArrayList<>(current.getMedicine_related_chem());
+                med_code = current.getName();
+                med_type = sets.get(0).getName();
+                if (res.get(med_type)==null) {
+                    res.put(med_type, new ArrayList<>());
+                }
+                if (res.get(med_type).indexOf(med_code)==-1) {
+                    res.get(med_type).add(med_code);
+                }
+            }
+        }
+
         res.put("泰舒达类", Arrays.asList("泰舒达"));
         res.put("青霉素类", Arrays.asList("青霉素"));
+
         return res;
     }
 

+ 7 - 4
src/main/java/com/diagbot/repository/DiseaseNode.java

@@ -5,7 +5,7 @@ import com.diagbot.entity.node.*;
 import com.diagbot.util.NeoUtil;
 
 import java.math.BigDecimal;
-import java.util.Set;
+import java.util.*;
 
 public class DiseaseNode {
 
@@ -96,13 +96,16 @@ public class DiseaseNode {
 		for (Cause cause : causes) {
 			NeoUtil.updateNodeInfo(cause.getName(), null, null, null);
 		}
-
+		*/
 
 		Set<Disease> diff_diseases = disease.getDiff_diseases();
+		List<PushBaseDTO> pushBaseDTOs = new ArrayList<>();
 		for (Disease diff_disease : diff_diseases) {
-			pushDTO.getDiff_disease().add(NeoUtil.updatePushInfo(diff_disease.getName()));
+			pushBaseDTOs.add(NeoUtil.updatePushInfo(diff_disease.getName()));
 		}
-		*/
+		Map<String, List<PushBaseDTO>> dis = new HashMap<>();
+		dis.put("鉴别诊断", pushBaseDTOs);
+		pushDTO.setDis(dis);
 
 		Set<Operation> operations = disease.getOperations();
 		for (Operation operation : operations) {

+ 10 - 0
src/main/java/com/diagbot/repository/MedicineCodeRepository.java

@@ -0,0 +1,10 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.Medicine_Code;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+
+public interface MedicineCodeRepository extends Neo4jRepository<Medicine_Code, Long> {
+
+}
+