修改医生统计数字
							parent
							
								
									bb181075a5
								
							
						
					
					
						commit
						793b798ef8
					
				| 
						 | 
				
			
			@ -86,7 +86,7 @@
 | 
			
		|||
            <param name="queryVisitTask"></param>
 | 
			
		||||
            <returns></returns>
 | 
			
		||||
        </member>
 | 
			
		||||
        <member name="M:IRaCIS.Core.Application.Service.VisitTaskService.GetIRUnReadSubjectTaskList(System.Guid)">
 | 
			
		||||
        <member name="M:IRaCIS.Core.Application.Service.VisitTaskService.GetIRUnReadSubjectTaskList(IRaCIS.Core.Application.ViewModel.IRUnReadSubjectQuery)">
 | 
			
		||||
            <summary>
 | 
			
		||||
            IR  待阅片任务列表(Subject 维度统计)
 | 
			
		||||
            </summary>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,17 +24,27 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
			
		|||
        public DateTime UpdateTime { get; set; }
 | 
			
		||||
        public Guid UpdateUserId { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //总任务数
 | 
			
		||||
        public int? TotalTaskCount { get; set; }
 | 
			
		||||
 | 
			
		||||
        //应用的总数
 | 
			
		||||
        public int? ApplyedTotalTaskCount { get; set; }
 | 
			
		||||
 | 
			
		||||
        //自己的任务数量
 | 
			
		||||
        public int? SelfTaskCount { get; set; }
 | 
			
		||||
 | 
			
		||||
        //分配给自己的Subject数量
 | 
			
		||||
        public int? SelfSubjectCount { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //已应用的Subject 总数
 | 
			
		||||
        public int? ApplyedTotalSubjectCount { get; set; }
 | 
			
		||||
 | 
			
		||||
        //系统Subject  总数
 | 
			
		||||
        public int? TotalSubjectCount { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public List<int> ArmList { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
			
		|||
        public Guid SubjectId { get; set; }
 | 
			
		||||
        public string SubjectCode { get; set; } = String.Empty;
 | 
			
		||||
 | 
			
		||||
        public bool IsUrgent => UnReadTaskList.Any(t=>t.IsUrgent);
 | 
			
		||||
        public bool IsUrgent => UnReadTaskList.Any(t => t.IsUrgent);
 | 
			
		||||
 | 
			
		||||
        public int? UnReadTaskCount { get; set; }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -189,6 +189,13 @@ namespace IRaCIS.Core.Application.ViewModel
 | 
			
		|||
        public Guid? OriginalReReadingId { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class IRUnReadSubjectQuery:PageInput
 | 
			
		||||
    {
 | 
			
		||||
        public Guid TrialId { get; set; }
 | 
			
		||||
 | 
			
		||||
        public string SubjectCode { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class SubjectAssignQuery : PageInput
 | 
			
		||||
    {
 | 
			
		||||
        [NotDefault]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        {
 | 
			
		||||
 | 
			
		||||
            var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
 | 
			
		||||
                .Where(t=>t.ReadingCategory==ReadingCategory.Judge)
 | 
			
		||||
                .Where(t => t.ReadingCategory == ReadingCategory.Judge)
 | 
			
		||||
 | 
			
		||||
                .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory)
 | 
			
		||||
                .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
			
		||||
| 
						 | 
				
			
			@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        public async Task<(PageOutput<ReadingTaskView>, object)> GetReadingTaskList(VisitTaskQuery queryVisitTask)
 | 
			
		||||
        {
 | 
			
		||||
            var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
 | 
			
		||||
                .Where( t => t.OriginalReReadingId == null && t.DoctorUserId !=null)
 | 
			
		||||
                .Where(t => t.OriginalReReadingId == null && t.DoctorUserId != null)
 | 
			
		||||
 | 
			
		||||
               .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
			
		||||
               .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId)
 | 
			
		||||
| 
						 | 
				
			
			@ -192,21 +192,46 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        /// IR  待阅片任务列表(Subject 维度统计)
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
       [HttpGet("{trialId:guid}")]
 | 
			
		||||
        public async Task<List<IRUnReadSubjectView>> GetIRUnReadSubjectTaskList(Guid trialId)
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<PageOutput<IRUnReadSubjectView>> GetIRUnReadSubjectTaskList(IRUnReadSubjectQuery iRUnReadSubjectQuery)
 | 
			
		||||
        {
 | 
			
		||||
            var query = _visitTaskRepository.Where(t => t.TrialId == trialId)
 | 
			
		||||
                 .Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
                 .GroupBy(t => new { t.SubjectId, t.Subject.Code })
 | 
			
		||||
                 .Select(g => new IRUnReadSubjectView()
 | 
			
		||||
                 {
 | 
			
		||||
                     SubjectCode = g.Key.Code,
 | 
			
		||||
                     SubjectId = g.Key.SubjectId,
 | 
			
		||||
                     UnReadTaskCount = g.Count(),
 | 
			
		||||
                     UnReadTaskList = g.AsQueryable().Select(c => new IRUnreadTaskView() { Id = c.Id, SuggesteFinishedTime = c.SuggesteFinishedTime, IsUrgent = c.IsUrgent }).ToList()
 | 
			
		||||
                 });
 | 
			
		||||
            var trialId = iRUnReadSubjectQuery.TrialId;
 | 
			
		||||
            #region 按照任务的维度统计分组
 | 
			
		||||
            //var query = _visitTaskRepository.Where(t => t.TrialId == trialId)
 | 
			
		||||
            //  .Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned)
 | 
			
		||||
            //  .GroupBy(t => new { t.SubjectId, t.Subject.Code })
 | 
			
		||||
            //  .Select(g => new IRUnReadSubjectView()
 | 
			
		||||
            //  {
 | 
			
		||||
            //      SubjectCode = g.Key.Code,
 | 
			
		||||
            //      SubjectId = g.Key.SubjectId,
 | 
			
		||||
            //      UnReadTaskCount = g.Count(),
 | 
			
		||||
            //      UnReadTaskList = g.AsQueryable().Select(c => new IRUnreadTaskView() { Id = c.Id, SuggesteFinishedTime = c.SuggesteFinishedTime, IsUrgent = c.IsUrgent }).ToList()
 | 
			
		||||
            //  });
 | 
			
		||||
            //return query.ToList();
 | 
			
		||||
            #endregion
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            #region 按照Subject 维度
 | 
			
		||||
 | 
			
		||||
            var subjectQuery = _subjectRepository.Where(t => t.TrialId == trialId)
 | 
			
		||||
                .Where(t => t.SubjectDoctorList.Any(t => t.DoctorUserId == _userInfo.Id))
 | 
			
		||||
                .WhereIf(!string.IsNullOrEmpty(iRUnReadSubjectQuery.SubjectCode), t => t.Code.Contains(iRUnReadSubjectQuery.SubjectCode))
 | 
			
		||||
                .Select(s => new IRUnReadSubjectView()
 | 
			
		||||
                   {
 | 
			
		||||
                       SubjectId = s.Id,
 | 
			
		||||
                       SubjectCode = s.Code,
 | 
			
		||||
                       UnReadTaskCount = s.SubjectVisitTaskList.Count(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id),
 | 
			
		||||
                       UnReadTaskList = s.SubjectVisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.DoctorUserId == _userInfo.Id).Select(u => new IRUnreadTaskView() { Id = u.Id, IsUrgent = u.IsUrgent, SuggesteFinishedTime = u.SuggesteFinishedTime }).ToList(),
 | 
			
		||||
                   })
 | 
			
		||||
                 .Where(t=>t.UnReadTaskCount>0);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return await subjectQuery.ToPagedListAsync(iRUnReadSubjectQuery.PageIndex, iRUnReadSubjectQuery.PageSize, String.IsNullOrEmpty(iRUnReadSubjectQuery.SortField)?nameof(IRUnReadSubjectView.SubjectId): iRUnReadSubjectQuery.SortField, iRUnReadSubjectQuery.Asc);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            #endregion
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return query.ToList();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -222,7 +247,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
            var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
 | 
			
		||||
                 .Where( t=> t.DoctorUserId == _userInfo.Id && t.ReadingTaskState==ReadingTaskState.HaveSigned)//该医生 已经签名的数据
 | 
			
		||||
                 .Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState == ReadingTaskState.HaveSigned)//该医生 已经签名的数据
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
                .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId)
 | 
			
		||||
| 
						 | 
				
			
			@ -290,12 +315,13 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        public async Task<PageOutput<SubjectAssignView>> GetSubjectAssignList(SubjectAssignQuery querySubjectAssign)
 | 
			
		||||
        {
 | 
			
		||||
            var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId)
 | 
			
		||||
                  .Where(t => t.SubjectVisitTaskList.Any())
 | 
			
		||||
                  .WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId)
 | 
			
		||||
                  .WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId)
 | 
			
		||||
                  .WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == true, t => t.SubjectDoctorList.Count() > 0)
 | 
			
		||||
                  .WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == false, t => !t.SubjectDoctorList.Any())
 | 
			
		||||
                  .WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == true, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).All(u => u.DoctorUserId != null))
 | 
			
		||||
                   .WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == false, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).Any(u => u.DoctorUserId == null))
 | 
			
		||||
                  .WhereIf(querySubjectAssign.IsHaveApplyedTask != null && querySubjectAssign.IsHaveApplyedTask == false, t => t.SubjectDoctorList.SelectMany(t => t.Subject.SubjectVisitTaskList).Any(u => u.DoctorUserId == null))
 | 
			
		||||
                  .WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId))
 | 
			
		||||
                  .ProjectTo<SubjectAssignView>(_mapper.ConfigurationProvider);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -342,7 +368,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
        /// <summary>
 | 
			
		||||
        /// 批量取消Subject 分配的医生
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        /// <returns></returns> 数量
 | 
			
		||||
        [HttpPost]
 | 
			
		||||
        public async Task<IResponseOutput> CancelSubjectAssignDoctor(CancelSubjectAssignCommand cancelSubjectAssignCommand)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -378,7 +404,7 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
            var subjectIdList = assignConfirmCommand.SubjectDoctorUserList.Select(t => t.SubjectId).ToList();
 | 
			
		||||
 | 
			
		||||
            var taskList = _visitTaskRepository.Where(t => t.TrialId == assignConfirmCommand.TrialId && t.DoctorUserId == null, true)
 | 
			
		||||
                    .WhereIf(subjectIdList.Count() > 0 , t => subjectIdList.Contains(t.SubjectId) && t.Subject.SubjectDoctorList.Any())
 | 
			
		||||
                    .WhereIf(subjectIdList.Count() > 0, t => subjectIdList.Contains(t.SubjectId) && t.Subject.SubjectDoctorList.Any())
 | 
			
		||||
                   .ToList();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,10 +16,13 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
                 .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))
 | 
			
		||||
                 .ForMember(o => o.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
 | 
			
		||||
                 .ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName))
 | 
			
		||||
                 .ForMember(o => o.ArmList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(c => c.TrialId == u.TrialId).Select(t => t.ArmEnum).Distinct()))
 | 
			
		||||
                 //.ForMember(o => o.ArmList, t => t.MapFrom(u => u.DoctorVisitTaskList.Where(c => c.TrialId == u.TrialId).Select(t => t.ArmEnum).Distinct()))
 | 
			
		||||
                 .ForMember(o => o.TotalTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count()))
 | 
			
		||||
                 .ForMember(o => o.ApplyedTotalTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count(t=>t.DoctorUserId != null)))
 | 
			
		||||
                 
 | 
			
		||||
                 .ForMember(o => o.SelfTaskCount, t => t.MapFrom(u => u.Trial.VisitTaskList.Count(t => t.DoctorUserId == u.DoctorUserId)))
 | 
			
		||||
                 .ForMember(o => o.TotalSubjectCount, t => t.MapFrom(u => u.Trial.SubjectList.Count()))
 | 
			
		||||
                 .ForMember(o => o.ApplyedTotalSubjectCount, t => t.MapFrom(u => u.Trial.SubjectList.Count(c=>c.SubjectDoctorList.Any(d=>d.DoctorUserId==u.DoctorUserId))))
 | 
			
		||||
                 .ForMember(o => o.SelfSubjectCount, t => t.MapFrom(u => u.Trial.SubjectDoctorUserList.Where(t => t.DoctorUserId == u.DoctorUserId).Count()));
 | 
			
		||||
 | 
			
		||||
            CreateMap<TaskAllocationRule, AllocateInfo>()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue