Explorar o código

增加规则:血友病患者不能开血常规、小于等于10岁不能开孕酮测定

liuqq %!s(int64=4) %!d(string=hai) anos
pai
achega
be1af19908
Modificáronse 1 ficheiros con 78 adicións e 3 borrados
  1. 78 3
      src/main/java/com/diagbot/facade/BillFacade.java

+ 78 - 3
src/main/java/com/diagbot/facade/BillFacade.java

@@ -3,18 +3,22 @@ package com.diagbot.facade;
 import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
-import com.diagbot.dto.BillNeoDTO;
-import com.diagbot.dto.IndicationDTO;
-import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.dto.*;
+import com.diagbot.enums.NeoEnum;
 import com.diagbot.process.BillProcess;
+import com.diagbot.rule.AgeRule;
+import com.diagbot.rule.CommonRule;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.Drug;
 import com.diagbot.vo.IndicationPushVO;
 import com.diagbot.vo.ItemExt;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -33,6 +37,10 @@ public class BillFacade {
     BillProcess billProcess;
     @Autowired
     CommonFacade commonFacade;
+    @Autowired
+    CommonRule commonRule;
+    @Autowired
+    AgeRule ageRule;
 
     /**
      * 开单合理性业务
@@ -47,10 +55,77 @@ public class BillFacade {
         // 规则处理
         billProcess.process(billNeoDTOList, wordCrfDTO, res);
 
+        lisDiseaseRule(wordCrfDTO, res);
+        lisAgeRule(wordCrfDTO, res);
+
         // 结果去重处理
         commonFacade.dealMsg(res.getBillMsgList());
     }
 
+    /**
+     * 检验开单:【血常规】
+     * 1、禁忌疾病:血友病
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void lisDiseaseRule(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        // 特殊值处理
+        // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
+        List<Lis> lisOrderList = wordCrfDTO.getLisOrder();
+        for (Lis lis : lisOrderList) {
+            String lisOrderName = "血常规";
+            if (lisOrderName.equals(lis.getUniqueName())) {
+                // 开单项信息
+                BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
+                billNeoMaxDTO.setOrderName(lis.getName());
+                billNeoMaxDTO.setOrderStandName(lisOrderName);
+
+                // 禁忌疾病
+                List<NodeNeoDTO> diseaseNode = new ArrayList<>();
+                List<String> diseaseList = Lists.newArrayList("血友病");
+                for (String str : diseaseList) {
+                    NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
+                    nodeNeoDTO.setName(str);
+                    nodeNeoDTO.setTermtype(NeoEnum.disease.getName());
+                    diseaseNode.add(nodeNeoDTO);
+                }
+                billNeoMaxDTO.setDisease(diseaseNode);
+                commonRule.compareItemWithBill(diseaseNode, wordCrfDTO.getDiagSource(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.disease.getName());
+            }
+        }
+    }
+
+    /**
+     * 检验开单:【孕酮测定】
+     * 1、禁忌年龄:1岁2个月
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void lisAgeRule(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        // 特殊值处理
+        // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
+        List<Lis> lisOrderList = wordCrfDTO.getLisOrder();
+        for (Lis lis : lisOrderList) {
+            String lisOrderName = "孕酮测定";
+            if (lisOrderName.equals(lis.getUniqueName())) {
+                // 开单项信息
+                BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
+                billNeoMaxDTO.setOrderName(lis.getName());
+                billNeoMaxDTO.setOrderStandName(lisOrderName);
+
+                // 禁忌年龄
+                NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
+                nodeNeoDTO.setMax(new BigDecimal(10));
+                nodeNeoDTO.setTermtype(NeoEnum.ageNeoDTO.getName());
+
+                billNeoMaxDTO.setAgeNeoDTO(nodeNeoDTO);
+                ageRule.bill(wordCrfDTO, billNeoMaxDTO, res.getBillMsgList(), NeoEnum.ageNeoDTO.getName());
+            }
+        }
+    }
+
     public BillNeoVO fillBillNeo(WordCrfDTO wordCrfDTO) {
         BillNeoVO billNeoVO = new BillNeoVO();