diff --git a/virtual-patient-graph/src/main/java/com/supervision/service/impl/GraphNebulaServiceImpl.java b/virtual-patient-graph/src/main/java/com/supervision/service/impl/GraphNebulaServiceImpl.java index 4eb0cf5e..2baad38b 100644 --- a/virtual-patient-graph/src/main/java/com/supervision/service/impl/GraphNebulaServiceImpl.java +++ b/virtual-patient-graph/src/main/java/com/supervision/service/impl/GraphNebulaServiceImpl.java @@ -3,7 +3,6 @@ package com.supervision.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; @@ -87,13 +86,13 @@ public class GraphNebulaServiceImpl implements GraphNebulaService { Process process = Optional.ofNullable(processService.getById(processId)).orElseThrow(() -> new BusinessException("未找到流程,创建图谱失败")); // 根据processId找到对应的诊疗计划,如果没有找到,说明治疗流程未完成,诊断失败 List treatmentPlanRecordList = treatmentPlanRecordService.lambdaQuery().eq(TreatmentPlanRecord::getProcessId, processId).list(); - Assert.notEmpty(treatmentPlanRecordList, () -> new BusinessException("治疗计划为空,请先完成治疗计划")); - Integer disposalMethod = treatmentPlanRecordList.stream().findAny().orElseThrow(() -> new BusinessException("治疗计划为空,请先完成治疗计划")).getDisposalMethod(); + Integer disposalMethod = treatmentPlanRecordList.stream().findAny().orElse(new TreatmentPlanRecord()).getDisposalMethod(); MedicalRec medicalRec = Optional.ofNullable(medicalRecService.getById(process.getMedicalRecId())).orElseThrow(() -> new BusinessException("未找到病历")); // 首先创建一个病历 MedicalRecVertex medicalRecVertex = new MedicalRecVertex(); - // 格式:患者名称-门诊(时间) - medicalRecVertex.setNodeValue((disposalMethod == 0 ? "门诊" : "住院") + "-" + medicalRec.getPatientName() + "(" + DateUtil.format(process.getCreateTime(), "yyyy-MM-dd") + ")"); + // 格式:患者名称-门诊/住院(时间) + // 如果没有填写治疗计划,默认为门诊 + medicalRecVertex.setNodeValue((ObjectUtil.isEmpty(disposalMethod) || disposalMethod == 0 ? "门诊" : "住院") + "-" + medicalRec.getPatientName() + "(" + DateUtil.format(process.getCreateTime(), "yyyy-MM-dd") + ")"); medicalRecDao.insert(medicalRecVertex); log.info("病历图谱ID:{}", medicalRecVertex.getId()); // 根据processId找到电子病历 diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java index e11e761f..ea10d518 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java @@ -178,7 +178,7 @@ public class DiseaseTreatmentPlanManageServiceImpl implements DiseaseTreatmentPl // 3. 初始化flag if (CollUtil.isNotEmpty(diseaseTreatmentPlanResVos)){ - rootNode.initFlag(diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getPlanId).collect(Collectors.toList())); + rootNode.initFlag(diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getTreatmentPlanId).collect(Collectors.toList())); } return rootNode.getChild(); diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseTreatmentPlanResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseTreatmentPlanResVo.java index 420cba5b..6e7cb79f 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseTreatmentPlanResVo.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseTreatmentPlanResVo.java @@ -18,9 +18,9 @@ public class DiseaseTreatmentPlanResVo extends ConfigTreatmentPlan { @ApiModelProperty("疾病id") private String diseaseId; - @Deprecated - @ApiModelProperty("计划id") - private String planId; +// @Deprecated +// @ApiModelProperty("计划id") +// private String planId; @ApiModelProperty("计划id 用来代替planId") private String treatmentPlanId; diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskDiagnosisResultServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskDiagnosisResultServiceImpl.java index 4c52ea3c..e6980dea 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskDiagnosisResultServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskDiagnosisResultServiceImpl.java @@ -95,11 +95,11 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService return dealPlanResVO; } - // 2. 查询出疾病处置计划 + // 2. 查询出疾病处置计划(疾病配置的处置计划) List diseaseTreatmentPlanResVos = diseaseTreatmentPlanService.queryListByDiseaseId(diseaseId); - List planIds = diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getPlanId).distinct().collect(Collectors.toList()); + List treatmentPlanId = diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getTreatmentPlanId).distinct().collect(Collectors.toList()); - // 3. 查出疾病处置计划用药 + // 3. 查出疾病处置计划用药(疾病配置的用药计划) List diseaseTreatmentPlanDrugList = diseaseTreatmentPlanDrugService.lambdaQuery().eq(DiseaseTreatmentPlanDrug::getDiseaseId, diseaseId).list(); List drugIds = diseaseTreatmentPlanDrugList.stream().map(DiseaseTreatmentPlanDrug::getDrugId).distinct().collect(Collectors.toList()); @@ -109,7 +109,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService for (TreatmentPlanRecord treatmentPlanRecord : treatmentPlanRecordList) { TreatmentPlanRecordVo bean = BeanUtil.toBean(treatmentPlanRecord, TreatmentPlanRecordVo.class); // 是否正确 - boolean flag = StrUtil.isNotEmpty(bean.getDrugId()) ? drugIds.contains(bean.getDrugId()) : planIds.contains(bean.getTreatmentPlanId()); + boolean flag = StrUtil.isNotEmpty(bean.getDrugId()) ? drugIds.contains(bean.getDrugId()) : treatmentPlanId.contains(bean.getTreatmentPlanId()); bean.setFlag(flag ? 1 : 0); if (StrUtil.isNotEmpty(bean.getDrugId())) { drugTreatmentPlanResults.add(bean); @@ -432,24 +432,27 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService * ( 用户命中病历治疗计划配置问题数 / 疾病配置的治疗计划总数 ) * (用户命中病历治疗计划配置问题数 / 用户实际填写的治疗计划的数量 ) */ private ChartNodeVO computeTreatmentPlanChart(Process process) { - // 查询用户填写的治疗计划 + // 查询用户填写的治疗计划(包含处置计划和用药计划) List userTreatmentPlanRecordList = treatmentPlanRecordService.lambdaQuery().eq(TreatmentPlanRecord::getProcessId, process.getId()).list(); int userTreatmentPlanCount = userTreatmentPlanRecordList.size(); - // 查询疾病配置的治疗计划 - List planList = diseaseTreatmentPlanService.lambdaQuery().eq(DiseaseTreatmentPlan::getDiseaseId, process.getDiseaseId()).select(DiseaseTreatmentPlan::getId).list(); - List planIdList = planList.stream().map(DiseaseTreatmentPlan::getId).collect(Collectors.toList()); + // 2. 查询出疾病处置计划(疾病配置的处置计划) + List diseaseTreatmentPlanResVos = diseaseTreatmentPlanService.queryListByDiseaseId(process.getDiseaseId()); + Set treatmentPlanIdSet = diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getTreatmentPlanId).collect(Collectors.toSet()); + + // 3. 查出疾病处置计划用药(疾病配置的用药计划) + List diseaseTreatmentPlanDrugList = diseaseTreatmentPlanDrugService.lambdaQuery().eq(DiseaseTreatmentPlanDrug::getDiseaseId, process.getDiseaseId()).list(); + Set drugIdSet = diseaseTreatmentPlanDrugList.stream().map(DiseaseTreatmentPlanDrug::getDrugId).collect(Collectors.toSet()); // 疾病配置的治疗计划总数 - int medicalCount = planIdList.size(); - // 找到用户配置的药物计划 - List drugList = diseaseTreatmentPlanDrugService.lambdaQuery().eq(DiseaseTreatmentPlanDrug::getDiseaseId, process.getDiseaseId()).select(DiseaseTreatmentPlanDrug::getDrugId).list(); - List drugIdList = drugList.stream().map(DiseaseTreatmentPlanDrug::getDrugId).collect(Collectors.toList()); + Collection planIdSet = CollUtil.union(treatmentPlanIdSet, drugIdSet); + int medicalCount = planIdSet.size(); int hitPlanCount = 0; for (TreatmentPlanRecord treatmentPlanRecord : userTreatmentPlanRecordList) { // 需要分别看是否是药物计划 - if (StrUtil.isNotBlank(treatmentPlanRecord.getTreatmentPlanId()) && planIdList.contains(treatmentPlanRecord.getTreatmentPlanId())) { + if (StrUtil.isNotBlank(treatmentPlanRecord.getTreatmentPlanId()) && planIdSet.contains(treatmentPlanRecord.getTreatmentPlanId())) { hitPlanCount++; + continue; } - if (StrUtil.isNotBlank(treatmentPlanRecord.getDrugId()) && drugIdList.contains(treatmentPlanRecord.getDrugId())) { + if (StrUtil.isNotBlank(treatmentPlanRecord.getDrugId()) && planIdSet.contains(treatmentPlanRecord.getDrugId())) { hitPlanCount++; } }