ソースを参照

医学规则测试

zhaops 4 年 前
コミット
8a57b8f1b9

+ 368 - 0
cdssman-service/src/main/java/com/diagbot/entity/ResultOtherLis.java

@@ -0,0 +1,368 @@
+package com.diagbot.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-19
+ */
+@TableName("test_result_other_lis")
+public class ResultOtherLis implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 测试结果id
+     */
+    private Long resultId;
+
+    /**
+     * 其他开单项类型
+     */
+    private String otherItemType;
+
+    /**
+     * 其他开单项名称
+     */
+    private String otherItemName;
+
+    /**
+     * 其他开单项名称(医院端)
+     */
+    private String otherItemHisName;
+
+    /**
+     * 其他开单项名称-细项(医院端)
+     */
+    private String otherItemHisDetailName;
+
+    /**
+     * 范围(0:范围内,1:范围外)
+     */
+    private Integer otherItemRange;
+
+    /**
+     * 提醒项类型
+     */
+    private String remindItemType;
+
+    /**
+     * 提醒项名称
+     */
+    private String remindItemName;
+
+    /**
+     * 提醒项名称(医院端)
+     */
+    private String remindItemHisName;
+
+    /**
+     * 提醒项名称-细项(医院端)
+     */
+    private String remindItemHisDetailName;
+
+    /**
+     * 输入值
+     */
+    private String inputValue;
+
+    /**
+     * 参考值
+     */
+    private String referenceValue;
+
+    /**
+     * 参考值(最大值)
+     */
+    private BigDecimal maxValue;
+
+    /**
+     * 参考值(最小值)
+     */
+    private BigDecimal minValue;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 输出结果(提醒文本)
+     */
+    private String output;
+
+    /**
+     * 期望输出结果(提醒文本)
+     */
+    private String expectedOutput;
+
+    /**
+     * 成功标志(1:成功,0:失败)
+     */
+    private Integer success;
+
+    /**
+     * 提示信息(异常提醒)
+     */
+    private String message;
+
+    /**
+     * 模拟入参
+     */
+    private String inputParams;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(Long resultId) {
+        this.resultId = resultId;
+    }
+    public String getOtherItemType() {
+        return otherItemType;
+    }
+
+    public void setOtherItemType(String otherItemType) {
+        this.otherItemType = otherItemType;
+    }
+    public String getOtherItemName() {
+        return otherItemName;
+    }
+
+    public void setOtherItemName(String otherItemName) {
+        this.otherItemName = otherItemName;
+    }
+    public String getOtherItemHisName() {
+        return otherItemHisName;
+    }
+
+    public void setOtherItemHisName(String otherItemHisName) {
+        this.otherItemHisName = otherItemHisName;
+    }
+    public String getOtherItemHisDetailName() {
+        return otherItemHisDetailName;
+    }
+
+    public void setOtherItemHisDetailName(String otherItemHisDetailName) {
+        this.otherItemHisDetailName = otherItemHisDetailName;
+    }
+    public Integer getOtherItemRange() {
+        return otherItemRange;
+    }
+
+    public void setOtherItemRange(Integer otherItemRange) {
+        this.otherItemRange = otherItemRange;
+    }
+    public String getRemindItemType() {
+        return remindItemType;
+    }
+
+    public void setRemindItemType(String remindItemType) {
+        this.remindItemType = remindItemType;
+    }
+    public String getRemindItemName() {
+        return remindItemName;
+    }
+
+    public void setRemindItemName(String remindItemName) {
+        this.remindItemName = remindItemName;
+    }
+    public String getRemindItemHisName() {
+        return remindItemHisName;
+    }
+
+    public void setRemindItemHisName(String remindItemHisName) {
+        this.remindItemHisName = remindItemHisName;
+    }
+    public String getRemindItemHisDetailName() {
+        return remindItemHisDetailName;
+    }
+
+    public void setRemindItemHisDetailName(String remindItemHisDetailName) {
+        this.remindItemHisDetailName = remindItemHisDetailName;
+    }
+    public String getInputValue() {
+        return inputValue;
+    }
+
+    public void setInputValue(String inputValue) {
+        this.inputValue = inputValue;
+    }
+    public String getReferenceValue() {
+        return referenceValue;
+    }
+
+    public void setReferenceValue(String referenceValue) {
+        this.referenceValue = referenceValue;
+    }
+    public BigDecimal getMaxValue() {
+        return maxValue;
+    }
+
+    public void setMaxValue(BigDecimal maxValue) {
+        this.maxValue = maxValue;
+    }
+    public BigDecimal getMinValue() {
+        return minValue;
+    }
+
+    public void setMinValue(BigDecimal minValue) {
+        this.minValue = minValue;
+    }
+    public String getUnit() {
+        return unit;
+    }
+
+    public void setUnit(String unit) {
+        this.unit = unit;
+    }
+    public String getOutput() {
+        return output;
+    }
+
+    public void setOutput(String output) {
+        this.output = output;
+    }
+    public String getExpectedOutput() {
+        return expectedOutput;
+    }
+
+    public void setExpectedOutput(String expectedOutput) {
+        this.expectedOutput = expectedOutput;
+    }
+    public Integer getSuccess() {
+        return success;
+    }
+
+    public void setSuccess(Integer success) {
+        this.success = success;
+    }
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+    public String getInputParams() {
+        return inputParams;
+    }
+
+    public void setInputParams(String inputParams) {
+        this.inputParams = inputParams;
+    }
+
+    @Override
+    public String toString() {
+        return "ResultOtherLis{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", resultId=" + resultId +
+            ", otherItemType=" + otherItemType +
+            ", otherItemName=" + otherItemName +
+            ", otherItemHisName=" + otherItemHisName +
+            ", otherItemHisDetailName=" + otherItemHisDetailName +
+            ", otherItemRange=" + otherItemRange +
+            ", remindItemType=" + remindItemType +
+            ", remindItemName=" + remindItemName +
+            ", remindItemHisName=" + remindItemHisName +
+            ", remindItemHisDetailName=" + remindItemHisDetailName +
+            ", inputValue=" + inputValue +
+            ", referenceValue=" + referenceValue +
+            ", maxValue=" + maxValue +
+            ", minValue=" + minValue +
+            ", unit=" + unit +
+            ", output=" + output +
+            ", expectedOutput=" + expectedOutput +
+            ", success=" + success +
+            ", message=" + message +
+            ", inputParams=" + inputParams +
+        "}";
+    }
+}

+ 13 - 0
cdssman-service/src/main/java/com/diagbot/facade/ResultOtherLisFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.ResultOtherLisServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/19 16:46
+ */
+@Component
+public class ResultOtherLisFacade extends ResultOtherLisServiceImpl {
+}

+ 223 - 1
cdssman-service/src/main/java/com/diagbot/facade/RuleConvertFacade.java

@@ -7,15 +7,21 @@ import com.diagbot.entity.ResultBill;
 import com.diagbot.entity.ResultCritical;
 import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.entity.ResultHighriskOperation;
+import com.diagbot.entity.ResultOtherLis;
 import com.diagbot.entity.node.BillItem;
 import com.diagbot.entity.node.LisCritical;
 import com.diagbot.entity.node.LisName;
+import com.diagbot.entity.node.LisRemind;
 import com.diagbot.entity.node.MedNameRegName;
 import com.diagbot.entity.node.MedRegName;
 import com.diagbot.entity.node.PacsCritical;
 import com.diagbot.entity.node.TransfusionRemind;
 import com.diagbot.entity.node.YiBaoOperationName;
+import com.diagbot.entity.relationship.LisRemindGroup;
+import com.diagbot.entity.relationship.LisRemindMedicine;
+import com.diagbot.entity.relationship.LisRemindYiBaoDiseaseName;
 import com.diagbot.enums.GraphLabelEnum;
+import com.diagbot.enums.NeoEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.enums.TypeEnum;
 import com.diagbot.repository.MedicineRepository;
@@ -35,6 +41,7 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -668,7 +675,7 @@ public class RuleConvertFacade {
             result.setLevel(item.getOpgrade());
             //带条件高危手术
             if (item.getOpgrade().equals("2")) {
-                if (condMap == null || condMap.size() == 0||StringUtil.isBlank(item.getHighriskcond())) {
+                if (condMap == null || condMap.size() == 0 || StringUtil.isBlank(item.getHighriskcond())) {
                     result.setSuccess(0);
                     result.setMessage("缺少高危条件");
                     retOptList.add(result);
@@ -945,6 +952,144 @@ public class RuleConvertFacade {
         return retList;
     }
 
+    /**
+     * 其他值提醒-化验
+     *
+     * @param items
+     * @param hospitalId
+     * @return
+     */
+    public List<ResultOtherLis> otherRuleConvert_lis(List<LisRemind> items, Long hospitalId) {
+        List<ResultOtherLis> retList = Lists.newLinkedList();
+        List<ResultOtherLis> retOtherList = Lists.newLinkedList();
+        List<ResultOtherLis> retMappingList = Lists.newLinkedList();
+
+        Map<String, Map<String, Map<String, List<Long>>>> lisConfigMap = lisConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, Map<String, List<Long>>>> drugConfigMap = drugConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> diseaseConfigMap = diseaseConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+
+        if (ListUtil.isEmpty(items)) {
+            return retList;
+        }
+
+        for (LisRemind item : items) {
+            ResultOtherLis result = new ResultOtherLis();
+            result.setOtherItemType(GraphLabelEnum.LisName.getName());
+            result.setOtherItemName(item.getLisname());
+            result.setOtherItemRange(item.getRange());
+            if (item.getMaxval() != null) {
+                result.setMaxValue(BigDecimal.valueOf(item.getMaxval()));
+            }
+            if (item.getMinval() != null) {
+                result.setMinValue((BigDecimal.valueOf(item.getMinval())));
+            }
+            result.setUnit(item.getUnit());
+
+            //相关诊断
+            Set<LisRemindYiBaoDiseaseName> lisRemindYiBaoDiseaseNameSet = item.getLisReminddisease();
+            if (lisRemindYiBaoDiseaseNameSet != null && lisRemindYiBaoDiseaseNameSet.size() > 0) {
+                lisRemindYiBaoDiseaseNameSet.forEach(lisDis -> {
+                    if (lisDis.getYiBaoDiseaseName() != null) {
+                        result.setRemindItemType(GraphLabelEnum.YiBaoDiseaseName.getName());
+                        result.setRemindItemName(lisDis.getYiBaoDiseaseName().getName());
+                        if (diseaseConfigMap.containsKey(lisDis.getYiBaoDiseaseName().getName())) {
+                            Map<String, List<Long>> subMap = diseaseConfigMap.get(lisDis.getYiBaoDiseaseName().getName());
+                            if (subMap != null && subMap.size() > 0) {
+                                subMap.entrySet().forEach(subEntry -> {
+                                    ResultOtherLis resultExt = new ResultOtherLis();
+                                    BeanUtil.copyProperties(result, resultExt);
+                                    resultExt.setRemindItemHisName(subEntry.getKey());
+                                    retOtherList.add(resultExt);
+                                });
+                            } else {
+                                result.setSuccess(0);
+                                result.setMessage("提醒项缺少医院端映射;");
+                                retOtherList.add(result);
+                            }
+                        } else {
+                            result.setSuccess(0);
+                            result.setMessage("提醒项缺少医院端映射;");
+                            retOtherList.add(result);
+                        }
+                    }
+                });
+            }
+
+            //相关禁忌人群
+            Set<LisRemindGroup> lisRemindGroupSet = item.getLisRemindgroup();
+            if (lisRemindGroupSet != null && lisRemindGroupSet.size() > 0) {
+                lisRemindGroupSet.forEach(lisGroup -> {
+                    if (lisGroup.getGroup() != null) {
+                        result.setRemindItemType(GraphLabelEnum.Group.getName());
+                        result.setRemindItemName(lisGroup.getGroup().getName());
+                        retOtherList.add(result);
+                    }
+                });
+            }
+
+            //相关药品
+            Set<LisRemindMedicine> lisRemindMedicineSet = item.getLisRemindmedicines();
+            if (lisRemindMedicineSet != null && lisRemindMedicineSet.size() > 0) {
+                lisRemindMedicineSet.forEach(lisMed -> {
+                    if (lisMed.getMedicine() != null) {
+                        result.setRemindItemType(GraphLabelEnum.Medicine.getName());
+                        result.setRemindItemName(lisMed.getMedicine().getName());
+                        if (drugConfigMap.containsKey(lisMed.getMedicine().getName())) {
+                            Map<String, Map<String, List<Long>>> subMap = drugConfigMap.get(lisMed.getMedicine().getName());
+                            if (subMap != null && subMap.size() > 0) {
+                                subMap.entrySet().forEach(subEntry -> {
+                                    ResultOtherLis resultExt = new ResultOtherLis();
+                                    BeanUtil.copyProperties(result, resultExt);
+                                    resultExt.setRemindItemHisName(subEntry.getKey());
+                                    retOtherList.add(resultExt);
+                                });
+                            } else {
+                                result.setSuccess(0);
+                                result.setMessage("提醒项缺少医院端映射;");
+                                retOtherList.add(result);
+                            }
+                        } else {
+                            result.setSuccess(0);
+                            result.setMessage("提醒项缺少医院端映射;");
+                            retOtherList.add(result);
+                        }
+                    }
+                });
+            }
+        }
+
+        for (ResultOtherLis result : retOtherList) {
+
+            Map<String, Map<String, List<Long>>> subMap = lisConfigMap.get(result.getOtherItemName());
+            if (subMap != null && subMap.size() > 0) {
+                subMap.entrySet().forEach(subEntry -> {
+                    ResultOtherLis resultExt = new ResultOtherLis();
+                    BeanUtil.copyProperties(result, resultExt);
+                    resultExt.setOtherItemHisName(subEntry.getKey());
+                    if (subEntry.getValue() != null) {
+                        subEntry.getValue().keySet().forEach(thirdKey -> {
+                            ResultOtherLis resultLisExt = new ResultOtherLis();
+                            BeanUtil.copyProperties(resultExt, resultLisExt);
+                            resultLisExt.setOtherItemHisDetailName(thirdKey);
+                            retMappingList.add(resultLisExt);
+                        });
+                    } else {
+                        retMappingList.add(resultExt);
+                    }
+                });
+            } else {
+                result.setSuccess(0);
+                result.setMessage((StringUtil.isNotBlank(result.getMessage()) ? result.getMessage() : "") +
+                        "其他值缺少医院端映射;");
+                retMappingList.add(result);
+            }
+        }
+
+        retList = createOhterLisInputValue(retMappingList);
+
+        return retList;
+    }
+
     public MappingShortEntity setMappingShortEntity(String name, String hisName, String hisDetailName) {
         MappingShortEntity item = new MappingShortEntity();
         item.setName(name);
@@ -1121,6 +1266,58 @@ public class RuleConvertFacade {
         return retList;
     }
 
+    /**
+     * 模拟输入数值-其他值-化验
+     *
+     * @param resultList
+     * @return
+     */
+    public List<ResultOtherLis> createOhterLisInputValue(List<ResultOtherLis> resultList) {
+        List<ResultOtherLis> retList = Lists.newLinkedList();
+        if (ListUtil.isEmpty(resultList)) {
+            return retList;
+        }
+        for (ResultOtherLis result : resultList) {
+            if (result.getSuccess() != null && result.getSuccess().equals(0)) {
+                retList.add(result);
+                continue;
+            }
+            if (result.getMinValue() != null || result.getMaxValue() != null) {
+                if (result.getOtherItemRange() == null) {
+                    result.setOtherItemRange(0);
+                }
+                if (result.getOtherItemRange().equals(1)) {
+                    if (result.getMinValue() != null) {
+                        ResultOtherLis minResult = new ResultOtherLis();
+                        BeanUtil.copyProperties(result, minResult);
+                        minResult.setInputValue(random(null, result.getMinValue()).toString());
+                        BillMsg billMsg = getOtherLisMsg(result);
+                        minResult.setExpectedOutput(billMsg.getMsg());
+                        retList.add(minResult);
+                    }
+                    if (result.getMaxValue() != null) {
+                        ResultOtherLis maxResult = new ResultOtherLis();
+                        BeanUtil.copyProperties(result, maxResult);
+                        maxResult.setInputValue(random(result.getMaxValue(), null).toString());
+                        BillMsg billMsg = getOtherLisMsg(result);
+                        maxResult.setExpectedOutput(billMsg.getMsg());
+                        retList.add(maxResult);
+                    }
+                } else {
+                    result.setInputValue(random(result.getMinValue(), result.getMaxValue()).toString());
+                    BillMsg billMsg = getOtherLisMsg(result);
+                    result.setExpectedOutput(billMsg.getMsg());
+                    retList.add(result);
+                }
+            } else {
+                BillMsg billMsg = getOtherLisMsg(result);
+                result.setExpectedOutput(billMsg.getMsg());
+                retList.add(result);
+            }
+        }
+        return retList;
+    }
+
     /**
      * 模拟提示信息
      *
@@ -1334,6 +1531,31 @@ public class RuleConvertFacade {
         return billMsg;
     }
 
+    /**
+     * 模拟提示信息-其他化验
+     *
+     * @param result
+     * @return
+     */
+    public BillMsg getOtherLisMsg(ResultOtherLis result) {
+        BillMsg billMsg = new BillMsg();
+        String content = result.getOtherItemHisName();
+        if (StringUtil.isNotBlank(result.getOtherItemHisDetailName())
+                && !result.getOtherItemHisDetailName().equals(result.getOtherItemHisName())) {
+            content += result.getOtherItemHisDetailName();
+        }
+        if (StringUtil.isNotBlank(result.getInputValue())) {
+            content += trimZero(result.getInputValue());
+        }
+        if (result.getRemindItemType().equals(GraphLabelEnum.Medicine.getName())) {
+            billMsg = MsgUtil.getCommonOtherTipLisMsg(content, result.getRemindItemHisName(), TypeEnum.drug.getName());
+        } else if (result.getRemindItemType().equals(GraphLabelEnum.YiBaoDiseaseName.getName())) {
+            billMsg = MsgUtil.getCommonOtherTipLisMsg(content, result.getRemindItemHisName(), TypeEnum.disease.getName());
+        } else if (result.getRemindItemType().equals(GraphLabelEnum.Group.getName())) {
+            billMsg = MsgUtil.getCommonOtherTipLisMsg(content, result.getRemindItemName(), NeoEnum.group.getName());
+        }
+        return billMsg;
+    }
 
     /**
      * 生成随机数

+ 169 - 6
cdssman-service/src/main/java/com/diagbot/facade/RuleTestFacade.java

@@ -1,7 +1,5 @@
 package com.diagbot.facade;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.BillMsg;
@@ -17,27 +15,36 @@ import com.diagbot.entity.ResultCritical;
 import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.entity.ResultHighriskOperation;
 import com.diagbot.entity.ResultInfo;
+import com.diagbot.entity.ResultOtherLis;
 import com.diagbot.entity.TransfusionConfig;
 import com.diagbot.entity.node.BillItem;
 import com.diagbot.entity.node.LisCritical;
+import com.diagbot.entity.node.LisRemind;
 import com.diagbot.entity.node.MedRegName;
 import com.diagbot.entity.node.PacsCritical;
+import com.diagbot.entity.node.PacsRemind;
 import com.diagbot.entity.node.TransfusionRemind;
+import com.diagbot.entity.node.TransfusionSuggest;
 import com.diagbot.entity.node.YiBaoOperationName;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.NeoEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.enums.TypeEnum;
 import com.diagbot.repository.BillManRepository;
 import com.diagbot.repository.LisCriticalRepository;
+import com.diagbot.repository.LisRemindRepository;
 import com.diagbot.repository.MedRegNameRepository;
 import com.diagbot.repository.PacsCriticalRepository;
+import com.diagbot.repository.PacsRemindRepository;
 import com.diagbot.repository.TransfusionRemindRepository;
+import com.diagbot.repository.TransfusionSuggestRepository;
 import com.diagbot.repository.YiBaoOperationNameRepository;
 import com.diagbot.service.ResultBillService;
 import com.diagbot.service.ResultCriticalService;
 import com.diagbot.service.ResultHighriskDrugService;
 import com.diagbot.service.ResultHighriskOperationService;
 import com.diagbot.service.ResultInfoService;
+import com.diagbot.service.ResultOtherLisService;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ExcelUtils;
 import com.diagbot.util.FastJsonUtils;
@@ -49,6 +56,7 @@ import com.diagbot.vo.CriticalRuleVO;
 import com.diagbot.vo.HighriskRuleVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.IndicationPushVO;
+import com.diagbot.vo.OtherRuleVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -85,6 +93,9 @@ public class RuleTestFacade {
     @Autowired
     @Qualifier("resultHighriskOperationServiceImpl")
     private ResultHighriskOperationService resultHighriskOperationService;
+    @Autowired
+    @Qualifier("resultOtherLisServiceImpl")
+    private ResultOtherLisService resultOtherLisService;
 
 
     @Autowired
@@ -112,6 +123,12 @@ public class RuleTestFacade {
     private MedRegNameRepository medRegNameRepository;
     @Autowired
     private YiBaoOperationNameRepository yiBaoOperationNameRepository;
+    @Autowired
+    private LisRemindRepository lisRemindRepository;
+    @Autowired
+    private PacsRemindRepository pacsRemindRepository;
+    @Autowired
+    private TransfusionSuggestRepository transfusionSuggestRepository;
 
     @Autowired
     private UnUsedMappingFacade unUsedMappingFacade;
@@ -254,6 +271,49 @@ public class RuleTestFacade {
         return true;
     }
 
+    /**
+     * 其他值提醒-化验
+     *
+     * @param otherRuleVO
+     * @return
+     */
+    public Boolean otherLisRuleTest(OtherRuleVO otherRuleVO) {
+        Long hospitalId = otherRuleVO.getHospitalId();
+        List<LisRemind> items = lisRemindRepository.findByStatus(1);
+        //生成测试规则
+        List<ResultOtherLis> resultList = ruleConvertFacade.otherRuleConvert_lis(items, hospitalId);
+        //远程调用推理
+        List<ResultOtherLis> saveList = callOther_lis(resultList, hospitalId);
+        //保存测试结果
+        saveResultOther_lis(saveList, otherRuleVO);
+        return true;
+    }
+
+    /**
+     * 其他值提醒-辅检
+     *
+     * @param otherRuleVO
+     * @return
+     */
+    public Boolean otherPacsRuleTest(OtherRuleVO otherRuleVO) {
+        Long hospitalId = otherRuleVO.getHospitalId();
+        List<PacsRemind> items = pacsRemindRepository.findByStatus(1);
+
+        return true;
+    }
+
+    /**
+     * 其他值提醒-输血
+     *
+     * @param otherRuleVO
+     * @return
+     */
+    public Boolean otherTransfusionRuleTest(OtherRuleVO otherRuleVO) {
+        Long hospitalId = otherRuleVO.getHospitalId();
+        List<TransfusionSuggest> items = transfusionSuggestRepository.findByStatus(1);
+        return true;
+    }
+
 
     /**
      * 数据导出
@@ -338,7 +398,7 @@ public class RuleTestFacade {
                 retList.add(resultBill);
                 continue;
             }
-            IndicationPushVO indicationPushVO = searchDataFacade.creatBillVO(resultBill);
+            IndicationPushVO indicationPushVO = searchDataFacade.createBillVO(resultBill);
             indicationPushVO.setHospitalId(hospitalId);
 
             resultBill.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
@@ -392,7 +452,7 @@ public class RuleTestFacade {
                 retList.add(result);
                 continue;
             }
-            IndicationPushVO indicationPushVO = searchDataFacade.creatCriticalVO(result);
+            IndicationPushVO indicationPushVO = searchDataFacade.createCriticalVO(result);
             indicationPushVO.setHospitalId(hospitalId);
 
             result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
@@ -446,7 +506,7 @@ public class RuleTestFacade {
                 retList.add(result);
                 continue;
             }
-            IndicationPushVO indicationPushVO = searchDataFacade.creatHighriskVO_drug(result);
+            IndicationPushVO indicationPushVO = searchDataFacade.createHighriskVO_drug(result);
             indicationPushVO.setHospitalId(hospitalId);
 
             result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
@@ -500,7 +560,7 @@ public class RuleTestFacade {
                 retList.add(result);
                 continue;
             }
-            IndicationPushVO indicationPushVO = searchDataFacade.creatHighriskVO_operation(result);
+            IndicationPushVO indicationPushVO = searchDataFacade.createHighriskVO_operation(result);
             indicationPushVO.setHospitalId(hospitalId);
 
             result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
@@ -536,6 +596,66 @@ public class RuleTestFacade {
         return retList;
     }
 
+    /**
+     * 其他值提醒(化验)远程调用接口
+     *
+     * @param list
+     * @param hospitalId
+     * @return
+     */
+    public List<ResultOtherLis> callOther_lis(List<ResultOtherLis> list, Long hospitalId) {
+        List<ResultOtherLis> retList = Lists.newLinkedList();
+        if (ListUtil.isEmpty(list)) {
+            return retList;
+        }
+        for (ResultOtherLis result : list) {
+            if (result.getSuccess() != null
+                    && result.getSuccess().equals(0)) {
+                retList.add(result);
+                continue;
+            }
+            IndicationPushVO indicationPushVO = searchDataFacade.createOther_lis(result);
+            indicationPushVO.setHospitalId(hospitalId);
+
+            result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
+
+            RespDTO<IndicationDTO> respDTO = cdssCoreClient.indication(indicationPushVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                IndicationDTO data = respDTO.data;
+                List<BillMsg> billMsgList = data.getOtherList();
+                if (ListUtil.isEmpty(billMsgList)) {
+                    result.setSuccess(0);
+                    result.setMessage("其他值未提醒");
+                    retList.add(result);
+                } else {
+                    for (BillMsg billMsg : billMsgList) {
+                        if (!(StringUtil.isNotBlank(billMsg.getType())
+                                && (billMsg.getType().equals(TypeEnum.drug.getName())
+                                || billMsg.getType().equals(TypeEnum.disease.getName())
+                                || billMsg.getType().equals(NeoEnum.group.getName())))) {
+                            continue;
+                        }
+                        ResultOtherLis saveResult = new ResultOtherLis();
+                        BeanUtil.copyProperties(result, saveResult);
+                        saveResult.setOutput(billMsg.getMsg());
+                        if (saveResult.getOutput().equals(saveResult.getExpectedOutput())) {
+                            saveResult.setSuccess(1);
+                        } else {
+                            saveResult.setSuccess(0);
+                            saveResult.setMessage("提示内容与预期不符");
+                        }
+                        retList.add(saveResult);
+                    }
+                }
+            } else {
+                result.setSuccess(0);
+                result.setMessage("远程调用推理接口失败");
+                retList.add(result);
+            }
+        }
+        return retList;
+    }
+
     /**
      * 保存开单合理性测试结果
      *
@@ -709,4 +829,47 @@ public class RuleTestFacade {
         resultHighriskOperationService.saveOrUpdateBatch(list);
         return true;
     }
+
+    /**
+     * 保存其他值提醒(化验)测试结果
+     *
+     * @param list
+     * @param otherRuleVO
+     * @return
+     */
+    public Boolean saveResultOther_lis(List<ResultOtherLis> list, OtherRuleVO otherRuleVO) {
+        Date now = new Date();
+        Integer totleNum = list.size();
+        Integer successNum = list.stream().filter(i -> i.getSuccess().equals(1)).collect(Collectors.toList()).size();
+        Integer failedNum = list.stream().filter(i -> i.getSuccess().equals(0)).collect(Collectors.toList()).size();
+        QueryWrapper<ResultInfo> resultInfoQueryWrapper = new QueryWrapper<>();
+        resultInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", otherRuleVO.getHospitalId())
+                .eq("case_id", otherRuleVO.getCaseId());
+        ResultInfo resultInfo = resultInfoService.getOne(resultInfoQueryWrapper, false);
+        if (resultInfo == null) {
+            resultInfo = new ResultInfo();
+            resultInfo.setHospitalId(otherRuleVO.getHospitalId());
+            resultInfo.setCaseId(otherRuleVO.getCaseId());
+            resultInfo.setGmtCreate(now);
+        }
+        resultInfo.setGmtModified(now);
+        resultInfo.setRuleNum(totleNum);
+        resultInfo.setRuleSuccessNum(successNum);
+        resultInfo.setRuleFailedNum(failedNum);
+        resultInfoService.saveOrUpdate(resultInfo);
+
+        QueryWrapper<ResultOtherLis> resultOtherLisnQueryWrapper = new QueryWrapper<>();
+        resultOtherLisnQueryWrapper.eq("result_id", resultInfo.getId());
+        resultOtherLisService.remove(resultOtherLisnQueryWrapper);
+
+        for (ResultOtherLis result : list) {
+            result.setGmtCreate(now);
+            result.setGmtModified(now);
+            result.setResultId(resultInfo.getId());
+        }
+
+        resultOtherLisService.saveOrUpdateBatch(list);
+        return true;
+    }
 }

+ 55 - 4
cdssman-service/src/main/java/com/diagbot/facade/SearchDataFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.entity.ResultBill;
 import com.diagbot.entity.ResultCritical;
 import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.entity.ResultHighriskOperation;
+import com.diagbot.entity.ResultOtherLis;
 import com.diagbot.enums.GraphLabelEnum;
 import com.diagbot.enums.TypeEnum;
 import com.diagbot.util.StringUtil;
@@ -31,7 +32,7 @@ public class SearchDataFacade {
      * @param resultBill
      * @return
      */
-    public IndicationPushVO creatBillVO(ResultBill resultBill) {
+    public IndicationPushVO createBillVO(ResultBill resultBill) {
         IndicationPushVO indicationPushVO = new IndicationPushVO();
         indicationPushVO.setAge("20");
         indicationPushVO.setSex(3);
@@ -171,7 +172,7 @@ public class SearchDataFacade {
      * @param resultCritical
      * @return
      */
-    public IndicationPushVO creatCriticalVO(ResultCritical resultCritical) {
+    public IndicationPushVO createCriticalVO(ResultCritical resultCritical) {
         IndicationPushVO indicationPushVO = new IndicationPushVO();
         indicationPushVO.setSex(3);
         indicationPushVO.setRuleType("1");
@@ -220,7 +221,7 @@ public class SearchDataFacade {
      * @param result
      * @return
      */
-    public IndicationPushVO creatHighriskVO_drug(ResultHighriskDrug result) {
+    public IndicationPushVO createHighriskVO_drug(ResultHighriskDrug result) {
         IndicationPushVO indicationPushVO = new IndicationPushVO();
         indicationPushVO.setSex(3);
         indicationPushVO.setRuleType("3");
@@ -241,7 +242,7 @@ public class SearchDataFacade {
      * @param result
      * @return
      */
-    public IndicationPushVO creatHighriskVO_operation(ResultHighriskOperation result) {
+    public IndicationPushVO createHighriskVO_operation(ResultHighriskOperation result) {
         IndicationPushVO indicationPushVO = new IndicationPushVO();
         indicationPushVO.setSex(3);
         indicationPushVO.setRuleType("3");
@@ -309,4 +310,54 @@ public class SearchDataFacade {
 
         return indicationPushVO;
     }
+
+    /**
+     * 生成其他值提醒(化验)入参
+     *
+     * @param result
+     * @return
+     */
+    public IndicationPushVO createOther_lis(ResultOtherLis result) {
+        IndicationPushVO indicationPushVO = new IndicationPushVO();
+        indicationPushVO.setSex(3);
+        indicationPushVO.setRuleType("4");
+        indicationPushVO.setAge("20");
+
+        Lis lis = new Lis();
+        lis.setName(result.getOtherItemHisName());
+        lis.setDetailName(result.getOtherItemHisDetailName());
+        lis.setUniqueName(result.getOtherItemName());
+        lis.setUnits(result.getUnit());
+        if (result.getMinValue() != null || result.getMaxValue() != null) {
+            lis.setValue(Double.valueOf(result.getInputValue()));
+        } else {
+            lis.setOtherValue(result.getInputValue());
+        }
+        if (result.getMaxValue() != null) {
+            lis.setMaxValue(result.getMaxValue().doubleValue());
+        }
+        if (result.getMinValue() != null) {
+            lis.setMinValue(result.getMinValue().doubleValue());
+        }
+        indicationPushVO.getLis().add(lis);
+
+        if (result.getRemindItemType().equals(GraphLabelEnum.Medicine.getName())) {
+            Drug drug = new Drug();
+            drug.setName(result.getRemindItemHisName());
+            drug.setUniqueName(result.getRemindItemName());
+            indicationPushVO.getDrug().add(drug);
+        } else if (result.getRemindItemType().equals(GraphLabelEnum.YiBaoDiseaseName.getName())) {
+            Item item = new Item();
+            item.setName(result.getRemindItemHisName());
+            item.setUniqueName(result.getRemindItemName());
+            indicationPushVO.getDiag().add(item);
+        } else if (result.getRemindItemType().equals(GraphLabelEnum.Group.getName())) {
+            indicationPushVO.setSymptom(indicationPushVO.getSymptom() +
+                    result.getRemindItemName() +
+                    (result.getInputValue() != null ? result.getInputValue() : "") +
+                    (StringUtil.isNotBlank(result.getUnit()) ? result.getUnit() : "") +
+                    ",");
+        }
+        return indicationPushVO;
+    }
 }

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/mapper/ResultOtherLisMapper.java

@@ -0,0 +1,20 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.ResultOtherLis;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.ResultPageVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-19
+ */
+public interface ResultOtherLisMapper extends BaseMapper<ResultOtherLis> {
+
+    IPage<ResultOtherLis> getPage(@Param("resultPageVO") ResultPageVO resultPageVO);
+}

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/repository/LisRemindRepository.java

@@ -15,6 +15,8 @@ public interface LisRemindRepository extends Neo4jRepository<LisRemind, Long> {
 
     List<LisRemind> findByNameContaining(String name);
 
+    List<LisRemind> findByStatus(Integer status);
+
     @Query("create (n:化验提醒指标) \n" +
             "set  " +
             "n.name = :#{#entityInfo.name}," +

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/repository/PacsRemindRepository.java

@@ -15,6 +15,8 @@ public interface PacsRemindRepository extends Neo4jRepository<PacsRemind, Long>
 
     List<PacsRemind> findByNameContaining(String name);
 
+    List<PacsRemind> findByStatus(Integer status);
+
     @Query("create (n:辅检提醒指标) \n" +
             "set  " +
             "n.name = :#{#entityInfo.name}," +

+ 2 - 1
cdssman-service/src/main/java/com/diagbot/repository/TransfusionSuggestRepository.java

@@ -15,6 +15,8 @@ public interface TransfusionSuggestRepository extends Neo4jRepository<Transfusio
 
     List<TransfusionSuggest> findByNameContaining(String name);
 
+    List<TransfusionSuggest> findByStatus(Integer status);
+
     @Query("MATCH (n:建议输血提醒) where n.输注类型 contains {name} return distinct(n.输注类型)")
     List<String> findTransfusionByName(@Param("name") String name);
 
@@ -31,4 +33,3 @@ public interface TransfusionSuggestRepository extends Neo4jRepository<Transfusio
             "RETURN n,[ (n)-[r]->(m) | [ r, m ] ], ID(n)\n")
     TransfusionSuggest create(@Param("entityInfo") EntityInfo entityInfo);
 }
-

+ 19 - 0
cdssman-service/src/main/java/com/diagbot/service/ResultOtherLisService.java

@@ -0,0 +1,19 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.ResultOtherLis;
+import com.diagbot.vo.ResultPageVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-19
+ */
+public interface ResultOtherLisService extends IService<ResultOtherLis> {
+    IPage<ResultOtherLis> getPage(@Param("resultPageVO") ResultPageVO resultPageVO);
+}

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/ResultOtherLisServiceImpl.java

@@ -0,0 +1,26 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.ResultOtherLis;
+import com.diagbot.mapper.ResultOtherLisMapper;
+import com.diagbot.service.ResultOtherLisService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.ResultPageVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-19
+ */
+@Service
+public class ResultOtherLisServiceImpl extends ServiceImpl<ResultOtherLisMapper, ResultOtherLis> implements ResultOtherLisService {
+
+    public IPage<ResultOtherLis> getPage(@Param("resultPageVO") ResultPageVO resultPageVO) {
+        return baseMapper.getPage(resultPageVO);
+    }
+}

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/vo/OtherRuleVO.java

@@ -0,0 +1,26 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/19 13:53
+ */
+@Getter
+@Setter
+public class OtherRuleVO extends HospitalIdVO {
+    /**
+     * 测试类型
+     */
+    @NotNull(message = "请输入测试案例id")
+    private Long caseId;
+    /**
+     * 其他提醒测试规则类型(1:化验,2:辅检,3:输血)
+     */
+    @NotNull(message = "请输入其他提醒测试规则类型(1:化验,2:辅检,3:输血)")
+    private Integer otherType;
+}

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/vo/ResultPageVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/19 15:50
+ */
+@Getter
+@Setter
+public class ResultPageVO extends Page {
+    private Integer success;
+    private Long resultId;
+}

+ 32 - 0
cdssman-service/src/main/java/com/diagbot/web/RuleTestController.java

@@ -8,20 +8,24 @@ import com.diagbot.entity.ResultBill;
 import com.diagbot.entity.ResultCritical;
 import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.entity.ResultHighriskOperation;
+import com.diagbot.entity.ResultOtherLis;
 import com.diagbot.facade.ResultBillFacade;
 import com.diagbot.facade.ResultCriticalFacade;
 import com.diagbot.facade.ResultHighriskDrugFacade;
 import com.diagbot.facade.ResultHighriskOperationFacade;
 import com.diagbot.facade.ResultInfoFacade;
+import com.diagbot.facade.ResultOtherLisFacade;
 import com.diagbot.facade.RuleTestFacade;
 import com.diagbot.vo.BillRuleVO;
 import com.diagbot.vo.CriticalRuleVO;
 import com.diagbot.vo.HighriskRuleVO;
 import com.diagbot.vo.HospitalIdVO;
+import com.diagbot.vo.OtherRuleVO;
 import com.diagbot.vo.ResultBillPageVO;
 import com.diagbot.vo.ResultCriticalPageVO;
 import com.diagbot.vo.ResultHighriskDrugPageVO;
 import com.diagbot.vo.ResultHighriskOperationPageVO;
+import com.diagbot.vo.ResultPageVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,6 +59,8 @@ public class RuleTestController {
     private ResultHighriskDrugFacade resultHighriskDrugFacade;
     @Autowired
     private ResultHighriskOperationFacade resultHighriskOperationFacade;
+    @Autowired
+    private ResultOtherLisFacade resultOtherLisFacade;
 
     /**
      * 数据导出
@@ -178,4 +184,30 @@ public class RuleTestController {
         }
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "其他值提醒(化验)测试列表[zhaops]",
+            notes = "success: 成功标志(0:失败,1:成功) <br>" +
+                    "resultId: 结果id <br>")
+    @PostMapping("/getResultOtherLisPage")
+    @SysLogger("getResultOtherLisPage")
+    public RespDTO<IPage<ResultOtherLis>> getResultOtherLisPage(@Valid @RequestBody ResultPageVO resultPageVO) {
+        IPage<ResultOtherLis> data = resultOtherLisFacade.getPage(resultPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "其他值提醒规则测试[zhaops]",
+            notes = "hospitalId: 医院Id <br>" +
+                    "caseId: 测试用例id<br>" +
+                    "otherType:其他提醒测试规则类型(1:化验,2:辅检,3:输血) <br>")
+    @PostMapping("/otherRuleTest")
+    @SysLogger("otherRuleTest")
+    public RespDTO<Boolean> otherRuleTest(@Valid @RequestBody OtherRuleVO otherRuleVO) {
+        Boolean data = false;
+        if (otherRuleVO.getOtherType().equals(1)) {
+            data = ruleTestFacade.otherLisRuleTest(otherRuleVO);
+        } else if (otherRuleVO.getOtherType().equals(2)) {
+
+        }
+        return RespDTO.onSuc(data);
+    }
 }

+ 48 - 0
cdssman-service/src/main/resources/mapper/ResultOtherLisMapper.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.ResultOtherLisMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ResultOtherLis">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="result_id" property="resultId" />
+        <result column="other_item_type" property="otherItemType" />
+        <result column="other_item_name" property="otherItemName" />
+        <result column="other_item_his_name" property="otherItemHisName" />
+        <result column="other_item_his_detail_name" property="otherItemHisDetailName" />
+        <result column="other_item_range" property="otherItemRange" />
+        <result column="remind_item_type" property="remindItemType" />
+        <result column="remind_item_name" property="remindItemName" />
+        <result column="remind_item_his_name" property="remindItemHisName" />
+        <result column="remind_item_his_detail_name" property="remindItemHisDetailName" />
+        <result column="input_value" property="inputValue" />
+        <result column="reference_value" property="referenceValue" />
+        <result column="max_value" property="maxValue" />
+        <result column="min_value" property="minValue" />
+        <result column="unit" property="unit" />
+        <result column="output" property="output" />
+        <result column="expected_output" property="expectedOutput" />
+        <result column="success" property="success" />
+        <result column="message" property="message" />
+        <result column="input_params" property="inputParams" />
+    </resultMap>
+
+    <!-- 分页查询 -->
+    <select id="getPage" resultType="com.diagbot.entity.ResultOtherLis">
+        select a.*
+        from test_result_other_lis a
+        where a.is_deleted='N'
+        <if test="resultPageVO.success != null">
+            and a.success = #{resultPageVO.success}
+        </if>
+        <if test="resultPageVO.resultId != null">
+            and a.result_id = #{resultPageVO.resultId}
+        </if>
+    </select>
+
+</mapper>