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

111 lines
4.8 KiB
Java

package com.supervision.service.impl;
import com.supervision.exception.BusinessException;
import com.supervision.model.*;
import com.supervision.pojo.vo.DiagnosticBasisForPrimaryReqVO;
import com.supervision.vo.ask.DiagnosticBasisForPrimaryResVO;
import com.supervision.service.*;
import com.supervision.util.UserUtil;
import com.supervision.vo.ask.DiagnosisPrimaryVO;
import com.supervision.vo.ask.ModifyPrimaryDiseaseInfoReqVO;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@RequiredArgsConstructor
public class AskPrimaryServiceImpl implements AskPrimaryService {
private final DiagnosisPrimaryService diagnosisPrimaryService;
private final DiseaseService diseaseService;
private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService;
private final DiagnosisPhysicalRecordService diagnosisPhysicalRecordService;
private final DiagnosisQaRecordService diagnosisQaRecordService;
@Override
public List<DiagnosisPrimaryVO> queryAskPrimaryList(String processId) {
return diagnosisPrimaryService.queryAskPrimaryList(processId);
}
@Override
public List<Disease> queryPrimaryCanChooseList() {
return diseaseService.list();
}
@Override
public void modifyPrimaryDiseaseInfo(ModifyPrimaryDiseaseInfoReqVO reqVO) {
diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getPatientDiseaseInfo, reqVO.getPatientDiseaseInfo())
.eq(DiagnosisPrimary::getId, reqVO.getId()).update();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void savePrimary(DiagnosisPrimary reqVO) {
reqVO.setExcludeFlag(null);
reqVO.setCreateUserId(UserUtil.getUser().getId());
diagnosisPrimaryService.save(reqVO);
}
@Override
public void updatePrimaryByConfirm(DiagnosisPrimary reqVO) {
diagnosisPrimaryService.lambdaUpdate().set(DiagnosisPrimary::getExcludeFlag,reqVO.getExcludeFlag())
.set(DiagnosisPrimary::getPatientDiseaseInfo,reqVO.getPatientDiseaseInfo())
.eq(DiagnosisPrimary::getId,reqVO.getId()).update();
}
@Override
public void deletePrimary(String id) {
// 如果本项初步诊断已经做过了辅助检查和体格检查,则不允许删除
DiagnosisPrimary primary = diagnosisPrimaryService.getById(id);
Integer ancillaryCount = diagnosisAncillaryRecordService.lambdaQuery().eq(DiagnosisAncillaryRecord::getProcessId, primary.getProcessId()).count();
if (ancillaryCount > 0) {
throw new BusinessException("仅支持删除没有做过体格、辅助检查的初步诊断项目");
}
Integer physicalCount = diagnosisPhysicalRecordService.lambdaQuery().eq(DiagnosisPhysicalRecord::getProcessId, primary.getProcessId()).count();
if (physicalCount > 0) {
throw new BusinessException("仅支持删除没有做过体格、辅助检查的初步诊断项目");
}
diagnosisPrimaryService.lambdaUpdate().eq(DiagnosisPrimary::getId, id).remove();
}
/**
* ,
* @param processId ID
* @return
*/
@Override
public List<DiagnosticBasisForPrimaryResVO> queryDiagnosticBasisListForPrimary(String processId) {
return diagnosisPrimaryService.queryDiagnosticBasisListForPrimary(processId);
}
@Override
public void saveDiagnosticBasis(List<DiagnosticBasisForPrimaryReqVO> reqVO) {
for (DiagnosticBasisForPrimaryReqVO node : reqVO) {
if (1 == node.getType()){
diagnosisQaRecordService.lambdaUpdate().set(DiagnosisQaRecord::getBasisConfirmFlag,node.getBasisConfirmFlag())
.set(DiagnosisQaRecord::getBasisIdentificationFlag,node.getBasisIdentificationFlag())
.eq(DiagnosisQaRecord::getId,node.getId()).update();
continue;
}
if (2 == node.getType()){
diagnosisPhysicalRecordService.lambdaUpdate().set(DiagnosisPhysicalRecord::getBasisConfirmFlag,node.getBasisConfirmFlag())
.set(DiagnosisPhysicalRecord::getBasisIdentificationFlag,node.getBasisIdentificationFlag())
.eq(DiagnosisPhysicalRecord::getId,node.getId()).update();
continue;
}
if (3 == node.getType()){
diagnosisAncillaryRecordService.lambdaUpdate().set(DiagnosisAncillaryRecord::getBasisConfirmFlag,node.getBasisConfirmFlag())
.set(DiagnosisAncillaryRecord::getBasisIdentificationFlag,node.getBasisIdentificationFlag())
.eq(DiagnosisAncillaryRecord::getId,node.getId()).update();
}
}
}
}