Browse Source

查体规则校验

yuchengwei 4 months ago
parent
commit
349313f21e

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

@@ -31,6 +31,9 @@ public class OtherTipFacade {
         // 其他值提醒——化验
         otherTipProcess.processLis(wordCrfDTO, res);
 
+        // 其他值提醒——查体
+        otherTipProcess.processVital(wordCrfDTO, res);
+
         // 其他值提醒——辅检
         otherTipProcess.processPacs(wordCrfDTO, res);
 

+ 60 - 5
src/main/java/com/diagbot/process/OtherTipProcess.java

@@ -13,12 +13,10 @@ import com.diagbot.enums.*;
 import com.diagbot.facade.*;
 import com.diagbot.model.entity.Doctor;
 import com.diagbot.model.entity.PacsNum;
+import com.diagbot.model.entity.Vital;
 import com.diagbot.model.label.PacsLabel;
-import com.diagbot.rule.AgeRule;
-import com.diagbot.rule.CommonRule;
-import com.diagbot.rule.GroupRule;
-import com.diagbot.rule.LisRule;
-import com.diagbot.rule.PacsRule;
+import com.diagbot.model.label.VitalLabel;
+import com.diagbot.rule.*;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
@@ -58,6 +56,8 @@ public class OtherTipProcess {
     RedisUtil redisUtil;
     @Autowired
     AgeRule ageRule;
+    @Autowired
+    VitalRule vitalRule;
 
     @Autowired
     private KlDiagHospitalFacade klDiagHospitalFacade;
@@ -104,6 +104,41 @@ public class OtherTipProcess {
         }
     }
 
+    /**
+     * 处理业务——查体
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void processVital(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        VitalLabel vitalLabel = wordCrfDTO.getVitalLabel();
+        List<Vital> vitals = vitalLabel.getVitals();
+
+        List<BillMsg> otherList = res.getOtherList();
+        for (Vital vital : vitals) {
+            RuleVO ruleVO = getRuleVO(vital, RuleTypeEnum.other.getKey());
+            // 1、获取相关数据
+            if (ruleVO != null) {
+                RuleExtDTO ruleExtDTO = commonFacade.getRuleData(ruleVO);
+                if (ruleExtDTO == null) {
+                    continue;
+                }
+                List<RuleConditionDTO> ruleConditionDTOList = ruleExtDTO.getRuleConditionDTOList();
+                for (RuleConditionDTO ruleConditionDTO : ruleConditionDTOList) {
+                    List<RuleBaseDTO> ruleBaseDTOList = ruleConditionDTO.getRuleBaseDTOList();
+
+                    for (RuleBaseDTO ruleBaseDTO : ruleBaseDTOList) {
+                        Map<String, Object> map = CoreUtil.compareVitalMulti(ruleBaseDTO, vitalLabel);
+                        if (CoreUtil.getMapFlag(map)) {
+                            String msg = "该患者"+vital.getName()+"结果" + vital.getPd().getValue() + ",请留意," + ruleConditionDTO.getMsg();
+                            BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.other.getName(), msg, null, null, null);
+                            CoreUtil.addBeanToList(otherList, billMsg);
+                        }
+                    }
+                }
+            }
+        }
+    }
     /**
      * 处理业务——辅检
      *
@@ -606,4 +641,24 @@ public class OtherTipProcess {
         }
         return null;
     }
+
+    /**
+     * 获取其他值提醒入参--查体
+     *
+     * @param vital
+     * @return
+     */
+    public RuleVO getRuleVO(Vital vital, Integer key) {
+        if (StringUtil.isNotBlank(vital.getName())) {
+            RuleVO ruleVO = new RuleVO();
+            ruleVO.setInputName(vital.getName());
+            ruleVO.setLibName(vital.getName());
+            ruleVO.setLibType(LexiconEnum.Vital.getKey());
+            ruleVO.setLibTypeName(TypeEnum.vital.getName());
+            ruleVO.setDateValue(vital.getValue());
+            ruleVO.setSuffix(String.valueOf(key));
+            return ruleVO;
+        }
+        return null;
+    }
 }

+ 20 - 5
src/main/java/com/diagbot/util/CoreUtil.java

@@ -1296,11 +1296,26 @@ public class CoreUtil {
 
 
     public static void main(String[] args) {
-        System.out.println(isNumbers("1.1"));
-        System.out.println(isNumbers("1.."));
-        System.out.println(isNumbers("a1."));
-        System.out.println(isNumbers("1.b"));
-        System.out.println(isNumbers(".9"));
+        RuleBaseDTO ruleBaseDTO = new RuleBaseDTO();
+        ruleBaseDTO.setBaseLibName("体温");
+        ruleBaseDTO.setBaseLibType(104);
+        ruleBaseDTO.setBaseType(2);
+        ruleBaseDTO.setBaseMinOperator(">=");
+        ruleBaseDTO.setBaseMinValue("36");
+        ruleBaseDTO.setBaseMinUnit("");
+        ruleBaseDTO.setBaseMaxOperator("<=");
+        ruleBaseDTO.setBaseMaxValue("43");
+        ruleBaseDTO.setBaseMaxUnit("");
+        ruleBaseDTO.setBaseEqOperator("");
+        ruleBaseDTO.setBaseEqValue("");
+        ruleBaseDTO.setBaseEqUnit("");
+        System.out.println(compareNum(ruleBaseDTO, 45));
+
+//        System.out.println(isNumbers("1.1"));
+//        System.out.println(isNumbers("1.."));
+//        System.out.println(isNumbers("a1."));
+//        System.out.println(isNumbers("1.b"));
+//        System.out.println(isNumbers(".9"));
         // List<PushBaseDTO> pushBaseDTOList = ListUtil.newArrayList();
         // PushBaseDTO pushBaseDTO = new PushBaseDTO();
         // pushBaseDTO.setName("a1");