From 3dce7143311e5d02bf6b4062601ba153e78de52c Mon Sep 17 00:00:00 2001 From: liu Date: Mon, 11 Mar 2024 09:21:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=9B=BE=E8=B0=B1=E7=9A=84=E7=9F=A5=E8=AF=86=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/GraphNebulaServiceImpl.java | 28 +------------------ .../java/com/supervision/vo/TreeNodeVO.java | 4 +-- 2 files changed, 2 insertions(+), 30 deletions(-) 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 4e8c2c94..cb083f44 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,12 +3,9 @@ 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.Snowflake; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import com.supervision.dao.*; import com.supervision.domain.*; import com.supervision.enums.TagEnum; @@ -362,30 +359,7 @@ public class GraphNebulaServiceImpl implements GraphNebulaService { for (TreeNodeVO nodeVO : firstNodeList) { recursionBuildTree(nodeVO, treeNodeMap, graphVO.getEdges()); } - // 为所有节点分配新的唯一ID(前端需要ID字段为唯一ID) - Snowflake snowflake = IdUtil.getSnowflake(1); - // 先转JSON,再转回去.为了避免出现对象复用的情况,导致ID不能分配为唯一ID - String jsonStr = JSONUtil.toJsonStr(firstNodeList); - List newTreeNodeList = JSONUtil.toList(jsonStr, TreeNodeVO.class); - - recursionGenerateSingleId(newTreeNodeList, snowflake); - return newTreeNodeList; - } - - /** - * 为属性结构构建新的唯一ID,把原先的ID迁移到GraphId - */ - private void recursionGenerateSingleId(List firstNodeList, Snowflake snowflake) { - for (TreeNodeVO treeNodeVO : firstNodeList) { - if (StrUtil.isBlank(treeNodeVO.getGraphId())) { - treeNodeVO.setGraphId(treeNodeVO.getId()); - } - String nextId = snowflake.nextIdStr() + "-id"; - treeNodeVO.setId(nextId); - if (CollUtil.isNotEmpty(treeNodeVO.getChildren())) { - recursionGenerateSingleId(treeNodeVO.getChildren(), snowflake); - } - } + return firstNodeList; } private void recursionBuildTree(TreeNodeVO preNode, Map treeNodeMap, List edgeList) { diff --git a/virtual-patient-graph/src/main/java/com/supervision/vo/TreeNodeVO.java b/virtual-patient-graph/src/main/java/com/supervision/vo/TreeNodeVO.java index 9150cc3d..1910e798 100644 --- a/virtual-patient-graph/src/main/java/com/supervision/vo/TreeNodeVO.java +++ b/virtual-patient-graph/src/main/java/com/supervision/vo/TreeNodeVO.java @@ -12,10 +12,8 @@ import java.util.Map; @ApiModel public class TreeNodeVO { - @ApiModelProperty("重新分配的唯一ID") - private String id; @ApiModelProperty("图谱ID") - private String graphId; + private String id; @ApiModelProperty("节点值") private String nodeValue; From bea1d16c0f7250bea7e667045e609ec2e7718aaf Mon Sep 17 00:00:00 2001 From: liu Date: Mon, 11 Mar 2024 12:52:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=B8=BA=E5=9B=9E=E7=AD=94=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=BB=98=E8=AE=A4=E7=AD=94=E6=A1=88,=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E7=97=85=E4=BE=8B=E5=BA=93=E4=B8=AD=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=9A=84,=E7=BB=9F=E4=B8=80=E5=9B=9E?= =?UTF-8?q?=E5=A4=8D=E6=B2=A1=E6=9C=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...AskTemplateQuestionLibraryServiceImpl.java | 4 +-- .../service/impl/AskServiceImpl.java | 25 ++++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/AskTemplateQuestionLibraryServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/AskTemplateQuestionLibraryServiceImpl.java index c65d3914..c0c023eb 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/AskTemplateQuestionLibraryServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/AskTemplateQuestionLibraryServiceImpl.java @@ -96,7 +96,7 @@ public class AskTemplateQuestionLibraryServiceImpl extends ServiceImpl> result = askQaSimilarityFeignClient.askQuestionSimilarityAnswer(new QaSimilarityQuestion(question)); log.info("调用talkQaSimilarity结束,问题:{},返回结果:{}", question, JSONUtil.toJsonStr(result)); return CollUtil.getFirst(result.getData()).getMatchQuestionCode(); - }catch (Exception e){ + } catch (Exception e) { log.error("调用talkQaSimilarity error ", e); return null; } @@ -232,6 +233,18 @@ public class AskServiceImpl implements AskService { return askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRecId).eq(AskPatientAnswer::getLibraryQuestionId, askTemplateQuestionLibrary.getId()).one(); } + private AskPatientAnswer getMedicalRecDefaultAnswer(String medicalRecId) { + //Optional.ofNullable(medicalRecErrorAnswer).orElseGet(() ->new AskPatientAnswer()).getAnswer() + Assert.notEmpty(medicalRecId, "病历id不能为空"); + CommonDic commonDic = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").eq(CommonDic::getCode, "system_default").one(); + Assert.notNull(commonDic, "字典未配置默认回答场景"); + + AskTemplateQuestionLibrary askTemplateQuestionLibrary = askTemplateQuestionLibraryService.lambdaQuery().eq(AskTemplateQuestionLibrary::getDictId, commonDic.getId()).one(); + Assert.notNull(askTemplateQuestionLibrary, "知识库未配置系统内置异常识别场景"); + + return askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRecId).eq(AskPatientAnswer::getLibraryQuestionId, askTemplateQuestionLibrary.getId()).one(); + } + /** * 获取应答视频的base64位编码 From 7fa3caa2e3c0c32f6b4ab7279ec86b5fd83b41f6 Mon Sep 17 00:00:00 2001 From: liu Date: Mon, 11 Mar 2024 15:29:15 +0800 Subject: [PATCH 3/3] bugfix --- .../supervision/service/impl/GraphNebulaServiceImpl.java | 4 ++-- .../service/impl/AskDiagnosisResultServiceImpl.java | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) 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 cb083f44..9b245529 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 @@ -172,7 +172,7 @@ public class GraphNebulaServiceImpl implements GraphNebulaService { processMedicalDao.insertEdge(medicalRecVertex, new SinglePropertyEdge("体格检查"), physicalVertex); // 获取查询结果,增加到结果节点中 PhysicalResultVertex physicalResultVertex = new PhysicalResultVertex(); - physicalResultVertex.setNodeValue(physicalRecord.getResult()); + physicalResultVertex.setNodeValue(StrUtil.blankToDefault(physicalRecord.getResult(), "无相关资讯")); physicalResultDao.insert(physicalResultVertex); physicalResultDao.insertEdge(physicalVertex, new SinglePropertyEdge("结果"), physicalResultVertex); // 如果是证实诊断依据,添加到证实诊断依据里面去 @@ -195,7 +195,7 @@ public class GraphNebulaServiceImpl implements GraphNebulaService { medicalRecDao.insertEdge(medicalRecVertex, new SinglePropertyEdge("辅助检查"), ancillaryVertex); // 结果节点 AncillaryResultVertex ancillaryResultVertex = new AncillaryResultVertex(); - ancillaryResultVertex.setNodeValue(diagnosisAncillaryRecord.getResult()); + ancillaryResultVertex.setNodeValue(StrUtil.blankToDefault(diagnosisAncillaryRecord.getResult(), "无相关资讯")); ancillaryResultDao.insert(ancillaryResultVertex); // 保存检查结果连线 ancillaryDao.insertEdge(ancillaryVertex, new SinglePropertyEdge("结果"), ancillaryResultVertex); 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 b67a64af..6cbfbb81 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 @@ -450,6 +450,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService // 查询用户填写的治疗计划(包含处置计划和用药计划) List userTreatmentPlanRecordList = treatmentPlanRecordService.lambdaQuery().eq(TreatmentPlanRecord::getProcessId, process.getId()).list(); int userTreatmentPlanCount = userTreatmentPlanRecordList.size(); + // 2. 查询出疾病处置计划(疾病配置的处置计划) List diseaseTreatmentPlanResVos = diseaseTreatmentPlanService.queryListByDiseaseId(process.getDiseaseId()); Set treatmentPlanIdSet = diseaseTreatmentPlanResVos.stream().map(DiseaseTreatmentPlanResVo::getTreatmentPlanId).collect(Collectors.toSet()); @@ -457,9 +458,12 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService // 3. 查出疾病处置计划用药(疾病配置的用药计划) List diseaseTreatmentPlanDrugList = diseaseTreatmentPlanDrugService.lambdaQuery().eq(DiseaseTreatmentPlanDrug::getDiseaseId, process.getDiseaseId()).list(); Set drugIdSet = diseaseTreatmentPlanDrugList.stream().map(DiseaseTreatmentPlanDrug::getDrugId).collect(Collectors.toSet()); - // 疾病配置的治疗计划总数 + + // 计算总数时,只看疾病配置的处置计划(用药计划来自于处置计划) + int medicalCount = diseaseTreatmentPlanResVos.size(); + + // 疾病配置的治疗计划ID集合,用来计算命中的数量 Collection planIdSet = CollUtil.union(treatmentPlanIdSet, drugIdSet); - int medicalCount = planIdSet.size(); int hitPlanCount = 0; for (TreatmentPlanRecord treatmentPlanRecord : userTreatmentPlanRecordList) { // 需要分别看是否是药物计划