Browse Source

化验规则处理

zhoutg 4 years ago
parent
commit
ff7ec220e4

+ 4 - 7
src/main/java/com/diagbot/process/BillProcess.java

@@ -90,16 +90,14 @@ public class BillProcess {
         List<BillMsg> billMsgList = new ArrayList<>();
         for (BillNeoMaxDTO bill : billNeoMaxDTOList) {
             // 性别
-            BillMsg sexMsg = SexRule.compareSexWithBill(wordCrfDTO, bill);
-            CoreUtil.addBeanToList(billMsgList, sexMsg);
+            SexRule.compareSexWithBill(wordCrfDTO, bill, billMsgList);
 
             // 诊断
             BillMsg billMsg_disease = DiagRule.compareDiseaseWithBill(bill.getDisease(), diags, bill);
             CoreUtil.addBeanToList(billMsgList, billMsg_disease);
 
-             //化验
-             BillMsg lisMsg = LisRule.compareLisWithBill(lis, bill);
-             CoreUtil.addBeanToList(billMsgList, lisMsg);
+            //化验
+            LisRule.compareLisWithBill(lis, bill, billMsgList);
 
              //辅检
             BillMsg pacsMsg = PacsRule.comparePacsWithBill(bill.getPacs(), pacs, bill);
@@ -110,8 +108,7 @@ public class BillProcess {
             CoreUtil.addBeanToList(billMsgList, clinicalMsg);
 
             // 年龄
-            BillMsg ageMsg = AgeRule.compareAgeWithBill(wordCrfDTO, bill);
-            CoreUtil.addBeanToList(billMsgList, ageMsg);
+            AgeRule.compareAgeWithBill(wordCrfDTO, bill, billMsgList);
 
         }
         indicationDTO.setBillMsgList(billMsgList);

+ 7 - 4
src/main/java/com/diagbot/rule/AgeRule.java

@@ -6,6 +6,8 @@ import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.util.CoreUtil;
 
+import java.util.List;
+
 /**
  * @description: 年龄规则
  * @author: zhoutg
@@ -20,7 +22,7 @@ public class AgeRule {
      * @param billNeoMaxDTO
      * @return
      */
-    public static BillMsg compareAgeWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO) {
+    public static void compareAgeWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList) {
         NodeNeoDTO ageNeoDTO = billNeoMaxDTO.getAgeNeoDTO();
         Boolean flag = false;
         if (ageNeoDTO != null && wordCrfDTO.getAge() != null) {
@@ -28,9 +30,10 @@ public class AgeRule {
             flag = CoreUtil.compareNum(ageNeoDTO, age);
         }
         if (flag) {
-            return CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                    String.valueOf(wordCrfDTO.getAge() + "岁"), String.valueOf(wordCrfDTO.getAge() + "岁"));
+            String message = CoreUtil.getStrMsgWithRange(ageNeoDTO, "年龄", String.valueOf(wordCrfDTO.getAge()));
+            BillMsg billMsg = CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
+                    message, message);
+            billMsgList.add(billMsg);
         }
-        return null;
     }
 }

+ 12 - 14
src/main/java/com/diagbot/rule/LisRule.java

@@ -7,9 +7,7 @@ import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
-import org.apache.commons.lang3.StringUtils;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -26,8 +24,7 @@ public class LisRule {
      * @param billNeoMaxDTO
      * @return
      */
-    public static BillMsg compareLisWithBill(List<Lis> inputLis, BillNeoMaxDTO billNeoMaxDTO) {
-        List<String> msgList = new ArrayList<>();
+    public static void compareLisWithBill(List<Lis> inputLis, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList) {
         List<NodeNeoDTO> neoList = billNeoMaxDTO.getLis();
         if(ListUtil.isNotEmpty(neoList) && ListUtil.isNotEmpty(inputLis)){
             for (NodeNeoDTO neo : neoList) {
@@ -36,26 +33,27 @@ public class LisRule {
                     if (StringUtil.isNotBlank(val) && val.equals(neo.getName())) {
                         String val_name = lis.getDetailName();
                         // 如果有结果数据,就不用比较数值
+                        String message = "";
+                        boolean flag = false;
                         if (StringUtil.isNotBlank(lis.getResult())) {
-                            boolean flag = CoreUtil.compareStr(neo, lis.getResult());
+                            flag = CoreUtil.compareStr(neo, lis.getResult());
                             if (flag) {
-                                msgList.add(CoreUtil.getStrMsg(neo, val_name, lis.getResult()));
+                                message = CoreUtil.getStrMsg(neo, val_name, lis.getResult());
                             }
                         } else if (lis.getValue() != null) {
-                            boolean flag = CoreUtil.compareNum(neo, lis.getValue());
+                            flag = CoreUtil.compareNum(neo, lis.getValue());
                             if (flag) {
-                                msgList.add(CoreUtil.getNumMsg(neo, val_name, lis.getValue(), lis.getUnits()));
+                                message = CoreUtil.getNumMsg(neo, val_name, lis.getValue(), lis.getUnits());
                             }
                         }
+                        if (flag) {
+                            BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(),
+                                    billNeoMaxDTO.getOrderStandName(), message, message);
+                            billMsgList.add(commonBillMsg);
+                        }
                     }
                 }
             }
         }
-        if (ListUtil.isNotEmpty(msgList)){
-           String message = StringUtils.join(msgList, ",");
-            BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(),billNeoMaxDTO.getOrderStandName(),message,null);
-            return commonBillMsg;
-        }
-        return null;
     }
 }

+ 7 - 6
src/main/java/com/diagbot/rule/SexRule.java

@@ -7,6 +7,8 @@ import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.StringUtil;
 
+import java.util.List;
+
 /**
  * @description: 性别规则
  * @author: zhoutg
@@ -21,7 +23,7 @@ public class SexRule {
      * @param billNeoMaxDTO
      * @return
      */
-    public static BillMsg compareSexWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO) {
+    public static void compareSexWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList) {
         NodeNeoDTO nodeNeoDTO = billNeoMaxDTO.getGender();
         if (nodeNeoDTO != null && StringUtil.isNotBlank(nodeNeoDTO.getName()) && wordCrfDTO.getSex() != null) {
             String sex = nodeNeoDTO.getName();
@@ -33,14 +35,13 @@ public class SexRule {
             }
             if (sex.equals(sexStr)) {
                 if ("男".equals(sexStr)) {
-                    return CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                            "男性", "男性");
+                    billMsgList.add(CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
+                            "男性", "男性"));
                 } else if ("女".equals(sexStr)) {
-                    return CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                            "女性", "女性");
+                    billMsgList.add(CoreUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
+                            "女性", "女性"));
                 }
             }
         }
-        return null;
     }
 }

+ 23 - 0
src/main/java/com/diagbot/util/CoreUtil.java

@@ -400,6 +400,29 @@ public class CoreUtil {
         return s;
     }
 
+    /**
+     * 获取提示信息(例如:年龄19[0,20])
+     *
+     * @param nodeNeoDTO
+     * @return
+     */
+    public static String getStrMsgWithRange(NodeNeoDTO nodeNeoDTO, String name, String value) {
+        if (nodeNeoDTO == null) {
+            return "";
+        }
+        StringBuffer sb = new StringBuffer();
+        sb.append(name).append(value).append("[");
+        if (nodeNeoDTO.getMin() != null) {
+            sb.append(nodeNeoDTO.getMin());
+        }
+        sb.append(",");
+        if (nodeNeoDTO.getMax() != null) {
+            sb.append(nodeNeoDTO.getMax());
+        }
+        sb.append("]");
+        return sb.toString();
+    }
+
     /**
      * 获取提示信息(String)
      *