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 queryAskPrimaryList(String processId) { return diagnosisPrimaryService.queryAskPrimaryList(processId); } @Override public List 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 queryDiagnosticBasisListForPrimary(String processId) { return diagnosisPrimaryService.queryDiagnosticBasisListForPrimary(processId); } @Override public void saveDiagnosticBasis(List 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(); } } } }