|
@@ -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;
|
|
|
+ }
|
|
|
}
|