diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index 302351e3d..64e526983 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -211,7 +211,9 @@ namespace IRaCIS.Core.Application.ViewModel { public bool? IsSelfAnalysis { get; set; } - public bool IsReReadingOrBackInfluenceAnalysis { get; set; } + public int ConsistentClinicalDataCount { get; set; } = 0; + + public bool IsReReadingOrBackInfluenceAnalysis { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs index 2e7d1c183..ce3162d81 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs @@ -32,6 +32,7 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _taskConsistentRuleRepository; private readonly IRepository _visitTaskRepository; + private readonly IRepository _readingConsistentClinicalDataRepository; private readonly IRepository _subjectUserRepository; private readonly IRepository _subjectRepository; private readonly IRepository _enrollRepository; @@ -44,11 +45,14 @@ namespace IRaCIS.Core.Application.Service private readonly IVisitTaskHelpeService _visitTaskCommonService; - public TaskConsistentRuleService(IRepository visitTaskRepository, IRepository enrollRepository, IRepository taskConsistentRuleRepository, IRepository subjectUserRepository, IRepository subjectRepository, IDistributedLockProvider distributedLockProvider, + public TaskConsistentRuleService(IRepository visitTaskRepository, + IRepository readingConsistentClinicalDataRepository, + IRepository enrollRepository, IRepository taskConsistentRuleRepository, IRepository subjectUserRepository, IRepository subjectRepository, IDistributedLockProvider distributedLockProvider, IRepository trialRepository, IRepository trialSiteRepository, IRepository trialVirtualSiteCodeUpdateRepository, IVisitTaskHelpeService visitTaskCommonService) { _taskConsistentRuleRepository = taskConsistentRuleRepository; _visitTaskRepository = visitTaskRepository; + this._readingConsistentClinicalDataRepository = readingConsistentClinicalDataRepository; _subjectUserRepository = subjectUserRepository; _subjectRepository = subjectRepository; _enrollRepository = enrollRepository; @@ -117,6 +121,18 @@ namespace IRaCIS.Core.Application.Service var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId), nameof(VisitTask.VisitTaskNum) }; var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); + #region 统计一致性分析临床数据数量 + var readingIdList = pageList.CurrentPageData.Select(x => x.SouceReadModuleId).ToList(); + + readingIdList.AddRange(pageList.CurrentPageData.Select(x => x.SourceSubjectVisitId).ToList()); + readingIdList = readingIdList.Where(x => x != null).ToList(); + + var readIds = await _readingConsistentClinicalDataRepository.Where(x => readingIdList.Contains(x.Id)).Select(x => x.ReadingId).ToListAsync(); + foreach (var item in pageList.CurrentPageData) + { + item.ConsistentClinicalDataCount = readIds.Select(x => x == item.SouceReadModuleId).Count() + readIds.Select(x => x == item.SourceSubjectVisitId).Count(); + } + #endregion var trialTaskConfig = _repository.Where(t => t.Id == queryVisitTask.TrialId).Select(t => new { IsHaveDoubleReadCriterion = t.TrialReadingCriterionList.Any(t => t.IsSigned && t.IsConfirm && t.ReadingType == ReadingMethod.Double), t.VitrualSiteCode }).FirstOrDefault();