Jelajahi Sumber

Merge remote-tracking branch 'origin/master'

gaodm 4 tahun lalu
induk
melakukan
0114b6884c

+ 14 - 0
src/main/java/com/diagbot/dto/AgeNeoDTO.java

@@ -0,0 +1,14 @@
+package com.diagbot.dto;
+
+
+import lombok.Data;
+
+@Data
+public class AgeNeoDTO {
+
+    // 年龄最小值
+    private Integer minage;
+
+    // 年龄最大值
+    private Integer maxage;
+}

+ 7 - 0
src/main/java/com/diagbot/dto/BillMsg.java

@@ -11,4 +11,11 @@ import lombok.Data;
 public class BillMsg {
 
     private String msg;
+
+    public BillMsg() {
+    }
+
+    public BillMsg(String msg) {
+        this.msg = msg;
+    }
 }

+ 3 - 0
src/main/java/com/diagbot/dto/BillNeoDTO.java

@@ -12,6 +12,9 @@ import java.util.List;
 @Data
 public class BillNeoDTO {
 
+    // 开单项目名称
+    String name;
+
     // 化验开单合理性项目
     List<LisBillNeoDTO> lisBillNeoDTOList;
 

+ 2 - 5
src/main/java/com/diagbot/dto/DrugBillNeoDTO.java

@@ -15,11 +15,8 @@ public class DrugBillNeoDTO {
     // 禁忌性别
     private String gender;
 
-    // 年龄最小值
-    private Integer minage;
-
-    // 年龄最大值
-    private Integer maxage;
+    // 禁忌年龄
+    private AgeNeoDTO ageNeoDTO;
 
     // 临床表现
     private List<String> clinicfindings = new ArrayList<>();

+ 0 - 51
src/main/java/com/diagbot/dto/PacsBillDTO.java

@@ -1,51 +0,0 @@
-package com.diagbot.dto;
-
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-
-import java.util.List;
-
-/**
- * @description: 辅检开单合理性项目
- * @author: Mark
- * @time: 2020/7/29 9:57
- */
-@Data
-@Setter
-@Getter
-public class PacsBillDTO {
-    // 禁忌性别
-    private String gender;
-
-    // 年龄最小值
-    private int minage;
-
-    // 年龄最大值
-    private int maxage;
-
-    // 临床表现
-    private List<String> clinicfindings;
-
-    // 服用药品
-    private List<String> prescribe;
-
-    // 禁忌过敏药品
-    private List<String> allergmeds;
-
-    // 禁忌手术
-    private List<String> operations;
-
-    // 禁忌操作
-    private List<String> procedures;
-
-    // 禁忌辅助检查
-    private List<String> PACS;
-
-    // 禁忌疾病
-    private List<String> disease;
-
-    // 禁用人群
-    private List<String> group;
-
-}

+ 5 - 0
src/main/java/com/diagbot/dto/WordCrfDTO.java

@@ -12,6 +12,11 @@ import lombok.Data;
  */
 @Data
 public class WordCrfDTO {
+
+    // 年龄
+    private Integer age;
+    // 性别(1:男,2:女)
+    private Integer sex;
     // 主诉
     private ChiefLabel chiefLabel;
     // 现病史

+ 26 - 0
src/main/java/com/diagbot/entity/node/Age.java

@@ -0,0 +1,26 @@
+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.Set;
+
+@Setter
+@Getter
+//@EqualsAndHashCode(callSuper = false)
+@NodeEntity(label = "年龄")
+public class Age extends BaseNode  {
+
+    @Property(name = "最大值")
+    private Integer maxval;
+
+    @Property(name = "最小值")
+    private Integer minval;
+
+    @Relationship(type="药品通用名禁忌年龄", direction = Relationship.INCOMING)
+    private Set<Medicine> medicines;
+}

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

@@ -18,11 +18,8 @@ import java.util.Set;
 @NodeEntity(label = "药品通用名")
 public class Medicine extends BaseNode implements Serializable {
 
-    @Relationship(type = "药品通用名禁忌年龄最小值", direction = Relationship.OUTGOING)
-    private AgeMin ageMin;
-
-    @Relationship(type = "药品通用名禁忌年龄最大值", direction = Relationship.OUTGOING)
-    private AgeMax agemax;
+    @Relationship(type = "药品通用名禁忌年龄", direction = Relationship.OUTGOING)
+    private Age age;
 
     @Relationship(type = "药品通用名禁忌性别", direction = Relationship.OUTGOING)
     private Gender gender;

+ 6 - 3
src/main/java/com/diagbot/facade/BillFacade.java

@@ -1,6 +1,5 @@
 package com.diagbot.facade;
 
-import com.diagbot.biz.push.entity.Item;
 import com.diagbot.dto.BillDTO;
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
@@ -11,7 +10,10 @@ import com.diagbot.vo.StandConvert;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import com.diagbot.biz.push.entity.Item;
+
 import java.util.List;
+
 import java.util.Map;
 
 /**
@@ -45,12 +47,13 @@ public class BillFacade {
 
         // 开单合理性图谱接口调用
         BillNeoVO billNeoVO = fillBillNeo(indicationPushVO);
-        BillNeoDTO billNeoDTO = neoFacade.getBillNeo(billNeoVO);
+
+        List<BillNeoDTO> billNeoDTOList = neoFacade.getBillNeo(billNeoVO);
 
         // neoFacade.getDrugCache();
 
         // 规则开发 TODO
-        return billRuleFacade.process(billNeoDTO, wordCrfDTO);
+       return billRuleFacade.process(billNeoDTOList, wordCrfDTO);
     }
 
 

+ 3 - 0
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -29,8 +29,11 @@ public class CommonFacade {
 
     //组装好的label
     public WordCrfDTO crf_process(SearchData searchData){
+
         AIAnalyze aiAnalyze = new AIAnalyze(crfServiceClient);
         WordCrfDTO wordCrfDTO = new WordCrfDTO();
+        wordCrfDTO.setAge(searchData.getAge());
+        wordCrfDTO.setSex(searchData.getSex());
         aiAnalyze.aiProcess(searchData, wordCrfDTO);
         return wordCrfDTO;
     }

+ 15 - 13
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -47,13 +47,17 @@ public class NeoFacade {
      * @param billNeoVO
      * @return
      */
-    public BillNeoDTO getBillNeo(BillNeoVO billNeoVO) {
+    public List<BillNeoDTO> getBillNeo(BillNeoVO billNeoVO) {
 
-        BillNeoDTO billNeoDTO = new BillNeoDTO();
+        List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
 
-        billNeoDTO.setDrugBillNeoDTOList(getDrugBill(billNeoVO.getDrugList()));
+        for (String medname : billNeoVO.getDrugList()) {
+            BillNeoDTO billNeoDTO = new BillNeoDTO();
+            billNeoDTO.setName(medname);
+            billNeoDTO.setDrugBillNeoDTOList(getDrugBill(medname));
+        }
 
-        return billNeoDTO;
+        return billNeoDTOs;
     }
 
 
@@ -61,23 +65,21 @@ public class NeoFacade {
     /**
      * 处理处方开单合理性
      */
-    public List<DrugBillNeoDTO> getDrugBill(List<String> meds) {
+    public List<DrugBillNeoDTO> getDrugBill(String medname) {
         List<DrugBillNeoDTO> drugBillNeoDTOS = new ArrayList<>();
         DrugBillNeoDTO drugBillNeoDTO;
 
         MedicineNode medicineNode = new MedicineNode();
         Medicine medicine;
 
-        for (String medname : meds) {
-            medicine = medicineRepository.findByNameIs(medname);
+        medicine = medicineRepository.findByNameIs(medname);
 
-            if (medicine!=null) {
-//                System.out.println(medicine.toString());
-                drugBillNeoDTO = medicineNode.MedicinetoDrugDTO(medicine);
-                drugBillNeoDTOS.add(drugBillNeoDTO);
-            }
-            break;
+        if (medicine!=null) {
+            drugBillNeoDTO = medicineNode.MedicinetoDrugDTO(medicine);
+            System.out.println(drugBillNeoDTO);
+            drugBillNeoDTOS.add(drugBillNeoDTO);
         }
+
         return drugBillNeoDTOS;
     }
 

+ 1 - 1
src/main/java/com/diagbot/facade/PushFacade.java

@@ -47,7 +47,7 @@ public class PushFacade {
         // 图谱接口调用
         BillNeoVO billNeoVO = fillBillNeo(indicationPushVO);
 
-        BillNeoDTO billNeoDTO = neoFacade.getBillNeo(billNeoVO);
+        List<BillNeoDTO> billNeoDTOs = neoFacade.getBillNeo(billNeoVO);
 
         // 规则开发 TODO
         neoFacade.getDrugCache();

+ 41 - 10
src/main/java/com/diagbot/facade/rule/BillRuleFacade.java

@@ -1,13 +1,13 @@
 package com.diagbot.facade.rule;
 
 import com.diagbot.dto.BillDTO;
+import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.DrugBillNeoDTO;
-import com.diagbot.dto.LisBillNeoDTO;
-import com.diagbot.dto.PacsBillNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -18,27 +18,58 @@ import java.util.List;
 @Component
 public class BillRuleFacade {
 
-    public BillDTO process(BillNeoDTO billNeoDTO, WordCrfDTO wordCrfDTO) {
+    public BillDTO process(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO) {
         BillDTO billDTO = new BillDTO();
         // 化验规则处理
-        processBillWithLis(billNeoDTO.getLisBillNeoDTOList(), wordCrfDTO, billDTO);
+        processBillWithLis(billNeoDTOList, wordCrfDTO, billDTO);
         // 辅检规则处理
-        processBillWithPacs(billNeoDTO.getPacsBillNeoDTOList(), wordCrfDTO, billDTO);
+        processBillWithPacs(billNeoDTOList, wordCrfDTO, billDTO);
         // 药品规则处理
-        processBillWithDrug(billNeoDTO.getDrugBillNeoDTOList(), wordCrfDTO, billDTO);
+        processBillWithDrug(billNeoDTOList, wordCrfDTO, billDTO);
         return billDTO;
     }
 
-    public void processBillWithLis(List<LisBillNeoDTO> lisBillNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
+    /**
+     * 化验规则处理
+     *
+     * @param billNeoDTOList
+     * @param wordCrfDTO
+     * @param billDTO
+     */
+    public void processBillWithLis(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
 
     }
 
-    public void processBillWithPacs(List<PacsBillNeoDTO> pacsBillNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
+    /**
+     * 辅检规则处理
+     *
+     * @param billNeoDTOList
+     * @param wordCrfDTO
+     * @param billDTO
+     */
+    public void processBillWithPacs(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
 
     }
 
-    public void processBillWithDrug(List<DrugBillNeoDTO> drugBillNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
-
+    /**
+     * 药品规则处理
+     *
+     * @param billNeoDTOList
+     * @param wordCrfDTO
+     * @param billDTO
+     */
+    public void processBillWithDrug(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
+        for (BillNeoDTO bill : billNeoDTOList) {
+            List<DrugBillNeoDTO> drugBillNeoDTOList = bill.getDrugBillNeoDTOList();
+            List<BillMsg> drugBill = new ArrayList<>();
+            for (DrugBillNeoDTO drug : drugBillNeoDTOList) {
+                // 性别
+                BillMsg billMsg = RuleUtil.compareSexWithBill(drug.getGender(), wordCrfDTO, bill.getName());
+                if (billMsg != null) {
+                    drugBill.add(billMsg);
+                }
+            }
+        }
     }
 
 }

+ 27 - 0
src/main/java/com/diagbot/facade/rule/RuleUtil.java

@@ -1,5 +1,9 @@
 package com.diagbot.facade.rule;
 
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.util.StringUtil;
+
 /**
  * @description:
  * @author: zhoutg
@@ -7,4 +11,27 @@ package com.diagbot.facade.rule;
  */
 public class RuleUtil {
 
+    /**
+     * 比较性别
+     *
+     * @param sex
+     * @param wordCrfDTO
+     * @return
+     */
+    public static BillMsg compareSexWithBill(String sex, WordCrfDTO wordCrfDTO, String name) {
+        if (StringUtil.isNotBlank(sex) && wordCrfDTO.getSex() != null) {
+            String crfSex = "";
+            if (1 == wordCrfDTO.getSex()) {
+                crfSex = "男";
+            } else if (2 == wordCrfDTO.getSex()) {
+                crfSex = "女";
+            }
+            if (sex.equals(crfSex)) {
+                BillMsg billMsg = new BillMsg();
+                billMsg.setMsg(name + "(" + sex + ")");
+                return billMsg;
+            }
+        }
+        return null;
+    }
 }

+ 8 - 11
src/main/java/com/diagbot/repository/MedicineNode.java

@@ -1,5 +1,6 @@
 package com.diagbot.repository;
 
+import com.diagbot.dto.AgeNeoDTO;
 import com.diagbot.dto.DrugBillNeoDTO;
 import com.diagbot.entity.node.*;
 
@@ -12,17 +13,13 @@ public class MedicineNode {
     public DrugBillNeoDTO MedicinetoDrugDTO(Medicine medicine) {
         DrugBillNeoDTO drugBillNeoDTO = new DrugBillNeoDTO();
 
-
-        AgeMin ageMin = medicine.getAgeMin();
-        String ageMin_val = (ageMin==null)?"":ageMin.getName();
-        ageMin_val = ageMin_val.replace(age_ch, "").trim();
-        drugBillNeoDTO.setMinage(Integer.parseInt(ageMin_val));
-
-
-        AgeMax ageMax = medicine.getAgemax();
-        String ageMax_val = (ageMax==null)?"":ageMax.getName();
-        ageMax_val = ageMax_val.replace(age_ch, "").trim();
-        drugBillNeoDTO.setMaxage(Integer.parseInt(ageMax_val));
+        Age age = medicine.getAge();
+        if (age!=null) {
+            AgeNeoDTO ageNeoDTO = new AgeNeoDTO();
+            ageNeoDTO.setMinage(age.getMinval());
+            ageNeoDTO.setMaxage(age.getMaxval());
+            drugBillNeoDTO.setAgeNeoDTO(ageNeoDTO);
+        }
 
 
         Gender gender = medicine.getGender();