From 1ea23760b507a6a4ce03aba0e17c3790dc5a0276 Mon Sep 17 00:00:00 2001 From: liu Date: Mon, 15 Jan 2024 17:08:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E8=AF=84=E4=BC=B0=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessRecordController.java | 27 ++++++++ .../manage/service/ProcessRecordService.java | 9 +++ .../impl/ProcessRecordServiceImpl.java | 66 +++++++++++++++++++ .../src/main/resources/application.yml | 2 +- .../src/main/resources/logback-spring.xml | 2 +- .../com/supervision/mapper/DiseaseMapper.java | 4 ++ .../com/supervision/mapper/ProcessMapper.java | 10 +++ .../supervision/service/DiseaseService.java | 7 ++ .../supervision/service/ProcessService.java | 14 ++++ .../service/impl/DiseaseServiceImpl.java | 10 ++- .../service/impl/ProcessServiceImpl.java | 24 +++++-- .../vo/result/ProcessRecordVO.java | 46 +++++++++++++ .../main/resources/mapper/DiseaseMapper.xml | 54 ++++++++++----- .../main/resources/mapper/ProcessMapper.xml | 58 ++++++++++++---- 14 files changed, 292 insertions(+), 41 deletions(-) create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/controller/processrecord/ProcessRecordController.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/service/ProcessRecordService.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/ProcessRecordServiceImpl.java create mode 100644 virtual-patient-model/src/main/java/com/supervision/vo/result/ProcessRecordVO.java 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 new file mode 100644 index 00000000..ed625e6c --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/processrecord/ProcessRecordController.java @@ -0,0 +1,27 @@ +package com.supervision.manage.controller.processrecord; + +import com.baomidou.mybatisplus.core.metadata.IPage; +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; + +@Api(tags = "问诊病案管理") +@RestController +@RequestMapping("processRecord") +@RequiredArgsConstructor +public class ProcessRecordController { + + private final ProcessRecordService processRecordService; + + + @ApiOperation("分页查询病案管理") + @GetMapping("queryProcessRecordPage") + public IPage queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize) { + return processRecordService.queryProcessRecordPage(studentName, medicalRecNo, diseaseType, pageNum, pageSize); + } +} 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 new file mode 100644 index 00000000..5836a9af --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/ProcessRecordService.java @@ -0,0 +1,9 @@ +package com.supervision.manage.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.vo.result.ProcessRecordVO; + +public interface ProcessRecordService { + + IPage queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize); +} 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 new file mode 100644 index 00000000..03d2e71e --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/ProcessRecordServiceImpl.java @@ -0,0 +1,66 @@ +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 com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.supervision.model.Disease; +import com.supervision.service.DiseaseService; +import com.supervision.vo.result.ProcessRecordVO; +import com.supervision.manage.service.ProcessRecordService; +import com.supervision.service.ProcessService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class ProcessRecordServiceImpl implements ProcessRecordService { + + + private final ProcessService processService; + + private final DiseaseService diseaseService; + + + @Override + public IPage queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize) { + Set diseaseList = new HashSet<>(); + // 首先这里根据疾病类型筛选出来符合条件的疾病 + if (StrUtil.isNotBlank(diseaseType)) { + // 首先查询符合条件的疾病 + List theDiseaseList = diseaseService.lambdaQuery().like(Disease::getDiseaseNameAlias, diseaseType).select(Disease::getId).list(); + if (CollUtil.isNotEmpty(theDiseaseList)) { + Set containsSet = theDiseaseList.stream().map(Disease::getId).collect(Collectors.toSet()); + List diseases = diseaseService.queryAllDiseaseListByDiseaseId(new ArrayList<>(containsSet)); + diseaseList.addAll(diseases); + } + // 如果疾病查询条件不为空,却没有查询结果,这是就直接返回一个空的,不继续走下面逻辑 + if (CollUtil.isEmpty(diseaseList)) { + return new Page<>(); + + + } + } + 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())); + } + record.setDiseaseType(CollUtil.join(diseaseName, ",")); + } + } + } + return page; + } +} diff --git a/virtual-patient-manage/src/main/resources/application.yml b/virtual-patient-manage/src/main/resources/application.yml index caf4dfcd..027b4e36 100644 --- a/virtual-patient-manage/src/main/resources/application.yml +++ b/virtual-patient-manage/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev \ No newline at end of file + active: test \ No newline at end of file diff --git a/virtual-patient-manage/src/main/resources/logback-spring.xml b/virtual-patient-manage/src/main/resources/logback-spring.xml index a5b8911a..08b3357a 100644 --- a/virtual-patient-manage/src/main/resources/logback-spring.xml +++ b/virtual-patient-manage/src/main/resources/logback-spring.xml @@ -13,7 +13,7 @@ - + diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/DiseaseMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/DiseaseMapper.java index 384bae41..cf3eaae8 100644 --- a/virtual-patient-model/src/main/java/com/supervision/mapper/DiseaseMapper.java +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/DiseaseMapper.java @@ -8,6 +8,8 @@ import com.supervision.vo.manage.DiseaseReqVo; import com.supervision.vo.manage.DiseaseResVo; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author flevance * @description 针对表【vp_disease(疾病名称)】的数据库操作Mapper @@ -17,6 +19,8 @@ import org.apache.ibatis.annotations.Param; public interface DiseaseMapper extends BaseMapper { IPage queryPageList(IPage page,@Param("diseaseReqVo") DiseaseReqVo diseaseReqVo); + + List queryAllDiseaseListByDiseaseId(@Param("diseaseIdList")List diseaseIdList); } diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/ProcessMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/ProcessMapper.java index 3402b3d8..bd86d31f 100644 --- a/virtual-patient-model/src/main/java/com/supervision/mapper/ProcessMapper.java +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/ProcessMapper.java @@ -1,12 +1,17 @@ package com.supervision.mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.model.Process; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.supervision.vo.result.DiagnoseProcessReqVo; import com.supervision.vo.result.DiagnoseProcessResVo; +import com.supervision.vo.result.ProcessRecordVO; import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Set; + /** * @author flevance * @description 针对表【vp_process(诊断进程表)】的数据库操作Mapper @@ -17,6 +22,11 @@ public interface ProcessMapper extends BaseMapper { Page queryDiagnoseProcessPageList(Page page, @Param("diagnoseProcess") DiagnoseProcessReqVo diagnoseProcessReqVo); + + IPage queryProcessRecordPage(@Param("studentName") String studentName, + @Param("medicalRecNo") String medicalRecNo, + @Param("diseaseList") Set diseaseList, + Page page); } 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 e111981e..2152c7cc 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 @@ -25,5 +25,12 @@ public interface DiseaseService extends IService { IPage queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo); + /** + * 根据疾病ID,查询所有符合条件的疾病(包括单一疾病和复合疾病) + * + * @return 疾病列表 + */ + List queryAllDiseaseListByDiseaseId(List diseaseId); + } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java b/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java index 38e160da..8d4ece27 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/ProcessService.java @@ -1,10 +1,15 @@ package com.supervision.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.model.Process; import com.baomidou.mybatisplus.extension.service.IService; import com.supervision.vo.result.DiagnoseProcessReqVo; import com.supervision.vo.result.DiagnoseProcessResVo; +import com.supervision.vo.result.ProcessRecordVO; + +import java.util.List; +import java.util.Set; /** * @author flevance @@ -17,5 +22,14 @@ public interface ProcessService extends IService { Page queryUserDiagnoseProcessPageList(Page page, DiagnoseProcessReqVo diagnoseProcessReqVo); + /** + * 后台管理使用,问诊病案列表分页查询 + * @param studentName 用户ID + * @param medicalRecNo 病历号 + * @param diseaseType 疾病类型 + * @return 查询结果 + */ + IPage queryProcessRecordPage(String studentName, String medicalRecNo, Set diseaseList, Integer pageNum, Integer pageSize); + } 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 8110a55e..f98a07f1 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 @@ -11,6 +11,7 @@ import com.supervision.mapper.DiseaseMapper; import com.supervision.vo.manage.DiseaseReqVo; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -39,8 +40,13 @@ public class DiseaseServiceImpl extends ServiceImpl return super.getBaseMapper().queryPageList(new Page<>(pageNum, pageSize), diseaseReqVo); } - - + @Override + public List queryAllDiseaseListByDiseaseId(List diseaseId) { + if (CollUtil.isEmpty(diseaseId)){ + return new ArrayList<>(); + } + return this.baseMapper.queryAllDiseaseListByDiseaseId(diseaseId); + } /** * 是否是复合疾病 diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/ProcessServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/ProcessServiceImpl.java index 2dbdaf44..6b0fbb6f 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/ProcessServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/ProcessServiceImpl.java @@ -1,5 +1,6 @@ package com.supervision.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.supervision.mapper.ProcessMapper; @@ -7,20 +8,33 @@ import com.supervision.model.Process; import com.supervision.service.ProcessService; import com.supervision.vo.result.DiagnoseProcessReqVo; import com.supervision.vo.result.DiagnoseProcessResVo; +import com.supervision.vo.result.ProcessRecordVO; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Set; + /** -* @author flevance -* @description 针对表【vp_process(诊断进程表)】的数据库操作Service实现 -* @createDate 2023-10-20 17:19:21 -*/ + * @author flevance + * @description 针对表【vp_process(诊断进程表)】的数据库操作Service实现 + * @createDate 2023-10-20 17:19:21 + */ @Service public class ProcessServiceImpl extends ServiceImpl implements ProcessService { + @Override + public IPage queryProcessRecordPage(String studentName, String medicalRecNo, Set diseaseList, Integer pageNum, Integer pageSize) { + Page page = new Page<>(pageNum, pageSize); + + return this.baseMapper.queryProcessRecordPage(studentName, medicalRecNo, diseaseList, page); + } + @Override public Page queryUserDiagnoseProcessPageList(Page page, DiagnoseProcessReqVo diagnoseProcessReqVo) { - return super.getBaseMapper().queryDiagnoseProcessPageList(page,diagnoseProcessReqVo); + return super.getBaseMapper().queryDiagnoseProcessPageList(page, diagnoseProcessReqVo); + + } } 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 new file mode 100644 index 00000000..15904c0c --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/vo/result/ProcessRecordVO.java @@ -0,0 +1,46 @@ +package com.supervision.vo.result; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.supervision.handler.StringListTypeHandler; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class ProcessRecordVO { + + @ApiModelProperty("病历ID") + private String medicalId; + + @ApiModelProperty("问诊实例ID") + private String processId; + + @ApiModelProperty("问诊编号") + private String processNo; + + @ApiModelProperty("病历编号") + private String medicalRecNo; + + @ApiModelProperty("学生名称") + private String studentName; + + @ApiModelProperty("疾病名称") + private String diseaseNameAlias; + + @ApiModelProperty("疾病分类") + private String diseaseType; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("更新时间(问诊实例的时间)") + private String updateTime; + + @TableField(typeHandler = StringListTypeHandler.class) + private List containDiseaseIds; + + +} diff --git a/virtual-patient-model/src/main/resources/mapper/DiseaseMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiseaseMapper.xml index 4da77ccc..66a854ed 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiseaseMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiseaseMapper.xml @@ -21,34 +21,52 @@ - id,disease_name,disease_name_alias,code,status,diseaseType,symptom,contain_disease_ids, + id + ,disease_name,disease_name_alias,code,status,diseaseType,symptom,contain_disease_ids, create_user_id,create_time,update_user_id,update_time + + + \ No newline at end of file diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml index ecde9745..6ab3c465 100644 --- a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml @@ -27,22 +27,22 @@ - select pro.id as processId, - pro.user_id as userId, - pro.status as status, - pro.update_time as time, - mre.id as medicalRecId, - mre.patient_self_desc as patientSelfDesc, - mre.patient_id as patientId, - mre.patient_name as name, - mre.patient_age as age, - mre.patient_gender as gender, - pat.resource_id as resourceId + select pro.id as processId, + pro.user_id as userId, + pro.status as status, + pro.update_time as time, + mre.id as medicalRecId, + mre.patient_self_desc as patientSelfDesc, + mre.patient_id as patientId, + mre.patient_name as name, + mre.patient_age as age, + mre.patient_gender as gender, + pat.resource_id as resourceId from vp_process pro - left join vp_medical_rec mre on pro.medical_rec_id = mre.id - left join vp_patient pat on mre.patient_id = pat.id + left join vp_medical_rec mre on pro.medical_rec_id = mre.id + left join vp_patient pat on mre.patient_id = pat.id where - pro.user_id = #{diagnoseProcess.userId} + pro.user_id = #{diagnoseProcess.userId} AND mre.patient_self_desc like concat("%",#{diagnoseProcess.patientSelfDesc}, "%") @@ -52,4 +52,34 @@ + +