浏览代码

更新图谱中的化验套餐的数据结构

MarkHuang 4 年之前
父节点
当前提交
4203cbbf68

+ 71 - 0
src/main/java/com/diagbot/entity/node/LISPack.java

@@ -0,0 +1,71 @@
+package com.diagbot.entity.node;
+
+import com.diagbot.entity.node.base.BaseNode;
+import lombok.Getter;
+import lombok.Setter;
+import org.neo4j.ogm.annotation.NodeEntity;
+import org.neo4j.ogm.annotation.Property;
+import org.neo4j.ogm.annotation.Relationship;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Setter
+@Getter
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "实验室检查套餐")
+public class LISPack extends BaseNode  {
+
+    @Property(name = "最大值")
+    private String maxval;
+
+    @Property(name = "最小值")
+    private String minval;
+
+    @Property(name = "单位")
+    private String unit;
+
+    @Relationship(type="实验室检查套餐禁忌性别", direction = Relationship.OUTGOING)
+    private Gender gender;
+
+    @Relationship(type="实验室检查套餐禁忌年龄", direction = Relationship.OUTGOING)
+    private Age age;
+
+    @Relationship(type="实验室检查套餐禁忌临床表现", direction = Relationship.OUTGOING)
+    private Set<ClinicalFinding> clinicalfindings = new HashSet<>();
+
+    @Relationship(type="实验室检查套餐禁忌服用药品", direction = Relationship.OUTGOING)
+    private Set<Medicine> conflict_medicines = new HashSet<>();
+
+    @Relationship(type="实验室检查套餐禁忌过敏药品", direction = Relationship.OUTGOING)
+    private Set<AllergicMed> allergicmeds = new HashSet<>();
+
+    @Relationship(type="实验室检查套餐禁忌手术和操作", direction = Relationship.OUTGOING)
+    private Set<Operation> operations = new HashSet<>();
+
+    @Relationship(type="实验室检查套餐禁忌操作", direction = Relationship.OUTGOING)
+    private Set<Procedure> procedures = new HashSet<>();
+
+    @Relationship(type="实验室检查套餐禁忌辅助检查", direction = Relationship.OUTGOING)
+    private Set<PACS> pacs = new HashSet<>();
+
+    @Relationship(type="实验室检查套餐禁忌疾病", direction = Relationship.OUTGOING)
+    private Set<Disease> diseases = new HashSet<>();
+
+    @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> medicine_conflict_lis;
+
+    @Relationship(type="辅助检查禁忌实验室检查套餐", direction = Relationship.INCOMING)
+    private Set<PACS> pacs_conflict_lis;
+}
+
+

+ 42 - 16
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -9,23 +9,10 @@ import com.diagbot.dto.LisBillNeoDTO;
 import com.diagbot.dto.PacsBillNeoDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.StandConvertCrfDTO;
-import com.diagbot.entity.node.Disease;
-import com.diagbot.entity.node.LIS;
-import com.diagbot.entity.node.Medicine;
-import com.diagbot.entity.node.Medicine_Code;
-import com.diagbot.entity.node.OralMedicine;
-import com.diagbot.entity.node.PACS;
+import com.diagbot.entity.node.*;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.model.ai.ModelAI;
-import com.diagbot.repository.DiseaseNode;
-import com.diagbot.repository.DiseaseRepository;
-import com.diagbot.repository.LISNode;
-import com.diagbot.repository.LisRepository;
-import com.diagbot.repository.MedicineCodeRepository;
-import com.diagbot.repository.MedicineNode;
-import com.diagbot.repository.MedicineRepository;
-import com.diagbot.repository.PACSNode;
-import com.diagbot.repository.PacsRepository;
+import com.diagbot.repository.*;
 import com.diagbot.util.ListUtil;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.PushNeoVO;
@@ -58,6 +45,8 @@ public class NeoFacade {
     @Autowired
     LisRepository lisRepository;
     @Autowired
+    LisPackRepository lisPackRepository;
+    @Autowired
     DiseaseRepository diseaseRepository;
     @Autowired
     MedicineCodeRepository medicineCodeRepository;
@@ -140,6 +129,7 @@ public class NeoFacade {
 
         billNeoDTOs.addAll(getDrugBill(billNeoVO.getDrugList()));
         billNeoDTOs.addAll(getPacsBill(billNeoVO.getPacsList()));
+        billNeoDTOs.addAll(getLisDetailBill(billNeoVO.getLisDetailList()));
         billNeoDTOs.addAll(getLisBill(billNeoVO.getLisList()));
 
         for (BillNeoDTO billNeoDTO:billNeoDTOs) {
@@ -223,10 +213,46 @@ public class NeoFacade {
     }
 
 
+    /**
+     * 处理化验套餐开单合理性
+     */
+    public List<BillNeoDTO> getLisBill(Map<String, String> lispackterm) {
+        List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
+        BillNeoDTO billNeoDTO;
+
+        LisBillNeoDTO lisBillNeoDTO;
+
+        LISPackNode lisPackNode = new LISPackNode();
+        LISPack lispack;
+        String lispackname;
+
+        for (String term : lispackterm.keySet()) {
+            billNeoDTO = new BillNeoDTO();
+            lispackname = lispackterm.get(term);
+            billNeoDTO.setName(term);
+            billNeoDTO.setStandname(lispackname);
+
+            lisBillNeoDTO = new LisBillNeoDTO();
+
+            lispack = lisPackRepository.findByNameIs(lispackname);
+
+            if (lispack != null) {
+                lisBillNeoDTO = lisPackNode.LisPacktoLISDTO(lispack);
+            }
+
+            billNeoDTO.setLisBillNeoDTO(lisBillNeoDTO);
+
+            billNeoDTOs.add(billNeoDTO);
+        }
+
+        return billNeoDTOs;
+    }
+
+
     /**
      * 处理化验开单合理性
      */
-    public List<BillNeoDTO> getLisBill(Map<String, String> listerm) {
+    public List<BillNeoDTO> getLisDetailBill(Map<String, String> listerm) {
         List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
         BillNeoDTO billNeoDTO;
 

+ 93 - 0
src/main/java/com/diagbot/repository/LISPackNode.java

@@ -0,0 +1,93 @@
+package com.diagbot.repository;
+
+import com.diagbot.dto.LisBillNeoDTO;
+import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.entity.node.*;
+import com.diagbot.util.NeoUtil;
+
+import java.math.BigDecimal;
+import java.util.Set;
+
+public class LISPackNode {
+
+	public LisBillNeoDTO LisPacktoLISDTO(LISPack lispack) {
+
+		LisBillNeoDTO lisBillNeoDTO = new LisBillNeoDTO();
+
+		Gender gender = lispack.getGender();
+		if (null!=gender) {
+			lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(gender.getName(), null, null, null));
+		}
+
+
+		Age age = lispack.getAge();
+		if (null!=age) {
+			NodeNeoDTO ageNeoDTO = new NodeNeoDTO();
+			ageNeoDTO.setMin(BigDecimal.valueOf(age.getMinval()));
+			ageNeoDTO.setMax(BigDecimal.valueOf(age.getMaxval()));
+			ageNeoDTO.setName("年龄");
+			lisBillNeoDTO.setAgeNeoDTO(ageNeoDTO);
+		}
+
+		Set<ClinicalFinding> clinicalfindings = lispack.getClinicalfindings();
+		for (ClinicalFinding clinicalfinding : clinicalfindings) {
+			String name = clinicalfinding.getName();
+			String min = clinicalfinding.getMinval();
+			String max = clinicalfinding.getMaxval();
+			String unit = clinicalfinding.getUnit();
+			lisBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(name, min, max, unit));
+		}
+
+		Set<Medicine> conflict_medicines = lispack.getConflict_medicines();
+		for (Medicine conflict_medicine : conflict_medicines) {
+			String name = conflict_medicine.getName();
+			lisBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(name, null, null, null));
+		}
+
+		Set<AllergicMed> allergicmeds = lispack.getAllergicmeds();
+		for (AllergicMed allergicmed : allergicmeds) {
+			String name = allergicmed.getName();
+			lisBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(name, null, null, null));
+		}
+
+		Set<Operation> operations = lispack.getOperations();
+		for (Operation operation : operations) {
+			String name = operation.getName();
+			lisBillNeoDTO.getOperations().add(NeoUtil.updateNodeInfo(name, null, null, null));
+		}
+
+		Set<Procedure> procedures = lispack.getProcedures();
+		for (Procedure procedure : procedures) {
+			String name = procedure.getName();
+			lisBillNeoDTO.getProcedures().add(NeoUtil.updateNodeInfo(name, null, null, null));
+		}
+
+		Set<PACS> pacss = lispack.getPacs();
+		for (PACS pacs : pacss) {
+			String name = pacs.getName();
+			String min = pacs.getMinval();
+			String max = pacs.getMaxval();
+			String unit = pacs.getUnit();
+			lisBillNeoDTO.getPacs().add(NeoUtil.updateNodeInfo(name, min, max, unit));
+		}
+
+		Set<Disease> diseases = lispack.getDiseases();
+		for (Disease disease : diseases) {
+			String name = disease.getName();
+			lisBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(name, null, null, null));
+		}
+
+		Set<Group> groups = lispack.getGroups();
+		for (Group group : groups) {
+			String name = group.getName();
+			lisBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(name, null, null, null));
+		}
+
+
+		return lisBillNeoDTO;
+	}
+
+
+	
+}
+

+ 12 - 0
src/main/java/com/diagbot/repository/LisPackRepository.java

@@ -0,0 +1,12 @@
+package com.diagbot.repository;
+
+import com.diagbot.entity.node.LIS;
+import com.diagbot.entity.node.LISPack;
+import org.springframework.data.neo4j.repository.Neo4jRepository;
+
+
+public interface LisPackRepository extends Neo4jRepository<LISPack, Long> {
+
+    LISPack findByNameIs(String name);
+}
+