From 1d942eeef7a75079889434b8f7f149722b99f9a7 Mon Sep 17 00:00:00 2001 From: liu Date: Thu, 7 Dec 2023 13:22:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AF=8A=E6=96=AD?= =?UTF-8?q?=E4=BE=9D=E6=8D=AE=E5=88=97=E8=A1=A8,=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E8=AF=8A=E6=96=AD=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/DiagnosisPrimaryRelation.java | 5 ++ .../ask/DiagnosticBasisForPrimaryResVO.java | 5 +- .../mapper/DiagnosisPrimaryMapper.xml | 3 - .../controller/AskPrimaryController.java | 9 ++- .../pojo/vo/SaveDiagnosisPrimaryReqVO.java | 18 +++++ .../service/AskPrimaryService.java | 3 +- .../service/impl/AskPrimaryServiceImpl.java | 81 ++++++++++++++----- 7 files changed, 95 insertions(+), 29 deletions(-) create mode 100644 virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java diff --git a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java index 02df1d9d..72c876cd 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/DiagnosisPrimaryRelation.java @@ -8,6 +8,7 @@ import java.io.Serializable; import java.time.LocalDateTime; import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -26,21 +27,25 @@ public class DiagnosisPrimaryRelation extends Model im /** * 问诊流程ID */ + @ApiModelProperty("问诊流程ID,新增时不填") private String processId; /** * 初步诊断ID */ + @ApiModelProperty("初步诊断ID,新增时不填") private String primaryId; /** * 1 问诊(vp_diagnosis_qa_record) 2 体格检查(vp_diagnosis_physical_record) 3 辅助检查(vp_diagnosis_ancillary_record) */ + @ApiModelProperty("1 问诊 2 体格检查 3 辅助检查") private Integer type; /** * 关联关系ID */ + @ApiModelProperty("关联关系ID") private String relationId; /** diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosticBasisForPrimaryResVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosticBasisForPrimaryResVO.java index a1f6c965..b5767563 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosticBasisForPrimaryResVO.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/DiagnosticBasisForPrimaryResVO.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiOperation; import lombok.Data; import java.util.List; +import java.util.Set; @Data public class DiagnosticBasisForPrimaryResVO { @@ -27,8 +28,8 @@ public class DiagnosticBasisForPrimaryResVO { @ApiModelProperty("初步诊断名称") private String primaryName; - @ApiModelProperty("初步诊断ID") - private String primaryId; + @ApiModelProperty("初步诊断ID列表") + private List primaryIdList; @ApiModelProperty("是否是证实诊断依据(0否1是)") private Integer basisConfirmFlag; diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml index c4d1c729..a8c48338 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml @@ -40,7 +40,6 @@ null as locationName, t4.name_zh_path as category, t1.question as item, - null as primaryId, t1.basis_confirm_flag as basisConfirmFlag, t1.basis_identification_flag as basisIdentificationFlag from vp_diagnosis_qa_record t1 @@ -56,7 +55,6 @@ t2.location_name as locationName, t3.type as category, t3.tool_name as item, - t1.primary_id as primaryId, t1.basis_confirm_flag as basisConfirmFlag, t1.basis_identification_flag as basisIdentificationFlag from vp_diagnosis_physical_record t1 @@ -71,7 +69,6 @@ t2.location_name as locationName, t2.type as category, t2.item_name as item, - t1.primary_id as primaryId, t1.basis_confirm_flag as basisConfirmFlag, t1.basis_identification_flag as basisIdentificationFlag from vp_diagnosis_ancillary_record t1 diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java index e6176cee..352f5478 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskPrimaryController.java @@ -4,6 +4,7 @@ package com.supervision.controller; import com.supervision.model.DiagnosisPrimary; import com.supervision.model.Disease; import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO; +import com.supervision.pojo.vo.SaveDiagnosisPrimaryReqVO; import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO; import com.supervision.service.AskPrimaryService; import com.supervision.vo.ask.DiagnosisPrimaryVO; @@ -43,10 +44,16 @@ public class AskPrimaryController { @ApiOperation("新增初步诊断") @PostMapping("savePrimary") - public void savePrimary(@RequestBody DiagnosisPrimary reqVO){ + public void savePrimary(@RequestBody SaveDiagnosisPrimaryReqVO reqVO){ askPrimaryService.savePrimary(reqVO); } + @ApiOperation("查询选择初步诊断关联的问诊记录") + @PostMapping("queryRecordForPrimaryChoose") + public void queryRecordForPrimaryChoose(String processId){ + + } + @ApiOperation("确认诊断时,修改初步诊断的信息") @PostMapping("updatePrimaryByConfirm") public void updatePrimaryByConfirm(@RequestBody DiagnosisPrimary reqVO){ diff --git a/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java new file mode 100644 index 00000000..d9b30580 --- /dev/null +++ b/virtual-patient-web/src/main/java/com/supervision/pojo/vo/SaveDiagnosisPrimaryReqVO.java @@ -0,0 +1,18 @@ +package com.supervision.pojo.vo; + +import com.supervision.model.DiagnosisPrimary; +import com.supervision.model.DiagnosisPrimaryRelation; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class SaveDiagnosisPrimaryReqVO extends DiagnosisPrimary { + + // 关联的初步诊断列表 + private List primaryRecordList; + + +} diff --git a/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java b/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java index 85487eed..4ae2c7c3 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/AskPrimaryService.java @@ -3,6 +3,7 @@ package com.supervision.service; import com.supervision.model.DiagnosisPrimary; import com.supervision.model.Disease; import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO; +import com.supervision.pojo.vo.SaveDiagnosisPrimaryReqVO; import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO; import com.supervision.vo.ask.DiagnosisPrimaryVO; import com.supervision.vo.ask.ModifyPrimaryDiseaseInfoReqVO; @@ -18,7 +19,7 @@ public interface AskPrimaryService { void modifyPrimaryDiseaseInfo(ModifyPrimaryDiseaseInfoReqVO reqVO); - void savePrimary(DiagnosisPrimary reqVO); + void savePrimary(SaveDiagnosisPrimaryReqVO reqVO); void updatePrimaryByConfirm(DiagnosisPrimary reqVO); 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 5756d002..ad71dda1 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 @@ -1,9 +1,13 @@ package com.supervision.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.supervision.exception.BusinessException; import com.supervision.model.*; import com.supervision.model.Process; import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO; +import com.supervision.pojo.vo.SaveDiagnosisPrimaryReqVO; import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO; import com.supervision.service.*; import com.supervision.util.UserUtil; @@ -13,7 +17,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -31,6 +36,8 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { private final ProcessService processService; + private final DiagnosisPrimaryRelationService diagnosisPrimaryRelationService; + @Override public List queryAskPrimaryList(String processId) { return diagnosisPrimaryService.queryAskPrimaryList(processId); @@ -49,17 +56,22 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { @Override @Transactional(rollbackFor = Exception.class) - public void savePrimary(DiagnosisPrimary reqVO) { - reqVO.setExcludeFlag(null); - reqVO.setCreateUserId(UserUtil.getUser().getId()); - diagnosisPrimaryService.save(reqVO); + public void savePrimary(SaveDiagnosisPrimaryReqVO reqVO) { + DiagnosisPrimary diagnosisPrimary = BeanUtil.toBean(reqVO, DiagnosisPrimary.class); + diagnosisPrimary.setExcludeFlag(null); + diagnosisPrimary.setCreateUserId(UserUtil.getUser().getId()); + diagnosisPrimaryService.save(diagnosisPrimary); + // 然后开始保存初步诊断关键的诊断 + List primaryRecordList = reqVO.getPrimaryRecordList(); + primaryRecordList.forEach(e -> e.setPrimaryId(diagnosisPrimary.getId())); + diagnosisPrimaryRelationService.saveBatch(primaryRecordList); } @Override public void updatePrimaryByConfirm(DiagnosisPrimary reqVO) { - diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getExcludeFlag,reqVO.getExcludeFlag()) - .set(DiagnosisPrimary::getPatientDiseaseInfo,reqVO.getPatientDiseaseInfo()) - .eq(DiagnosisPrimary::getId,reqVO.getId()).update(); + diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getExcludeFlag, reqVO.getExcludeFlag()) + .set(DiagnosisPrimary::getPatientDiseaseInfo, reqVO.getPatientDiseaseInfo()) + .eq(DiagnosisPrimary::getId, reqVO.getId()).update(); } @Override @@ -79,37 +91,62 @@ public class AskPrimaryServiceImpl implements AskPrimaryService { /** * 确诊页面,初步诊断填写初步诊断依据 + * * @param processId 流程ID * @return 结果 */ @Override public List queryDiagnosticBasisListForPrimary(String processId) { - return diagnosisPrimaryService.queryDiagnosticBasisListForPrimary(processId); + List resList = diagnosisPrimaryService.queryDiagnosticBasisListForPrimary(processId); + if (CollUtil.isEmpty(resList)) { + return resList; + } + // 找到process对应的所有的初步诊断 + List diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId); + Map diseaseNameMap = diagnosisPrimaryVOS.stream().collect(Collectors.toMap(DiagnosisPrimaryVO::getId, DiagnosisPrimaryVO::getPrimaryDiseaseName)); + // 首先根据诊断记录,找到对应的关联关系 + Set relationIdSet = resList.stream().map(DiagnosticBasisForPrimaryResVO::getId).collect(Collectors.toSet()); + List relationList = diagnosisPrimaryRelationService.lambdaQuery().in(DiagnosisPrimaryRelation::getRelationId, relationIdSet).list(); + // 根据relationId进行分组 + Map> relationMap = relationList.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getRelationId)); + for (DiagnosticBasisForPrimaryResVO node : resList) { + List relationPrimaryList = relationMap.get(node.getId()); + Set primarySet = relationPrimaryList.stream().map(DiagnosisPrimaryRelation::getPrimaryId).collect(Collectors.toSet()); + if (CollUtil.isNotEmpty(primarySet)) { + List diseaseNameList = new ArrayList<>(); + primarySet.forEach(e -> diseaseNameList.add(diseaseNameMap.get(e))); + node.setPrimaryIdList(new ArrayList<>(primarySet)); + node.setPrimaryName(StrUtil.join(";", diseaseNameList)); + } + + } + + return resList; } @Override public void saveDiagnosticBasis(List reqVO) { for (DiagnosticBasisForPrimaryReqVO node : reqVO) { - if (1 == node.getType()){ - diagnosisQaRecordService.lambdaUpdate().set(DiagnosisQaRecord::getBasisConfirmFlag,node.getBasisConfirmFlag()) - .set(DiagnosisQaRecord::getBasisIdentificationFlag,node.getBasisIdentificationFlag()) - .eq(DiagnosisQaRecord::getId,node.getId()).update(); + if (1 == node.getType()) { + diagnosisQaRecordService.lambdaUpdate().set(DiagnosisQaRecord::getBasisConfirmFlag, node.getBasisConfirmFlag()) + .set(DiagnosisQaRecord::getBasisIdentificationFlag, node.getBasisIdentificationFlag()) + .eq(DiagnosisQaRecord::getId, node.getId()).update(); continue; } - if (2 == node.getType()){ - diagnosisPhysicalRecordService.lambdaUpdate().set(DiagnosisPhysicalRecord::getBasisConfirmFlag,node.getBasisConfirmFlag()) - .set(DiagnosisPhysicalRecord::getBasisIdentificationFlag,node.getBasisIdentificationFlag()) - .eq(DiagnosisPhysicalRecord::getId,node.getId()).update(); + if (2 == node.getType()) { + diagnosisPhysicalRecordService.lambdaUpdate().set(DiagnosisPhysicalRecord::getBasisConfirmFlag, node.getBasisConfirmFlag()) + .set(DiagnosisPhysicalRecord::getBasisIdentificationFlag, node.getBasisIdentificationFlag()) + .eq(DiagnosisPhysicalRecord::getId, node.getId()).update(); continue; } - if (3 == node.getType()){ - diagnosisAncillaryRecordService.lambdaUpdate().set(DiagnosisAncillaryRecord::getBasisConfirmFlag,node.getBasisConfirmFlag()) - .set(DiagnosisAncillaryRecord::getBasisIdentificationFlag,node.getBasisIdentificationFlag()) - .eq(DiagnosisAncillaryRecord::getId,node.getId()).update(); + if (3 == node.getType()) { + diagnosisAncillaryRecordService.lambdaUpdate().set(DiagnosisAncillaryRecord::getBasisConfirmFlag, node.getBasisConfirmFlag()) + .set(DiagnosisAncillaryRecord::getBasisIdentificationFlag, node.getBasisIdentificationFlag()) + .eq(DiagnosisAncillaryRecord::getId, node.getId()).update(); } } // 然后将process的状态改为诊毕 - processService.lambdaUpdate().set(Process::getStatus,1).update(); + processService.lambdaUpdate().set(Process::getStatus, 1).update(); } } From 79b65870d18f5220ae10a61d043eba694c40bc0c Mon Sep 17 00:00:00 2001 From: liu Date: Thu, 7 Dec 2023 13:48:27 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AF=8A=E6=96=AD?= =?UTF-8?q?=E4=BE=9D=E6=8D=AE=E5=88=97=E8=A1=A8,=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E8=AF=8A=E6=96=AD=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AskPhysicalServiceImpl.java | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java index 0bd8e5ec..0f4fd70c 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/AskPhysicalServiceImpl.java @@ -1,6 +1,7 @@ package com.supervision.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.supervision.exception.BusinessException; @@ -12,12 +13,11 @@ import com.supervision.service.*; import com.supervision.util.UserUtil; import com.supervision.vo.ask.DiagnosisPhysicalRecordVo; import com.supervision.vo.ask.AskPhysicalHistoryResVO; +import com.supervision.vo.ask.DiagnosisPrimaryVO; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; @@ -37,10 +37,14 @@ public class AskPhysicalServiceImpl implements AskPhysicalService { private final ProcessService processService; + private final DiagnosisPrimaryRelationService diagnosisPrimaryRelationService; + + private final DiagnosisPrimaryService diagnosisPrimaryService; + @Override public List queryPhysicalToolList() { - return toolService.queryPhysicalToolList(); + return toolService.queryPhysicalToolList(); } @Override @@ -101,14 +105,29 @@ public class AskPhysicalServiceImpl implements AskPhysicalService { @Override public List queryAskPhysicalHistory(String processId) { - return diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId).stream() - .filter(distinctPredicateNotNull(e->e.getToolId()+e.getLocationId())).collect(Collectors.toList()); - } - + List res = diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId); + // 这里把初步诊断的疾病名称填充进去 + List relationList = diagnosisPrimaryRelationService.lambdaQuery().eq(DiagnosisPrimaryRelation::getType, 2) + .eq(DiagnosisPrimaryRelation::getProcessId, processId).list(); + Map> relationMap = relationList.stream().collect(Collectors.groupingBy(DiagnosisPrimaryRelation::getRelationId)); + + // 找到process对应的所有的初步诊断 + List diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId); + Map diseaseNameMap = diagnosisPrimaryVOS.stream().collect(Collectors.toMap(DiagnosisPrimaryVO::getId, DiagnosisPrimaryVO::getPrimaryDiseaseName)); + for (AskPhysicalHistoryResVO node : res) { + List temp = relationMap.get(node.getId()); + List diseaseNameList = new ArrayList<>(); + if (CollUtil.isNotEmpty(temp)) { + for (DiagnosisPrimaryRelation relation : temp) { + String diseaseName = diseaseNameMap.get(relation.getPrimaryId()); + diseaseNameList.add(diseaseName); + } + } + node.setResult(StrUtil.join(";", diseaseNameList)); + } - public static Predicate distinctPredicateNotNull(Function function){ - ConcurrentHashMap map = new ConcurrentHashMap<>(); - return t-> null != function.apply(t) && null == map.putIfAbsent(function.apply(t), true); + return res; } + }