Test.EIImageViewer
he 2022-11-29 17:29:23 +08:00
parent 1503ab9bce
commit dfba8820d6
6 changed files with 66 additions and 24 deletions

View File

@ -234,7 +234,16 @@ namespace IRaCIS.Core.Application.ViewModel
public bool IsUrgent => UnReadTaskList.Any(t => t.IsUrgent);
public int UnReadTaskCount { get; set; }
public int UnReadTaskCount
{
get
{
return this.UnReadTaskList.Count();
}
}
public bool ExistReadingApply { get; set; }
@ -282,7 +291,17 @@ namespace IRaCIS.Core.Application.ViewModel
}
public class GetOrderReadingIQueryableInDto
{
public Guid TrialId { get; set; }
public Guid TrialReadingCriterionId { get; set; }
public string? SubjectCode { get; set; } = null;
public PageInput? Page { get; set; } = null;
}
public class VisitTaskQuery : PageInput
{

View File

@ -16,6 +16,6 @@ namespace IRaCIS.Core.Application.Service
Task<IResponseOutput> ConfirmReReading(ConfirmReReadingCommand agreeReReadingCommand, [FromServices] IVisitTaskHelpeService _visitTaskCommonService);
(int, IOrderedQueryable<IRUnReadSubjectView>) GetOrderReadingIQueryable(Guid trialId, Guid? trialReadingCriterionId,string? subjectCode = null);
Task<(int, List<IRUnReadSubjectView>)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto);
}
}

View File

@ -882,12 +882,23 @@ namespace IRaCIS.Core.Application.Service.Allocation
// .Where(t => t.UnReadTaskCount > 0);
var visitTaskQuery = GetOrderReadingIQueryable(trialId, trialReadingCriterionId, iRUnReadSubjectQuery.SubjectCode);
var visitTaskListInfo =await GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto()
{
TrialId= trialId,
TrialReadingCriterionId=trialReadingCriterionId,
SubjectCode = iRUnReadSubjectQuery.SubjectCode,
Page= new PageInput() {
PageIndex= iRUnReadSubjectQuery.PageIndex,
PageSize= iRUnReadSubjectQuery.PageSize,
Asc = iRUnReadSubjectQuery.Asc,
SortField= iRUnReadSubjectQuery.SortField,
var totalCount = visitTaskQuery.Item1;
var currentPageData = await visitTaskQuery.Item2
.Skip((iRUnReadSubjectQuery.PageIndex - 1) * iRUnReadSubjectQuery.PageSize)
.Take(iRUnReadSubjectQuery.PageSize).ToListAsync();
}
});
var totalCount = visitTaskListInfo.Item1;
var currentPageData = visitTaskListInfo.Item2;
var result = new PageOutput<IRUnReadSubjectView>()
{
@ -951,13 +962,14 @@ namespace IRaCIS.Core.Application.Service.Allocation
/// <summary>
/// 获取有序阅片IQuery对象
/// </summary>
/// <param name="trialId"></param>
/// <param name="inDto"></param>
/// <returns></returns>
public (int, IOrderedQueryable<IRUnReadSubjectView>) GetOrderReadingIQueryable(Guid trialId, Guid? trialReadingCriterionId,string? subjectCode =null)
public async Task<(int, List<IRUnReadSubjectView>)> GetOrderReadingIQueryable(GetOrderReadingIQueryableInDto inDto)
{
var visitGroupQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id)
.WhereIf(trialReadingCriterionId != null, t => t.TrialReadingCriterionId == trialReadingCriterionId)
.WhereIf(!string.IsNullOrEmpty(subjectCode), t => t.Subject.Code.Contains(subjectCode) || t.BlindSubjectCode.Contains(subjectCode))
var visitGroupQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id)
.Where(t => t.TrialReadingCriterionId == inDto.TrialId)
.WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => t.Subject.Code.Contains(inDto.SubjectCode) || t.BlindSubjectCode.Contains(inDto.SubjectCode))
.Where(t => (t.ReadingTaskState != ReadingTaskState.HaveSigned || t.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed
|| t.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed) && t.TaskState == TaskState.Effect)
.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
@ -966,34 +978,42 @@ namespace IRaCIS.Core.Application.Service.Allocation
{
SubjectId = x.Key.SubjectId,
SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode,
UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
ExistReadingApply = x.Any(y => y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed),
UnReadTaskList = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum)
.Select(u => new IRUnreadTaskView()
{
Id = u.Id,
IsUrgent = u.IsUrgent,
VisitNum = u.VisitTaskNum,
TaskBlindName = u.TaskBlindName,
VisistId = u.SourceSubjectVisitId,
SuggesteFinishedTime = u.SuggesteFinishedTime,
ReadingCategory = u.ReadingCategory,
IsAnalysisCreate = u.IsAnalysisCreate,
TrialReadingCriterionId = u.TrialReadingCriterionId,
IsClinicalDataSigned= u.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == u.SouceReadModuleId || c.ReadingId == u.SourceSubjectVisitId))
}).ToList(),
}).Where(z=>z.IsClinicalDataSigned).ToList(),
}).Where(x => x.UnReadTaskCount > 0).OrderBy(x => x.SubjectId);
// 有序阅片需要找到最小需要
var count = visitGroupQuery.Count();
var count = visitGroupQuery.Select(x => new
var result = new List<IRUnReadSubjectView>();
if (inDto.Page != null)
{
UnReadTaskCount = x.Where(y => y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
}).Where(x => x.UnReadTaskCount > 0).Count();
return (count, visitTaskQuery);
result = await visitTaskQuery
.Skip((inDto.Page.PageIndex - 1) * inDto.Page.PageSize)
.Take(inDto.Page.PageSize).ToListAsync();
}
else
{
result= await visitTaskQuery.ToListAsync();
}
return (count, result);
}

View File

@ -884,7 +884,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid TrialId { get; set; }
public Guid? TrialReadingCriterionId { get; set; }
public Guid TrialReadingCriterionId { get; set; }
public Guid? VisitTaskId { get; set; }
}

View File

@ -1251,7 +1251,10 @@ namespace IRaCIS.Application.Services
}
else if (inDto.SubjectId != null)
{
var subjectTaskList = await _visitTaskService.GetOrderReadingIQueryable(inDto.TrialId, trialReadingCriterionId).Item2.ToListAsync();
var subjectTaskList = (await _visitTaskService.GetOrderReadingIQueryable(new GetOrderReadingIQueryableInDto() {
TrialId= inDto.TrialId,
TrialReadingCriterionId=inDto.TrialReadingCriterionId,
})).Item2;
var index = 0;
subjectTaskList.ForEach(x =>

View File

@ -251,7 +251,7 @@ namespace IRaCIS.Core.Domain.Models
try
{
return this.JudgeResultImagePath.Split(',').ToList();
return this.JudgeResultImagePath.Trim().Split(',').ToList();
}
catch (Exception)
{