浏览代码

规则匹配

zhoutg 4 年之前
父节点
当前提交
4d69206511

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

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

+ 3 - 6
src/main/java/com/diagbot/dto/WordCrfDTO.java

@@ -12,13 +12,10 @@ import lombok.Data;
  */
 @Data
 public class WordCrfDTO {
-    /**
-     * 年龄
-     */
+
+    // 年龄
     private Integer age;
-    /**
-     * 性别(1:男,2:女,3:通用)
-     */
+    // 性别(1:男,2:女)
     private Integer sex;
     // 主诉
     private ChiefLabel chiefLabel;

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

@@ -48,13 +48,12 @@ public class BillFacade {
         // 开单合理性图谱接口调用
         BillNeoVO billNeoVO = fillBillNeo(indicationPushVO);
 
-        List<BillNeoDTO> billNeoDTOs = neoFacade.getBillNeo(billNeoVO);
+        List<BillNeoDTO> billNeoDTOList = neoFacade.getBillNeo(billNeoVO);
 
         // neoFacade.getDrugCache();
 
         // 规则开发 TODO
-//        return billRuleFacade.process(billNeoDTO, wordCrfDTO);
-        return null;
+       return billRuleFacade.process(billNeoDTOList, wordCrfDTO);
     }
 
 

+ 20 - 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,37 @@ 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) {
+    public void processBillWithLis(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
 
     }
 
-    public void processBillWithPacs(List<PacsBillNeoDTO> pacsBillNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
+    public void processBillWithPacs(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
 
     }
 
-    public void processBillWithDrug(List<DrugBillNeoDTO> drugBillNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO 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;
+    }
 }