浏览代码

药品规则开发(化验、检查、诊断、症状)

kwzbigdata 4 年之前
父节点
当前提交
0238cd47f3

+ 39 - 2
src/main/java/com/diagbot/process/BillProcess.java

@@ -1,12 +1,20 @@
 package com.diagbot.process;
 
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.dto.BillDTO;
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.DrugBillNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.model.entity.Clinical;
+import com.diagbot.model.entity.Diag;
+import com.diagbot.model.label.ChiefLabel;
+import com.diagbot.model.label.DiagLabel;
+import com.diagbot.model.label.PresentLabel;
 import com.diagbot.rule.AgeRule;
-import com.diagbot.rule.DiseaseRule;
+import com.diagbot.rule.DiagRule;
+import com.diagbot.rule.LisPacsRule;
 import com.diagbot.rule.SexRule;
 import com.diagbot.util.CoreUtil;
 import org.springframework.stereotype.Component;
@@ -63,6 +71,23 @@ public class BillProcess {
      * @param billDTO
      */
     public void processBillWithDrug(List<BillNeoDTO> billNeoDTOList, WordCrfDTO wordCrfDTO, BillDTO billDTO) {
+        DiagLabel diagLabel = wordCrfDTO.getDiagLabel();
+        ChiefLabel chiefLabel = wordCrfDTO.getChiefLabel();
+        PresentLabel presentLabel = wordCrfDTO.getPresentLabel();
+        List<Diag> diags =null;
+        List<Clinical> clinicals =null;
+        if(diagLabel != null){
+            diags = diagLabel.getDiags();
+        }
+        if(chiefLabel != null){
+            clinicals.addAll(chiefLabel.getClinicals());
+        }
+        if(presentLabel != null){
+            clinicals.addAll(presentLabel.getClinicals());
+        }
+        List<Lis> lis = wordCrfDTO.getLis();
+        List<Pacs> pacs = wordCrfDTO.getPacs();
+
         List<BillMsg> drugBill = new ArrayList<>();
         for (BillNeoDTO bill : billNeoDTOList) {
             List<DrugBillNeoDTO> drugBillNeoDTOList = bill.getDrugBillNeoDTOList();
@@ -72,9 +97,21 @@ public class BillProcess {
                 CoreUtil.addBeanToList(drugBill, sexMsg);
 
                 // 诊断
-                BillMsg billMsg_disease = DiseaseRule.compareDiseaseWithBill(drug.getDisease(), wordCrfDTO, bill.getName());
+                BillMsg billMsg_disease = DiagRule.compareDiseaseWithBill(drug.getDisease(), diags, bill.getName());
                 CoreUtil.addBeanToList(drugBill, billMsg_disease);
 
+                //化验
+                BillMsg lisMsg = LisPacsRule.compareLisPacsWithBill(drug.getLis(), lis, bill.getName());
+                CoreUtil.addBeanToList(drugBill, lisMsg);
+
+                //辅检
+                BillMsg pacsMsg = LisPacsRule.compareLisPacsWithBill(drug.getPACS(), pacs, bill.getName());
+                CoreUtil.addBeanToList(drugBill, pacsMsg);
+
+                //临床表现
+                BillMsg clinicalMsg = DiagRule.compareDiseaseWithBill(drug.getClinicfindings(), clinicals, bill.getName());
+                CoreUtil.addBeanToList(drugBill, clinicalMsg);
+
                 // 年龄
                 BillMsg ageMsg = AgeRule.compareAgeWithBill(drug.getAgeNeoDTO(), wordCrfDTO, bill.getName());
                 CoreUtil.addBeanToList(drugBill, ageMsg);

+ 57 - 0
src/main/java/com/diagbot/rule/DiagRule.java

@@ -0,0 +1,57 @@
+package com.diagbot.rule;
+
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.model.entity.Diag;
+import com.diagbot.model.entity.Negative;
+import com.diagbot.model.label.DiagLabel;
+import com.diagbot.util.CoreUtil;
+import org.apache.commons.lang3.StringUtils;
+
+import java.lang.annotation.Native;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 实验室检查和辅助检查规则
+ * @author: kwz
+ * @time: 2020/8/3 14:47
+ */
+public class DiagRule {
+    /**
+     * 比较疾病
+     *
+     * @param drugLises
+     * @param inputLises
+     * @return
+     */
+    public static <T> BillMsg compareDiseaseWithBill(List<String> drugLises, List<T> inputLises, String name) {
+        List<String> reports = new ArrayList<>();
+        if(inputLises != null && inputLises.size() > 0){
+            for (T d:inputLises) {
+                Negative val = (Negative)CoreUtil.getFieldValue(d, "Negative");
+                if(val == null){
+                    String c = (String) CoreUtil.getFieldValue(d, "standName");
+                    if(StringUtils.isNotBlank(c) && drugLises.contains(c)){
+                        reports.add(c);
+                    }
+                }
+            }
+            if(reports.size()>0){
+                String message = "";
+                for(int i=0;i<reports.size();i++){
+                    if(i != reports.size()-1){
+                        message +=i+",";
+                    }else {
+                        message += i;
+                    }
+                }
+                BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name);
+                return commonBillMsg;
+            }
+        }
+
+        return null;
+    }
+}

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

@@ -1,43 +0,0 @@
-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;
-    }
-}

+ 54 - 0
src/main/java/com/diagbot/rule/LisPacsRule.java

@@ -0,0 +1,54 @@
+package com.diagbot.rule;
+
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.model.entity.Diag;
+import com.diagbot.model.entity.Negative;
+import com.diagbot.model.label.DiagLabel;
+import com.diagbot.util.CoreUtil;
+import com.diagbot.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 疾病规则
+ * @author: kwz
+ * @time: 2020/8/3 14:47
+ */
+public class LisPacsRule {
+    /**
+     * 比较化验和辅检
+     *
+     * @param drugLis
+     * @param inputLis
+     * @return
+     */
+    public static <T> BillMsg compareLisPacsWithBill(List<String> drugLis, List<T> inputLis, String name) {
+        List<String> tipDiseases = new ArrayList<>();
+        if(drugLis.size() > 0 && inputLis.size() >0){
+            for (T lis:inputLis) {
+                String val = (String)CoreUtil.getFieldValue(lis, "name");
+                if(StringUtils.isNotBlank(val) && drugLis.contains(val)){
+                    tipDiseases.add(val);
+                }
+            }
+        }
+        if(tipDiseases.size() > 0){
+            String message = "";
+            for(int i=0;i<tipDiseases.size();i++){
+                if(i != tipDiseases.size()-1){
+                    message +=i+",";
+                }else {
+                    message += i;
+                }
+            }
+            BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name);
+            return commonBillMsg;
+        }
+        return null;
+    }
+}