修改提示
							parent
							
								
									6c94c6e432
								
							
						
					
					
						commit
						4843b7f73e
					
				| 
						 | 
				
			
			@ -466,6 +466,9 @@ namespace IRaCIS.Core.Application.Contracts.DTO
 | 
			
		|||
        public UserTypeEnum UserTypeEnum { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public class QCChanllengeDialogDTO : CheckChanllengeDialogDTO
 | 
			
		||||
    {
 | 
			
		||||
        public Guid QCChallengeId { get; set; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
using IRaCIS.Core.Domain.Share;
 | 
			
		||||
using IRaCIS.Core.Application.Contracts.DTO;
 | 
			
		||||
using IRaCIS.Core.Domain.Share;
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
 | 
			
		||||
namespace IRaCIS.Core.Application.Contracts
 | 
			
		||||
| 
						 | 
				
			
			@ -318,6 +319,14 @@ namespace IRaCIS.Core.Application.Contracts
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public class CheckDialogDTO
 | 
			
		||||
    {
 | 
			
		||||
       public QCCheckViewModel SubjectVisitCheck { get; set; }
 | 
			
		||||
 | 
			
		||||
       public List<CheckChanllengeDialogDTO> DialogList { get; set; }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public class QCCheckViewModel
 | 
			
		||||
    {
 | 
			
		||||
        public string? TalkContent { get; set; } = String.Empty;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
{
 | 
			
		||||
    public interface IQCListService
 | 
			
		||||
    {
 | 
			
		||||
        Task<List<CheckChanllengeDialogDTO>> GetCheckChallengeDialogList(Guid subjectVisitId);
 | 
			
		||||
        Task<CheckDialogDTO> GetCheckChallengeDialogList(Guid subjectVisitId);
 | 
			
		||||
        Task<IResponseOutput<PageOutput<QCCheckViewModel>, TrialSubjectAndSVConfig>> GetConsistencyVerificationList(CheckQuery checkQuery);
 | 
			
		||||
        Task<IResponseOutput<PageOutput<QCCRCChallengeViewModel>, TrialSubjectAndSVConfig>> GetCRCChallengeList(ChallengeQuery challengeQuery);
 | 
			
		||||
        Task<List<ChallengeAndDialog>> GetCRCVisitChallengeAndDialog(Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,10 +42,10 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                if (isSelectOutPlan)
 | 
			
		||||
                {
 | 
			
		||||
                    svExpression = svExpression.Or(t => t.InPlan == false);
 | 
			
		||||
              
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
               
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return svExpression;
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
               
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return svExpression;
 | 
			
		||||
| 
						 | 
				
			
			@ -93,21 +93,21 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
        [HttpPost]
 | 
			
		||||
        public async Task<IResponseOutput<PageOutput<QCCRCVisitViewModel>, TrialSubjectAndSVConfig>> GetCRCVisitList(CRCVisitSearchDTO visitSearchDTO)
 | 
			
		||||
        {
 | 
			
		||||
          var svExpression= GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
 | 
			
		||||
            var svExpression = GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
 | 
			
		||||
 | 
			
		||||
             var query = _repository.Where<SubjectVisit>(x => x.TrialId == visitSearchDTO.TrialId)
 | 
			
		||||
                        .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
 | 
			
		||||
                        .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)
 | 
			
		||||
                        .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo))
 | 
			
		||||
            var query = _repository.Where<SubjectVisit>(x => x.TrialId == visitSearchDTO.TrialId)
 | 
			
		||||
                       .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
 | 
			
		||||
                       .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)
 | 
			
		||||
                       .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo))
 | 
			
		||||
 | 
			
		||||
                        .WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression)
 | 
			
		||||
                        //.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.VisitPlanInfo), visitSearchDTO.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(visitSearchDTO.VisitPlanInfo))
 | 
			
		||||
                        .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
 | 
			
		||||
                        .WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
 | 
			
		||||
                        .WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
 | 
			
		||||
                        .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
 | 
			
		||||
                        .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
			
		||||
                        .ProjectTo<QCCRCVisitViewModel>(_mapper.ConfigurationProvider);
 | 
			
		||||
                       .WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression)
 | 
			
		||||
                       //.WhereIf(!string.IsNullOrEmpty(visitSearchDTO.VisitPlanInfo), visitSearchDTO.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(visitSearchDTO.VisitPlanInfo))
 | 
			
		||||
                       .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
 | 
			
		||||
                       .WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
 | 
			
		||||
                       .WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
 | 
			
		||||
                       .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
 | 
			
		||||
                       .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
 | 
			
		||||
                       .ProjectTo<QCCRCVisitViewModel>(_mapper.ConfigurationProvider);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            var pageList = await query.ToPagedListAsync(visitSearchDTO.PageIndex, visitSearchDTO.PageSize, visitSearchDTO.SortField, visitSearchDTO.Asc);
 | 
			
		||||
| 
						 | 
				
			
			@ -166,7 +166,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
            var svExpression = GetQCChallengeFilter(challengeQuery.VisitPlanArray);
 | 
			
		||||
 | 
			
		||||
            var query2 = _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId)
 | 
			
		||||
                 //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
 | 
			
		||||
                //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
 | 
			
		||||
                .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum)
 | 
			
		||||
                .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed)
 | 
			
		||||
                .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId)
 | 
			
		||||
| 
						 | 
				
			
			@ -255,7 +255,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
            var svExpression = GetQCChallengeFilter(challengeQuery.VisitPlanArray);
 | 
			
		||||
 | 
			
		||||
            var query = _repository.Where<QCChallenge>(x => x.TrialId == challengeQuery.TrialId)
 | 
			
		||||
                 //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
 | 
			
		||||
                //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState)
 | 
			
		||||
                .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum)
 | 
			
		||||
                .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed)
 | 
			
		||||
                .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId)
 | 
			
		||||
| 
						 | 
				
			
			@ -452,12 +452,12 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
                        //.WhereIf(visitSearchDTO.AuditState != null, t => t.AuditState == visitSearchDTO.AuditState)
 | 
			
		||||
                        .WhereIf(visitSearchDTO.AuditStateArray != null && visitSearchDTO.AuditStateArray?.Length > 0, t => visitSearchDTO.AuditStateArray!.Contains(t.AuditState))
 | 
			
		||||
 | 
			
		||||
                        .WhereIf(visitSearchDTO.HandleUserId != null, t => t.PreliminaryAuditUserId == visitSearchDTO.HandleUserId || t.CurrentActionUserId== visitSearchDTO.HandleUserId
 | 
			
		||||
                        .WhereIf(visitSearchDTO.HandleUserId != null, t => t.PreliminaryAuditUserId == visitSearchDTO.HandleUserId || t.CurrentActionUserId == visitSearchDTO.HandleUserId
 | 
			
		||||
                        || t.ReviewAuditUserId == visitSearchDTO.HandleUserId
 | 
			
		||||
                        || t.QCChallengeList.Any(t => t.CreateUserId == visitSearchDTO.HandleUserId)
 | 
			
		||||
                        || t.QCChallengeDialogList.Any(t => t.CreateUserId == visitSearchDTO.HandleUserId))
 | 
			
		||||
                        .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent)
 | 
			
		||||
                        .Where(t=>t.SubmitState!=SubmitStateEnum.None)
 | 
			
		||||
                        .Where(t => t.SubmitState != SubmitStateEnum.None)
 | 
			
		||||
                        //.WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState)
 | 
			
		||||
                        //.WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState)
 | 
			
		||||
                        .ProjectTo<QCVisitViewModel>(_mapper.ConfigurationProvider);
 | 
			
		||||
| 
						 | 
				
			
			@ -554,15 +554,15 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
        /// 
 | 
			
		||||
 | 
			
		||||
        [HttpGet("{subjectVisitId:guid}")]
 | 
			
		||||
        public async Task<List<CheckChanllengeDialogDTO>> GetCheckChallengeDialogList(Guid subjectVisitId)
 | 
			
		||||
        public async Task<CheckDialogDTO> GetCheckChallengeDialogList(Guid subjectVisitId)
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
            var list = await _repository.Where<CheckChallengeDialog>(t => t.SubjectVisitId == subjectVisitId).OrderBy(t => t.CreateTime)
 | 
			
		||||
                  .ProjectTo<CheckChanllengeDialogDTO>(_mapper.ConfigurationProvider).ToListAsync();
 | 
			
		||||
            var sv = (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId)
 | 
			
		||||
                  .ProjectTo<CheckDialogDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
 | 
			
		||||
 | 
			
		||||
            list.ForEach(t => t.IsCurrentUser = _userInfo.Id == t.CreateUserId);
 | 
			
		||||
            sv.DialogList.ForEach(t => t.IsCurrentUser = _userInfo.Id == t.CreateUserId);
 | 
			
		||||
 | 
			
		||||
            return list;
 | 
			
		||||
            return sv;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
| 
						 | 
				
			
			@ -608,7 +608,7 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
        public async Task<TrialVisitQADTO> GetVisitQCInfo(Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType)
 | 
			
		||||
        {
 | 
			
		||||
            var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
            var temp = await GetVisitQCStudyAndSeriesList(subjectVisitId);
 | 
			
		||||
 | 
			
		||||
            var qacheckList = await GetQCQuestionAnswerList(subjectVisitId, sv.TrialId, trialQCProcess, currentQCType);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -949,9 +949,11 @@ namespace IRaCIS.Core.Application.Image.QA
 | 
			
		|||
        #endregion
 | 
			
		||||
 | 
			
		||||
        [HttpGet]
 | 
			
		||||
        public async Task IsQCCanOpt([FromQuery,Required]Guid subjectVisitId)
 | 
			
		||||
        public async  Task<IResponseOutput>  IsQCCanOpt([FromQuery,Required]Guid subjectVisitId)
 | 
			
		||||
        {
 | 
			
		||||
             await VerifyIsCanQCAsync(null, subjectVisitId);
 | 
			
		||||
 | 
			
		||||
            return ResponseOutput.Ok();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -148,6 +148,15 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
               .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code))
 | 
			
		||||
               .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
 | 
			
		||||
 | 
			
		||||
            //一致性核查 质疑对话
 | 
			
		||||
            CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
 | 
			
		||||
                 .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
 | 
			
		||||
                 .ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName));
 | 
			
		||||
 | 
			
		||||
            CreateMap<SubjectVisit, CheckDialogDTO>()
 | 
			
		||||
               .ForMember(d => d.SubjectVisitCheck, u => u.MapFrom(t => t)) 
 | 
			
		||||
                .ForMember(d => d.DialogList, u => u.MapFrom(t => t.CheckChallengeDialogList.OrderBy(t => t.CreateTime)));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            CreateMap<SubjectVisit, ForWardViewModel>()
 | 
			
		||||
             .ForMember(d => d.ForwardUserName, u => u.MapFrom(s => s.ForwardUser.UserName))    
 | 
			
		||||
| 
						 | 
				
			
			@ -179,10 +188,8 @@ namespace IRaCIS.Core.Application.Service
 | 
			
		|||
            CreateMap<PreviousSurgery, PreviousSurgeryView>()
 | 
			
		||||
                .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
 | 
			
		||||
 | 
			
		||||
            //一致性核查 质疑对话
 | 
			
		||||
            CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
 | 
			
		||||
                 .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
 | 
			
		||||
                 .ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName));
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            //QC 质疑对话
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue