virtual-patient/virtual-patient-web/src/main/java/com/supervision/service/impl/DiagnoseHallServiceImpl.java

72 lines
3.0 KiB
Java

package com.supervision.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.supervision.model.*;
import com.supervision.service.*;
import com.supervision.vo.ask.DiagnosisPrimaryVO;
import com.supervision.vo.manage.MedicalRecPageReqVO;
import com.supervision.vo.manage.MedicalRecPageResVO;
import com.supervision.vo.result.DiagnoseProcessReqVo;
import com.supervision.vo.result.DiagnoseProcessResVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@Slf4j
public class DiagnoseHallServiceImpl implements DiagnoseHallService {
private final ProcessService processService;
private final MedicalRecService medicalRecService;
private final DiagnosisPrimaryService diagnosisPrimaryService;
@Override
public IPage<DiagnoseProcessResVo> queryDiagnoseProcessPageList(Integer pageNum, Integer pageSize,
DiagnoseProcessReqVo diagnoseProcessReqVo) {
Assert.notEmpty(diagnoseProcessReqVo.getUserId(),"用户id不允许为空");
// 1.查询诊断列表
diagnoseProcessReqVo.setDeleteFlag(0);
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
public IPage<MedicalRecPageResVO> queryMedicalRecPageList(Integer pageNum, Integer pageSize) {
MedicalRecPageReqVO medicalRecPageReqVO = new MedicalRecPageReqVO();
medicalRecPageReqVO.setStatus(1);// 设置为已发布的数据
return medicalRecService.queryMedicalRecManagePage(medicalRecPageReqVO, pageNum, pageSize);
}
}