diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs index 596012789..d9ae0afef 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs @@ -113,7 +113,9 @@ namespace IRaCIS.Core.Application.ViewModel public bool IsGetBeRead { get; set; } = false; - public string SubjectCode { get; set; } = String.Empty; + public bool IsGetNextMedicalReviewTask { get; set; } = false; + + public string SubjectCode { get; set; } = String.Empty; public string TrialSiteCode { get; set; } = String.Empty; public string TaskName { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs index 472d7f8b0..b0de77951 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs @@ -152,6 +152,7 @@ namespace IRaCIS.Core.Application.Service Id=inDto.MedicalReviewId, SubjectId= medicalReview.VisitTask.SubjectId, TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId, + IsGetNextMedicalReviewTask = true, PageIndex=1, PageSize=1, })).Data; @@ -168,7 +169,8 @@ namespace IRaCIS.Core.Application.Service IsGetBeRead = true, Id = inDto.MedicalReviewId, TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId, - PageIndex = 1, + IsGetNextMedicalReviewTask = true, + PageIndex = 1, PageSize = 1, })).Data; @@ -196,7 +198,15 @@ namespace IRaCIS.Core.Application.Service { var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId && t.MedicalManagerUserId == _userInfo.Id&&t.VisitTask.TrialReadingCriterionId==inQuery.TrialReadingCriterionId) - .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId) + + .WhereIf(inQuery.IsGetNextMedicalReviewTask, + x=>x.AuditState!= MedicalReviewAuditState.HaveSigned & + + ( x.ReadingMedicalReviewDialogList.Count()==0|| + + x.ReadingMedicalReviewDialogList.Count()>0&& + x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer)) + .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId) .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode)) .WhereIf(inQuery.Id != null, t => t.Id != inQuery.Id) @@ -210,9 +220,11 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid) .WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned) .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) + .OrderBy(x=>x.VisitTask.SubjectId).ThenBy(x=>x.VisitTask.ArmEnum).ThenBy(x=>x.VisitTask.VisitTaskNum) .ProjectTo(_mapper.ConfigurationProvider); + - var pageList = await taskMedicalReviewQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TaskMedicalReviewView.Id) : inQuery.SortField, inQuery.Asc); + var pageList = await taskMedicalReviewQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize,new string[] { } ); return ResponseOutput.Ok(pageList, new { diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index 5b6489826..4fab256f0 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -795,7 +795,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }).ToListAsync(); - var unableEvaluateRowIds = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.Answer == TargetState.UnableEvaluate.GetEnumInt() + var unableEvaluateRowIds = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && + (x.Answer == TargetState.UnableEvaluate.GetEnumInt()|| x.Answer == TargetState.Loss.GetEnumInt()) && x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.State ) .Select(x => x.RowId).Distinct().ToListAsync(); @@ -1213,7 +1214,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate break; case SplitOrMergeType.MergeMain: case SplitOrMergeType.MergeMained: - x.SplitOrMergeType = SplitOrMergeType.MergeMain; + x.SplitOrMergeType = SplitOrMergeType.MergeMained; break; default: x.SplitOrMergeType = null; diff --git a/IRaCIS.Core.Infrastructure/_IRaCIS/IQueryablePageListExtensions.cs b/IRaCIS.Core.Infrastructure/_IRaCIS/IQueryablePageListExtensions.cs index ee6aa1189..ef697e09b 100644 --- a/IRaCIS.Core.Infrastructure/_IRaCIS/IQueryablePageListExtensions.cs +++ b/IRaCIS.Core.Infrastructure/_IRaCIS/IQueryablePageListExtensions.cs @@ -201,9 +201,13 @@ namespace IRaCIS.Core.Infrastructure.Extention return new PageOutput() { CurrentPageData = new T[0] }; } - var sortString = string.Join(',', sortArray); + if(sortArray.Count()>0) + { + var sortString = string.Join(',', sortArray); - source = source.OrderBy(sortString); + source = source.OrderBy(sortString); + } + source = source.Skip((pageNumber - 1) * pageSize); var items = await source