Pārlūkot izejas kodu

医学规则测试

zhaops 4 gadi atpakaļ
vecāks
revīzija
14db0581ed

+ 239 - 0
cdssman-service/src/main/java/com/diagbot/entity/ResultHighriskDrug.java

@@ -0,0 +1,239 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-14
+ */
+@TableName("test_result_highrisk_drug")
+public class ResultHighriskDrug 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 highriskItemName;
+
+    private String highriskItemRegName;
+
+    private String highriskItemHisName;
+
+    private String highriskItemForm;
+
+    /**
+     * 药品高危级别(A级高危、B级高危、C级高危)
+     */
+    private String highriskLevel;
+
+    /**
+     * 输出结果(提醒文本)
+     */
+    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 getHighriskItemName() {
+        return highriskItemName;
+    }
+
+    public void setHighriskItemName(String highriskItemName) {
+        this.highriskItemName = highriskItemName;
+    }
+    public String getHighriskItemRegName() {
+        return highriskItemRegName;
+    }
+
+    public void setHighriskItemRegName(String highriskItemRegName) {
+        this.highriskItemRegName = highriskItemRegName;
+    }
+    public String getHighriskItemHisName() {
+        return highriskItemHisName;
+    }
+
+    public void setHighriskItemHisName(String highriskItemHisName) {
+        this.highriskItemHisName = highriskItemHisName;
+    }
+    public String getHighriskItemForm() {
+        return highriskItemForm;
+    }
+
+    public void setHighriskItemForm(String highriskItemForm) {
+        this.highriskItemForm = highriskItemForm;
+    }
+    public String getHighriskLevel() {
+        return highriskLevel;
+    }
+
+    public void setHighriskLevel(String highriskLevel) {
+        this.highriskLevel = highriskLevel;
+    }
+    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 "ResultHighriskDrug{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", resultId=" + resultId +
+            ", highriskItemName=" + highriskItemName +
+            ", highriskItemRegName=" + highriskItemRegName +
+            ", highriskItemHisName=" + highriskItemHisName +
+            ", highriskItemForm=" + highriskItemForm +
+            ", highriskLevel=" + highriskLevel +
+            ", output=" + output +
+            ", expectedOutput=" + expectedOutput +
+            ", success=" + success +
+            ", message=" + message +
+            ", inputParams=" + inputParams +
+        "}";
+    }
+}

+ 4 - 0
cdssman-service/src/main/java/com/diagbot/entity/node/MedNameRegName.java

@@ -21,4 +21,8 @@ public class MedNameRegName {
      * 药品注册名称
      */
     private String medRegName;
+    /**
+     * 药品剂型
+     */
+    private String form;
 }

+ 73 - 0
cdssman-service/src/main/java/com/diagbot/facade/RuleConvertFacade.java

@@ -4,10 +4,12 @@ import com.diagbot.dto.BillMsg;
 import com.diagbot.entity.MappingShortEntity;
 import com.diagbot.entity.ResultBill;
 import com.diagbot.entity.ResultCritical;
+import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.entity.node.BillItem;
 import com.diagbot.entity.node.LisCritical;
 import com.diagbot.entity.node.LisName;
 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.enums.GraphLabelEnum;
@@ -534,6 +536,77 @@ public class RuleConvertFacade {
         return retList;
     }
 
+    /**
+     * 高危药品转换
+     * @param items
+     * @param hospitalId
+     * @return
+     */
+    public List<ResultHighriskDrug> highriskRuleConvert_drug(List<MedRegName> items,Long hospitalId) {
+        List<ResultHighriskDrug> retList = Lists.newLinkedList();
+        List<ResultHighriskDrug> retMedList = Lists.newLinkedList();
+        List<ResultHighriskDrug> retMappingList = Lists.newLinkedList();
+
+        if (ListUtil.isEmpty(items)) {
+            return retList;
+        }
+
+        //注册名映射通用名
+        List<MedNameRegName> medNameRegNameList = medicineRepository.findCustomByNameAndRegName(StatusEnum.Enable.getKey());
+        Map<String, List<MedNameRegName>> medRegMap
+                = EntityUtil.makeEntityListMap(medNameRegNameList, "medRegName");
+
+        Map<String, Map<String, Map<String, List<Long>>>> drugConfigMap = drugConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+
+        //注册名转通用名+剂型
+        for (MedRegName item : items) {
+            if (ListUtil.isNotEmpty(medRegMap.get(item.getName()))) {
+                medRegMap.get(item.getName()).forEach(drug -> {
+                    ResultHighriskDrug result = new ResultHighriskDrug();
+                    result.setHighriskItemRegName(item.getName());
+                    result.setHighriskItemName(drug.getMedName());
+                    //result.setHighriskItemForm(drug.getForm());
+                    result.setHighriskLevel(item.getRisklevel());
+                    retMedList.add(result);
+                });
+            } else {
+                ResultHighriskDrug result = new ResultHighriskDrug();
+                result.setHighriskItemRegName(item.getName());
+                result.setHighriskLevel(item.getRisklevel());
+                result.setSuccess(0);
+                result.setMessage("药品注册名称找不到对应药品通用名称;");
+                retMedList.add(result);
+            }
+        }
+
+        //医院端术语映射
+        for (ResultHighriskDrug result : retMedList) {
+            Map<String, Map<String, List<Long>>> subMap = drugConfigMap.get(result.getHighriskItemName());
+            if (subMap != null && subMap.size() > 0) {
+                subMap.entrySet().forEach(entry -> {
+                    ResultHighriskDrug resultExt = new ResultHighriskDrug();
+                    BeanUtil.copyProperties(result, resultExt);
+                    resultExt.setHighriskItemHisName(entry.getKey());
+                    if (entry.getValue() != null && entry.getValue().size() > 0) {
+                        entry.getValue().keySet().forEach(form -> {
+                            ResultHighriskDrug resultForm = new ResultHighriskDrug();
+                            BeanUtil.copyProperties(resultExt, resultForm);
+                            resultForm.setHighriskItemForm(form);
+                            retMappingList.add(resultForm);
+                        });
+                    } else {
+                        retMappingList.add(resultExt);
+                    }
+                });
+            } else {
+                result.setSuccess(0);
+                result.setMessage("高危药品缺少医院端映射;");
+                retMappingList.add(result);
+            }
+        }
+        return retMappingList;
+    }
+
     public MappingShortEntity setMappingShortEntity(String name, String hisName, String hisDetailName) {
         MappingShortEntity item = new MappingShortEntity();
         item.setName(name);

+ 125 - 3
cdssman-service/src/main/java/com/diagbot/facade/RuleTestFacade.java

@@ -12,30 +12,35 @@ import com.diagbot.entity.OperationConfig;
 import com.diagbot.entity.PacsConfig;
 import com.diagbot.entity.ResultBill;
 import com.diagbot.entity.ResultCritical;
+import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.entity.ResultInfo;
 import com.diagbot.entity.TransfusionConfig;
 import com.diagbot.entity.node.BillItem;
 import com.diagbot.entity.node.LisCritical;
+import com.diagbot.entity.node.MedRegName;
 import com.diagbot.entity.node.PacsCritical;
 import com.diagbot.entity.node.TransfusionRemind;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.repository.BillManRepository;
 import com.diagbot.repository.LisCriticalRepository;
+import com.diagbot.repository.MedRegNameRepository;
 import com.diagbot.repository.PacsCriticalRepository;
 import com.diagbot.repository.TransfusionRemindRepository;
 import com.diagbot.service.ResultBillService;
 import com.diagbot.service.ResultCriticalService;
+import com.diagbot.service.ResultHighriskDrugService;
 import com.diagbot.service.ResultInfoService;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ExcelUtils;
 import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.BillRuleVO;
 import com.diagbot.vo.CriticalRuleVO;
+import com.diagbot.vo.HighriskRuleVO;
 import com.diagbot.vo.HospitalIdVO;
 import com.diagbot.vo.IndicationPushVO;
-import com.diagbot.vo.BillRuleVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -66,6 +71,9 @@ public class RuleTestFacade {
     @Autowired
     @Qualifier("resultCriticalServiceImpl")
     private ResultCriticalService resultCriticalService;
+    @Autowired
+    @Qualifier("resultHighriskDrugServiceImpl")
+    private ResultHighriskDrugService resultHighriskDrugService;
 
     @Autowired
     private LisConfigFacade lisConfigFacade;
@@ -88,6 +96,8 @@ public class RuleTestFacade {
     private PacsCriticalRepository pacsCriticalRepository;
     @Autowired
     private TransfusionRemindRepository transfusionRemindRepository;
+    @Autowired
+    private MedRegNameRepository medRegNameRepository;
 
     @Autowired
     private UnUsedMappingFacade unUsedMappingFacade;
@@ -196,6 +206,23 @@ public class RuleTestFacade {
         return true;
     }
 
+    /**
+     * 高危药品测试
+     *
+     * @return
+     */
+    public Boolean highriskDrugRuleTest(HighriskRuleVO highriskRuleVO) {
+        Long hospitalId = highriskRuleVO.getHospitalId();
+        List<MedRegName> items = medRegNameRepository.findByStatusAndRisklevelExists(1);
+        //生成测试规则
+        List<ResultHighriskDrug> resultList = ruleConvertFacade.highriskRuleConvert_drug(items, hospitalId);
+        //远程调用推理
+        List<ResultHighriskDrug> saveList = callHighRisk_drug(resultList, hospitalId);
+        //保存测试结果
+        saveResultHighrisk_drug(saveList, highriskRuleVO);
+        return true;
+    }
+
 
     /**
      * 数据导出
@@ -370,6 +397,60 @@ public class RuleTestFacade {
         return retList;
     }
 
+    /**
+     * 危急值远程调用接口
+     *
+     * @param list
+     * @param hospitalId
+     * @return
+     */
+    public List<ResultHighriskDrug> callHighRisk_drug(List<ResultHighriskDrug> list, Long hospitalId) {
+        List<ResultHighriskDrug> retList = Lists.newLinkedList();
+        if (ListUtil.isEmpty(list)) {
+            return retList;
+        }
+        for (ResultHighriskDrug result : list) {
+            if (result.getSuccess() != null
+                    && result.getSuccess().equals(0)) {
+                retList.add(result);
+                continue;
+            }
+            IndicationPushVO indicationPushVO = searchDataFacade.creatHighriskVO_drug(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.getHighRiskList();
+                if (ListUtil.isEmpty(billMsgList)) {
+                    result.setSuccess(0);
+                    result.setMessage("未提示开单项");
+                    retList.add(result);
+                } else {
+                    for (BillMsg billMsg : billMsgList) {
+                        ResultHighriskDrug saveResult = new ResultHighriskDrug();
+                        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;
+    }
+
     /**
      * 保存开单合理性测试结果
      *
@@ -378,7 +459,6 @@ public class RuleTestFacade {
      * @return
      */
     public Boolean saveResultBill(List<ResultBill> list, BillRuleVO billRuleVO) {
-        //保存测试结果
         Date now = new Date();
         Integer totleNum = list.size();
         Integer successNum = list.stream().filter(i -> i.getSuccess().equals(1)).collect(Collectors.toList()).size();
@@ -423,7 +503,6 @@ public class RuleTestFacade {
      * @return
      */
     public Boolean saveResultCritical(List<ResultCritical> list, CriticalRuleVO criticalRuleVO) {
-        //保存测试结果
         Date now = new Date();
         Integer totleNum = list.size();
         Integer successNum = list.stream().filter(i -> i.getSuccess().equals(1)).collect(Collectors.toList()).size();
@@ -459,4 +538,47 @@ public class RuleTestFacade {
         resultCriticalService.saveOrUpdateBatch(list);
         return true;
     }
+
+    /**
+     * 保存高危药品测试结果
+     *
+     * @param list
+     * @param highriskRuleVO
+     * @return
+     */
+    public Boolean saveResultHighrisk_drug(List<ResultHighriskDrug> list, HighriskRuleVO highriskRuleVO) {
+        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", highriskRuleVO.getHospitalId())
+                .eq("case_id", highriskRuleVO.getCaseId());
+        ResultInfo resultInfo = resultInfoService.getOne(resultInfoQueryWrapper, false);
+        if (resultInfo == null) {
+            resultInfo = new ResultInfo();
+            resultInfo.setHospitalId(highriskRuleVO.getHospitalId());
+            resultInfo.setCaseId(highriskRuleVO.getCaseId());
+            resultInfo.setGmtCreate(now);
+        }
+        resultInfo.setGmtModified(now);
+        resultInfo.setRuleNum(totleNum);
+        resultInfo.setRuleSuccessNum(successNum);
+        resultInfo.setRuleFailedNum(failedNum);
+        resultInfoService.saveOrUpdate(resultInfo);
+
+        QueryWrapper<ResultHighriskDrug> resultHighriskDrugQueryWrapper = new QueryWrapper<>();
+        resultHighriskDrugQueryWrapper.eq("result_id", resultInfo.getId());
+        resultHighriskDrugService.remove(resultHighriskDrugQueryWrapper);
+
+        for (ResultHighriskDrug result : list) {
+            result.setGmtCreate(now);
+            result.setGmtModified(now);
+            result.setResultId(resultInfo.getId());
+        }
+
+        resultHighriskDrugService.saveOrUpdateBatch(list);
+        return true;
+    }
 }

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/facade/SearchDataFacade.java

@@ -5,6 +5,7 @@ import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.entity.ResultBill;
 import com.diagbot.entity.ResultCritical;
+import com.diagbot.entity.ResultHighriskDrug;
 import com.diagbot.enums.GraphLabelEnum;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.Drug;
@@ -210,4 +211,25 @@ public class SearchDataFacade {
         }
         return indicationPushVO;
     }
+
+    /**
+     * 生成危急值入参
+     *
+     * @param result
+     * @return
+     */
+    public IndicationPushVO creatHighriskVO_drug(ResultHighriskDrug result) {
+        IndicationPushVO indicationPushVO = new IndicationPushVO();
+        indicationPushVO.setSex(3);
+        indicationPushVO.setRuleType("3");
+        indicationPushVO.setAge("20");
+
+        Drug drug = new Drug();
+        drug.setName(result.getHighriskItemHisName());
+        drug.setUniqueName(result.getHighriskItemName());
+        drug.setForm(result.getHighriskItemForm());
+        indicationPushVO.getDrugOrder().add(drug);
+
+        return indicationPushVO;
+    }
 }

+ 16 - 0
cdssman-service/src/main/java/com/diagbot/mapper/ResultHighriskDrugMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.ResultHighriskDrug;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-14
+ */
+public interface ResultHighriskDrugMapper extends BaseMapper<ResultHighriskDrug> {
+
+}

+ 3 - 1
cdssman-service/src/main/java/com/diagbot/repository/MedRegNameRepository.java

@@ -15,7 +15,9 @@ public interface MedRegNameRepository extends Neo4jRepository<MedRegName, Long>
 
     List<MedRegName> findByNameContaining(String name);
 
-    @Query("match (n:药品注册名称) \n" +
+    List<MedRegName> findByStatusAndRisklevelExists(Integer status);
+
+  @Query("match (n:药品注册名称) \n" +
             "where id(n) = :#{#entityInfo.id} \n" +
             "set  " +
             "n.name = :#{#entityInfo.name}," +

+ 5 - 0
cdssman-service/src/main/java/com/diagbot/repository/MedicineRepository.java

@@ -26,6 +26,11 @@ public interface MedicineRepository extends Neo4jRepository<Medicine, Long> {
             "return distinct n.name as medName,o.name as medRegName")
     List<MedNameRegName> findCustomByNameAndRegName(@Param("status")Integer status);
 
+    @Query("match (n:药品通用名称)<-[r1:药品相关药品通用名称]-(m:药品代码通用名)-[r2:药品相关药品注册名称]->(o:药品注册名称) \n" +
+            "where n.状态={status} and o.状态={status} and m.状态={status} \n" +
+            "return distinct n.name as medName,o.name as medRegName,m.注册剂型 as form")
+    List<MedNameRegName> findCustomByNameAndRegNameAndForm(@Param("status")Integer status);
+
     @Query("match (n:药品通用名称)<-[r1:药品相关药品通用名称]-(m:药品代码通用名)-[r2:药品相关药品注册名称]->(o:药品注册名称) where n.name={name} return distinct o.name")
     List<String> findMedRegNamebyMedicine(@Param("name") String name);
 

+ 16 - 0
cdssman-service/src/main/java/com/diagbot/service/ResultHighriskDrugService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.ResultHighriskDrug;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-14
+ */
+public interface ResultHighriskDrugService extends IService<ResultHighriskDrug> {
+
+}

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/ResultHighriskDrugServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.ResultHighriskDrug;
+import com.diagbot.mapper.ResultHighriskDrugMapper;
+import com.diagbot.service.ResultHighriskDrugService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-14
+ */
+@Service
+public class ResultHighriskDrugServiceImpl extends ServiceImpl<ResultHighriskDrugMapper, ResultHighriskDrug> implements ResultHighriskDrugService {
+
+}

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/vo/HighriskRuleVO.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/14 19:44
+ */
+@Getter
+@Setter
+public class HighriskRuleVO extends HospitalIdVO {
+    /**
+     * 测试类型
+     */
+    @NotNull(message = "请输入测试案例id")
+    private Long caseId;
+    /**
+     * 高危测试规则类型(1:药品,2:手术)
+     */
+    @NotNull(message = "请输入高危测试规则类型(1:药品,2:手术)")
+    private Integer highriskType;
+}

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

@@ -12,6 +12,7 @@ import com.diagbot.facade.ResultInfoFacade;
 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.ResultBillPageVO;
 import com.diagbot.vo.ResultCriticalPageVO;
@@ -131,4 +132,20 @@ public class RuleTestController {
         }
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "高危药品、手术规则测试[zhaops]",
+            notes = "hospitalId: 医院Id <br>" +
+                    "caseId: 测试用例id<br>" +
+                    "highriskType:高危测试规则类型(1:药品,2:手术) <br>")
+    @PostMapping("/highRiskRuleTest")
+    @SysLogger("highRiskRuleTest")
+    public RespDTO<Boolean> highRiskRuleTest(@Valid @RequestBody HighriskRuleVO highriskRuleVO) {
+        Boolean data = false;
+        if (highriskRuleVO.getHighriskType().equals(1)) {
+            data = ruleTestFacade.highriskDrugRuleTest(highriskRuleVO);
+        } else if (highriskRuleVO.getHighriskType().equals(2)) {
+
+        }
+        return RespDTO.onSuc(data);
+    }
 }

+ 26 - 0
cdssman-service/src/main/resources/mapper/ResultHighriskDrugMapper.xml

@@ -0,0 +1,26 @@
+<?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.ResultHighriskDrugMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ResultHighriskDrug">
+        <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="highrisk_item_name" property="highriskItemName" />
+        <result column="highrisk_item_reg_name" property="highriskItemRegName" />
+        <result column="highrisk_item_his_name" property="highriskItemHisName" />
+        <result column="highrisk_item_form" property="highriskItemForm" />
+        <result column="highrisk_level" property="highriskLevel" />
+        <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>
+
+</mapper>