gaodm пре 4 година
родитељ
комит
dbf51c6d8e

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

@@ -56,6 +56,15 @@ public class BillFacade {
         otherRule.lisDiseaseRule(wordCrfDTO, res);
         otherRule.lisAgeRule(wordCrfDTO, res);
 
+        otherRule.lisDiseaseRule2(wordCrfDTO, res);
+        otherRule.lisDiseaseRule3(wordCrfDTO, res);
+        otherRule.lisResRule4(wordCrfDTO, res);
+        otherRule.lisResRule5(wordCrfDTO, res);
+
+        otherRule.transfusionVitalRule(wordCrfDTO, res);
+        otherRule.transfusionVitalRule1(wordCrfDTO, res);
+
+
         // 结果去重处理
         commonFacade.dealMsg(res.getBillMsgList());
     }

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

@@ -290,8 +290,8 @@ public class CommonFacade {
         pacsGetAndSet(wordCrfDTO);
 
         // 【体征回填】
-        CoreUtil.setPropertyList(vitalLabel.getVitals(), map.get(StandConvertEnum.vital.toString()));
-        CoreUtil.setPropertyList(vitalLabel.getClinicals(), map.get(StandConvertEnum.vital.toString()));
+        //CoreUtil.setPropertyList(vitalLabel.getVitals(), map.get(StandConvertEnum.vital.toString()));
+        //CoreUtil.setPropertyList(vitalLabel.getClinicals(), map.get(StandConvertEnum.vital.toString()));
 
         // 【手术回填】
         // 1、主诉手术

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

@@ -12,6 +12,7 @@ import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.Drug;
+import com.diagbot.vo.ItemExt;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -34,6 +35,8 @@ public class OtherRule {
     VitalRule vitalRule;
     @Autowired
     AgeRule ageRule;
+    @Autowired
+    LisRule lisRule;
 
     /**
      * 70岁及以上开【内镜检查】时,需要先做【心电图检查】
@@ -226,4 +229,228 @@ public class OtherRule {
             }
         }
     }
+
+    /**
+     * 检验开单:【骨髓涂片细胞学检查】
+     * 1、禁忌疾病:血友病
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void lisDiseaseRule2(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、禁忌疾病:血友病
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void lisDiseaseRule3(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、禁忌检验结果:凝血功能检查-活化部分凝血活酶时间测定(APTT),大于38秒或>38s
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void lisResRule4(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> lists = new ArrayList<>();
+                NodeNeoDTO ssyNode = new NodeNeoDTO();
+                ssyNode.setName("活化部分凝血活酶时间测定(APTT)");
+                ssyNode.setTermtype(NeoEnum.lis.getName());
+                ssyNode.setMin(new BigDecimal(38.1));
+                lists.add(ssyNode);
+                billNeoMaxDTO.setLis(lists);
+                lisRule.bill(wordCrfDTO.getLisOrder(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.lis.getName());
+            }
+        }
+    }
+
+    /**
+     * 检验开单:【胸腹水生化检查】
+     * 1、禁忌检验结果:血HCG测定-大于500IU/L
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void lisResRule5(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> lists = new ArrayList<>();
+                NodeNeoDTO ssyNode = new NodeNeoDTO();
+                ssyNode.setName("血清人绒毛膜促性腺激素测定");
+                ssyNode.setTermtype(NeoEnum.lis.getName());
+                ssyNode.setMin(new BigDecimal(500.1));
+                lists.add(ssyNode);
+                billNeoMaxDTO.setLis(lists);
+                lisRule.bill(wordCrfDTO.getLisOrder(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.lis.getName());
+            }
+        }
+    }
+
+
+    /**
+     * 输血开单:【血小板】
+     * 1、禁忌查体:呼吸困难/高热
+     * 1、禁忌基本情况:体温大于39.5度/心率大于100/分
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void transfusionVitalRule(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        // 特殊值处理
+        // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
+        List<ItemExt> transfusionOrderList = wordCrfDTO.getTransfusionOrder();
+        for (ItemExt item : transfusionOrderList) {
+            String lisOrderName = "血小板";
+            if (lisOrderName.equals(item.getUniqueName())) {
+                // 开单项信息
+                BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
+                billNeoMaxDTO.setOrderName(item.getName());
+                billNeoMaxDTO.setOrderStandName(lisOrderName);
+
+                // 禁忌查体
+                List<NodeNeoDTO> vitals = new ArrayList<>();
+                NodeNeoDTO ssyNode = new NodeNeoDTO();
+                ssyNode.setName("呼吸困难");
+                ssyNode.setTermtype(NeoEnum.vitals.getName());
+                vitals.add(ssyNode);
+                NodeNeoDTO ssyNode1 = new NodeNeoDTO();
+                ssyNode1.setName("高热");
+                ssyNode1.setTermtype(NeoEnum.vitals.getName());
+                vitals.add(ssyNode1);
+                NodeNeoDTO szyNode = new NodeNeoDTO();
+                szyNode.setName("体温");
+                szyNode.setTermtype(NeoEnum.vitals.getName());
+                szyNode.setMin(new BigDecimal(39.6));
+                vitals.add(szyNode);
+                NodeNeoDTO szyNode1 = new NodeNeoDTO();
+                szyNode1.setName("心率");
+                szyNode1.setTermtype(NeoEnum.vitals.getName());
+                szyNode1.setMin(new BigDecimal(100.1));
+                vitals.add(szyNode1);
+                billNeoMaxDTO.setVitals(vitals);
+                vitalRule.bill(wordCrfDTO.getVitalLabel(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.vitals.getName());
+            }
+        }
+    }
+
+    /**
+     * 输血开单:【红细胞】
+     * 1、禁忌查体:收缩压大于140mmHg 或者舒张压大于90mmHg ,不宜开去甲肾上腺素
+     *
+     * @param wordCrfDTO
+     * @param res
+     */
+    public void transfusionVitalRule1(WordCrfDTO wordCrfDTO, IndicationDTO res) {
+        // 特殊值处理
+        // List<String> drugNameList = CoreUtil.getPropertyList(wordCrfDTO.getDrugOrder(), "uniqueName");
+        List<ItemExt> transfusionOrderList = wordCrfDTO.getTransfusionOrder();
+        for (ItemExt item : transfusionOrderList) {
+            String lisOrderName = "红细胞";
+            if (lisOrderName.equals(item.getUniqueName())) {
+                // 开单项信息
+                BillNeoMaxDTO billNeoMaxDTO = new BillNeoMaxDTO();
+                billNeoMaxDTO.setOrderName(item.getName());
+                billNeoMaxDTO.setOrderStandName(lisOrderName);
+
+                // 禁忌查体
+                List<NodeNeoDTO> vitals = new ArrayList<>();
+                NodeNeoDTO ssyNode = new NodeNeoDTO();
+                ssyNode.setName("呼吸困难");
+                ssyNode.setTermtype(NeoEnum.vitals.getName());
+                vitals.add(ssyNode);
+                NodeNeoDTO ssyNode1 = new NodeNeoDTO();
+                ssyNode1.setName("高热");
+                ssyNode1.setTermtype(NeoEnum.vitals.getName());
+                vitals.add(ssyNode1);
+                NodeNeoDTO szyNode = new NodeNeoDTO();
+                szyNode.setName("体温");
+                szyNode.setTermtype(NeoEnum.vitals.getName());
+                szyNode.setMin(new BigDecimal(39.6));
+                vitals.add(szyNode);
+                NodeNeoDTO szyNode1 = new NodeNeoDTO();
+                szyNode1.setName("心率");
+                szyNode1.setTermtype(NeoEnum.vitals.getName());
+                szyNode1.setMin(new BigDecimal(100.1));
+                vitals.add(szyNode1);
+                billNeoMaxDTO.setVitals(vitals);
+                vitalRule.bill(wordCrfDTO.getVitalLabel(), billNeoMaxDTO, res.getBillMsgList(), NeoEnum.vitals.getName());
+            }
+        }
+    }
 }