diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs index 468288bbb..e03fd3709 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs @@ -223,14 +223,32 @@ namespace IRaCIS.Core.Application.Service List readModuleIds = await _readModuleRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Select(x => x.Id).ToListAsync(); + List visitIds=await _readingPeriodPlanRepository.Where(x => x.ReadingPeriodSetId == indto.Id).Select(x => x.SubjectVisitId).ToListAsync(); + if (await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)) && x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId - && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.TaskState == TaskState.Effect)) + //&& x.ReadingTaskState == ReadingTaskState.HaveSigned + && x.TaskState == TaskState.Effect)) { //---当前标准阅片已生成任务并且阅片完成,撤销失败。 throw new BusinessValidationFailedException(_localizer["ReadingPeriodSet_TaskCompletedCannotRevoke"]); } + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == readingPeriodSet.TrialReadingCriterionId).FirstNotNullAsync(); + + //产生了 阅片期裁判任务 并且完成了 + if ( criterionInfo.IsArbitrationReading&& criterionInfo.ArbitrationRule== ArbitrationRule.Reading && + await _visitTaskRepository.AnyAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && visitIds.Contains(x.SourceSubjectVisitId ?? default(Guid)) + && x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId + && x.ReadingCategory== ReadingCategory.Judge && + // x.ReadingTaskState == ReadingTaskState.HaveSigned && + x.TaskState == TaskState.Effect) ) + { + //---当前标准阅片已生成任务并且阅片完成,撤销失败。 + throw new BusinessValidationFailedException(_localizer["ReadingPeriodSet_TaskCompletedCannotRevoke"]); + } + + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.TrialReadingCriterionId == readingPeriodSet.TrialReadingCriterionId && readModuleIds.Contains(x.SouceReadModuleId ?? default(Guid)), x => new VisitTask() { @@ -625,7 +643,7 @@ namespace IRaCIS.Core.Application.Service VisitInfoList = plans.Select(x => new AddReadModuleVisitInfo() { SubjectId = subejctVisits.Where(y=>y.Id==x.SubjectVisitId).Select(x=>x.SubjectId).FirstOrDefault(), - SubjectVisitId = x.Id, + SubjectVisitId = x.SubjectVisitId, ReadingPeriodPlanId= x.Id, IsUrgent = subejctVisits.Where(y => y.Id == x.SubjectVisitId).Select(x => x.IsUrgent).FirstOrDefault(), @@ -696,8 +714,8 @@ namespace IRaCIS.Core.Application.Service SiteIds = inDto.SiteIds, }); - if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != inDto.TrialReadingCriterionId && x.IsTakeEffect != ReadingPeriodStatus.Revocation - && x.TrialId == inDto.TrialId && x.ReadingPeriodName == inDto.ReadingPeriodName && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)) + if (await _readingPeriodSetRepository.AnyAsync(x => x.Id != inDto.ReadingPeriodSetId && x.IsTakeEffect != ReadingPeriodStatus.Revocation + && x.TrialId == inDto.TrialId && x.ReadingPeriodName == inDto.ReadingPeriodName && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)) { throw new BusinessValidationFailedException(_localizer["ReadingPeriodSet_NameDup"]); @@ -733,7 +751,7 @@ namespace IRaCIS.Core.Application.Service } var isTakeEffect = await _readingPeriodSetRepository.Where(x => x.Id == inDto.ReadingPeriodSetId).Select(x => x.IsTakeEffect).FirstOrDefaultAsync(); - var readModulequery = _readModuleRepository.AsQueryable(); + var readModulequery = _readModuleRepository.Where(x=>x.TrialReadingCriterionId== inDto.TrialReadingCriterionId).AsQueryable(); // 当前项目 最晚拍片日期不为null 中心筛选 var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && x.LatestScanDate != null && !x.IsLostVisit) @@ -750,7 +768,7 @@ namespace IRaCIS.Core.Application.Service visitQuery = visitQuery - .Where(x => !existsBubjectVisitsQuery.Contains(x.Id)) + .Where(x => !existsBubjectVisitsQuery.Contains(x.Id)|| isChooseVisitIds.Contains(x.Id)) .WhereIf(inDto.ExpirationDate != null, x => x.LatestScanDate < inDto.ExpirationDate.Value.AddDays(1)) .WhereIf(inDto.ExpirationVisitNum != null, x => x.VisitNum == inDto.ExpirationVisitNum) .WhereIf(inDto.ReadingSetType == ReadingSetType.TumorReading, x => readModulequery.Where(y => y.SubjectVisitId == x.Id && y.ReadingSetType == ReadingSetType.ImageReading).Count() > 0) @@ -763,6 +781,7 @@ namespace IRaCIS.Core.Application.Service //.Where(x => isChooseVisitIds.Contains(x.Id)); + var subjectIdlist = await visitQuery.OrderBy(x => x.SubjectId).Select(x => x.SubjectId).Distinct().Skip((inDto.PageIndex - 1) * inDto.PageSize).Take(inDto.PageSize).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index 58244e6ad..72e112e88 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -754,6 +754,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate tableRowAnswers.ForEach(x => { + var rowinfo= tableRowAnswers.Where(y => y.OriginalId == x.SplitRowId).FirstOrDefault(); x.SplitRowId = tableRowAnswers.Where(y => y.OriginalId == x.SplitRowId).Select(y => y.Id).FirstOrDefault(); x.MergeRowId = tableRowAnswers.Where(y => y.OriginalId == x.MergeRowId).Select(y => y.Id).FirstOrDefault(); diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs index 680ebcc75..04f5ef2c3 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/ReadingQuestionCriterionTrial.cs @@ -116,7 +116,12 @@ public class ReadingQuestionCriterionTrial : BaseAddAuditEntity [Comment("是否签名")] public bool IsSigned { get; set; } = false; + + /// + /// 裁判 + /// [Comment("仲裁阅片")] + public bool IsArbitrationReading { get; set; } = true; [Comment("肿瘤学阅片 原字段 IsClinicalReading")] public bool IsOncologyReading { get; set; }