修改待阅列表
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
d727703075
commit
e3b6feb4da
|
@ -63,7 +63,7 @@
|
||||||
|
|
||||||
"AutoLoginOutMinutes": 1,
|
"AutoLoginOutMinutes": 1,
|
||||||
|
|
||||||
"OpenLoginMFA": true
|
"OpenLoginMFA": false
|
||||||
},
|
},
|
||||||
|
|
||||||
"SystemEmailSendConfig": {
|
"SystemEmailSendConfig": {
|
||||||
|
|
|
@ -105,7 +105,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
|
var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
|
||||||
|
|
||||||
.OrderBy(t => t.ShowOrder)
|
.OrderBy(t => t.ShowOrder)
|
||||||
.Select(t => new TrialReadingCriterionDto() {
|
.Select(t => new TrialReadingCriterionDto()
|
||||||
|
{
|
||||||
TrialReadingCriterionId = t.Id,
|
TrialReadingCriterionId = t.Id,
|
||||||
IsAutoCreate = t.IsAutoCreate,
|
IsAutoCreate = t.IsAutoCreate,
|
||||||
IsAdditionalAssessment = t.IsAdditionalAssessment,
|
IsAdditionalAssessment = t.IsAdditionalAssessment,
|
||||||
|
@ -943,14 +944,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<(PageOutput<IRUnReadSubjectView>, object)> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
|
public async Task<IResponseOutput<PageOutput<IRUnReadSubjectView>>> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery inQuery)
|
||||||
{
|
{
|
||||||
|
|
||||||
var trialId = iRUnReadSubjectQuery.TrialId;
|
var trialId = inQuery.TrialId;
|
||||||
|
var subjectCode = inQuery.SubjectCode;
|
||||||
|
|
||||||
var trialReadingCriterionId = iRUnReadSubjectQuery.TrialReadingCriterionId;
|
var trialReadingCriterionId = inQuery.TrialReadingCriterionId;
|
||||||
|
|
||||||
var criterionConfig = await _trialReadingCriterionRepository.Where(x => x.Id == iRUnReadSubjectQuery.TrialReadingCriterionId).FirstNotNullAsync();
|
var criterionConfig = await _trialReadingCriterionRepository.Where(x => x.Id == inQuery.TrialReadingCriterionId).FirstNotNullAsync();
|
||||||
|
|
||||||
var readingTool = criterionConfig.ReadingTool;
|
var readingTool = criterionConfig.ReadingTool;
|
||||||
var isReadingTaskViewInOrder = criterionConfig.IsReadingTaskViewInOrder;
|
var isReadingTaskViewInOrder = criterionConfig.IsReadingTaskViewInOrder;
|
||||||
|
@ -964,13 +966,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
{
|
{
|
||||||
TrialId = trialId,
|
TrialId = trialId,
|
||||||
TrialReadingCriterionId = trialReadingCriterionId,
|
TrialReadingCriterionId = trialReadingCriterionId,
|
||||||
SubjectCode = iRUnReadSubjectQuery.SubjectCode,
|
SubjectCode = inQuery.SubjectCode,
|
||||||
Page = new PageInput()
|
Page = new PageInput()
|
||||||
{
|
{
|
||||||
PageIndex = iRUnReadSubjectQuery.PageIndex,
|
PageIndex = inQuery.PageIndex,
|
||||||
PageSize = iRUnReadSubjectQuery.PageSize,
|
PageSize = inQuery.PageSize,
|
||||||
Asc = iRUnReadSubjectQuery.Asc,
|
Asc = inQuery.Asc,
|
||||||
SortField = iRUnReadSubjectQuery.SortField,
|
SortField = inQuery.SortField,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -984,15 +986,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
var result = new PageOutput<IRUnReadSubjectView>()
|
var result = new PageOutput<IRUnReadSubjectView>()
|
||||||
{
|
{
|
||||||
PageSize = iRUnReadSubjectQuery.PageSize,
|
PageSize = inQuery.PageSize,
|
||||||
PageIndex = iRUnReadSubjectQuery.PageIndex,
|
PageIndex = inQuery.PageIndex,
|
||||||
TotalCount = totalCount,
|
TotalCount = totalCount,
|
||||||
CurrentPageData = currentPageData,
|
CurrentPageData = currentPageData,
|
||||||
};
|
};
|
||||||
|
|
||||||
// 封装的方法有问题
|
// 封装的方法有问题
|
||||||
//var result = await visitQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectId) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
|
//var result = await visitQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField) ? nameof(IRUnReadSubjectView.SubjectId) : iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
|
||||||
return (result, new
|
return ResponseOutput.Ok(result, new
|
||||||
{
|
{
|
||||||
RandomReadInfo = new IRUnReadOutDto(),
|
RandomReadInfo = new IRUnReadOutDto(),
|
||||||
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
|
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
|
||||||
|
@ -1004,26 +1006,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
CriterionType = criterionConfig.CriterionType,
|
CriterionType = criterionConfig.CriterionType,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else if(isReadingTaskViewInOrder == ReadingOrder.SubjectRandom)
|
||||||
{
|
{
|
||||||
var taskQuery = _visitTaskRepository.Where(x => x.TrialId == iRUnReadSubjectQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
|
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
||||||
// .Where(x=>x.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == x.SouceReadModuleId || c.ReadingId == x.SourceSubjectVisitId)))
|
|
||||||
.Where(x => !x.Subject.IsDeleted).Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign);
|
|
||||||
|
|
||||||
IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
|
var visitQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
|
||||||
{
|
|
||||||
FinishJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
|
|
||||||
FinishTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
|
|
||||||
SuggesteFinishedTime = await taskQuery.Where(x => x.ReadingTaskState != ReadingTaskState.HaveSigned).MaxAsync(x => x.SuggesteFinishedTime),
|
|
||||||
UnReadJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
|
|
||||||
UnReadTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var visitGroupQuery = taskQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
|
|
||||||
|
|
||||||
|
.WhereIf(!string.IsNullOrEmpty(subjectCode), t => (t.Subject.Code.Contains(subjectCode!) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(subjectCode!) && t.IsAnalysisCreate));
|
||||||
|
|
||||||
|
var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
|
||||||
|
|
||||||
var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
|
var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView()
|
||||||
{
|
{
|
||||||
|
@ -1033,22 +1024,17 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
|
SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime),
|
||||||
|
|
||||||
//未读任务量
|
//未读任务量
|
||||||
UnReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
|
UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Count(),
|
||||||
|
|
||||||
//未读 里可读任务量
|
|
||||||
UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned && y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)
|
|
||||||
//不能对包含聚合或子查询的表达式执行聚合函数
|
|
||||||
//&& !x.Any(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false && t.VisitTaskNum<y.VisitTaskNum )
|
|
||||||
).Count(),
|
|
||||||
|
|
||||||
|
UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Where(x => x.IsUrgent).Count(),
|
||||||
|
|
||||||
//已读任务量
|
//已读任务量
|
||||||
HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
HaveReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
||||||
|
|
||||||
ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
|
ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
|
||||||
|
|
||||||
//查出所有未读的 未读的可读的 在这个列表基础上 过滤下 y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true) 这样容易排错 确认这三个字段是否维护有误
|
UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
|
||||||
UnReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum)
|
.OrderBy(x => x.VisitTaskNum)
|
||||||
.Select(u => new IRUnreadTaskView()
|
.Select(u => new IRUnreadTaskView()
|
||||||
{
|
{
|
||||||
Id = u.Id,
|
Id = u.Id,
|
||||||
|
@ -1065,22 +1051,48 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
IsClinicalDataSign = u.IsClinicalDataSign,
|
IsClinicalDataSign = u.IsClinicalDataSign,
|
||||||
IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
|
IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
|
||||||
})
|
})
|
||||||
.ToList(),
|
.ToList()
|
||||||
}).Where(x => x.UnReadCanReadTaskCount > 0);
|
}).Where(x => x.UnReadCanReadTaskCount > 0);
|
||||||
|
|
||||||
|
var pageList = await visitTaskQuery.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField)? nameof(IRUnReadSubjectView.UnReadCanReadTaskList): inQuery.SortField, inQuery.Asc );
|
||||||
|
|
||||||
var totalCount = await visitGroupQuery.CountAsync();
|
|
||||||
var currentPageData = await visitTaskQuery.ToListAsync();
|
return ResponseOutput.Ok(pageList, new
|
||||||
|
{
|
||||||
|
RandomReadInfo = new IRUnReadOutDto(),
|
||||||
|
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
|
||||||
|
ReadingTool = readingTool,
|
||||||
|
IseCRFShowInDicomReading = criterionConfig.IseCRFShowInDicomReading,
|
||||||
|
IsReadingShowSubjectInfo = criterionConfig.IsReadingShowSubjectInfo,
|
||||||
|
IsReadingShowPreviousResults = criterionConfig.IsReadingShowPreviousResults,
|
||||||
|
DigitPlaces = criterionConfig.DigitPlaces,
|
||||||
|
CriterionType = criterionConfig.CriterionType,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var taskQuery = _visitTaskRepository.Where(x => x.TrialId == inQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId)
|
||||||
|
// .Where(x=>x.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == x.SouceReadModuleId || c.ReadingId == x.SourceSubjectVisitId)))
|
||||||
|
.Where(x => !x.Subject.IsDeleted).Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign);
|
||||||
|
|
||||||
|
IRUnReadOutDto iRUnReadOut = new IRUnReadOutDto()
|
||||||
|
{
|
||||||
|
FinishJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
|
||||||
|
FinishTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState == ReadingTaskState.HaveSigned).CountAsync(),
|
||||||
|
SuggesteFinishedTime = await taskQuery.Where(x => x.ReadingTaskState != ReadingTaskState.HaveSigned).MaxAsync(x => x.SuggesteFinishedTime),
|
||||||
|
UnReadJudgeTaskCount = await taskQuery.Where(x => x.ReadingCategory == ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
|
||||||
|
UnReadTaskCount = await taskQuery.Where(x => x.ReadingCategory != ReadingCategory.Judge && x.ReadingTaskState != ReadingTaskState.HaveSigned).CountAsync(),
|
||||||
|
};
|
||||||
|
|
||||||
var result = new PageOutput<IRUnReadSubjectView>()
|
var result = new PageOutput<IRUnReadSubjectView>()
|
||||||
{
|
{
|
||||||
PageSize = iRUnReadSubjectQuery.PageSize,
|
PageSize = inQuery.PageSize,
|
||||||
PageIndex = iRUnReadSubjectQuery.PageIndex,
|
PageIndex = inQuery.PageIndex,
|
||||||
TotalCount = totalCount,
|
TotalCount = 0,
|
||||||
CurrentPageData = currentPageData,
|
CurrentPageData = null,
|
||||||
};
|
};
|
||||||
|
|
||||||
return (result, new
|
return ResponseOutput.Ok(result, new
|
||||||
{
|
{
|
||||||
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
|
IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
|
||||||
RandomReadInfo = iRUnReadOut,
|
RandomReadInfo = iRUnReadOut,
|
||||||
|
@ -1114,8 +1126,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
||||||
|
|
||||||
|
|
||||||
var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id
|
var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
|
||||||
&& x.TaskState == TaskState.Effect /*&& x.TrialReadingCriterionId== inDto.TrialReadingCriterionId*/)
|
|
||||||
|
|
||||||
//前序 不存在 未生成任务的访视
|
//前序 不存在 未生成任务的访视
|
||||||
.WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
|
.WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
|
||||||
|
@ -1210,7 +1221,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
var result = new List<IRUnReadSubjectView>();
|
var result = new List<IRUnReadSubjectView>();
|
||||||
|
|
||||||
var propName = string.IsNullOrWhiteSpace(inDto.Page!.SortField) ? "UnReadCanReadTaskCount" : inDto.Page.SortField;
|
var propName = string.IsNullOrWhiteSpace(inDto.Page!.SortField) ? nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) : inDto.Page.SortField;
|
||||||
|
|
||||||
var visitTaskOrderQuery = inDto.Page.Asc ? visitTaskQuery.OrderBy(propName) : visitTaskQuery.OrderBy(propName + " desc");
|
var visitTaskOrderQuery = inDto.Page.Asc ? visitTaskQuery.OrderBy(propName) : visitTaskQuery.OrderBy(propName + " desc");
|
||||||
if (inDto.Page != null)
|
if (inDto.Page != null)
|
||||||
|
|
|
@ -62,7 +62,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom))
|
if (_visitTaskRepository.Any(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.SubjectRandom))
|
||||||
{
|
{
|
||||||
//找到 非一致性分析,未签名,状态正常的 并且任务名称不是TimePoint的 任务
|
//找到 非一致性分析,未签名,状态正常的 并且任务名称不是TimePoint的 任务
|
||||||
var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false
|
var needDealTaskList = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && t.DoctorUserId==_userInfo.Id
|
||||||
&& t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskBlindName != "Timepoint" && t.ReadingCategory == ReadingCategory.Visit
|
&& t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskBlindName != "Timepoint" && t.ReadingCategory == ReadingCategory.Visit
|
||||||
&& (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze), true).ToListAsync();
|
&& (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze), true).ToListAsync();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue