diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 6bcf8aa61..74f4e87eb 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -2587,7 +2587,7 @@ public class VisitTaskService(IRepository _visitTaskRepository, sv.CurrentActionUserId = null; sv.PreliminaryAuditUserId = null; sv.ReviewAuditUserId = null; - + sv.SecondReviewState = SecondReviewState.None; if (sv.IsBaseLine) { diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index 69b5f9080..4242e3042 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -421,9 +421,9 @@ namespace IRaCIS.Core.Application.Image.QA { var trialConfirmTime = _trialRepository.Where(t => t.Id == sv.TrialId).Select(t => t.QCQuestionConfirmedTime).FirstOrDefault(); - secondReviewList = (from answer in _trialQCQuestionAnswerRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.SecondReview).Where(t => t.SecondReviewTime != null) - join userRole in _userRoleReposiotry.Where() on answer.UpdateUserId equals userRole.Id - select new SecondReviewDto { SecondReviewTime = answer.SecondReviewTime, SignTime = answer.UpdateTime, FullName = userRole.FullName, UserName = userRole.UserName }) + secondReviewList = (from answer in _trialQCQuestionAnswerRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.CurrentQCEnum == CurrentQC.SecondReview).Where(t => t.SecondReviewTime != null) + join userRole in _userRoleReposiotry.Where() on answer.UpdateUserId equals userRole.Id + select new SecondReviewDto { SecondReviewTime = answer.SecondReviewTime, SignTime = answer.UpdateTime, FullName = userRole.FullName, UserName = userRole.UserName }) .Distinct().ToList(); var secondReviewTimeList = secondReviewList.Select(t => t.SecondReviewTime).Distinct().ToList(); @@ -485,7 +485,7 @@ namespace IRaCIS.Core.Application.Image.QA var sv = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).FirstNotNullAsync(); - if (sv.SecondReviewState == SecondReviewState.None && sv.AuditState == AuditStateEnum.QCPassed) + if (sv.AuditState == AuditStateEnum.QCPassed && inDto.CurrentQCEnum != CurrentQC.SecondReview) { //现在之前历史质控的展示要从答案为主表取数据,添加和编辑按照之前方式 @@ -493,7 +493,7 @@ namespace IRaCIS.Core.Application.Image.QA questionAnswerlist = await _trialQCQuestionAnswerRepository.Where(x => x.SubjectVisitId == inDto.SubjectVisitId && x.QCProcessEnum == inDto.QCProcessEnum && x.CurrentQCEnum == inDto.CurrentQCEnum) .Select(data => new QCQuestionAnswer() { - AnswerId=data.Id, + AnswerId = data.Id, Answer = data.Answer, ShowOrder = data.TrialQCQuestionConfigure.ShowOrder, QuestionName = data.TrialQCQuestionConfigure.QuestionName, @@ -520,7 +520,7 @@ namespace IRaCIS.Core.Application.Image.QA from leftanswer in answertemp.DefaultIfEmpty() select new QCQuestionAnswer() { - AnswerId= leftanswer.Id, + AnswerId = leftanswer.Id, Answer = leftanswer.Answer, ShowOrder = data.ShowOrder, QuestionName = data.QuestionName, diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index ece73006b..37e22cd83 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -384,6 +384,7 @@ namespace IRaCIS.Core.Application.Image.QA sv.CurrentActionUserId = null; sv.PreliminaryAuditUserId = null; sv.ReviewAuditUserId = null; + sv.SecondReviewState = SecondReviewState.None; if (sv.IsBaseLine) @@ -691,6 +692,7 @@ namespace IRaCIS.Core.Application.Image.QA sv.CurrentActionUserId = null; sv.PreliminaryAuditUserId = null; sv.ReviewAuditUserId = null; + sv.SecondReviewState = SecondReviewState.None; //var success1 = _studyRepository.Delete(t => t.SubjectVisitId == subjectVisitId); //var succeess2 = _instanceRepository.Delete(t => t.SubjectVisitId == subjectVisitId); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 38bc122f7..913b5c4fd 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -871,12 +871,18 @@ namespace IRaCIS.Core.Application { var trialConfirmTime = _trialRepository.Where(t => t.Id == signConfirmDTO.TrialId).Select(t => t.QCQuestionConfirmedTime).FirstOrDefault(); - //重复二次复核签名 - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == signConfirmDTO.TrialId && t.AuditState == AuditStateEnum.QCPassed - && !t.TrialQCQuestionAnswerList.Any(t => t.SecondReviewTime == trialConfirmTime), u => new SubjectVisit() { SecondReviewState = SecondReviewState.WaitAudit }); + if (trialConfirmTime != null) + { + //删除复审中间临时数据 + await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState != SecondReviewState.AuditPassed && t.CurrentQCEnum == CurrentQC.SecondReview); + + //重复二次复核签名 + await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == signConfirmDTO.TrialId && t.AuditState == AuditStateEnum.QCPassed + && !t.TrialQCQuestionAnswerList.Any(t => t.SecondReviewTime == trialConfirmTime), u => new SubjectVisit() { SecondReviewState = SecondReviewState.WaitAudit }); + + + } - //删除复审中间临时数据 - await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState != SecondReviewState.AuditPassed && t.CurrentQCEnum == CurrentQC.SecondReview); } else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString()) { diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 851e582a9..dcfcf84a0 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -42,7 +42,7 @@ namespace IRaCIS.Core.Application.Service var instanceList = await _instanceRepository.Where(s => s.StudyId == scpStudyId).OrderBy(t => t.SeriesId).ThenBy(t => t.InstanceNumber) .ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime) - .Select(t => new { t.SeriesId, t.Id, t.Path, t.NumberOfFrames, t.InstanceNumber }).ToListAsync();//.GroupBy(u => u.SeriesId); + .Select(t => new { t.SeriesId, t.Id, t.Path, t.NumberOfFrames, t.InstanceNumber,t.FileSize }).ToListAsync();//.GroupBy(u => u.SeriesId); foreach (var series in seriesList) { @@ -55,6 +55,7 @@ namespace IRaCIS.Core.Application.Service //HtmlPath = string.Empty, Path = k.Path, InstanceNumber = k.InstanceNumber, + FileSize=k.FileSize, }).ToList(); } diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 3c7c47f86..3826dc7f6 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -234,7 +234,7 @@ namespace IRaCIS.Core.Application.Services var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).IgnoreQueryFilters() .Where(t => isImageFilter ? ("|" + criterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true) - .WhereIf(isReading == 1 || isQCFinished, s=> s.IsDeleted == false) + .WhereIf(isReading == 1 || isQCFinished, s => s.IsDeleted == false) .Select(k => new VisitStudyDTO() { InstanceCount = k.InstanceCount, @@ -249,7 +249,7 @@ namespace IRaCIS.Core.Application.Services var instanceList = await _dicomInstanceRepository.Where(t => studyIds.Contains(t.StudyId)).IgnoreQueryFilters() .WhereIf(isReading == 1, s => s.IsReading && s.IsDeleted == false) .WhereIf(isQCFinished, t => t.IsDeleted == false) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.HtmlPath, t.IsReading, t.IsDeleted }).ToListAsync(); + .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.HtmlPath, t.IsReading, t.IsDeleted, t.FileSize }).ToListAsync(); foreach (var t in studyList) { @@ -273,6 +273,7 @@ namespace IRaCIS.Core.Application.Services InstanceNumber = k.InstanceNumber, IsReading = k.IsReading, IsDeleted = k.IsDeleted, + FileSize = k.FileSize, }).ToList(); series.InstanceCount = series.InstanceInfoList.Count(); @@ -304,7 +305,7 @@ namespace IRaCIS.Core.Application.Services DicomSeriesDTO series = await _dicomSeriesRepository.Where(s => s.Id == inDto.SeriesId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); var instanceList = await _dicomInstanceRepository.Where(t => t.SeriesId == inDto.SeriesId) - .Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.SliceLocation }).ToListAsync(); + .Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.SliceLocation, t.FileSize }).ToListAsync(); @@ -316,6 +317,7 @@ namespace IRaCIS.Core.Application.Services HtmlPath = k.HtmlPath, Path = k.Path, InstanceNumber = k.InstanceNumber, + FileSize = k.FileSize }).ToList(); @@ -392,7 +394,7 @@ namespace IRaCIS.Core.Application.Services var seriesIds = ctseriesIds.Union(ptseriesIds).ToList(); //并集 var instanceList = await _dicomInstanceRepository.Where(t => seriesIds.Contains(t.SeriesId)) - .Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync(); + .Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.FileSize }).ToListAsync(); var studyIds = instanceList.Select(x => x.StudyId).Distinct().ToList(); @@ -423,7 +425,7 @@ namespace IRaCIS.Core.Application.Services HtmlPath = k.HtmlPath, Path = k.Path, InstanceNumber = k.InstanceNumber, - + FileSize = k.FileSize }).ToList(); @@ -507,7 +509,7 @@ namespace IRaCIS.Core.Application.Services .Select(k => new VisitStudyDTO() { InstanceCount = k.InstanceCount, - StudyName=k.StudyName, + StudyName = k.StudyName, Modalities = k.Modalities, //SeriesCount = k.SeriesCount, StudyCode = k.StudyCode, @@ -517,7 +519,7 @@ namespace IRaCIS.Core.Application.Services var studyIds = dicomStudyList.Select(t => t.StudyId).ToList(); var instanceList = await _dicomInstanceRepository.Where(t => studyIds.Contains(t.StudyId) && t.IsReading) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.IsReading }).ToListAsync(); + .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.IsReading, t.FileSize }).ToListAsync(); List seriesLists = await _dicomSeriesRepository.Where(s => studyIds.Contains(s.StudyId)) .WhereIf(isManualGenerate == false, t => t.IsReading) @@ -538,6 +540,7 @@ namespace IRaCIS.Core.Application.Services HtmlPath = k.HtmlPath, Path = k.Path, InstanceNumber = k.InstanceNumber, + FileSize = k.FileSize }).ToList(); @@ -628,7 +631,7 @@ namespace IRaCIS.Core.Application.Services var markInstanceIdList = rowInfoList.Where(y => y.InstanceId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(y => y.InstanceId!.Value).Distinct().ToList(); - item.InstanceInfoList = await _dicomInstanceRepository.Where(t => markInstanceIdList.Contains(t.Id)).OrderBy(s => s.DicomSerie.SeriesNumber).ThenBy(s => s.DicomSerie.SeriesTime).ThenBy(x=>x.InstanceTime).Select(k => + item.InstanceInfoList = await _dicomInstanceRepository.Where(t => markInstanceIdList.Contains(t.Id)).OrderBy(s => s.DicomSerie.SeriesNumber).ThenBy(s => s.DicomSerie.SeriesTime).ThenBy(x => x.InstanceTime).Select(k => new InstanceBasicInfo() { Id = k.Id, @@ -638,6 +641,7 @@ namespace IRaCIS.Core.Application.Services InstanceNumber = k.InstanceNumber, StudyId = k.StudyId, SeriesId = k.SeriesId, + FileSize = k.FileSize }).ToListAsync(); item.InstanceInfoList.ForEach(x => @@ -722,7 +726,7 @@ namespace IRaCIS.Core.Application.Services { var nodicom = noDicomList.Where(x => x.Id == item.StudyId).First(); - var instanceCount = await _noneDicomStudyFileRepository.Where(t=>t.IsReading) + var instanceCount = await _noneDicomStudyFileRepository.Where(t => t.IsReading) .WhereIf(isExistTaskNoneDicomFile, x => x.OriginNoneDicomStudyId == item.StudyId) .WhereIf(isExistTaskNoneDicomFile == false, x => x.NoneDicomStudyId == item.StudyId).CountAsync();