diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs
index d9ae0afef..d13019dc2 100644
--- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs
@@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid? SiteId { get; set; }
///
- /// 传了Id 就不查询这条数据
+ /// 传了Id
///
public Guid? Id { get; set; }
@@ -111,7 +111,6 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? EndSignTime { get; set; }
- public bool IsGetBeRead { get; set; } = false;
public bool IsGetNextMedicalReviewTask { get; set; } = false;
diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs
index 0bc4606b5..e5fd1af41 100644
--- a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs
@@ -11,6 +11,7 @@ using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Application.Filter;
+using Microsoft.Extensions.Logging;
namespace IRaCIS.Core.Application.Service
{
@@ -143,47 +144,45 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task GetNextMedicalReviewTask(GetNextMedicalReviewTaskInDto inDto)
{
- var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.MedicalReviewId).Include(x=>x.VisitTask).FirstNotNullAsync();
+ var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.MedicalReviewId).Include(x => x.VisitTask).FirstNotNullAsync();
- var subjectReview = (await GetMIMMedicalReviewTaskList(new TaskMedicalReviewQuery()
- {
- TrialId = medicalReview.TrialId,
- IsGetBeRead = true,
- Id=inDto.MedicalReviewId,
- SubjectId= medicalReview.VisitTask.SubjectId,
- TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId,
- IsGetNextMedicalReviewTask = true,
- PageIndex=1,
- PageSize=1,
- })).Data;
-
- if (subjectReview.CurrentPageData.Count == 1)
- {
- return subjectReview.CurrentPageData[0];
- }
var data = (await GetMIMMedicalReviewTaskList(new TaskMedicalReviewQuery()
{
TrialId = medicalReview.TrialId,
- IsGetBeRead = true,
Id = inDto.MedicalReviewId,
TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId,
- IsGetNextMedicalReviewTask = true,
- PageIndex = 1,
- PageSize = 1,
+ IsGetNextMedicalReviewTask = true,
+ PageIndex = 1,
+ PageSize = 99999,
})).Data;
- if (data.CurrentPageData.Count == 1)
+
+ if (data.CurrentPageData.Count > 0)
{
- return data.CurrentPageData[0];
+
+ var index = data.CurrentPageData.ToList().FindIndex(x => x.Id == inDto.MedicalReviewId);
+
+ var result = new TaskMedicalReviewView() { };
+
+ if (index == -1 || data.CurrentPageData.Count == 1)
+ {
+ result = data.CurrentPageData[0];
+ }
+ else
+ {
+ result = data.CurrentPageData.Skip(index + 1).Take(1).First();
+
+ }
+ return result;
+
}
else
{
- throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
- }
-
+ throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
+ }
}
@@ -201,16 +200,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.IsGetNextMedicalReviewTask,
- x=>x.AuditState!= MedicalReviewAuditState.HaveSigned &
-
+ x=>( !x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned &
( x.ReadingMedicalReviewDialogList.Count()!=0&&
-
x.ReadingMedicalReviewDialogList.Count()>0&&
- x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer))
+ x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer)
+ ) ||x.Id == inQuery.Id // 这里必须找传入id 因为要找到这条的索引 获取下一条
+ )
.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)
.WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
.WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState)
.WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum)
@@ -219,7 +217,7 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
.WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
.WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid)
- .WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned)
+ //.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.AuditState).ThenBy(x=>x.VisitTask.ArmEnum).ThenBy(x=>x.VisitTask.VisitTaskNum)
.ProjectTo(_mapper.ConfigurationProvider);