From a563f6f39704af0cc5d8bef95b06f5a12612f4d0 Mon Sep 17 00:00:00 2001 From: liu Date: Thu, 21 Dec 2023 17:06:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=9D=E6=AD=A5=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E4=BF=AE=E6=94=B9=E6=97=B6,=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/ask/ModifyPrimaryDiseaseInfoReqVO.java | 11 +++ .../service/impl/AskPrimaryServiceImpl.java | 77 ++++++++++--------- 2 files changed, 53 insertions(+), 35 deletions(-) diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java index 04f82450..ae7825f3 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ModifyPrimaryDiseaseInfoReqVO.java @@ -1,8 +1,10 @@ package com.supervision.vo.ask; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data public class ModifyPrimaryDiseaseInfoReqVO { @@ -11,4 +13,13 @@ public class ModifyPrimaryDiseaseInfoReqVO { private String id; private String patientDiseaseInfo; + + @ApiModelProperty("问诊ID列表") + private List askIdList; + + @ApiModelProperty("辅助检查ID列表") + private List ancillaryIdList; + + @ApiModelProperty("体格检查ID列表") + private List physicalIdList; } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java index c2c9dc8d..90cfd53a 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPrimaryServiceImpl.java @@ -10,6 +10,7 @@ import com.supervision.pojo.vo.*; import com.supervision.vo.ask.*; import com.supervision.service.*; import com.supervision.util.UserUtil; +import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -48,9 +49,9 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { if (CollUtil.isNotEmpty(relationList)) { Map> relationIdMap = relationList.stream() .collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getType, Collectors.mapping(DiagnosisPrimaryRelation::getRelationId, Collectors.toList()))); - diagnosisPrimaryVO.setAskIdList(relationIdMap.get(1)); - diagnosisPrimaryVO.setPhysicalIdList(relationIdMap.get(2)); - diagnosisPrimaryVO.setAncillaryIdList(relationIdMap.get(3)); + diagnosisPrimaryVO.setAskIdList(Optional.ofNullable(relationIdMap.get(1)).orElseGet(ArrayList::new)); + diagnosisPrimaryVO.setPhysicalIdList(Optional.ofNullable(relationIdMap.get(2)).orElseGet(ArrayList::new)); + diagnosisPrimaryVO.setAncillaryIdList(Optional.ofNullable(relationIdMap.get(3)).orElseGet(ArrayList::new)); } } } @@ -63,9 +64,37 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { } @Override + @Transactional(rollbackFor = Exception.class) public void modifyPrimaryDiseaseInfo(ModifyPrimaryDiseaseInfoReqVO reqVO) { + DiagnosisPrimary diagnosisPrimary = diagnosisPrimaryService.getById(reqVO.getId()); diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getPatientDiseaseInfo, reqVO.getPatientDiseaseInfo()) .eq(DiagnosisPrimary::getId, reqVO.getId()).update(); + // 然后这里保存初步诊断依据的修改 + // 首先查到已经存在的列表 + List list = diagnosisPrimaryRelationService.lambdaQuery().eq(DiagnosisPrimaryRelation::getPrimaryId, reqVO.getId()).list(); + Map> groupByTypeMap = list.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getType)); + // 保存问诊 + List askExistList = groupByTypeMap.get(1); + if (CollUtil.isNotEmpty(reqVO.getAskIdList())) { + List existIdList = askExistList.stream().map(DiagnosisPrimaryRelation::getRelationId).collect(Collectors.toList()); + List newIdList = reqVO.getAskIdList().stream().filter(id ->!existIdList.contains(id)).collect(Collectors.toList()); + saveDiagnosisPrimaryRelation(newIdList, diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 1); + } + // 保存体格检查 + List physicalIdExistList = groupByTypeMap.get(2); + if (CollUtil.isNotEmpty(reqVO.getPhysicalIdList())) { + List existIdList = physicalIdExistList.stream().map(DiagnosisPrimaryRelation::getRelationId).collect(Collectors.toList()); + List newIdList = reqVO.getPhysicalIdList().stream().filter(id ->!existIdList.contains(id)).collect(Collectors.toList()); + saveDiagnosisPrimaryRelation(newIdList, diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 2); + } + // 保存辅助检查 + List ancillaryExistList = groupByTypeMap.get(3); + if (CollUtil.isNotEmpty(reqVO.getAncillaryIdList())) { + List existIdList = ancillaryExistList.stream().map(DiagnosisPrimaryRelation::getRelationId).collect(Collectors.toList()); + List newIdList = reqVO.getAncillaryIdList().stream().filter(id ->!existIdList.contains(id)).collect(Collectors.toList()); + saveDiagnosisPrimaryRelation(newIdList, diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 3); + } + } @Override @@ -76,46 +105,24 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { diagnosisPrimary.setCreateUserId(UserUtil.getUser().getId()); diagnosisPrimaryService.save(diagnosisPrimary); // 然后开始保存初步诊断关键的诊断 - if (CollUtil.isNotEmpty(reqVO.getAskIdList())) { - List askRelationList = reqVO.getAskIdList().stream().map(e -> { - DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation(); - relation.setProcessId(diagnosisPrimary.getProcessId()); - relation.setPrimaryId(diagnosisPrimary.getId()); - relation.setType(1); - relation.setRelationId(e); - relation.setCreateUserId(UserUtil.getUser().getId()); - return relation; - }).collect(Collectors.toList()); - diagnosisPrimaryRelationService.saveBatch(askRelationList); - } - - if (CollUtil.isNotEmpty(reqVO.getPhysicalIdList())) { - List physicalRelationList = reqVO.getPhysicalIdList().stream().map(e -> { - DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation(); - relation.setProcessId(diagnosisPrimary.getProcessId()); - relation.setPrimaryId(diagnosisPrimary.getId()); - relation.setType(2); - relation.setRelationId(e); - relation.setCreateUserId(UserUtil.getUser().getId()); - return relation; - }).collect(Collectors.toList()); - diagnosisPrimaryRelationService.saveBatch(physicalRelationList); - - } + saveDiagnosisPrimaryRelation(reqVO.getAskIdList(), diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 1); + saveDiagnosisPrimaryRelation(reqVO.getPhysicalIdList(), diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 2); + saveDiagnosisPrimaryRelation(reqVO.getAncillaryIdList(), diagnosisPrimary.getProcessId(), diagnosisPrimary.getId(), 3); + } - if (CollUtil.isNotEmpty(reqVO.getAncillaryIdList())) { - List ancillaryRelationList = reqVO.getAncillaryIdList().stream().map(e -> { + private void saveDiagnosisPrimaryRelation(List itemList, String processId, String primaryId, Integer type) { + if (CollUtil.isNotEmpty(itemList)) { + List ancillaryRelationList = itemList.stream().map(e -> { DiagnosisPrimaryRelation relation = new DiagnosisPrimaryRelation(); - relation.setProcessId(diagnosisPrimary.getProcessId()); - relation.setPrimaryId(diagnosisPrimary.getId()); - relation.setType(3); + relation.setProcessId(processId); + relation.setPrimaryId(primaryId); + relation.setType(type); relation.setRelationId(e); relation.setCreateUserId(UserUtil.getUser().getId()); return relation; }).collect(Collectors.toList()); diagnosisPrimaryRelationService.saveBatch(ancillaryRelationList); - } }