浏览代码

诊断开单合理性

kwzbigdata 4 年之前
父节点
当前提交
65df8b677d

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

@@ -1,8 +1,13 @@
 package com.diagbot.dto;
 
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.model.label.*;
 import lombok.Data;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * crf 解析后各個模塊出參
  *
@@ -17,6 +22,14 @@ public class WordCrfDTO {
     private Integer age;
     // 性别(1:男,2:女)
     private Integer sex;
+    /**
+     * 化验项目和结果
+     */
+    private List<Lis> lis = new ArrayList<>();
+    /**
+     * 辅检项目和结果
+     */
+    private List<Pacs> pacs = new ArrayList<>();
     // 主诉
     private ChiefLabel chiefLabel;
     // 现病史

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

@@ -34,6 +34,8 @@ public class CommonFacade {
         WordCrfDTO wordCrfDTO = new WordCrfDTO();
         wordCrfDTO.setAge(searchData.getAge());
         wordCrfDTO.setSex(searchData.getSex());
+        wordCrfDTO.setLis(searchData.getLis());
+        wordCrfDTO.setPacs(searchData.getPacs());
         aiAnalyze.aiProcess(searchData, wordCrfDTO);
         return wordCrfDTO;
     }

+ 6 - 0
src/main/java/com/diagbot/process/BillProcess.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.DrugBillNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.rule.AgeRule;
+import com.diagbot.rule.DiseaseRule;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -66,9 +67,14 @@ public class BillProcess {
             for (DrugBillNeoDTO drug : drugBillNeoDTOList) {
                 // 性别
                 BillMsg billMsg = AgeRule.compareSexWithBill(drug.getGender(), wordCrfDTO, bill.getName());
+                // 诊断
+                BillMsg billMsg_disease = DiseaseRule.compareDiseaseWithBill(drug.getDisease(), wordCrfDTO, bill.getName());
                 if (billMsg != null) {
                     drugBill.add(billMsg);
                 }
+                if(billMsg_disease != null){
+                    drugBill.add(billMsg_disease);
+                }
             }
         }
         billDTO.setDrugBill(drugBill);

+ 43 - 0
src/main/java/com/diagbot/rule/DiseaseRule.java

@@ -0,0 +1,43 @@
+package com.diagbot.rule;
+
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.model.entity.Diag;
+import com.diagbot.model.label.DiagLabel;
+import com.diagbot.util.StringUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 疾病规则
+ * @author: kwz
+ * @time: 2020/8/3 14:47
+ */
+public class DiseaseRule {
+    /**
+     * 比较疾病
+     *
+     * @param diseases
+     * @param wordCrfDTO
+     * @return
+     */
+    public static BillMsg compareDiseaseWithBill(List<String> diseases, WordCrfDTO wordCrfDTO, String name) {
+        List<String> tipDiseases = new ArrayList<>();
+        DiagLabel diagLabel = wordCrfDTO.getDiagLabel();
+        if (diseases.size() > 0 && diagLabel != null && diagLabel.getDiags().size() > 0) {
+            List<Diag> diags = diagLabel.getDiags();
+            for (Diag diag:diags) {
+                if(diag.getNegative() == null){
+                    tipDiseases.add(diag.getStandName());
+                }
+            }
+            if (tipDiseases.size() > 0) {
+                BillMsg billMsg = new BillMsg();
+                billMsg.setMsg(name + tipDiseases.toString());
+                return billMsg;
+            }
+        }
+        return null;
+    }
+}