manage: 1.添加复合疾病相关接口

2.修改数据库位置
dev_2.1.0
xueqingkun 1 year ago
parent 1a9891c88c
commit a00353e5e7

@ -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;

@ -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<Disease> queryPageList(@RequestParam(defaultValue = "1")Integer pageNum,
@RequestParam(defaultValue = "10")Integer pageSize,
DiseaseVo diseaseVo) {
public IPage<? extends Disease> 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);
}

@ -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<Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseVo diseaseVo);
IPage<? extends Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo);
}

@ -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<Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseVo diseaseVo) {
public IPage<? extends Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo) {
if (null == diseaseReqVo.getDiseaseType()){
diseaseReqVo.setDiseaseType(0);
}
LambdaQueryChainWrapper<Disease> 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<Disease> page = wrapper.page(new Page<>(pageNum, pageSize));
return wrapper.page(new Page<>(pageNum, pageSize));
if (page.getSize() == 0) {
return page;
}
// 根据diseaseIds查询疾病信息
List<String> 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<String, Disease> 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<Disease> diseases = this.queryByAnyCondition(disease.getCode(), disease.getDiseaseName(), disease.getDiseaseNameAlias());
Assert.isTrue(CollUtil.isEmpty(diseases),"类目编码: {},或疾病名称: {},或疾病分类别名: {} 已存在",
disease.getCode(),disease.getDiseaseName(),disease.getDiseaseNameAlias());
// 判断类目编码是否已存在
List<Disease> diseases = this.queryByAnyCondition(disease.getCode(), disease.getDiseaseName(), disease.getDiseaseNameAlias());
Assert.isTrue(CollUtil.isEmpty(diseases),"类目编码: {},或疾病名称: {},或疾病分类别名: {} 已存在",
disease.getCode(),disease.getDiseaseName(),disease.getDiseaseNameAlias());
}
}

@ -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 # 初始化大小

@ -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;

@ -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<Disease> {
List<Disease> listDiseaseWithType(String id);
/**
* id
*
* @param id id
* @return id
*/
List<Disease> listDiseaseNestIfComposite(String id);
}

@ -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;

@ -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<DiseaseMapper, Disease>
implements DiseaseService{
@Override
public List<Disease> listDiseaseWithType(String id) {
if (StrUtil.isEmpty(id)){
throw new BusinessException("id is not allow empty");
}
public List<Disease> 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<DiseaseMapper, Disease>
}
/**
*
* @param disease
* @return true false
*/
private boolean isCompositeDisease(Disease disease){
if (Objects.isNull(disease)){

@ -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;
}

@ -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<String> containDiseaseNames;
}

@ -56,7 +56,7 @@ public class AskDiagnosisResultServiceImpl implements AskDiagnosisResultService
diagnosisResultResVO.setId(processId);
Process process = processService.getById(processId);
MedicalRec medicalRec = medicalRecService.getById(process.getMedicalRecId());
List<Disease> diseasesList = diseaseService.listDiseaseWithType(medicalRec.getDiseaseId());
List<Disease> diseasesList = diseaseService.listDiseaseNestIfComposite(medicalRec.getDiseaseId());
// 1.生成预期诊断结果
diagnosisResultResVO.setExpertDiagnosisResult(creatExpertDiagnosisResult(medicalRec, diseasesList, processId));
// 2.生成初步诊断依据

Loading…
Cancel
Save