修改待阅列表
	
		
			
	
		
	
	
		
			
				
	
				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,
 | 
			
		||||
 | 
			
		||||
    "OpenLoginMFA": true
 | 
			
		||||
    "OpenLoginMFA": false
 | 
			
		||||
  },
 | 
			
		||||
 | 
			
		||||
  "SystemEmailSendConfig": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -105,21 +105,22 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            var list = await _repository.Where<ReadingQuestionCriterionTrial>(t => t.TrialId == trialId && t.IsConfirm)
 | 
			
		||||
 | 
			
		||||
                .OrderBy(t => t.ShowOrder)
 | 
			
		||||
                .Select(t => new TrialReadingCriterionDto() {
 | 
			
		||||
                    TrialReadingCriterionId = t.Id,  
 | 
			
		||||
                .Select(t => new TrialReadingCriterionDto()
 | 
			
		||||
                {
 | 
			
		||||
                    TrialReadingCriterionId = t.Id,
 | 
			
		||||
                    IsAutoCreate = t.IsAutoCreate,
 | 
			
		||||
                    IsAdditionalAssessment = t.IsAdditionalAssessment, 
 | 
			
		||||
                    IsAdditionalAssessment = t.IsAdditionalAssessment,
 | 
			
		||||
                    TrialReadingCriterionName = t.CriterionName,
 | 
			
		||||
                    CriterionType = t.CriterionType, 
 | 
			
		||||
                    ReadingType = t.ReadingType, 
 | 
			
		||||
                    ReadingInfoSignTime = t.ReadingInfoSignTime , 
 | 
			
		||||
                    IsReadingPeriod= t.IsReadingPeriod,
 | 
			
		||||
                    IsArbitrationReading=t.IsArbitrationReading,
 | 
			
		||||
                    IsGlobalReading=t.IsGlobalReading,
 | 
			
		||||
                    IsOncologyReading=t.IsOncologyReading,
 | 
			
		||||
                    ImageDownloadEnum=t.ImageDownloadEnum,
 | 
			
		||||
                    ImageUploadEnum=t.ImageUploadEnum,
 | 
			
		||||
                    IsReadingTaskViewInOrder= t.IsReadingTaskViewInOrder
 | 
			
		||||
                    CriterionType = t.CriterionType,
 | 
			
		||||
                    ReadingType = t.ReadingType,
 | 
			
		||||
                    ReadingInfoSignTime = t.ReadingInfoSignTime,
 | 
			
		||||
                    IsReadingPeriod = t.IsReadingPeriod,
 | 
			
		||||
                    IsArbitrationReading = t.IsArbitrationReading,
 | 
			
		||||
                    IsGlobalReading = t.IsGlobalReading,
 | 
			
		||||
                    IsOncologyReading = t.IsOncologyReading,
 | 
			
		||||
                    ImageDownloadEnum = t.ImageDownloadEnum,
 | 
			
		||||
                    ImageUploadEnum = t.ImageUploadEnum,
 | 
			
		||||
                    IsReadingTaskViewInOrder = t.IsReadingTaskViewInOrder
 | 
			
		||||
                })
 | 
			
		||||
                .ToListAsync();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -154,12 +155,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                 .WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId))
 | 
			
		||||
                 .WhereIf(!string.IsNullOrEmpty(querySubjectAssign.SubjectCode), t => t.Code.Contains(querySubjectAssign.SubjectCode))
 | 
			
		||||
                 //未分配
 | 
			
		||||
                 .WhereIf(querySubjectAssign.SubjectAllocateState == 0, t => !t.SubjectDoctorList.Any(t => t.AssignTime!=null && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId))
 | 
			
		||||
                 //已分配
 | 
			
		||||
                 .WhereIf(querySubjectAssign.SubjectAllocateState == 0, t => !t.SubjectDoctorList.Any(t => t.AssignTime != null && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId))
 | 
			
		||||
                  //已分配
 | 
			
		||||
                  .WhereIf(querySubjectAssign.SubjectAllocateState == 1, t => t.SubjectDoctorList.Any(t => t.AssignTime != null && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId))
 | 
			
		||||
 | 
			
		||||
                  .WhereIf(querySubjectAssign.ArmList.Count >0 , t => !querySubjectAssign.ArmList.Except(t.SubjectDoctorList.Where(t => t.AssignTime != null && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId).Select(c => c.ArmEnum)).Any()  )
 | 
			
		||||
                  
 | 
			
		||||
                  .WhereIf(querySubjectAssign.ArmList.Count > 0, t => !querySubjectAssign.ArmList.Except(t.SubjectDoctorList.Where(t => t.AssignTime != null && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId).Select(c => c.ArmEnum)).Any())
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                 .WhereIf(isAddtinoarlCriterion, t => t.SubjectCriteriaEvaluationList.Where(t => t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId).Any(t => t.IsJoinEvaluation))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -173,7 +174,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
            var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == querySubjectAssign.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder, x.ReadingType, x.IsArbitrationReading, x.IsOncologyReading, x.IsGlobalReading }).FirstOrDefaultAsync()).IfNullThrowException();
 | 
			
		||||
 | 
			
		||||
            return ResponseOutput.Ok (pageList, criterionConfig);
 | 
			
		||||
            return ResponseOutput.Ok(pageList, criterionConfig);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -307,7 +308,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
            var subjectId = cancelCommand.CancelList.First().SubjectId;
 | 
			
		||||
 | 
			
		||||
            await _repository.AddAsync(new SubjectCanceDoctor() { SubjectId = subjectId, Note = cancelCommand.Note,TrialReadingCriterionId=cancelCommand.TrialReadingCriterionId });
 | 
			
		||||
            await _repository.AddAsync(new SubjectCanceDoctor() { SubjectId = subjectId, Note = cancelCommand.Note, TrialReadingCriterionId = cancelCommand.TrialReadingCriterionId });
 | 
			
		||||
 | 
			
		||||
            await _visitTaskRepository.SaveChangesAsync();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -757,12 +758,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
        /// <param name="queryVisitTask"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<IResponseOutput< PageOutput<ReadingTaskView>>> GetReadingTaskList(VisitTaskQuery queryVisitTask)
 | 
			
		||||
        public async Task<IResponseOutput<PageOutput<ReadingTaskView>>> GetReadingTaskList(VisitTaskQuery queryVisitTask)
 | 
			
		||||
        {
 | 
			
		||||
            var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false)
 | 
			
		||||
                //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null)
 | 
			
		||||
 | 
			
		||||
                .WhereIf(queryVisitTask.IsEffect ==true, t => t.TaskState ==TaskState.Effect || t.TaskState == TaskState.Freeze)
 | 
			
		||||
                .WhereIf(queryVisitTask.IsEffect == true, t => t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)
 | 
			
		||||
                 .WhereIf(queryVisitTask.IsEffect == false, t => t.TaskState == TaskState.Adbandon || t.TaskState == TaskState.HaveReturned)
 | 
			
		||||
 | 
			
		||||
               .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState)
 | 
			
		||||
| 
						 | 
				
			
			@ -784,9 +785,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
               .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => (t.Subject.Code.Contains(queryVisitTask.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(queryVisitTask.SubjectCode) && t.IsAnalysisCreate))
 | 
			
		||||
               .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
			
		||||
               .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate)
 | 
			
		||||
				  .WhereIf(queryVisitTask.BeginSignTime != null, t => t.SignTime > queryVisitTask.BeginSignTime)
 | 
			
		||||
			   .WhereIf(queryVisitTask.EndSignTime != null, t => t.SignTime < queryVisitTask.EndSignTime)
 | 
			
		||||
			   .ProjectTo<ReadingTaskView>(_mapper.ConfigurationProvider);
 | 
			
		||||
                  .WhereIf(queryVisitTask.BeginSignTime != null, t => t.SignTime > queryVisitTask.BeginSignTime)
 | 
			
		||||
               .WhereIf(queryVisitTask.EndSignTime != null, t => t.SignTime < queryVisitTask.EndSignTime)
 | 
			
		||||
               .ProjectTo<ReadingTaskView>(_mapper.ConfigurationProvider);
 | 
			
		||||
 | 
			
		||||
            var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId), nameof(VisitTask.VisitTaskNum) };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -794,7 +795,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
            var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialUrgentConfig>(_mapper.ConfigurationProvider).FirstOrDefault();
 | 
			
		||||
 | 
			
		||||
            return ResponseOutput.Ok  (pageList, trialTaskConfig);
 | 
			
		||||
            return ResponseOutput.Ok(pageList, trialTaskConfig);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -826,13 +827,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                .WhereIf(queryVisitTask.ReadingCategory != null, t => t.OriginalReReadingTask.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
			
		||||
 | 
			
		||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.RequestReReadingReason), t => t.RequestReReadingReason.Contains(queryVisitTask.RequestReReadingReason))
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                .WhereIf(queryVisitTask.RequestReReadingResultEnum != null, t => t.RequestReReadingResultEnum == queryVisitTask.RequestReReadingResultEnum)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                 .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.OriginalReReadingTask.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate) || (t.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate == false))
 | 
			
		||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.OriginalReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName))
 | 
			
		||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => ((t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode)|| t.OriginalReReadingTask.Subject.MedicalNo.Contains(queryVisitTask.SubjectCode)) && t.OriginalReReadingTask.IsAnalysisCreate == false) || (t.OriginalReReadingTask.BlindSubjectCode.Contains(queryVisitTask.SubjectCode) && t.OriginalReReadingTask.IsAnalysisCreate))
 | 
			
		||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => ((t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.OriginalReReadingTask.Subject.MedicalNo.Contains(queryVisitTask.SubjectCode)) && t.OriginalReReadingTask.IsAnalysisCreate == false) || (t.OriginalReReadingTask.BlindSubjectCode.Contains(queryVisitTask.SubjectCode) && t.OriginalReReadingTask.IsAnalysisCreate))
 | 
			
		||||
                .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate)
 | 
			
		||||
                .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -870,12 +871,12 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                .Where(t => t.RequestReReadingType == RequestReReadingType.DocotorApply)
 | 
			
		||||
                .Where(t => t.OriginalReReadingTask.DoctorUserId == _userInfo.Id)
 | 
			
		||||
                .Where(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId)
 | 
			
		||||
		    	 .WhereIf(queryVisitTask.RequestReReadingResultEnum != null, t => t.RequestReReadingResultEnum == queryVisitTask.RequestReReadingResultEnum)
 | 
			
		||||
				.WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId)
 | 
			
		||||
                 .WhereIf(queryVisitTask.RequestReReadingResultEnum != null, t => t.RequestReReadingResultEnum == queryVisitTask.RequestReReadingResultEnum)
 | 
			
		||||
                .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId)
 | 
			
		||||
                .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!))
 | 
			
		||||
                .WhereIf(queryVisitTask.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState)
 | 
			
		||||
				   .WhereIf(queryVisitTask.ReadingCategory != null, t => t.OriginalReReadingTask.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
			
		||||
				 .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState)
 | 
			
		||||
                   .WhereIf(queryVisitTask.ReadingCategory != null, t => t.OriginalReReadingTask.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
			
		||||
                 .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState)
 | 
			
		||||
                .WhereIf(queryVisitTask.TrialSiteId != null, t => t.OriginalReReadingTask.Subject.TrialSiteId == queryVisitTask.TrialSiteId)
 | 
			
		||||
                .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId)
 | 
			
		||||
                .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent)
 | 
			
		||||
| 
						 | 
				
			
			@ -943,14 +944,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        [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 isReadingTaskViewInOrder = criterionConfig.IsReadingTaskViewInOrder;
 | 
			
		||||
| 
						 | 
				
			
			@ -964,13 +966,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                {
 | 
			
		||||
                    TrialId = trialId,
 | 
			
		||||
                    TrialReadingCriterionId = trialReadingCriterionId,
 | 
			
		||||
                    SubjectCode = iRUnReadSubjectQuery.SubjectCode,
 | 
			
		||||
                    SubjectCode = inQuery.SubjectCode,
 | 
			
		||||
                    Page = new PageInput()
 | 
			
		||||
                    {
 | 
			
		||||
                        PageIndex = iRUnReadSubjectQuery.PageIndex,
 | 
			
		||||
                        PageSize = iRUnReadSubjectQuery.PageSize,
 | 
			
		||||
                        Asc = iRUnReadSubjectQuery.Asc,
 | 
			
		||||
                        SortField = iRUnReadSubjectQuery.SortField,
 | 
			
		||||
                        PageIndex = inQuery.PageIndex,
 | 
			
		||||
                        PageSize = inQuery.PageSize,
 | 
			
		||||
                        Asc = inQuery.Asc,
 | 
			
		||||
                        SortField = inQuery.SortField,
 | 
			
		||||
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -984,15 +986,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
                var result = new PageOutput<IRUnReadSubjectView>()
 | 
			
		||||
                {
 | 
			
		||||
                    PageSize = iRUnReadSubjectQuery.PageSize,
 | 
			
		||||
                    PageIndex = iRUnReadSubjectQuery.PageIndex,
 | 
			
		||||
                    PageSize = inQuery.PageSize,
 | 
			
		||||
                    PageIndex = inQuery.PageIndex,
 | 
			
		||||
                    TotalCount = totalCount,
 | 
			
		||||
                    CurrentPageData = currentPageData,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                // 封装的方法有问题
 | 
			
		||||
                //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(),
 | 
			
		||||
                    IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
 | 
			
		||||
| 
						 | 
				
			
			@ -1004,26 +1006,15 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                    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)
 | 
			
		||||
                       // .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 visitGroupQuery = taskQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode });
 | 
			
		||||
                var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
 | 
			
		||||
 | 
			
		||||
                var visitQuery = _visitTaskRepository.Where(x => x.TrialId == trialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
 | 
			
		||||
                  
 | 
			
		||||
                    .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()
 | 
			
		||||
                {
 | 
			
		||||
| 
						 | 
				
			
			@ -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),
 | 
			
		||||
 | 
			
		||||
                    //未读任务量
 | 
			
		||||
                    UnReadTaskCount = 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(),
 | 
			
		||||
                    UnReadCanReadTaskCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).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(),
 | 
			
		||||
 | 
			
		||||
                    ExistReadingApply = x.Any(y => (y.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed && y.TrialReadingCriterionId == trialReadingCriterionId) || y.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed),
 | 
			
		||||
 | 
			
		||||
                    //查出所有未读的  未读的可读的  在这个列表基础上 过滤下   y.IsFrontTaskNeedSignButNotSign==false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true)  这样容易排错 确认这三个字段是否维护有误
 | 
			
		||||
                    UnReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).OrderBy(x => x.VisitTaskNum)
 | 
			
		||||
                   
 | 
			
		||||
                    UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
                    .OrderBy(x => x.VisitTaskNum)
 | 
			
		||||
                    .Select(u => new IRUnreadTaskView()
 | 
			
		||||
                    {
 | 
			
		||||
                        Id = u.Id,
 | 
			
		||||
| 
						 | 
				
			
			@ -1065,22 +1051,48 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                        IsClinicalDataSign = u.IsClinicalDataSign,
 | 
			
		||||
                        IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
 | 
			
		||||
                    })
 | 
			
		||||
                    .ToList(),
 | 
			
		||||
                    .ToList()
 | 
			
		||||
                }).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>()
 | 
			
		||||
                {
 | 
			
		||||
                    PageSize = iRUnReadSubjectQuery.PageSize,
 | 
			
		||||
                    PageIndex = iRUnReadSubjectQuery.PageIndex,
 | 
			
		||||
                    TotalCount = totalCount,
 | 
			
		||||
                    CurrentPageData = currentPageData,
 | 
			
		||||
                    PageSize = inQuery.PageSize,
 | 
			
		||||
                    PageIndex = inQuery.PageIndex,
 | 
			
		||||
                    TotalCount = 0,
 | 
			
		||||
                    CurrentPageData = null,
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                return (result, new
 | 
			
		||||
                return ResponseOutput.Ok(result, new
 | 
			
		||||
                {
 | 
			
		||||
                    IsReadingTaskViewInOrder = isReadingTaskViewInOrder,
 | 
			
		||||
                    RandomReadInfo = iRUnReadOut,
 | 
			
		||||
| 
						 | 
				
			
			@ -1114,8 +1126,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id
 | 
			
		||||
            && x.TaskState == TaskState.Effect /*&& x.TrialReadingCriterionId== inDto.TrialReadingCriterionId*/)
 | 
			
		||||
            var visitQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect)
 | 
			
		||||
 | 
			
		||||
                 //前序 不存在  未生成任务的访视
 | 
			
		||||
                 .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
 | 
			
		||||
| 
						 | 
				
			
			@ -1150,34 +1161,34 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
                ).Count(),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
				UnReadCanReadTaskList= x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
				.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
 | 
			
		||||
				.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,
 | 
			
		||||
					ArmEnum = u.ArmEnum,
 | 
			
		||||
					TrialReadingCriterionId = u.TrialReadingCriterionId,
 | 
			
		||||
					IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
 | 
			
		||||
					IsClinicalDataSign = u.IsClinicalDataSign,
 | 
			
		||||
					IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
 | 
			
		||||
				})
 | 
			
		||||
				.ToList(),
 | 
			
		||||
                UnReadCanReadTaskList = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
                .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
 | 
			
		||||
                .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,
 | 
			
		||||
                    ArmEnum = u.ArmEnum,
 | 
			
		||||
                    TrialReadingCriterionId = u.TrialReadingCriterionId,
 | 
			
		||||
                    IsNeedClinicalDataSign = u.IsNeedClinicalDataSign,
 | 
			
		||||
                    IsClinicalDataSign = u.IsClinicalDataSign,
 | 
			
		||||
                    IsFrontTaskNeedSignButNotSign = u.IsFrontTaskNeedSignButNotSign
 | 
			
		||||
                })
 | 
			
		||||
                .ToList(),
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
				UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
				.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
 | 
			
		||||
				.Where(x=>x.IsUrgent).Count(),
 | 
			
		||||
                UrgentCount = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
                .Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
 | 
			
		||||
                .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),
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1210,7 +1221,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
 | 
			
		||||
            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");
 | 
			
		||||
            if (inDto.Page != null)
 | 
			
		||||
| 
						 | 
				
			
			@ -1275,14 +1286,14 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            var baseLineTaskList = await _visitTaskRepository.Where(t => t.TrialId == command.TrialId && t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.DoctorUserId == _userInfo.Id
 | 
			
		||||
                 && t.TaskState == TaskState.Effect && t.ReadingCategory == ReadingCategory.Visit && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.SourceSubjectVisit.IsBaseLine == true).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            var judegeList= await _visitTaskRepository.Where(t => t.TrialId == command.TrialId && t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.DoctorUserId == _userInfo.Id
 | 
			
		||||
            var judegeList = await _visitTaskRepository.Where(t => t.TrialId == command.TrialId && t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.DoctorUserId == _userInfo.Id
 | 
			
		||||
             && t.TaskState == TaskState.Effect && t.ReadingCategory == ReadingCategory.Judge && t.ReadingTaskState == ReadingTaskState.HaveSigned).ToListAsync();
 | 
			
		||||
 | 
			
		||||
            foreach (var item in judegeList)
 | 
			
		||||
            {
 | 
			
		||||
                if (!baseLineTaskList.Any(t => t.SubjectId == item.SubjectId))
 | 
			
		||||
                {
 | 
			
		||||
                    baseLineTaskList.Add(item); 
 | 
			
		||||
                    baseLineTaskList.Add(item);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2190,8 +2201,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
 | 
			
		|||
            foreach (var item in readingTableAnswerRowInfoList)
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
                var originalVisitTaskId= item.VisitTaskId;
 | 
			
		||||
                var originalFristAddTaskId= item.FristAddTaskId;
 | 
			
		||||
                var originalVisitTaskId = item.VisitTaskId;
 | 
			
		||||
                var originalFristAddTaskId = item.FristAddTaskId;
 | 
			
		||||
 | 
			
		||||
                item.Id = NewId.NextSequentialGuid();
 | 
			
		||||
                item.VisitTaskId = newTask.Id;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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))
 | 
			
		||||
            {
 | 
			
		||||
                //找到 非一致性分析,未签名,状态正常的 并且任务名称不是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.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze), true).ToListAsync();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue