Browse Source

禁忌人群处理月经期

zhoutg 4 years ago
parent
commit
d212dd34df

+ 2 - 0
src/main/java/com/diagbot/dto/WordCrfDTO.java

@@ -90,4 +90,6 @@ public class WordCrfDTO {
     // 辅检
     private PacsLabel pacsLabel = new PacsLabel();
 
+    // 现病史
+    private String symptom = "";
 }

+ 5 - 0
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -18,6 +18,7 @@ import com.diagbot.model.label.PresentLabel;
 import com.diagbot.model.label.VitalLabel;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.NeoPushVO;
 import com.diagbot.vo.SearchData;
 import com.diagbot.vo.StandConvert;
@@ -99,6 +100,10 @@ public class CommonFacade {
         if (ListUtil.isNotEmpty(searchData.getTransfusionOrder())) {
             wordCrfDTO.setTransfusionOrder(searchData.getTransfusionOrder());
         }
+        if (StringUtil.isNotBlank(searchData.getSymptom())) {
+            wordCrfDTO.setSymptom(searchData.getSymptom());
+        }
+
         //模型处理数据
         aiAnalyze.aiProcess(searchData, wordCrfDTO);
 

+ 41 - 38
src/main/java/com/diagbot/facade/TestFacade.java

@@ -77,41 +77,44 @@ public class TestFacade {
             IndicationPushVO indicationPushVO = new IndicationPushVO();
             indicationPushVO.setRuleType("2");
             indicationPushVO.setIdNum(bean.getIdNum());
+            if (StringUtil.isBlank(bean.getStandName()) || bean.getNeoName().startsWith("本品")) {
+                continue;
+            }
             if (StringUtil.isNotBlank(bean.getOrderType())) {
                 switch (bean.getOrderType()) {
-                    case "实验室检查名称": // 细项
-                        List<Lis> lisDetailOrder = new ArrayList<>();
-                        Lis lisDetailBean = new Lis();
-                        lisDetailBean.setName(bean.getStandName());
-                        lisDetailBean.setDetailName(bean.getStandName());
-                        lisDetailBean.setUniqueName(bean.getStandName());
-                        lisDetailOrder.add(lisDetailBean);
-                        indicationPushVO.setLisOrder(lisDetailOrder);
-                        break;
-                    case "辅助检查名称":
-                        List<Pacs> pacsOrder = new ArrayList<>();
-                        Pacs pacsBean = new Pacs();
-                        pacsBean.setName(bean.getStandName());
-                        pacsBean.setUniqueName(bean.getStandName());
-                        pacsOrder.add(pacsBean);
-                        indicationPushVO.setPacsOrder(pacsOrder);
-                        break;
-                    case "实验室检查套餐名":
-                        List<Lis> lisOrder = new ArrayList<>();
-                        Lis lisBean = new Lis();
-                        lisBean.setName(bean.getStandName());
-                        lisBean.setUniqueName(bean.getStandName());
-                        lisOrder.add(lisBean);
-                        indicationPushVO.setLisOrder(lisOrder);
-                        break;
-                    case "医保手术和操作名称":
-                        List<Item> operationOrder = new ArrayList<>();
-                        Item operationItem = new Item();
-                        operationItem.setName(bean.getStandName());
-                        operationItem.setUniqueName(bean.getStandName());
-                        operationOrder.add(operationItem);
-                        indicationPushVO.setOperationOrder(operationOrder);
-                        break;
+                    // case "实验室检查名称": // 细项
+                    //     List<Lis> lisDetailOrder = new ArrayList<>();
+                    //     Lis lisDetailBean = new Lis();
+                    //     lisDetailBean.setName(bean.getStandName());
+                    //     lisDetailBean.setDetailName(bean.getStandName());
+                    //     lisDetailBean.setUniqueName(bean.getStandName());
+                    //     lisDetailOrder.add(lisDetailBean);
+                    //     indicationPushVO.setLisOrder(lisDetailOrder);
+                    //     break;
+                    // case "辅助检查名称":
+                    //     List<Pacs> pacsOrder = new ArrayList<>();
+                    //     Pacs pacsBean = new Pacs();
+                    //     pacsBean.setName(bean.getStandName());
+                    //     pacsBean.setUniqueName(bean.getStandName());
+                    //     pacsOrder.add(pacsBean);
+                    //     indicationPushVO.setPacsOrder(pacsOrder);
+                    //     break;
+                    // case "实验室检查套餐名":
+                    //     List<Lis> lisOrder = new ArrayList<>();
+                    //     Lis lisBean = new Lis();
+                    //     lisBean.setName(bean.getStandName());
+                    //     lisBean.setUniqueName(bean.getStandName());
+                    //     lisOrder.add(lisBean);
+                    //     indicationPushVO.setLisOrder(lisOrder);
+                    //     break;
+                    // case "医保手术和操作名称":
+                    //     List<Item> operationOrder = new ArrayList<>();
+                    //     Item operationItem = new Item();
+                    //     operationItem.setName(bean.getStandName());
+                    //     operationItem.setUniqueName(bean.getStandName());
+                    //     operationOrder.add(operationItem);
+                    //     indicationPushVO.setOperationOrder(operationOrder);
+                    //     break;
                     case "药品通用名称":
                         List<Drug> drugOrder = new ArrayList<>();
                         Drug drug = new Drug();
@@ -130,9 +133,9 @@ public class TestFacade {
             if (StringUtil.isNotEmpty(bean.getNeoType())) {
                 switch (bean.getNeoType()) {
                     case "1": // 性别
-                        if ("男".equals(bean.getNeoName())) {
+                        if ("男".equals(bean.getNeoName())) {
                             indicationPushVO.setSex(1);
-                        } else if ("女".equals(bean.getNeoName())) {
+                        } else if ("女".equals(bean.getNeoName())) {
                             indicationPushVO.setSex(2);
                         }
                         break;
@@ -232,7 +235,7 @@ public class TestFacade {
                         }
                         break;
                     case "14": // 年龄
-                        String[] splitAge = bean.getNeoName().split(",");
+                        String[] splitAge = bean.getNeoName().split(",|,");
                         indicationPushVO.setAge((int) getValueNum(splitAge));
                         break;
                     default:
@@ -412,9 +415,9 @@ public class TestFacade {
             indicationPushVO.setRuleType("4");
             indicationPushVO.setIdNum(bean.getIdNum());
 
-            if ("男".equals(bean.getSexStr())) {
+            if ("男".equals(bean.getSexStr())) {
                 indicationPushVO.setSex(1);
-            } else if ("女".equals(bean.getSexStr())) {
+            } else if ("女".equals(bean.getSexStr())) {
                 indicationPushVO.setSex(2);
             }
             if (StringUtil.isNotBlank(bean.getDisName())) {

+ 1 - 1
src/main/java/com/diagbot/process/BillProcess.java

@@ -91,7 +91,7 @@ public class BillProcess {
             // TODO 测试数据开始
             // if (billNeoDTO.getName().equals("普通胃镜检查")) {
             //     NodeNeoDTO sexNeo = new NodeNeoDTO();
-            //     sexNeo.setName("男");
+            //     sexNeo.setName("男");
             //     billNeoMaxDTO.setGender(sexNeo);
             //
             //     NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();

+ 23 - 6
src/main/java/com/diagbot/rule/GroupRule.java

@@ -9,6 +9,8 @@ import com.diagbot.util.MsgUtil;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * @description: 人群规则
@@ -29,16 +31,31 @@ public class GroupRule {
         List<NodeNeoDTO> group = billNeoMaxDTO.getGroup();
         for (NodeNeoDTO node : group) {
             // 妊娠目前从诊断里判断,包含“妊娠”
-            if ("妊娠".equals(node.getName())) {
-                List<Item> diag = wordCrfDTO.getDiag();
-                for (Item item : diag) {
-                    if (item.getUniqueName().contains("妊娠")) {
+            switch (node.getName()) {
+                case "妊娠":
+                    List<Item> diag = wordCrfDTO.getDiag();
+                    for (Item item : diag) {
+                        if (item.getUniqueName().contains("妊娠")) {
+                            BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(
+                                    billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
+                                    item.getUniqueName(), type, billNeoMaxDTO.getType());
+                            billMsgList.add(commonBillMsg);
+                        }
+                    }
+                    break;
+                case "月经期":
+                    String symptom = wordCrfDTO.getSymptom(); // 现病史内容
+                    String regex = "月经第(([零一二三四五六七八九十]{0,3})||([0-9]{0,2}))天";
+                    Pattern pattern = Pattern.compile(regex);
+                    Matcher matcher = pattern.matcher(symptom);
+                    boolean rs = matcher.find();
+                    if (rs) {
                         BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(
                                 billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                                item.getUniqueName(), type, billNeoMaxDTO.getType());
+                                "月经期", type, billNeoMaxDTO.getType());
                         billMsgList.add(commonBillMsg);
                     }
-                }
+                    break;
             }
         }
     }

+ 6 - 6
src/main/java/com/diagbot/rule/SexRule.java

@@ -31,18 +31,18 @@ public class SexRule {
             String sex = nodeNeoDTO.getName();
             String sexStr = "";
             if (1 == wordCrfDTO.getSex()) {
-                sexStr = "男";
+                sexStr = "男";
             } else if (2 == wordCrfDTO.getSex()) {
-                sexStr = "女";
+                sexStr = "女";
             }
             if (sex.equals(sexStr)) {
-                if ("男".equals(sexStr)) {
+                if ("男".equals(sexStr)) {
                     BillMsg billMsg = MsgUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                            "男", type, billNeoMaxDTO.getType());
+                            "男", type, billNeoMaxDTO.getType());
                     billMsgList.add(billMsg);
-                } else if ("女".equals(sexStr)) {
+                } else if ("女".equals(sexStr)) {
                     BillMsg billMsg = MsgUtil.getCommonBillMsg(billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                            "女", type, billNeoMaxDTO.getType());
+                            "女", type, billNeoMaxDTO.getType());
                     billMsgList.add(billMsg);
                 }
             }