From 0218761a1c81ae6872fdb996b6eb8a41ecef165d Mon Sep 17 00:00:00 2001 From: xueqingkun <xueqingkun@126.com> Date: Fri, 8 Dec 2023 14:02:18 +0800 Subject: [PATCH] =?UTF-8?q?web=20=EF=BC=9A=E9=97=AE=E8=AF=8A=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=B7=BB=E5=8A=A0=E5=88=9D=E6=AD=A5=E8=AF=8A=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/DiagnosisPrimaryMapper.java | 2 ++ .../java/com/supervision/model/Process.java | 2 ++ .../service/DiagnosisPrimaryService.java | 2 ++ .../impl/DiagnosisPrimaryServiceImpl.java | 6 ++++ .../vo/result/DiagnoseProcessReqVo.java | 3 ++ .../vo/result/DiagnoseProcessResVo.java | 5 +++ .../mapper/DiagnosisPrimaryMapper.xml | 14 ++++++++ .../main/resources/mapper/ProcessMapper.xml | 8 ++++- .../service/impl/DiagnoseHallServiceImpl.java | 33 ++++++++++++++++++- 9 files changed, 73 insertions(+), 2 deletions(-) diff --git a/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java b/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java index a8e16c5b..cebd1432 100644 --- a/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java +++ b/virtual-patient-model/src/main/java/com/supervision/mapper/DiagnosisPrimaryMapper.java @@ -18,6 +18,8 @@ public interface DiagnosisPrimaryMapper extends BaseMapper<DiagnosisPrimary> { List<DiagnosisPrimaryVO> queryAskPrimaryList(@Param("processId") String processId); + List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(@Param("processIds") List<String> processIds); + List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(@Param("processId") String processId); } diff --git a/virtual-patient-model/src/main/java/com/supervision/model/Process.java b/virtual-patient-model/src/main/java/com/supervision/model/Process.java index cfa899b9..394813f6 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/Process.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/Process.java @@ -1,5 +1,6 @@ package com.supervision.model; +import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -74,6 +75,7 @@ public class Process implements Serializable { /** * 更新时间 */ + @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @TableField(exist = false) diff --git a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java index 6b06d793..e7980e89 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/DiagnosisPrimaryService.java @@ -16,6 +16,8 @@ public interface DiagnosisPrimaryService extends IService<DiagnosisPrimary> { List<DiagnosisPrimaryVO> queryAskPrimaryList(String processId); + List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(List<String> processIds); + List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId); } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java index 7fe80bbe..bfcf360f 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/DiagnosisPrimaryServiceImpl.java @@ -24,6 +24,12 @@ public class DiagnosisPrimaryServiceImpl extends ServiceImpl<DiagnosisPrimaryMap return this.baseMapper.queryAskPrimaryList(processId); } + @Override + public List<DiagnosisPrimaryVO> queryAskPrimaryListByProcessIds(List<String> processIds) { + + return super.baseMapper.queryAskPrimaryListByProcessIds(processIds); + } + @Override public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId) { return this.baseMapper.queryDiagnosticBasisListForPrimary(processId); diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java index 7ab921de..f15dcce9 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessReqVo.java @@ -8,4 +8,7 @@ public class DiagnoseProcessReqVo { @ApiModelProperty("用户id") private String userId; + + @ApiModelProperty("主诉") + private String patientSelfDesc; } diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java index 1c55a92e..4a7e51c3 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/result/DiagnoseProcessResVo.java @@ -21,9 +21,14 @@ public class DiagnoseProcessResVo { @ApiModelProperty("最近问诊时间") private LocalDateTime recentTime; + + @ApiModelProperty("病例编号") + private String medicalRecId; + @ApiModelProperty("主诉") private String patientSelfDesc; + @ApiModelProperty("病人id") private String patientId; diff --git a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml index a8c48338..e9ffb324 100644 --- a/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/DiagnosisPrimaryMapper.xml @@ -76,4 +76,18 @@ left join vp_disease_ancillary t3 on t1.ancillary_id = t3.id where t1.process_id = #{processId} </select> + + <select id="queryAskPrimaryListByProcessIds" resultType="com.supervision.vo.ask.DiagnosisPrimaryVO"> + select t1.*, if(t2.disease_name_alias is null, t2.disease_name, t2.disease_name_alias) as primaryDiseaseName + from vp_diagnosis_primary t1 + left join vp_disease t2 on t1.primary_diagnosis_id = t2.id + <where> + <if test="processIds != null and processIds.size() > 0"> + t1.process_id in + <foreach item="processId" collection="processIds" open="(" separator="," close=")"> + #{processId} + </foreach> + </if> + </where> + </select> </mapper> diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml index b6712624..f03f8052 100644 --- a/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/ProcessMapper.xml @@ -30,6 +30,7 @@ pro.user_id as userId, pro.status as status, pro.update_time as recentTime, + mre.id as medicalRecId, mre.patient_self_desc as patientSelfDesc, mre.patient_id as patientId, mre.patient_name as patientName, @@ -39,7 +40,12 @@ 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 - where pro.user_id = #{diagnoseProcess.userId} ORDER BY pro.update_time desc + where + pro.user_id = #{diagnoseProcess.userId} + <if test="diagnoseProcess.patientSelfDesc != null and diagnoseProcess.patientSelfDesc != ''"> + AND mre.patient_self_desc like concat("%",#{diagnoseProcess.patientSelfDesc}, "%") + </if> + ORDER BY pro.update_time desc </sql> <select id="queryDiagnoseProcessPageList" resultType="com.supervision.vo.result.DiagnoseProcessResVo"> diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java index 9cb6ab5e..fb2b5418 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java @@ -1,12 +1,17 @@ package com.supervision.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Opt; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.lock.annotation.Lock4j; +import com.supervision.model.DiagnosisPrimary; import com.supervision.service.DiagnoseHallService; +import com.supervision.service.DiagnosisPrimaryService; import com.supervision.service.MedicalRecService; import com.supervision.service.ProcessService; +import com.supervision.vo.ask.DiagnosisPrimaryVO; import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.vo.result.DiagnoseProcessReqVo; import com.supervision.vo.result.DiagnoseProcessResVo; @@ -15,6 +20,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor @@ -27,6 +37,8 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService { private final MedicalRecService medicalRecService; + private final DiagnosisPrimaryService diagnosisPrimaryService; + @Lock4j(name = "achieveDiagnoseResource") @Override public boolean achieveDiagnoseResource() { @@ -39,7 +51,26 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService { DiagnoseProcessReqVo diagnoseProcessReqVo) { Assert.notEmpty(diagnoseProcessReqVo.getUserId(),"用户id不允许为空"); - return processService.queryUserDiagnoseProcessPageList(new Page<>(pageNum,pageSize),diagnoseProcessReqVo); + // 1.查询诊断列表 + Page<DiagnoseProcessResVo> diagnoseProcessResVoPage = processService.queryUserDiagnoseProcessPageList(new Page<>(pageNum, pageSize), diagnoseProcessReqVo); + if (diagnoseProcessResVoPage.getSize()==0){ + return diagnoseProcessResVoPage; + } + + List<DiagnoseProcessResVo> records = diagnoseProcessResVoPage.getRecords(); + + // 2.根据processIds查询诊断疾病名 + List<String> processIds = records.stream().map(DiagnoseProcessResVo::getProcessId).distinct().collect(Collectors.toList()); + List<DiagnosisPrimaryVO> diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryListByProcessIds(processIds); + Map<String, List<DiagnosisPrimaryVO>> diagnosisPrimaryVOsMap = diagnosisPrimaryVOS.stream().collect(Collectors.groupingBy(DiagnosisPrimary::getProcessId)); + + // 3.把疾病名填充到诊断列表中 + diagnoseProcessResVoPage.getRecords().forEach(vo->{ + List<DiagnosisPrimaryVO> list = diagnosisPrimaryVOsMap.getOrDefault(vo.getProcessId(),new ArrayList<>()); + vo.setPrimaryDiseaseNameList(list.stream().map(DiagnosisPrimaryVO::getPrimaryDiseaseName).distinct().collect(Collectors.toList())); + }); + + return diagnoseProcessResVoPage; } @Override