提交评估页面查询

dev_2.1.0
liu 1 year ago
parent 9178a036fb
commit 1ea23760b5

@ -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<ProcessRecordVO> queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize) {
return processRecordService.queryProcessRecordPage(studentName, medicalRecNo, diseaseType, pageNum, pageSize);
}
}

@ -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<ProcessRecordVO> queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize);
}

@ -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<ProcessRecordVO> queryProcessRecordPage(String studentName, String medicalRecNo, String diseaseType, Integer pageNum, Integer pageSize) {
Set<String> diseaseList = new HashSet<>();
// 首先这里根据疾病类型筛选出来符合条件的疾病
if (StrUtil.isNotBlank(diseaseType)) {
// 首先查询符合条件的疾病
List<Disease> theDiseaseList = diseaseService.lambdaQuery().like(Disease::getDiseaseNameAlias, diseaseType).select(Disease::getId).list();
if (CollUtil.isNotEmpty(theDiseaseList)) {
Set<String> containsSet = theDiseaseList.stream().map(Disease::getId).collect(Collectors.toSet());
List<String> diseases = diseaseService.queryAllDiseaseListByDiseaseId(new ArrayList<>(containsSet));
diseaseList.addAll(diseases);
}
// 如果疾病查询条件不为空,却没有查询结果,这是就直接返回一个空的,不继续走下面逻辑
if (CollUtil.isEmpty(diseaseList)) {
return new Page<>();
}
}
IPage<ProcessRecordVO> page = processService.queryProcessRecordPage(studentName, medicalRecNo, diseaseList, pageNum, pageSize);
if (CollUtil.isNotEmpty(page.getRecords())) {
HashSet<String> diseaseIdSet = new HashSet<>();
page.getRecords().forEach(e -> diseaseIdSet.addAll(Optional.ofNullable(e.getContainDiseaseIds()).orElse(new ArrayList<>())));
if (CollUtil.isNotEmpty(diseaseIdSet)) {
Map<String, Disease> diseaseMap = diseaseService.listByIds(diseaseIdSet).stream().collect(Collectors.toMap(Disease::getId, Function.identity()));
for (ProcessRecordVO record : page.getRecords()) {
List<String> 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;
}
}

@ -1,3 +1,3 @@
spring:
profiles:
active: dev
active: test

@ -13,7 +13,7 @@
</springProfile>
<!-- 测试环境,生产环境 -->
<springProfile name="test,prod">
<springProfile name="prod">
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springboot.sample" level="INFO"/>
<logger name="com.supervision" level="INFO"/>

@ -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<Disease> {
IPage<DiseaseResVo> queryPageList(IPage<AskQuestionLibraryResVo> page,@Param("diseaseReqVo") DiseaseReqVo diseaseReqVo);
List<String> queryAllDiseaseListByDiseaseId(@Param("diseaseIdList")List<String> diseaseIdList);
}

@ -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<Process> {
Page<DiagnoseProcessResVo> queryDiagnoseProcessPageList(Page<DiagnoseProcessResVo> page,
@Param("diagnoseProcess") DiagnoseProcessReqVo diagnoseProcessReqVo);
IPage<ProcessRecordVO> queryProcessRecordPage(@Param("studentName") String studentName,
@Param("medicalRecNo") String medicalRecNo,
@Param("diseaseList") Set<String> diseaseList,
Page<ProcessRecordVO> page);
}

@ -25,5 +25,12 @@ public interface DiseaseService extends IService<Disease> {
IPage<? extends Disease> queryPageList(Integer pageNum, Integer pageSize, DiseaseReqVo diseaseReqVo);
/**
* ID,()
*
* @return
*/
List<String> queryAllDiseaseListByDiseaseId(List<String> diseaseId);
}

@ -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<Process> {
Page<DiagnoseProcessResVo> queryUserDiagnoseProcessPageList(Page<DiagnoseProcessResVo> page, DiagnoseProcessReqVo diagnoseProcessReqVo);
/**
* 使,
* @param studentName ID
* @param medicalRecNo
* @param diseaseType
* @return
*/
IPage<ProcessRecordVO> queryProcessRecordPage(String studentName, String medicalRecNo, Set<String> diseaseList, Integer pageNum, Integer pageSize);
}

@ -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<DiseaseMapper, Disease>
return super.getBaseMapper().queryPageList(new Page<>(pageNum, pageSize), diseaseReqVo);
}
@Override
public List<String> queryAllDiseaseListByDiseaseId(List<String> diseaseId) {
if (CollUtil.isEmpty(diseaseId)){
return new ArrayList<>();
}
return this.baseMapper.queryAllDiseaseListByDiseaseId(diseaseId);
}
/**
*

@ -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<ProcessMapper, Process>
implements ProcessService {
@Override
public IPage<ProcessRecordVO> queryProcessRecordPage(String studentName, String medicalRecNo, Set<String> diseaseList, Integer pageNum, Integer pageSize) {
Page<ProcessRecordVO> page = new Page<>(pageNum, pageSize);
return this.baseMapper.queryProcessRecordPage(studentName, medicalRecNo, diseaseList, page);
}
@Override
public Page<DiagnoseProcessResVo> queryUserDiagnoseProcessPageList(Page<DiagnoseProcessResVo> page, DiagnoseProcessReqVo diagnoseProcessReqVo) {
return super.getBaseMapper().queryDiagnoseProcessPageList(page,diagnoseProcessReqVo);
return super.getBaseMapper().queryDiagnoseProcessPageList(page, diagnoseProcessReqVo);
}
}

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

@ -21,34 +21,52 @@
</resultMap>
<sql id="Base_Column_List">
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
</sql>
<select id="queryPageList" resultType="com.supervision.vo.manage.DiseaseResVo">
SELECT d.id as id,
d.code as code,
d.disease_name as diseaseName,
d.disease_name_alias as diseaseNameAlias,
d.status as status,
d.disease_type as diseaseType,
d.symptom as symptom,
d.contain_disease_ids as containDiseaseIds,
d.create_user_id as createUserId,
d.create_time as createTime,
d.update_user_id as updateUserId,
d.update_time as updateTime,
IF(mr.id IS NOT NULL, true, false) AS isUsedMedicalRec
SELECT d.id as id,
d.code as code,
d.disease_name as diseaseName,
d.disease_name_alias as diseaseNameAlias,
d.status as status,
d.disease_type as diseaseType,
d.symptom as symptom,
d.contain_disease_ids as containDiseaseIds,
d.create_user_id as createUserId,
d.create_time as createTime,
d.update_user_id as updateUserId,
d.update_time as updateTime,
IF(mr.id IS NOT NULL, true, false) AS isUsedMedicalRec
FROM vp_disease d left join vp_medical_rec mr on d.id = mr.disease_id
<where>
<if test="diseaseReqVo.diseaseName!= null and diseaseReqVo.diseaseName!= ''">
AND d.disease_name like concat("%",#{diseaseReqVo.diseaseName}, "%")
</if>
<if test="diseaseReqVo.diseaseName!= null and diseaseReqVo.diseaseName!= ''">
AND d.disease_name like concat("%",#{diseaseReqVo.diseaseName}, "%")
</if>
<if test="diseaseReqVo.diseaseType!= null and diseaseReqVo.diseaseType != ''">
AND d.disease_type = #{diseaseReqVo.diseaseType}
</if>
</where>
order by d.create_time desc
</select>
</select>
<select id="queryAllDiseaseListByDiseaseId" resultType="java.lang.String">
select id
from vp_disease
where id in
<foreach item="diseaseId" collection="diseaseIdList" open="(" separator="," close=")">
#{diseaseId}
</foreach>
<foreach item="diseaseId" collection="diseaseIdList">
union
SELECT id
FROM vp_disease
WHERE JSON_CONTAINS(contain_disease_ids, JSON_ARRAY(#{diseaseId}))
</foreach>
</select>
</mapper>

@ -27,22 +27,22 @@
<sql id="queryUserDiagnoseProcessListSql">
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}
<if test="diagnoseProcess.patientSelfDesc != null and diagnoseProcess.patientSelfDesc != ''">
AND mre.patient_self_desc like concat("%",#{diagnoseProcess.patientSelfDesc}, "%")
</if>
@ -52,4 +52,34 @@
<select id="queryDiagnoseProcessPageList" resultType="com.supervision.vo.result.DiagnoseProcessResVo">
<include refid="queryUserDiagnoseProcessListSql"></include>
</select>
<select id="queryProcessRecordPage" resultType="com.supervision.vo.result.ProcessRecordVO">
select t1.id as processId,
t2.id as medicalId,
t1.process_no as processNo,
t2.no as medicalRecNo,
t1.user_id as userId,
t3.name as studentName,
t2.disease_id as diseaseId,
t1.status as status,
t4.contain_disease_ids as containDiseaseIds
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
left join vp_disease t4 on t1.disease_id = t4.id
where 1 = 1
<if test="studentName != null and studentName != ''">
and t3.name like concat("%",#{studentName}, "%")
</if>
<if test="medicalRecNo != null and medicalRecNo != ''">
and t2.no like concat("%",#{medicalRecNo}, "%")
</if>
<if test="diseaseList != null and diseaseList.size() > 0">
and t4.id in
<foreach item="diseaseId" collection="diseaseList" open="(" separator="," close=")">
#{diseaseId}
</foreach>
</if>
</select>
</mapper>

Loading…
Cancel
Save