diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index c17a79cca..8767e26a1 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -276,7 +276,7 @@ namespace IRaCIS.Core.Application.ViewModel public Guid? ClaimUserId { get; set; } - + public string? ClaimUserName { get; set; } public bool IsUrgent => UnReadTaskList.Any(t => t.IsUrgent); public int UnReadTaskCount { get; set; } diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index f4d13a114..7f0a3004e 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -618,13 +618,15 @@ namespace IRaCIS.Core.Application.Service.Allocation var visitQuery = _visitTaskRepository .Where(x => x.TrialId == inDto.TrialId && x.TaskState == TaskState.Effect) - //PI 读基线的时候,subject 如果基线没阅片完,SR就不能看 + //PI 读基线的时候,subject 如果PI基线没阅片完,SR就不能看 .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline, - t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned)) + t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect)) - //PI 读随访的时候, subject 如果基线没阅片完,SR就不能看 + //PI 读随访的时候, subject 如果SR基线没阅片完,PI就不能看 .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit, - t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)) + t => t.Subject.SubjectVisitTaskList.Any(c => c.SourceSubjectVisit.IsBaseLine == true && c.ReadingTaskState == ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect)) + + .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR, t => t.Subject.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id)) // 仅仅SR阅片 PI 没有任务列表 @@ -639,7 +641,7 @@ namespace IRaCIS.Core.Application.Service.Allocation t => true) .WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.PI && piReadingScopenEnum == PIReadingScopenEnum.AllVisit, - t => t.SourceSubjectVisit.IsBaseLine == false) + t => t.SourceSubjectVisit.IsBaseLine == false ) .WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllBaseline, t => t.SourceSubjectVisit.IsBaseLine == false) @@ -651,21 +653,24 @@ namespace IRaCIS.Core.Application.Service.Allocation .WhereIf(readingDivisionEnum == ReadingDivisionEnum.PIandSR && _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SR && piReadingScopenEnum == PIReadingScopenEnum.AllVisit, t => t.SourceSubjectVisit.IsBaseLine == true) - //前序 不存在 未生成任务的访视 - .WhereIf(critrion.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum)) - // 前序 不存在 未一致性核查未通过的 - .Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum)) + // 前序 不存在 未一致性核查未通过的 并且前序不存在未完成阅片的有效任务 + .Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum )) + + //.WhereIf(piReadingScopenEnum == PIReadingScopenEnum.AllVisit,t => + // !t.Subject.SubjectVisitTaskList.Any(tk => tk.ReadingTaskState != ReadingTaskState.HaveSigned && tk.TaskState == TaskState.Effect && tk.VisitTaskNum < t.VisitTaskNum)) + .WhereIf(!string.IsNullOrEmpty(inDto.SubjectCode), t => (t.Subject.Code.Contains(inDto.SubjectCode) && t.IsAnalysisCreate == false) || (t.BlindSubjectCode.Contains(inDto.SubjectCode) && t.IsAnalysisCreate)); - var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode, x.Subject.ClaimUserId }); + var visitGroupQuery = visitQuery.GroupBy(x => new { x.SubjectId, x.Subject.Code, x.BlindSubjectCode, x.Subject.ClaimUserId ,x.Subject.ClaimUser.UserName }); var visitTaskQuery = visitGroupQuery.Select(x => new IRUnReadSubjectView() { SubjectId = x.Key.SubjectId, SubjectCode = x.Key.BlindSubjectCode == string.Empty ? x.Key.Code : x.Key.BlindSubjectCode, ClaimUserId = x.Key.ClaimUserId, + ClaimUserName=x.Key.UserName, SuggesteFinishedTime = x.Where(y => y.TrialReadingCriterionId == trialReadingCriterionId && y.ReadingTaskState != ReadingTaskState.HaveSigned).Min(x => x.SuggesteFinishedTime), diff --git a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs index d6168906a..efdcd51e5 100644 --- a/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs +++ b/IRaCIS.Core.Application/Service/Common/InternationalizationService.cs @@ -88,7 +88,6 @@ namespace IRaCIS.Core.Application.Service await _internationalizationRepository.SaveChangesAsync(); - return ResponseOutput.Ok(); } @@ -106,7 +105,7 @@ namespace IRaCIS.Core.Application.Service if (addOrEditInternationalization.InternationalizationType == 1) { - await InternationalizationHelper.AddOrUpdateJsonKeyValueAsync(entity.Code, entity.Value, entity.ValueCN); + await InternationalizationHelper.AddOrUpdateJsonKeyValueAsync(entity.Code, addOrEditInternationalization.Value, addOrEditInternationalization.ValueCN); } diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs index 3a9acc25e..9defbfcbb 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs @@ -235,7 +235,17 @@ namespace IRaCIS.Core.Application.Services var isAdditionalAssessment = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsSigned && t.IsAdditionalAssessment == true &&t.TrialCriterionAdditionalAssessmentTypeList.Any(c=>/*c.AdditionalAssessmentType==Domain.Share.Reading.AdditionalAssessmentType.BrainMetastasis &&*/ c.IsSelected==true)).Any(); - return ResponseOutput.Ok>( result, new { NeedSignCount = needSignTrialDocCount + needSignSystemDocCount, NeedSignTrialDocCount = needSignTrialDocCount, NeedSignSystemDocCount = needSignSystemDocCount, IsAdditionalAssessment = isAdditionalAssessment && isManualGenerateTask, TrialStatusStr = trialInfo.TrialStatusStr,TrialConfig= trialTaskConfig }); + + var isAllOnlySRReading = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsSigned).All(t => t.ReadingDivisionEnum == ReadingDivisionEnum.OnlySR); + + return ResponseOutput.Ok>( result, new { + NeedSignCount = needSignTrialDocCount + needSignSystemDocCount, + NeedSignTrialDocCount = needSignTrialDocCount, + NeedSignSystemDocCount = needSignSystemDocCount, + IsAllOnlySRReading= isAllOnlySRReading, + IsAdditionalAssessment = isAdditionalAssessment && isManualGenerateTask, + TrialStatusStr = trialInfo.TrialStatusStr, + TrialConfig= trialTaskConfig }); } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs index 9badbb824..3dca2c49c 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs @@ -35,9 +35,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SiteName, u => u.MapFrom(s => s.Site.SiteName)) .ForMember(d => d.UploaderFirstName, u => u.MapFrom(s => s.Uploader.FirstName)) .ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.Uploader.LastName)) - .ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime)) - - .ForMember(d => d.DTFCount, u => u.MapFrom(s => s.StudyDTFList.Count())); + .ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime)); CreateMap(); @@ -61,7 +59,8 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) .ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName)) - .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)); + .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)) + .ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct()) )); diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs index 95784d2ff..f9f6b0f38 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingMedicalReviewDto.cs @@ -100,6 +100,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string TaskBlindName { get; set; } + public string TaskName { get; set; } + + public UserTypeEnum UserTypeEnum { get; set; } + /// /// 阅片类别 /// @@ -614,7 +618,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Arm ArmEnum { get; set; } - + public UserTypeEnum UserTypeEnum { get; set; } /// /// 评估结果 diff --git a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs index 6c41c6688..b0815aecd 100644 --- a/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Reading/MedicalAudit/ReadingMedicalReviewService.cs @@ -180,6 +180,8 @@ namespace IRaCIS.Core.Application.Service //JudgeVisitTaskId = x.JudgeVisitTaskId, JudgeResultArm = x.JudgeResultTask.ArmEnum, SubjectId = x.SubjectId, + + UserTypeEnum=x.DoctorUser.UserTypeEnum }).ToListAsync(); @@ -204,6 +206,8 @@ namespace IRaCIS.Core.Application.Service TaskName = x.TaskName, SouceReadModuleId = x.SouceReadModuleId, SourceSubjectVisitId = x.SourceSubjectVisitId, + + UserTypeEnum = x.DoctorUser.UserTypeEnum }).ToListAsync(); medicalReviewInfo.TaskList.ForEach(x => @@ -234,6 +238,8 @@ namespace IRaCIS.Core.Application.Service SouceReadModuleId = x.SouceReadModuleId, SourceSubjectVisitId = x.SourceSubjectVisitId, SubjectId = x.SubjectId, + + UserTypeEnum = x.DoctorUser.UserTypeEnum }).ToListAsync(); List otherTask = await _visitTaskRepository.Where(x => @@ -258,6 +264,8 @@ namespace IRaCIS.Core.Application.Service TaskName = x.TaskName, SouceReadModuleId = x.SouceReadModuleId, SourceSubjectVisitId = x.SourceSubjectVisitId, + + UserTypeEnum = x.DoctorUser.UserTypeEnum }).ToListAsync(); medicalReviewInfo.TaskList.ForEach(x => @@ -693,20 +701,20 @@ namespace IRaCIS.Core.Application.Service var result = await _taskMedicalReviewRepository.SaveChangesAsync(); - //自动发送邮件逻辑 - if (medicalReviewInfo.IsAutoGenerate) - { + ////自动发送邮件逻辑 + //if (medicalReviewInfo.IsAutoGenerate) + //{ - var allMedicalAuditList= await _taskMedicalReviewRepository.Where(x => medicalReviewInfo.PDRelationTaskIdList.Contains(x.VisitTaskId) && x.IsAutoGenerate && x.IsInvalid==false).ToListAsync(); + // var allMedicalAuditList= await _taskMedicalReviewRepository.Where(x => medicalReviewInfo.PDRelationTaskIdList.Contains(x.VisitTaskId) && x.IsAutoGenerate && x.IsInvalid==false).ToListAsync(); - if (allMedicalAuditList.All(t => t.IsApplyHeavyReading == false && t.AuditSignTime!=null && t.AuditState == MedicalReviewAuditState.HaveSigned)) - { - //自动发送 - await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(medicalReviewInfo.VisitTaskId, false); - } + // if (allMedicalAuditList.All(t => t.IsApplyHeavyReading == false && t.AuditSignTime!=null && t.AuditState == MedicalReviewAuditState.HaveSigned)) + // { + // //自动发送 + // await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(medicalReviewInfo.VisitTaskId, false); + // } - } + //} @@ -786,6 +794,8 @@ namespace IRaCIS.Core.Application.Service AuditState = x.AuditState, SubjectCode = x.VisitTask.BlindSubjectCode == string.Empty ? x.VisitTask.Subject.Code : x.VisitTask.BlindSubjectCode, TaskBlindName = x.VisitTask.TaskBlindName, + TaskName=x.VisitTask.TaskName, + UserTypeEnum=x.VisitTask.DoctorUser.UserTypeEnum, ReadingCategory = x.VisitTask.ReadingCategory, FirstReplyTime = x.ReadingMedicalReviewDialogList.Min(x => x.CreateTime), LastReplyTime = x.ReadingMedicalReviewDialogList.Max(x => x.CreateTime), diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 7476fafc2..3eaac36bf 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -2586,7 +2586,7 @@ namespace IRaCIS.Application.Services await _visitTaskRepository.SaveChangesAsync(); - await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId); + //await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId); } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 79591cffe..829881025 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -453,7 +453,7 @@ namespace IRaCIS.Application.Services // 创建任务关联关系 await this.CreateTaskRelated(inDto.VisitTaskId); - await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(inDto.VisitTaskId); + //await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(inDto.VisitTaskId); return ResponseOutput.Ok(result); } diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 7d5093d80..bc25e676f 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -559,40 +559,14 @@ namespace IRaCIS.Core.Application.Contracts var messageToSend = new MimeMessage(); - if (await _repository.AnyAsync(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId)) { //---中心调研已锁定,不允许操作。 return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]); } - - if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) + if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager ) { - //SPM 给填表人发 - messageToSend.To.Add(new MailboxAddress(String.Empty, survey.Email)); - - survey.State = TrialSiteSurveyEnum.ToSubmit; - } - else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) - { - var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM)); - - if (hasSPMOrCPM) - { - - //PM 给SPM发 (初审人) - user = await _userRepository.FirstOrDefaultAsync(t => t.Id == survey.PreliminaryUserId); - - messageToSend.To.Add(new MailboxAddress(String.Empty, survey.PreliminaryUserId == null ? survey.Email : user.EMail)); - - survey.State = TrialSiteSurveyEnum.CRCSubmitted; - - survey.ReviewerUserId = null; - survey.ReviewerTime = null; - } - else - { //没有SPM 给填表人发 messageToSend.To.Add(new MailboxAddress(String.Empty, survey.Email)); @@ -604,7 +578,6 @@ namespace IRaCIS.Core.Application.Contracts survey.ReviewerTime = null; - } } @@ -649,9 +622,6 @@ namespace IRaCIS.Core.Application.Contracts await _IMailVerificationService.SiteSurveyRejectEmail(messageToSend); - - - await _trialSiteSurveyRepository.SaveChangesAsync(); return ResponseOutput.Ok(); @@ -674,24 +644,9 @@ namespace IRaCIS.Core.Application.Contracts return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]); } - if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) - { - await _repository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit }); - } - else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) - { - var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM)); - if (hasSPMOrCPM) - { - await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted }); + await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit }); - } - else - { - await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit }); - } - } return ResponseOutput.Ok(); } @@ -736,23 +691,31 @@ namespace IRaCIS.Core.Application.Contracts var trialSiteSurvey = (await _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefaultAsync()).IfNullThrowException(); - var siteUserList = await _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurvey.TrialId==trialId && t.TrialSiteSurvey.SiteId == trialSiteSurvey.SiteId && t.TrialSiteSurvey.IsDeleted==false).Select(t => - new { t.TrialSiteSurveyId, t.IsGenerateAccount, t.IsGenerateSuccess, t.UserTypeId, - UserTypeEnum= (UserTypeEnum?) t.UserTypeRole.UserTypeEnum , t.TrialRoleName.Code,t.Email }).ToListAsync(); + var siteUserList = await _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurvey.TrialId == trialId && t.TrialSiteSurvey.SiteId == trialSiteSurvey.SiteId && t.TrialSiteSurvey.IsDeleted == false).Select(t => + new + { + t.TrialSiteSurveyId, + t.IsGenerateAccount, + t.IsGenerateSuccess, + t.UserTypeId, + UserTypeEnum = (UserTypeEnum?)t.UserTypeRole.UserTypeEnum, + t.TrialRoleName.Code, + t.Email + }).ToListAsync(); - - if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined) + + if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined) { //是第一次 - if(!siteUserList.Any(t=>t.IsGenerateSuccess)) + if (!siteUserList.Any(t => t.IsGenerateSuccess)) { var currentUserList = siteUserList.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId).ToList(); - if(!currentUserList.Any(t=>t.Code=="1") || !currentUserList.Any(t => t.Code == "4")) + if (!currentUserList.Any(t => t.Code == "1") || !currentUserList.Any(t => t.Code == "5")) { - throw new BusinessValidationFailedException("本次提交,必须有CRC和影像负责人信息"); + throw new BusinessValidationFailedException("本次提交,必须有CRC和影像阅片人信息"); } } @@ -762,7 +725,7 @@ namespace IRaCIS.Core.Application.Contracts else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) { - foreach (var group in (siteUserList.Where(t=>t.IsGenerateAccount && t.TrialSiteSurveyId==trialSiteSurveyId) + foreach (var group in (siteUserList.Where(t => t.IsGenerateAccount && t.TrialSiteSurveyId == trialSiteSurveyId) .GroupBy(t => new { t.Email, t.IsGenerateAccount, t.UserTypeId }))) { if (group.Count() > 1) diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs index 72d104b1b..78a25359e 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs @@ -48,7 +48,7 @@ namespace IRaCIS.Core.Application.Contracts if (addOrEditTrialSiteUserSurvey.UserTypeId != null && ( _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)) { - var existSysUser = await _repository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialSiteUserSurvey.Email && t.UserTypeId == addOrEditTrialSiteUserSurvey.UserTypeId); + var existSysUser = await _repository.Where(t => t.EMail == addOrEditTrialSiteUserSurvey.Email && t.UserTypeId == addOrEditTrialSiteUserSurvey.UserTypeId).Include(d=>d.UserTypeRole).FirstOrDefaultAsync(); if (existSysUser != null) @@ -56,7 +56,7 @@ namespace IRaCIS.Core.Application.Contracts if (existSysUser.LastName != addOrEditTrialSiteUserSurvey.LastName || existSysUser.FirstName != addOrEditTrialSiteUserSurvey.FirstName) { //$"该用户在系统中账户名为:{existSysUser.LastName + " / " + existSysUser.FirstName} ,与填写信息存在不一致项, 现将界面信息修改为与系统一致,可进行保存" - return ResponseOutput.NotOk(_localizer["TrialSiteUser_InconsistentInfo", existSysUser.LastName + " / " + existSysUser.FirstName,existSysUser.Phone], + return ResponseOutput.NotOk(_localizer["TrialSiteUser_InconsistentInfo", existSysUser.UserTypeRole.UserTypeShortName, existSysUser.EMail, existSysUser.LastName + " / " + existSysUser.FirstName,existSysUser.Phone], new { existSysUser.LastName, existSysUser.FirstName, existSysUser.Phone,existSysUser.IsTestUser,existSysUser.IsZhiZhun }, ApiResponseCodeEnum.NeedTips); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index 287b8c2ad..9da0f6e88 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -222,6 +222,8 @@ namespace IRaCIS.Core.Application.Contracts public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit; public bool IsImageConsistencyVerification { get; set; } = true; + + public bool IsMedicalReview { get; set;} } public class TrialTaskConfigView : TrialTaskConfig diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 017bfd8fa..b7404b4df 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -132,8 +132,8 @@ namespace IRaCIS.Application.Services .WhereIf(_userInfo.UserTypeEnumInt==(int)UserTypeEnum.TA, t => t.UserTypeEnum== UserTypeEnum.ProjectManager) //PM 不审 只能加IM IQC - .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && qcProcessEnum == TrialQCProcess.NotAudit, t => t.UserTypeEnum == UserTypeEnum.IM) - .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && qcProcessEnum != TrialQCProcess.NotAudit, t =>( t.UserTypeEnum == UserTypeEnum.IM|| t.UserTypeEnum == UserTypeEnum.IQC)) + .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && qcProcessEnum == TrialQCProcess.NotAudit, t => (t.UserTypeEnum == UserTypeEnum.IM ||t.UserTypeEnum==UserTypeEnum.QA)) + .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager && qcProcessEnum != TrialQCProcess.NotAudit, t =>( t.UserTypeEnum == UserTypeEnum.IM|| t.UserTypeEnum == UserTypeEnum.IQC || t.UserTypeEnum == UserTypeEnum.QA)) diff --git a/IRaCIS.Core.Domain/Allocation/PIAudit.cs b/IRaCIS.Core.Domain/Allocation/PIAudit.cs index a61aeeec8..e4f83d6dd 100644 --- a/IRaCIS.Core.Domain/Allocation/PIAudit.cs +++ b/IRaCIS.Core.Domain/Allocation/PIAudit.cs @@ -55,7 +55,7 @@ namespace IRaCIS.Core.Domain.Models try { - return this.PIAuditImagePath?.Trim().Split('|').ToList(); + return this.PIAuditImagePath?.Trim().Split('|', StringSplitOptions.RemoveEmptyEntries).ToList(); } catch (Exception) { diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index 21593c375..44acec4a6 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -437,7 +437,7 @@ namespace IRaCIS.Core.Domain.Models try { - return this.PIAuditImagePath?.Trim().Split('|').ToList(); + return this.PIAuditImagePath?.Trim().Split('|',StringSplitOptions.RemoveEmptyEntries).ToList(); } catch (Exception) { diff --git a/IRaCIS.Core.Domain/Image/DicomStudy.cs b/IRaCIS.Core.Domain/Image/DicomStudy.cs index 861533503..a42a79b81 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudy.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudy.cs @@ -13,7 +13,8 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public List DicomStudyMonitorList { get; set; } = new List(); [JsonIgnore] - public List StudyDTFList { get; set;} = new List(); + public List SeriesList { get; set; } + [JsonIgnore] public TrialSite TrialSite { get; set; } [JsonIgnore] diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs index d97656e2f..82d213ea8 100644 --- a/IRaCIS.Core.Domain/Trial/Trial.cs +++ b/IRaCIS.Core.Domain/Trial/Trial.cs @@ -231,12 +231,12 @@ namespace IRaCIS.Core.Domain.Models /// /// QC 0 1 2˫ /// - public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit; + public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.NotAudit; /// /// ӰһԺ˲ /// - public bool IsImageConsistencyVerification { get; set; } = true; + public bool IsImageConsistencyVerification { get; set; } = false; /// /// Ӱ񵼳 @@ -359,7 +359,7 @@ namespace IRaCIS.Core.Domain.Models public bool IsDeclaration { get; set; } - public bool IsMedicalReview { get; set; } + public bool IsMedicalReview { get; set; } = false; public UserTypeEnum? EnrollConfirmDefaultUserType { get; set; } diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs index c88126424..d1a4e131f 100644 --- a/IRaCIS.Core.Domain/Visit/Subject.cs +++ b/IRaCIS.Core.Domain/Visit/Subject.cs @@ -125,6 +125,8 @@ namespace IRaCIS.Core.Domain.Models public Guid? ClaimUserId { get; set; } + [JsonIgnore] + public User ClaimUser { get; set;} //是否分配了读片医生 //public bool IsAssignDoctorUser{get;set;}