From 6f78dc23f54c4f80010f445964b2431313b8e9bc Mon Sep 17 00:00:00 2001 From: liu Date: Tue, 16 Jan 2024 13:11:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E4=BC=B0=E4=BB=A3=E7=A0=81=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessRecordController.java | 11 +++-- .../manage/service/ProcessRecordService.java | 4 ++ .../impl/ProcessRecordServiceImpl.java | 49 ++++++++++++++++--- .../supervision/model/ProcessEvaluation.java | 13 +++++ .../vo/result/ProcessRecordVO.java | 7 +-- .../main/resources/mapper/ProcessMapper.xml | 2 +- 6 files changed, 71 insertions(+), 15 deletions(-) diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/processrecord/ProcessRecordController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/processrecord/ProcessRecordController.java index ed625e6c..62f5fa9a 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/processrecord/ProcessRecordController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/processrecord/ProcessRecordController.java @@ -1,14 +1,13 @@ package com.supervision.manage.controller.processrecord; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.model.ProcessEvaluation; import com.supervision.vo.result.ProcessRecordVO; import com.supervision.manage.service.ProcessRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @Api(tags = "问诊病案管理") @RestController @@ -24,4 +23,10 @@ public class ProcessRecordController { public IPage queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize) { return processRecordService.queryProcessRecordPage(studentName, medicalRecNo, diseaseType, pageNum, pageSize); } + + @ApiOperation("保存或更新考核病案评估") + @PostMapping("saveProcessEvaluation") + public ProcessEvaluation saveOrUpdateProcessEvaluation(@RequestBody ProcessEvaluation processEvaluation){ + return processRecordService.saveOrUpdateProcessEvaluation(processEvaluation); + } } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/ProcessRecordService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/ProcessRecordService.java index 5836a9af..fc82989d 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/ProcessRecordService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/ProcessRecordService.java @@ -1,9 +1,13 @@ package com.supervision.manage.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.model.ProcessEvaluation; import com.supervision.vo.result.ProcessRecordVO; +import org.springframework.web.bind.annotation.RequestBody; public interface ProcessRecordService { IPage queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize); + + ProcessEvaluation saveOrUpdateProcessEvaluation(ProcessEvaluation processEvaluation); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/ProcessRecordServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/ProcessRecordServiceImpl.java index 03d2e71e..60095b74 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/ProcessRecordServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/ProcessRecordServiceImpl.java @@ -3,10 +3,14 @@ package com.supervision.manage.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.supervision.exception.BusinessException; import com.supervision.model.Disease; +import com.supervision.model.ProcessEvaluation; import com.supervision.service.DiseaseService; +import com.supervision.service.ProcessEvaluationService; import com.supervision.vo.result.ProcessRecordVO; import com.supervision.manage.service.ProcessRecordService; import com.supervision.service.ProcessService; @@ -26,6 +30,8 @@ public class ProcessRecordServiceImpl implements ProcessRecordService { private final DiseaseService diseaseService; + private final ProcessEvaluationService processEvaluationService; + @Override public IPage queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize) { @@ -49,18 +55,45 @@ public class ProcessRecordServiceImpl implements ProcessRecordService { IPage page = processService.queryProcessRecordPage(studentName, medicalRecNo, diseaseList, pageNum, pageSize); if (CollUtil.isNotEmpty(page.getRecords())) { HashSet diseaseIdSet = new HashSet<>(); - page.getRecords().forEach(e -> diseaseIdSet.addAll(Optional.ofNullable(e.getContainDiseaseIds()).orElse(new ArrayList<>()))); - if (CollUtil.isNotEmpty(diseaseIdSet)) { - Map diseaseMap = diseaseService.listByIds(diseaseIdSet).stream().collect(Collectors.toMap(Disease::getId, Function.identity())); - for (ProcessRecordVO record : page.getRecords()) { - List diseaseName = new ArrayList<>(); - for (String containDiseaseId : record.getContainDiseaseIds()) { - Optional.ofNullable(diseaseMap.get(containDiseaseId)).ifPresent(disease -> diseaseName.add(disease.getDiseaseNameAlias())); + page.getRecords().forEach(e -> { + if (StrUtil.isNotEmpty(e.getContainDiseaseIdJsonStr())){ + diseaseIdSet.addAll(JSONUtil.toList(e.getContainDiseaseIdJsonStr(),String.class)); + }else if (StrUtil.isNotBlank(e.getDiseaseId())){ + diseaseIdSet.add(e.getDiseaseId()); + } + }); + if (CollUtil.isNotEmpty(diseaseIdSet)) { + Map diseaseMap = diseaseService.listByIds(diseaseIdSet).stream().collect(Collectors.toMap(Disease::getId, Function.identity())); + for (ProcessRecordVO record : page.getRecords()) { + List diseaseName = new ArrayList<>(); + if (StrUtil.isNotEmpty(record.getContainDiseaseIdJsonStr())){ + for (String containsDiseaseId : JSONUtil.toList(record.getContainDiseaseIdJsonStr(), String.class)) { + Optional.ofNullable(diseaseMap.get(containsDiseaseId)).ifPresent(disease -> diseaseName.add(disease.getDiseaseNameAlias())); } - record.setDiseaseType(CollUtil.join(diseaseName, ",")); + }else if (StrUtil.isNotBlank(record.getDiseaseId())){ + Optional.ofNullable(diseaseMap.get(record.getDiseaseId())).ifPresent(disease -> diseaseName.add(disease.getDiseaseNameAlias())); } + + record.setDiseaseType(CollUtil.join(diseaseName, ",")); } } + } return page; +} + + @Override + public ProcessEvaluation saveOrUpdateProcessEvaluation(ProcessEvaluation processEvaluation) { + // 如果processId不为空,校验是否已经存在 + if (StrUtil.isNotBlank(processEvaluation.getProcessId())) { + processEvaluationService.lambdaQuery().eq(ProcessEvaluation::getProcessId, processEvaluation.getProcessId()).oneOpt().ifPresent(e -> { + // 如果ID不一致,则说明processId存在重复情况,这时报错 + if (!StrUtil.equals(e.getId(), processEvaluation.getId())) { + throw new BusinessException("已存在相同的评估记录"); + } + }); + } + processEvaluationService.saveOrUpdate(processEvaluation); + return processEvaluation; } + } diff --git a/virtual-patient-model/src/main/java/com/supervision/model/ProcessEvaluation.java b/virtual-patient-model/src/main/java/com/supervision/model/ProcessEvaluation.java index f13c3366..2b7a5b7d 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/ProcessEvaluation.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/ProcessEvaluation.java @@ -6,7 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import org.checkerframework.checker.units.qual.A; /** * 考核评估 @@ -14,6 +18,7 @@ import lombok.Data; */ @TableName(value ="vp_process_evaluation") @Data +@ApiModel public class ProcessEvaluation implements Serializable { /** * 主键 @@ -24,41 +29,49 @@ public class ProcessEvaluation implements Serializable { /** * 流程id */ + @ApiModelProperty("流程id") private String processId; /** * 评分概述 */ + @ApiModelProperty("评分概述") private String overview; /** * 预期诊断评估 */ + @ApiModelProperty("预期诊断评估") private String expectDiagnosis; /** * 初步诊断评估 */ + @ApiModelProperty("初步诊断评估") private String primarilyDiagnosis; /** * 证实诊断评估 */ + @ApiModelProperty("证实诊断评估") private String confirmDiagnosis; /** * 鉴别依据评估 */ + @ApiModelProperty("鉴别依据评估") private String differentialDiagnosis; /** * 全面检查评估 */ + @ApiModelProperty("全面检查评估") private String fullCheck; /** * 处置方案评估 */ + @ApiModelProperty("处置方案评估") private String treatmentPlan; /** diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/result/ProcessRecordVO.java b/virtual-patient-model/src/main/java/com/supervision/vo/result/ProcessRecordVO.java index 15904c0c..811a6703 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/result/ProcessRecordVO.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/result/ProcessRecordVO.java @@ -30,17 +30,18 @@ public class ProcessRecordVO { @ApiModelProperty("疾病名称") private String diseaseNameAlias; + private String diseaseId; + @ApiModelProperty("疾病分类") private String diseaseType; - @ApiModelProperty("状态") + @ApiModelProperty("状态 2:已评估 其他未评估") private String status; @ApiModelProperty("更新时间(问诊实例的时间)") private String updateTime; - @TableField(typeHandler = StringListTypeHandler.class) - private List containDiseaseIds; + private String containDiseaseIdJsonStr; } diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml index 6ab3c465..60702bff 100644 --- a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml @@ -62,7 +62,7 @@ t3.name as studentName, t2.disease_id as diseaseId, t1.status as status, - t4.contain_disease_ids as containDiseaseIds + cast(t4.contain_disease_ids as CHAR ) as containDiseaseIdJsonStr from vp_process t1 left join vp_medical_rec t2 on t1.medical_rec_id = t2.id left join vp_user t3 on t1.user_id = t3.id