ソースを参照

七院特殊规则:非阻塞性睡眠呼吸暂停综合征和非混合性睡眠呼吸暂停综合征,不宜同时开立呼吸睡眠监测和眼电图(EOG)

zhoutg 3 年 前
コミット
aaf9e89c85

+ 6 - 0
src/main/java/com/diagbot/facade/BillFacade.java

@@ -9,6 +9,7 @@ import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.RuleTypeEnum;
 import com.diagbot.enums.TypeEnum;
 import com.diagbot.process.BillProcess;
+import com.diagbot.rule.OtherRule;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.Drug;
@@ -36,6 +37,8 @@ public class BillFacade {
     CommonFacade commonFacade;
     @Autowired
     RedisUtil redisUtil;
+    @Autowired
+    OtherRule otherRule;
 
     /**
      * 开单合理性业务
@@ -48,6 +51,9 @@ public class BillFacade {
         List<RuleVO> ruleVOList = getRuleVO(wordCrfDTO);
         billProcess.processRule(ruleVOList, wordCrfDTO, res);
 
+        // 【特殊规则】七院:非阻塞性睡眠呼吸暂停综合征且非混合性睡眠呼吸暂停综合征,不宜同时开立睡眠呼吸监测和眼电图(EOG)(双眼)
+        otherRule.smhxjcAndYdteog(wordCrfDTO, res);
+
         // 结果去重处理
         commonFacade.dealMsg(res.getBillMsgList());
     }

+ 84 - 0
src/main/java/com/diagbot/rule/OtherRule.java

@@ -0,0 +1,84 @@
+package com.diagbot.rule;
+
+import com.diagbot.biz.push.entity.Item;
+import com.diagbot.biz.push.entity.Pacs;
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.IndicationDTO;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.enums.TypeEnum;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.MsgNewUtil;
+import com.diagbot.util.RedisUtil;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @description: 其他特殊规则
+ * @author: zhoutg
+ * @time: 2020/8/3 14:47
+ */
+@Component
+public class OtherRule {
+
+    @Autowired
+    MsgNewUtil msgNewUtil;
+    @Autowired
+    RedisUtil redisUtil;
+
+    /**
+     * 七院需求:
+     * 非阻塞性睡眠呼吸暂停综合征和非混合性睡眠呼吸暂停综合征,不宜同时开立呼吸睡眠监测和眼电图(EOG)
+     *
+     * @param
+     * @return
+     */
+    public void smhxjcAndYdteog(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        // 1、比较是否包含2种诊断
+        List<Item> diagAllList = wordCrfDTO.getDiag(); // 结构化诊断
+        List<String> zsxList = Lists.newArrayList();// 阻塞性睡眠呼吸暂停综合征医院名称
+        List<String> hhxList = Lists.newArrayList();// 混合性睡眠呼吸暂停综合征医院名称
+        for (Item item : diagAllList) {
+            if ("阻塞性睡眠呼吸暂停综合征".equals(item.getUniqueName())) {
+                zsxList.add(item.getName());
+            } else if ("混合性睡眠呼吸暂停综合征".equals(item.getUniqueName())) {
+                hhxList.add((item.getName()));
+            }
+        }
+        // 如果两种疾病有其一,就不提示
+        if (ListUtil.isNotEmpty(zsxList) || ListUtil.isNotEmpty(hhxList)) {
+            return;
+        }
+
+        // 2、比较是否包含2种辅检开单项
+        List<Pacs> pacsList = wordCrfDTO.getPacsOrder(); // 辅检开单项
+        List<String> hxsmjcList = Lists.newArrayList();// 呼吸睡眠监测医院名称
+        List<String> ydteogList = Lists.newArrayList();// 眼电图(EOG)医院名称
+        for (Pacs pacs : pacsList) {
+            if ("呼吸睡眠监测".equals(pacs.getUniqueName())) {
+                hxsmjcList.add(pacs.getName());
+            } else if ("眼电图(EOG)".equals(pacs.getUniqueName())) {
+                ydteogList.add(pacs.getName());
+            }
+        }
+        // 辅检开单项必须有两个,否则就不提示
+        if (ListUtil.isEmpty(hxsmjcList) || ListUtil.isEmpty(ydteogList)) {
+            return;
+        }
+
+        // 3、提示语组合
+        List<BillMsg> billMsgList = res.getBillMsgList();
+        for (String hxsm : hxsmjcList) {
+            for (String ydt : ydteogList) {
+                BillMsg billMsg = new BillMsg();
+                billMsg.setType(TypeEnum.pacs.getName());
+                billMsg.setMsg(String.format("非阻塞性睡眠呼吸暂停综合征和非混合性睡眠呼吸暂停综合征患者,不宜同时开立%s和%s",
+                        hxsm, ydt));
+                billMsgList.add(billMsg);
+            }
+        }
+    }
+
+}