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 {