zhoutg před 3 roky
rodič
revize
10a95a47fb

+ 2 - 1
src/main/java/com/diagbot/enums/RedisEnum.java

@@ -27,7 +27,8 @@ public enum RedisEnum implements KeyedNamed {
     hospitalId_(14, "hospitalId_"),
     deptPush(15, "deptPush"),
     frequency(20, "frequency"),
-    msg(21, "msg");
+    msg(21, "msg"),
+    vteAdvice(22, "vteAdvice");
 
     @Setter
     private int key;

+ 2 - 1
src/main/java/com/diagbot/enums/TypeEnum.java

@@ -21,7 +21,8 @@ public enum TypeEnum implements KeyedNamed {
     transfusion(8, "输血"),
     age(9,"年龄"),
     group(10, "人群"),
-    lisSelf(1, "化验本身");
+    lisSelf(1, "化验本身"),
+    other(11, "其他特殊规则");
 
     @Setter
     private int key;

+ 20 - 0
src/main/java/com/diagbot/facade/CacheFacade.java

@@ -120,6 +120,26 @@ public class CacheFacade {
         neoFacade.allRuleCache();
     }
 
+    /**
+     * 缓存VTE医嘱数据
+     *
+     * @return
+     */
+    // public void loadVteAdviceCache(){
+    //     redisUtil.deleteByPrex(RedisEnum.vteAdvice.getName());
+    //     // 加载
+    //     List<DictionaryInfoDTO> dictionaryInfoDTOList = klDictionaryInfoFacade.getListByGroupType(100);
+    //     if (ListUtil.isNotEmpty(dictionaryInfoDTOList)) {
+    //         // 提示语
+    //         // EntityUtil.makeEntityListMap("", )
+    //         Map<String, Object> msgMap = new LinkedMap<>();
+    //         for (DictionaryInfoDTO dic : dictionaryInfoDTOList) {
+    //             msgMap.put(dic.getName(), dic.getVal());
+    //         }
+    //         redisUtil.putHashMap(RedisEnum.msg.getName(), msgMap);
+    //     }
+    // }
+
     /**
      * 重新加载大数据缓存
      *

+ 2 - 2
src/main/java/com/diagbot/facade/OtherTipFacade.java

@@ -37,8 +37,8 @@ public class OtherTipFacade {
         // 其他值提醒——输血
         otherTipProcess.processTransfusion(wordCrfDTO, res);
 
-        // TODO 特殊规则
-
+        // 特殊规则——VTE结果
+        otherTipProcess.processSpecial(wordCrfDTO, res);
 
         // 结果去重处理
         commonFacade.dealMsg(res.getOtherList());

+ 16 - 12
src/main/java/com/diagbot/process/OtherTipProcess.java

@@ -21,6 +21,7 @@ import com.diagbot.rule.PacsRule;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.MsgUtil;
 import com.diagbot.util.ReflectUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.RuleVO;
@@ -139,6 +140,7 @@ public class OtherTipProcess {
      * @param res
      */
     public void processSpecial(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        List<BillMsg> otherList = res.getOtherList();
         // 判断VTE评估结果和出血风险结果
         List<Scale> scaleList = wordCrfDTO.getScale();
         // VTE评估结果
@@ -157,14 +159,16 @@ public class OtherTipProcess {
                 }
             }
         }
-        // 是否有药物医嘱
-        Boolean drugAdviceFlag = false;
-        // 是否有机械医嘱
-        Boolean mechanicalAdviceFlag = false;
-        List<String> drugNameList = Lists.newArrayList("普通肝素");
-        List<String> mechanicalNameList = Lists.newArrayList("普通肝素");
+
         // VTE评估结果 和 VTE出血风险都有值
         if (StringUtil.isNotBlank(vteResult) && StringUtil.isNotBlank(vteBlood)) {
+            // 是否有药物医嘱
+            Boolean drugAdviceFlag = false;
+            // 是否有机械医嘱
+            Boolean mechanicalAdviceFlag = false;
+            List<String> drugNameList = Lists.newArrayList("普通肝素");
+            List<String> mechanicalNameList = Lists.newArrayList("普通肝素");
+
             // 获取药品医嘱
             drugAdviceFlag = hasAdvice(wordCrfDTO.getDrug(), drugNameList);
             // 获取机械医嘱
@@ -173,13 +177,13 @@ public class OtherTipProcess {
             }
             // 无药物医嘱且无机械医嘱,拼接提示语
             if (!drugAdviceFlag && !mechanicalAdviceFlag) {
-                String msg = "该患者VTE评估为中/高危,伴有出血风险,建议开机械预防医嘱";
-                if (vteBlood.matches("有")) {
-
-                } else if (vteBlood.matches("无")) {
-                    msg = "该患者VTE评估为中/高危,无出血风险,建议开药物或机械预防医嘱";
-                    
+                String msg = "该患者VTE评估为%s,伴有出血风险,建议开机械预防医嘱";
+                if (vteBlood.matches("无")) {
+                    msg = "该患者VTE评估为%s,无出血风险,建议开药物或机械预防医嘱";
                 }
+                msg = String.format(msg, vteResult);
+                BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.other.getName(), msg, null, null, null);
+                CoreUtil.addBeanToList(otherList, billMsg);
             }
         }
     }

+ 2 - 0
src/main/java/com/diagbot/util/MsgUtil.java

@@ -99,6 +99,8 @@ public class MsgUtil {
             case transfusion: // 其他值提醒——输血
                 msg = String.format("该患者%s,建议输注%s", content, name);
                 break;
+            case other: // 其他特殊规则
+                msg = content;
             default:
                 break;
         }