diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/AskQuestionLibraryManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/AskQuestionLibraryManageController.java index 721f6157..9708e09d 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/AskQuestionLibraryManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/AskQuestionLibraryManageController.java @@ -4,10 +4,8 @@ package com.supervision.manage.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.manage.service.AskQuestionLibraryManageService; import com.supervision.model.CommonDic; -import com.supervision.model.Disease; import com.supervision.vo.manage.AskQuestionLibraryReqVo; import com.supervision.vo.manage.AskQuestionLibraryResVo; -import com.supervision.vo.manage.DiseaseVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseManageController.java index 35d923f0..9868cbe4 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseaseManageController.java @@ -1,11 +1,10 @@ package com.supervision.manage.controller.diseasemanage; -import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.supervision.exception.BusinessException; import com.supervision.manage.service.DiseaseManageService; import com.supervision.model.Disease; -import com.supervision.vo.manage.DiseaseVo; +import com.supervision.vo.manage.DiseaseReqVo; import io.swagger.annotations.*; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -32,14 +31,10 @@ public class DiseaseManageController { @DeleteMapping("/delete") public boolean deleteDisease(@ApiParam("疾病id") @RequestParam String id) { - if (StrUtil.isEmpty(id)){ - throw new BusinessException("id is not allow empty"); - } return diseaseManageService.deleteDisease(id); } - @ApiOperation("修改疾病信息") @PutMapping("/update") public boolean updateDisease(@RequestBody Disease disease) { @@ -51,11 +46,11 @@ public class DiseaseManageController { @ApiOperation("查询分页疾病列表") @GetMapping("/queryPageList") - public Page queryPageList(@RequestParam(defaultValue = "1")Integer pageNum, - @RequestParam(defaultValue = "10")Integer pageSize, - DiseaseVo diseaseVo) { + public IPage queryPageList(@RequestParam(defaultValue = "1")Integer pageNum, + @RequestParam(defaultValue = "10")Integer pageSize, + DiseaseReqVo diseaseReqVo) { - return diseaseManageService.queryPageList(pageNum,pageSize,diseaseVo); + return diseaseManageService.queryPageList(pageNum,pageSize, diseaseReqVo); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseaseManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseaseManageService.java index 3cb0a2f7..a619d5c7 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseaseManageService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseaseManageService.java @@ -1,8 +1,9 @@ package com.supervision.manage.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.model.Disease; -import com.supervision.vo.manage.DiseaseVo; +import com.supervision.vo.manage.DiseaseReqVo; public interface DiseaseManageService { @@ -14,6 +15,6 @@ public interface DiseaseManageService { boolean deleteDisease(String id); - Page queryPageList(Integer pageNum, Integer pageSize, DiseaseVo diseaseVo); + IPage queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseManageServiceImpl.java index 8bb835a4..6b3721d9 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseManageServiceImpl.java @@ -1,23 +1,28 @@ package com.supervision.manage.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.UUID; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.exception.BusinessException; import com.supervision.manage.service.*; import com.supervision.model.Disease; -import com.supervision.model.DiseaseAncillary; -import com.supervision.service.DiseaseAncillaryService; import com.supervision.service.DiseaseService; -import com.supervision.vo.manage.DiseaseVo; +import com.supervision.vo.manage.DiseaseReqVo; +import com.supervision.vo.manage.DiseaseResVo; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor public class DiseaseManageServiceImpl implements DiseaseManageService { @@ -36,6 +41,13 @@ public class DiseaseManageServiceImpl implements DiseaseManageService { assertDisease(disease); + // 如果包含疾病id不为空,则为复合疾病 + if (CollUtil.isNotEmpty(disease.getContainDiseaseIds())){ + disease.setDiseaseType(1); + } + if (StrUtil.isEmpty(disease.getCode())){ + disease.setCode(UUID.fastUUID().toString()); + } disease.setStatus(0); diseaseService.save(disease); @@ -56,6 +68,12 @@ public class DiseaseManageServiceImpl implements DiseaseManageService { @Transactional public boolean deleteDisease(String id) { + Disease disease = diseaseService.getById(id); + if (Objects.isNull(disease)){ + return true; + } + Assert.isFalse(disease.getDiseaseType()==0,"单一疾病不允许被删除"); + // 1. 删除疾病信息 diseaseService.removeById(id); @@ -75,13 +93,40 @@ public class DiseaseManageServiceImpl implements DiseaseManageService { } @Override - public Page queryPageList(Integer pageNum, Integer pageSize, DiseaseVo diseaseVo) { + public IPage queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo) { + if (null == diseaseReqVo.getDiseaseType()){ + diseaseReqVo.setDiseaseType(0); + } + LambdaQueryChainWrapper wrapper = diseaseService.lambdaQuery() - .like(StrUtil.isNotEmpty(diseaseVo.getDiseaseName()), Disease::getDiseaseName, diseaseVo.getDiseaseName()); + .eq(Disease::getDiseaseType, diseaseReqVo.getDiseaseType()) + .like(StrUtil.isNotEmpty(diseaseReqVo.getDiseaseName()), Disease::getDiseaseName, diseaseReqVo.getDiseaseName()); + Page page = wrapper.page(new Page<>(pageNum, pageSize)); - return wrapper.page(new Page<>(pageNum, pageSize)); + if (page.getSize() == 0) { + return page; + } + // 根据diseaseIds查询疾病信息 + List containDiseaseIds = page.getRecords().stream() + .filter(disease -> CollUtil.isNotEmpty(disease.getContainDiseaseIds())) + .flatMap(disease -> disease.getContainDiseaseIds().stream()).distinct().collect(Collectors.toList()); + if (CollUtil.isEmpty(containDiseaseIds)) { + return page; + } + Map diseaseMap = diseaseService.listByIds(containDiseaseIds) + .stream().collect(Collectors.toMap(Disease::getId, disease -> disease, (v1, v2) -> v1)); + + // 把疾病名映射到DiseaseResVo中 + return page.convert(record -> { + DiseaseResVo bean = BeanUtil.toBean(record, DiseaseResVo.class); + if (CollUtil.isNotEmpty(bean.getContainDiseaseIds())){ + bean.setContainDiseaseNames(bean.getContainDiseaseIds().stream() + .map(diseaseMap::get).filter(Objects::nonNull).map(Disease::getDiseaseName).collect(Collectors.toList())); + } + return bean; + }); } @@ -109,11 +154,15 @@ public class DiseaseManageServiceImpl implements DiseaseManageService { Assert.isTrue(StrUtil.isNotEmpty(disease.getDiseaseNameAlias()),"疾病别名不能为空"); - Assert.isTrue(StrUtil.isNotEmpty(disease.getCode()),"疾病编码不能为空"); + if (CollUtil.isEmpty(disease.getContainDiseaseIds())){ + // 如果包含疾病为空,则疾病code不能为空 + Assert.isTrue(StrUtil.isNotEmpty(disease.getCode()),"疾病编码不能为空"); - List diseases = this.queryByAnyCondition(disease.getCode(), disease.getDiseaseName(), disease.getDiseaseNameAlias()); - Assert.isTrue(CollUtil.isEmpty(diseases),"类目编码: {},或疾病名称: {},或疾病分类别名: {} 已存在", - disease.getCode(),disease.getDiseaseName(),disease.getDiseaseNameAlias()); + // 判断类目编码是否已存在 + List diseases = this.queryByAnyCondition(disease.getCode(), disease.getDiseaseName(), disease.getDiseaseNameAlias()); + Assert.isTrue(CollUtil.isEmpty(diseases),"类目编码: {},或疾病名称: {},或疾病分类别名: {} 已存在", + disease.getCode(),disease.getDiseaseName(),disease.getDiseaseNameAlias()); + } } diff --git a/virtual-patient-manage/src/main/resources/application-dev.yml b/virtual-patient-manage/src/main/resources/application-dev.yml index a6ba84a7..0cf9b992 100644 --- a/virtual-patient-manage/src/main/resources/application-dev.yml +++ b/virtual-patient-manage/src/main/resources/application-dev.yml @@ -24,7 +24,7 @@ spring: type: com.alibaba.druid.pool.DruidDataSource druid: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://192.168.10.138:3306/virtual_patient_v2.0.1?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8 + url: jdbc:mysql://192.168.10.138:3306/virtual_patient?useUnicode=true&characterEncoding=utf-8&useSSL=true&nullCatalogMeansCurrent=true&serverTimezone=GMT%2B8 username: root password: '123456' initial-size: 5 # 初始化大小 diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DiseasePhysicalService.java b/virtual-patient-model/src/main/java/com/supervision/service/DiseasePhysicalService.java index d5fdd2b6..9b180b22 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/DiseasePhysicalService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/DiseasePhysicalService.java @@ -1,10 +1,8 @@ package com.supervision.service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.model.DiseasePhysical; import com.baomidou.mybatisplus.extension.service.IService; import com.supervision.vo.manage.DiseasePhysicalResVo; -import com.supervision.vo.manage.DiseaseVo; import java.util.List; diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DiseaseService.java b/virtual-patient-model/src/main/java/com/supervision/service/DiseaseService.java index 39d2adf3..06e6108b 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/DiseaseService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/DiseaseService.java @@ -1,10 +1,7 @@ package com.supervision.service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.model.Disease; import com.baomidou.mybatisplus.extension.service.IService; -import com.supervision.vo.manage.DiseaseVo; -import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -16,7 +13,13 @@ import java.util.List; public interface DiseaseService extends IService { - List listDiseaseWithType(String id); + /** + * 根据疾病的id查询疾病列表 + * + * @param id 疾病id + * @return 疾病列表,如果不是复合疾病或包含的疾病id列表为空,则返回包含单个疾病对象的列表,如果是复合疾病,则返回包含复合疾病对象的列表 + */ + List listDiseaseNestIfComposite(String id); } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseasePhysicalServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseasePhysicalServiceImpl.java index 1bd8ac45..2e34e979 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseasePhysicalServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseasePhysicalServiceImpl.java @@ -1,12 +1,10 @@ package com.supervision.service.impl; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.supervision.model.DiseasePhysical; import com.supervision.service.DiseasePhysicalService; import com.supervision.mapper.DiseasePhysicalMapper; import com.supervision.vo.manage.DiseasePhysicalResVo; -import com.supervision.vo.manage.DiseaseVo; import org.springframework.stereotype.Service; import java.util.List; diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseaseServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseaseServiceImpl.java index fc9a2472..21553af7 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseaseServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiseaseServiceImpl.java @@ -1,16 +1,13 @@ package com.supervision.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.supervision.exception.BusinessException; import com.supervision.model.Disease; import com.supervision.service.DiseaseService; import com.supervision.mapper.DiseaseMapper; -import com.supervision.vo.manage.DiseaseVo; import org.springframework.stereotype.Service; import java.util.List; @@ -26,10 +23,8 @@ public class DiseaseServiceImpl extends ServiceImpl implements DiseaseService{ @Override - public List listDiseaseWithType(String id) { - if (StrUtil.isEmpty(id)){ - throw new BusinessException("id is not allow empty"); - } + public List listDiseaseNestIfComposite(String id) { + Assert.notEmpty(id, "id is not allow empty"); Disease disease = super.getById(id); if (!isCompositeDisease(disease) || CollUtil.isEmpty(disease.getContainDiseaseIds())){ return CollUtil.newArrayList(disease); @@ -39,7 +34,11 @@ public class DiseaseServiceImpl extends ServiceImpl } - + /** + * 是否是复合疾病 + * @param disease 疾病 + * @return true 是复合疾病 false 不是复合疾病 + */ private boolean isCompositeDisease(Disease disease){ if (Objects.isNull(disease)){ diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseReqVo.java similarity index 71% rename from virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseVo.java rename to virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseReqVo.java index ff31d908..01fe7cdc 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseVo.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseReqVo.java @@ -7,7 +7,7 @@ import lombok.Data; @Data @ApiModel -public class DiseaseVo { +public class DiseaseReqVo { @ApiModelProperty("类目名称") @@ -20,5 +20,8 @@ public class DiseaseVo { @ApiModelProperty("症状") private String symptom; + @ApiModelProperty("疾病类型 0单一疾病 1 复合疾病,默认值为0") + private Integer diseaseType; + } diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseResVo.java new file mode 100644 index 00000000..24f409ef --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseaseResVo.java @@ -0,0 +1,14 @@ +package com.supervision.vo.manage; + +import com.supervision.model.Disease; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +public class DiseaseResVo extends Disease { + + private List containDiseaseNames; +} 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 d5a17d58..1f3a5429 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 @@ -56,7 +56,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService diagnosisResultResVO.setId(processId); Process process = processService.getById(processId); MedicalRec medicalRec = medicalRecService.getById(process.getMedicalRecId()); - List diseasesList = diseaseService.listDiseaseWithType(medicalRec.getDiseaseId()); + List diseasesList = diseaseService.listDiseaseNestIfComposite(medicalRec.getDiseaseId()); // 1.生成预期诊断结果 diagnosisResultResVO.setExpertDiagnosisResult(creatExpertDiagnosisResult(medicalRec, diseasesList, processId)); // 2.生成初步诊断依据