diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs index cfa4430e9..f1783a48d 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs @@ -415,6 +415,52 @@ namespace IRaCIS.Core.Application.Contracts.DTO public string BodyPartForEditOther { get; set; } + #region 核验 + + /// + /// 性别 + /// + public string PatientSex { get; set; } = null!; + + /// + /// 体重 + /// + public string PatientWeight { get; set; } + + /// + /// 总剂量 + /// + public string RadionuclideTotalDose { get; set; } = null!; + + /// + /// 半衰期 + /// + public string RadionuclideHalfLife { get; set; } = null!; + + /// + /// 注射时间 + /// + public string RadiopharmaceuticalStartTime { get; set; } = null!; + + /// + /// 成像 / 采集时间 + /// + public string AcquisitionTime { get; set; } = null!; + + + #endregion + + + /// + /// 是否存在空字符串字段(PatientSex、PatientWeight、RadionuclideTotalDose、RadionuclideHalfLife、RadiopharmaceuticalStartTime、AcquisitionTime 任意一个为空/空字符串) + /// + public bool IsHasEmptyPatientInfo => + string.IsNullOrWhiteSpace(PatientSex) || + string.IsNullOrWhiteSpace(PatientWeight) || + string.IsNullOrWhiteSpace(RadionuclideTotalDose) || + string.IsNullOrWhiteSpace(RadionuclideHalfLife) || + string.IsNullOrWhiteSpace(RadiopharmaceuticalStartTime) || + string.IsNullOrWhiteSpace(AcquisitionTime); } public class QASeriesInfoDto diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 91b86b93f..4183663c0 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1,4 +1,5 @@ -using IRaCIS.Core.Application.Contracts; +using DocumentFormat.OpenXml.InkML; +using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts.DTO; using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Helper; @@ -1108,6 +1109,23 @@ namespace IRaCIS.Core.Application.Image.QA { await VerifyIsCanQCAsync(null, subjectVisitId); + var visit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId); + + var isExistStudyClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(t => t.TrialId == visit.TrialId && t.ClinicalDataLevel == ClinicalLevel.Study&&t.IsConfirm&&t.IsApply); + if(isExistStudyClinicalData) + { + List modalitieTypes = new List() { "PT、CT", "CT、PT", "PET-CT" }; + + var studyList=await _dicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId&& modalitieTypes.Contains(t.Modalities)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + if (studyList.Any(x => x.IsHasEmptyPatientInfo)) + { + return ResponseOutput.NotOk(_localizer["QCOperation_IsHasEmptyPatientInfo"]); + } + } + + + + if (await _qcChallengeRepository.AnyAsync(t => t.SubjectVisitId == subjectVisitId && t.IsClosed == false)) { //---当前访视有质疑未关闭,不允许该操作