IRC_NewDev
he 2024-03-11 15:55:41 +08:00
parent 99688df446
commit 0912909b68
2 changed files with 31 additions and 34 deletions

View File

@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid? SiteId { get; set; } public Guid? SiteId { get; set; }
/// <summary> /// <summary>
/// 传了Id 就不查询这条数据 /// 传了Id
/// </summary> /// </summary>
public Guid? Id { get; set; } public Guid? Id { get; set; }
@ -111,7 +111,6 @@ namespace IRaCIS.Core.Application.ViewModel
public DateTime? EndSignTime { get; set; } public DateTime? EndSignTime { get; set; }
public bool IsGetBeRead { get; set; } = false;
public bool IsGetNextMedicalReviewTask { get; set; } = false; public bool IsGetNextMedicalReviewTask { get; set; } = false;

View File

@ -11,6 +11,7 @@ using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Filter;
using Microsoft.Extensions.Logging;
namespace IRaCIS.Core.Application.Service namespace IRaCIS.Core.Application.Service
{ {
@ -143,47 +144,45 @@ namespace IRaCIS.Core.Application.Service
[HttpPost] [HttpPost]
public async Task<TaskMedicalReviewView> GetNextMedicalReviewTask(GetNextMedicalReviewTaskInDto inDto) public async Task<TaskMedicalReviewView> 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() var data = (await GetMIMMedicalReviewTaskList(new TaskMedicalReviewQuery()
{ {
TrialId = medicalReview.TrialId, TrialId = medicalReview.TrialId,
IsGetBeRead = true,
Id = inDto.MedicalReviewId, Id = inDto.MedicalReviewId,
TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId, TrialReadingCriterionId = medicalReview.VisitTask.TrialReadingCriterionId,
IsGetNextMedicalReviewTask = true, IsGetNextMedicalReviewTask = true,
PageIndex = 1, PageIndex = 1,
PageSize = 1, PageSize = 99999,
})).Data; })).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 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) var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId && t.MedicalManagerUserId == _userInfo.Id&&t.VisitTask.TrialReadingCriterionId==inQuery.TrialReadingCriterionId)
.WhereIf(inQuery.IsGetNextMedicalReviewTask, .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.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.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId)
.WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) .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(!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.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
.WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState) .WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState)
.WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum) .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.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
.WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState) .WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
.WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid) .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) .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) .OrderBy(x=>x.VisitTask.SubjectId).ThenBy(x => x.AuditState).ThenBy(x=>x.VisitTask.ArmEnum).ThenBy(x=>x.VisitTask.VisitTaskNum)
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider); .ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);