From e81e270d69b640aa0a2ea89214bcea2bcb90bfc1 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 23 Aug 2024 11:19:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=93=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/UploadDownLoadController.cs | 40 +++-------- .../Allocation/TaskAllocationRuleService.cs | 6 +- .../Allocation/TaskConsistentRuleService.cs | 14 ++-- .../Service/Allocation/VisitTaskService.cs | 8 ++- .../Service/Common/ExcelExportService.cs | 58 +++++++++------- .../Service/Common/MailService.cs | 17 +++-- .../Service/Doctor/DoctorListService.cs | 24 ++++--- .../Service/Document/EmailSendService.cs | 23 ++++--- .../Service/Document/SystemDocumentService.cs | 2 +- .../Service/Document/TrialDocumentService.cs | 19 +++--- .../Document/TrialEmailNoticeConfigService.cs | 20 +++--- .../ImageAndDoc/DownloadAndUploadService.cs | 13 ++-- .../Service/ImageAndDoc/StudyService.cs | 26 ++++--- .../Inspection/FrontAuditConfigService.cs | 6 +- .../Service/Management/UserFeedBackService.cs | 11 +-- .../Service/Management/UserService.cs | 3 +- .../Service/QC/ClinicalDataService.cs | 2 +- .../Service/QC/NoneDicomStudyService.cs | 6 +- .../Service/QC/QCCommon.cs | 6 +- .../Service/QC/QCListService.cs | 39 ++++++----- .../Service/QC/QCOperationService.cs | 14 ++-- .../Service/QC/TrialQCQuestionService.cs | 3 +- .../SubjectCriteriaEvaluationService.cs | 12 ++-- .../ClinicalData/ClinicalDataSetService.cs | 7 +- .../ReadingClinicalDataService.cs | 2 +- .../SiteSurvey/TrialSiteSurveyService.cs | 7 +- .../SiteSurvey/TrialSiteUserSurveyService.cs | 8 ++- .../TrialSiteUser/TrialExternalUserService.cs | 3 +- .../TrialSiteUser/TrialMaintenanceService.cs | 3 +- .../Service/TrialSiteUser/TrialService.cs | 9 ++- .../Service/TrialSiteUser/TrialSiteService.cs | 3 +- .../Service/Visit/PatientService.cs | 9 +-- .../Service/Visit/SubjectService.cs | 3 +- .../Service/Visit/SubjectVisitService.cs | 24 ++++--- .../Service/Visit/VisitPlanService.cs | 2 +- .../Service/WorkLoad/DoctorWorkloadService.cs | 3 +- .../Service/WorkLoad/EnrollService.cs | 6 +- IRaCIS.Core.Application/TestService.cs | 67 ++++++------------- .../Triggers/AddCRCCliniaclDataTrigger.cs | 18 ++--- .../Triggers/AddSubjectTrigger.cs | 28 ++------ .../Triggers/AddlTrialUserTrigger.cs | 17 ++--- .../Triggers/ChallengeStateTrigger.cs | 13 ++-- .../Triggers/SubjectStateTrigger.cs | 16 ++--- .../SubjectVisitCheckPassedTrigger.cs | 46 +++---------- .../Triggers/SubjectVisitFinalVisitTrigger.cs | 46 ++++--------- .../Triggers/SubjectVisitTrigger.cs | 22 +++--- .../Triggers/TableQuestionRowTrigger.cs | 11 +-- .../Triggers/TrialCriterionSignTrigger.cs | 15 +---- .../Triggers/UserLogTrigger.cs | 12 +--- .../Triggers/VisitTaskIbeforeTrigger.cs | 16 ++--- ...askIsFrontTaskNeedSignButNotSignTrigger.cs | 31 ++------- 51 files changed, 349 insertions(+), 470 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index 15bcd764f..49de3bae4 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -228,36 +228,16 @@ namespace IRaCIS.Core.API.Controllers [ApiExplorerSettings(GroupName = "Image")] [ApiController] - public class StudyController : UploadBaseController + public class StudyController( + IMediator _mediator, + IWebHostEnvironment _hostEnvironment, + IRepository _repository, + QCCommon _qCCommon, + IUserInfo _userInfo, + IRepository _subjectVisitRepository, + IStringLocalizer _localizer) : UploadBaseController { - public IMapper _mapper { get; set; } - public IUserInfo _userInfo { get; set; } - - - private readonly IMediator _mediator; - - - - public IStringLocalizer _localizer { get; set; } - - - private readonly IWebHostEnvironment _hostEnvironment; - - private readonly IRepository _repository; - - private readonly QCCommon _qCCommon; - public StudyController(IMapper mapper, IStringLocalizer localizer, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, - QCCommon qCCommon, - IRepository repository) - { - _qCCommon = qCCommon; - _hostEnvironment = hostEnvironment; - _mediator = mediator; - _localizer = localizer; - _mapper = mapper; - _userInfo = userInfo; - _repository = repository; - } + [HttpPost, Route("Study/PreArchiveStudy")] @@ -482,7 +462,7 @@ namespace IRaCIS.Core.API.Controllers await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); - var sv = (await _repository.Where(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.TrialSiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException(); + var sv = (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.TrialSiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException(); var studyMonitor = await _studyMonitorRepository.FirstOrDefaultAsync(t => t.Id == studyMonitorId); diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs index 6977fb1e0..89d943028 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs @@ -21,6 +21,8 @@ namespace IRaCIS.Core.Application.Service public class TaskAllocationRuleService( IRepository _taskAllocationRuleRepository, IRepository _userRepository, + IRepository _enrollRepository, + IRepository _readingQuestionCriterionTrialRepository, IRepository _subjectCanceDoctorRepository) : BaseService, ITaskAllocationRuleService { @@ -37,7 +39,7 @@ namespace IRaCIS.Core.Application.Service var list = await _taskAllocationRuleRepository.Where(t => t.TrialId == trialId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); //所有标准都是一样 后台只返回任意一个标准的就好了 - var trialTaskConfig = await _repository.Where(t => t.TrialId == trialId && t.IsConfirm).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + var trialTaskConfig = await _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsConfirm).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); return (list, trialTaskConfig); } @@ -53,7 +55,7 @@ namespace IRaCIS.Core.Application.Service //冗余 存 - var enrollId = _repository.Where(t => t.TrialId == addOrEditTaskAllocationRule.TrialId && t.DoctorUserId == addOrEditTaskAllocationRule.DoctorUserId).Select(t => t.Id).FirstOrDefault(); + var enrollId = _enrollRepository.Where(t => t.TrialId == addOrEditTaskAllocationRule.TrialId && t.DoctorUserId == addOrEditTaskAllocationRule.DoctorUserId).Select(t => t.Id).FirstOrDefault(); if (enrollId == Guid.Empty) { diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs index 7d2b769bd..db1f15367 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs @@ -37,6 +37,8 @@ namespace IRaCIS.Core.Application.Service IDistributedLockProvider _distributedLockProvider, IRepository _trialRepository, IRepository _trialSiteRepository, + IRepository _enrollRepository, + IRepository _userRepository, IRepository _trialVirtualSiteCodeUpdateRepository, IVisitTaskHelpeService _visitTaskCommonService) : BaseService, ITaskConsistentRuleService { @@ -112,7 +114,7 @@ namespace IRaCIS.Core.Application.Service } #endregion - var trialTaskConfig = _repository.Where(t => t.Id == inQuery.TrialId).Select(t => new { IsHaveDoubleReadCriterion = t.TrialReadingCriterionList.Any(t => t.IsSigned && t.IsConfirm && t.ReadingType == ReadingMethod.Double), t.VitrualSiteCode }).FirstOrDefault(); + var trialTaskConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { IsHaveDoubleReadCriterion = t.TrialReadingCriterionList.Any(t => t.IsSigned && t.IsConfirm && t.ReadingType == ReadingMethod.Double), t.VitrualSiteCode }).FirstOrDefault(); return ResponseOutput.Ok(pageList, trialTaskConfig); } @@ -373,9 +375,9 @@ namespace IRaCIS.Core.Application.Service var subjectList = query.ToList(); - var doctorUserIdQuery = from enroll in _repository.Where(t => t.TrialId == trialId).Where(t => t.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(c => c.ReadingCategory == ReadingCategory.Global || c.ReadingCategory == ReadingCategory.Visit)) + var doctorUserIdQuery = from enroll in _enrollRepository.Where(t => t.TrialId == trialId).Where(t => t.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(c => c.ReadingCategory == ReadingCategory.Global || c.ReadingCategory == ReadingCategory.Visit)) .Where(t => t.EnrollReadingCriteriaList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsJoinAnalysis == true)) - join user in _repository.Where() on enroll.DoctorId equals user.DoctorId + join user in _userRepository.Where() on enroll.DoctorId equals user.DoctorId select user.Id; var configDoctorUserIdList = await doctorUserIdQuery.ToListAsync(); @@ -788,10 +790,10 @@ namespace IRaCIS.Core.Application.Service Expression> visitTaskFilter = comonTaskFilter.And(t => t.ReadingCategory == ReadingCategory.Visit); - var taskConsistentRuleQueryable = from enroll in _repository.Where(t => t.TrialId == trialId && t.EnrollStatus == EnrollStatus.ConfirmIntoGroup + var taskConsistentRuleQueryable = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus == EnrollStatus.ConfirmIntoGroup && t.EnrollReadingCriteriaList.Any(c => c.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && c.IsJoinAnalysis)) - join user in _repository.Where() on enroll.DoctorUserId equals user.Id - join taskConsistentRule in _repository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsSelfAnalysis) on enroll.TrialId equals taskConsistentRule.TrialId + join user in _userRepository.Where() on enroll.DoctorUserId equals user.Id + join taskConsistentRule in _taskConsistentRuleRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsSelfAnalysis) on enroll.TrialId equals taskConsistentRule.TrialId select new TaskConsistentRuleView() { Id = taskConsistentRule.Id, diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index eebdff014..9d8042060 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -43,6 +43,8 @@ namespace IRaCIS.Core.Application.Service.Allocation IRepository _subjectCriteriaEvaluationRepository, IRepository _subjectCriteriaEvaluationVisitFilterRepository, IRepository _trialReadingCriterionRepository, + IRepository _readingQuestionCriterionTrialRepository, + IRepository _readingTaskQuestionAnswerRepository, IRepository _subjectCriteriaEvaluationVisitStudyFilterRepository) : BaseService, IVisitTaskService { @@ -63,13 +65,13 @@ namespace IRaCIS.Core.Application.Service.Allocation TaskUrgentRemake = inDto.TaskUrgentRemake, }); - + return await _visitTaskRepository.SaveChangesAsync(); } public async Task> GetTrialCriterionList(Guid trialId, bool isHaveSigned = true, bool? isAutoCreate = null) { - var list = await _repository.Where(t => t.TrialId == trialId && t.IsConfirm) + var list = await _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsConfirm) .OrderBy(t => t.ShowOrder) .Select(t => new TrialReadingCriterionDto() @@ -2171,7 +2173,7 @@ namespace IRaCIS.Core.Application.Service.Allocation _ = _repository.AddRangeAsync(readingTaskQuestionMarkList).Result; - var readingTaskQuestionAnswerList = _repository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); + var readingTaskQuestionAnswerList = _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == origenalTask.Id).ToList(); foreach (var item in readingTaskQuestionAnswerList) { diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index a87afe8a4..66cf4e6ab 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -29,7 +29,13 @@ namespace IRaCIS.Core.Application.Service.Common { [ApiExplorerSettings(GroupName = "Common")] - public class ExcelExportService : BaseService + public class ExcelExportService(IRepository _trialUserRepository, + IRepository _visitTaskRepository, + IRepository _readingQuestionCriterionTrialRepository, + IRepository _dicomStudyRepository, + IRepository _qcChallengeRepository, + IRepository _noneDicomStudyRepository, + IRepository _subjectRepository) : BaseService { @@ -335,10 +341,10 @@ namespace IRaCIS.Core.Application.Service.Common [FromServices] IRepository _trialRepository ) { - var trialInfo = (await _repository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync()); + var trialInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync()); var trialDocQuery = from trialDocumentNeedConfirmedUserType in _repository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) - join trialUser in _repository.Where(t => t.TrialId == inQuery.TrialId) + join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) .WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId) on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId @@ -377,7 +383,7 @@ namespace IRaCIS.Core.Application.Service.Common var systemDocQuery = from needConfirmEdUserType in _repository.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime) - join trialUser in _repository.Where(t => t.TrialId == inQuery.TrialId) + join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId join confirm in _repository.GetQueryable() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc @@ -563,7 +569,7 @@ namespace IRaCIS.Core.Application.Service.Common { var svExpression = QCCommon.GetQCChallengeFilter(inQuery.VisitPlanArray); - var query = _repository.Where(x => x.TrialId == inQuery.TrialId) + var query = _qcChallengeRepository.Where(x => x.TrialId == inQuery.TrialId) //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) .WhereIf(inQuery.ReuploadEnum != null, t => t.ReuploadEnum == inQuery.ReuploadEnum) .WhereIf(inQuery.IsClosed != null, t => t.IsClosed == inQuery.IsClosed) @@ -657,8 +663,8 @@ namespace IRaCIS.Core.Application.Service.Common { - var query = from subject in _repository.Where(u => u.TrialId == dto.TrialId) - join trialReadingCriterion in _repository.Where(u => u.TrialId == dto.TrialId && u.IsConfirm && u.Id == dto.TrialReadingCriterionId) on subject.TrialId equals trialReadingCriterion.TrialId + var query = from subject in _subjectRepository.Where(u => u.TrialId == dto.TrialId) + join trialReadingCriterion in _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == dto.TrialId && u.IsConfirm && u.Id == dto.TrialReadingCriterionId) on subject.TrialId equals trialReadingCriterion.TrialId select new SubjectProgressDto() { @@ -702,7 +708,7 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == dto.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - exportInfo.CriterionName = await _repository.Where(u => u.TrialId == dto.TrialId && u.IsConfirm && u.Id == dto.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); + exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == dto.TrialId && u.IsConfirm && u.Id == dto.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); exportInfo.IsEn_US = _userInfo.IsEn_Us; @@ -913,7 +919,7 @@ namespace IRaCIS.Core.Application.Service.Common var svExpression = QCCommon.GetDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray); - var dicomStudyQuery = _repository.Where(t => t.TrialId == studyQuery.TrialId) + var dicomStudyQuery = _dicomStudyRepository.Where(t => t.TrialId == studyQuery.TrialId) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression) .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) @@ -941,7 +947,7 @@ namespace IRaCIS.Core.Application.Service.Common var svExpression2 = QCCommon.GetNoneDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray); - var nodeDicomStudyQuery = _repository.Where(t => t.TrialId == studyQuery.TrialId) + var nodeDicomStudyQuery = _noneDicomStudyRepository.Where(t => t.TrialId == studyQuery.TrialId) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression2) .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) @@ -1042,7 +1048,7 @@ namespace IRaCIS.Core.Application.Service.Common [FromServices] IDictionaryService _dictionaryService, [FromServices] IRepository _trialRepository) { - var list = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false) + var list = await _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false) //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null) .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) @@ -1221,7 +1227,7 @@ namespace IRaCIS.Core.Application.Service.Common [FromServices] IRepository _trialRepository) { - var criterion = await _repository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync(); if (criterion.CriterionType != CriterionType.RECIST1Point1) { @@ -1230,9 +1236,9 @@ namespace IRaCIS.Core.Application.Service.Common } //产生一致性分析的Subject - var subjectQuerybal = _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == true).Select(t => t.SubjectId).Distinct(); + var subjectQuerybal = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == true).Select(t => t.SubjectId).Distinct(); - var allList = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit) + var allList = await _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit) .Where(t => (t.IsSelfAnalysis == true || t.IsSelfAnalysis == null) && t.VisitTaskNum > 0) //一致性分析的结果 + 正常任务的结果 + 仅仅访视的结果 +去除基线 //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) @@ -1281,7 +1287,7 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - exportInfo.CriterionName = await _repository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); + exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); exportInfo.IsEn_US = _userInfo.IsEn_Us; exportInfo.ClientZoneId = _userInfo.TimeZoneId; @@ -1304,7 +1310,7 @@ namespace IRaCIS.Core.Application.Service.Common [FromServices] IDictionaryService _dictionaryService, [FromServices] IRepository _trialRepository) { - var criterion = await _repository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync(); if (criterion.CriterionType != CriterionType.RECIST1Point1) { @@ -1314,9 +1320,9 @@ namespace IRaCIS.Core.Application.Service.Common //产生组间一致性分析的Subject - var subjectQuerybal = _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == false).Select(t => t.SubjectId).Distinct(); + var subjectQuerybal = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsSelfAnalysis == false).Select(t => t.SubjectId).Distinct(); - var allList = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit) + var allList = await _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && subjectQuerybal.Contains(t.SubjectId) && t.ReadingCategory == ReadingCategory.Visit) .Where(t => (t.IsSelfAnalysis == false || t.IsSelfAnalysis == null) && t.VisitTaskNum > 0) //一致性分析的结果 + 正常任务的结果 +仅仅访视的结果 //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) @@ -1385,7 +1391,7 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - exportInfo.CriterionName = await _repository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); + exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(newList, _userInfo.TimeZoneId); ; exportInfo.IsEn_US = _userInfo.IsEn_Us; exportInfo.ClientZoneId = _userInfo.TimeZoneId; @@ -1427,7 +1433,7 @@ namespace IRaCIS.Core.Application.Service.Common { var list = new List(); - var criterion = await _repository.Where(t => t.Id == trialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName }).FirstNotNullAsync(); if (criterion.CriterionType == CriterionType.RECIST1Point1) { @@ -1624,7 +1630,7 @@ namespace IRaCIS.Core.Application.Service.Common //每次查询必须是单标准的 - var criterion = await _repository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstNotNullAsync(); if (criterion.CriterionType != CriterionType.RECIST1Point1 && criterion.CriterionType != CriterionType.PCWG3) { @@ -1632,7 +1638,7 @@ namespace IRaCIS.Core.Application.Service.Common throw new Exception(_localizer["ExcelExport_UnsupportedExport"]); } - var list = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect) + var list = await _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect) //访视和全局查询已签名完成的,裁判可以是未签名,未完成的 .Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)) || (t.ReadingCategory == ReadingCategory.Judge)) @@ -1689,9 +1695,9 @@ namespace IRaCIS.Core.Application.Service.Common { //每次查询必须是单标准的 - var criterion = await _repository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstOrDefaultAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstOrDefaultAsync(); - var query = _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned) + var query = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned) //.WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) //.WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) @@ -1758,9 +1764,9 @@ namespace IRaCIS.Core.Application.Service.Common { //每次查询必须是单标准的 - var criterion = await _repository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstOrDefaultAsync(); + var criterion = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == queryVisitTask.TrialReadingCriterionId).Select(t => new { t.CriterionType, t.CriterionName, t.ArbitrationRule }).FirstOrDefaultAsync(); - var query = _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned) + var query = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned) .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) diff --git a/IRaCIS.Core.Application/Service/Common/MailService.cs b/IRaCIS.Core.Application/Service/Common/MailService.cs index 16f4916b2..59fa8360e 100644 --- a/IRaCIS.Core.Application/Service/Common/MailService.cs +++ b/IRaCIS.Core.Application/Service/Common/MailService.cs @@ -56,11 +56,14 @@ namespace IRaCIS.Application.Services public class MailVerificationService( IRepository _verificationCodeRepository, IRepository _systemBasicDatarepository, + IRepository _visitTaskRepository, IRepository _userRepository, ITokenService _tokenService, + IRepository _subjectVisitRepository, IRepository _trialRepository, IRepository _userTypeRepository, IRepository _doctorTypeRepository, + IRepository _dictionaryRepository, IRepository _emailNoticeConfigrepository, IOptionsMonitor systemEmailConfig, IDistributedLockProvider _distributedLockProvider) : BaseService, IMailVerificationService @@ -734,7 +737,7 @@ namespace IRaCIS.Application.Services var userTypeEnumList = emailConfigInfo.EmailNoticeUserTypeList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserType).ToList(); - var emailList = await _repository.Where(t => userTypeEnumList.Contains(t.UserTypeEnum) && + var emailList = await _userRepository.Where(t => userTypeEnumList.Contains(t.UserTypeEnum) && (isHaveTrialId ? t.UserTrials.Any(t => t.TrialId == feedBack.TrialId) : true)).Select(t => new { t.EMail, t.UserTypeEnum, t.FullName }).ToListAsync(); @@ -749,10 +752,10 @@ namespace IRaCIS.Application.Services if (feedBack.VisitTaskId != null) { - var emailType = await _repository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.IRImageError).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync(); + var emailType = await _dictionaryRepository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.IRImageError).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync(); - var info = await _repository.Where(t => t.Id == feedBack.VisitTaskId).Select(t => new { t.Trial.ResearchProgramNo, t.Trial.TrialCode, SubejctCode = t.Subject.Code, t.SourceSubjectVisit.VisitName }).FirstNotNullAsync(); + var info = await _visitTaskRepository.Where(t => t.Id == feedBack.VisitTaskId).Select(t => new { t.Trial.ResearchProgramNo, t.Trial.TrialCode, SubejctCode = t.Subject.Code, t.SourceSubjectVisit.VisitName }).FirstNotNullAsync(); Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { @@ -779,10 +782,10 @@ namespace IRaCIS.Application.Services } else if (feedBack.SubjectVisitId != null) { - var emailType = await _repository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.TrialSubjectVisitFeedBack).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync(); + var emailType = await _dictionaryRepository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.TrialSubjectVisitFeedBack).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync(); - var info = await _repository.Where(t => t.Id == feedBack.SubjectVisitId).Select(t => new { t.Trial.ResearchProgramNo, t.Trial.TrialCode, SubejctCode = t.Subject.Code, t.VisitName }).FirstNotNullAsync(); + var info = await _subjectVisitRepository.Where(t => t.Id == feedBack.SubjectVisitId).Select(t => new { t.Trial.ResearchProgramNo, t.Trial.TrialCode, SubejctCode = t.Subject.Code, t.VisitName }).FirstNotNullAsync(); Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { @@ -810,10 +813,10 @@ namespace IRaCIS.Application.Services else if (feedBack.TrialId != null) { - var emailType = await _repository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.TrialFeedBack).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync(); + var emailType = await _dictionaryRepository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.TrialFeedBack).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync(); - var info = await _repository.Where(t => t.Id == feedBack.TrialId).Select(t => new { t.ResearchProgramNo, t.TrialCode }).FirstNotNullAsync(); + var info = await _trialRepository.Where(t => t.Id == feedBack.TrialId).Select(t => new { t.ResearchProgramNo, t.TrialCode }).FirstNotNullAsync(); Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input => { diff --git a/IRaCIS.Core.Application/Service/Doctor/DoctorListService.cs b/IRaCIS.Core.Application/Service/Doctor/DoctorListService.cs index 6168edeb6..12d447cb8 100644 --- a/IRaCIS.Core.Application/Service/Doctor/DoctorListService.cs +++ b/IRaCIS.Core.Application/Service/Doctor/DoctorListService.cs @@ -8,7 +8,11 @@ using Microsoft.AspNetCore.Mvc; namespace IRaCIS.Application.Services { [ApiExplorerSettings(GroupName = "Reviewer")] - public class DoctorListService (IRepository _doctorRepository) : BaseService, IDoctorListQueryService + public class DoctorListService ( + IRepository _doctorRepository, + IRepository _enrollRepository, + IRepository _enrollDetailRepository, + IRepository _trialRepository) : BaseService, IDoctorListQueryService { @@ -62,7 +66,7 @@ namespace IRaCIS.Application.Services ReviewerSelectionQueryDTO inQuery) { //项目配置需要的医生过滤 2表示混合 - var trialConfig = await _repository.Where(s => s.Id == inQuery.TrialId).Select(t=>new { t.AttendedReviewerTypeEnumList ,t.TrialType} ).FirstOrDefaultAsync().IfNullThrowException(); + var trialConfig = await _trialRepository.Where(s => s.Id == inQuery.TrialId).Select(t=>new { t.AttendedReviewerTypeEnumList ,t.TrialType} ).FirstOrDefaultAsync().IfNullThrowException(); //var nation = trialConfig.AttendedReviewerType; // 临床项目经验 多选 @@ -97,7 +101,7 @@ namespace IRaCIS.Application.Services var result = await query.ToPagedListAsync(inQuery); //是否已申请 申请时间 申请人 - var doctorStateList = await _repository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus == EnrollStatus.HasApplyDownloadResume) + var doctorStateList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus == EnrollStatus.HasApplyDownloadResume) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); result.CurrentPageData.ToList().ForEach(doctor => @@ -128,7 +132,7 @@ namespace IRaCIS.Application.Services ReviewerSubmissionQueryDTO inQuery) { - var doctorQuery = _repository.Where(x => x.TrialId == inQuery.TrialId) + var doctorQuery = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId) //提交CRO 以及下载简历列表 .WhereIf(inQuery.IntoGroupSearchState == 1, t => t.EnrollStatus >= EnrollStatus.HasApplyDownloadResume) //CRO确认列表 状态为 已提交CRO @@ -138,7 +142,7 @@ namespace IRaCIS.Application.Services var doctorPageList = await doctorQuery.ToPagedListAsync(inQuery); - var enrollStateList = await _repository.Where(x => x.TrialId == inQuery.TrialId) + var enrollStateList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId) //提交CRO 以及下载简历列表 .WhereIf(inQuery.IntoGroupSearchState == 1, t => t.EnrollStatus == EnrollStatus.HasCommittedToCRO) //CRO确认列表 状态为 已提交CRO @@ -166,7 +170,7 @@ namespace IRaCIS.Application.Services if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM) { //SPM 要看到提交的时间 提交人 - var enrollCommitList = await _repository.Where(x => x.TrialId == inQuery.TrialId) + var enrollCommitList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId) //提交CRO 以及下载简历列表 .WhereIf(inQuery.IntoGroupSearchState == 4, t => t.EnrollStatus == EnrollStatus.HasCommittedToCRO) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -195,7 +199,7 @@ namespace IRaCIS.Application.Services //public async Task> GetSPMSubmissionOrApprovalReviewerList( // ReviewerSubmissionQueryDTO param) //{ - // var doctorQuery = _repository.Where(x => x.TrialId == param.TrialId) + // var doctorQuery = _enrollRepository(x => x.TrialId == param.TrialId) // //提交CRO 以及下载简历列表 // .WhereIf(param.IntoGroupSearchState == 1, t => t.EnrollStatus >= (int)EnrollStatus.HasApplyDownloadResume) // //CRO确认列表 状态为 已提交CRO @@ -205,7 +209,7 @@ namespace IRaCIS.Application.Services // var doctorPageList = await doctorQuery.ToPagedListAsync(param.PageIndex, param.PageSize, param.SortField == "" ? "Code" : param.SortField, param.Asc); - // var enrollStateList = await _repository.Where(x => x.TrialId == param.TrialId) + // var enrollStateList = await _enrollDetailRepository.Where(x => x.TrialId == param.TrialId) // //提交CRO 以及下载简历列表 // .WhereIf(param.IntoGroupSearchState == 1, t => t.EnrollStatus == (int)EnrollStatus.HasCommittedToCRO) // //CRO确认列表 状态为 已提交CRO @@ -236,12 +240,12 @@ namespace IRaCIS.Application.Services { - var doctorQuery = _repository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup) + var doctorQuery = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup) .ProjectTo(_mapper.ConfigurationProvider); var doctorPageList = await doctorQuery.ToPagedListAsync(inQuery); - var enrollStateList = await _repository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus > EnrollStatus.InviteIntoGroup) + var enrollStateList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus > EnrollStatus.InviteIntoGroup) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 00633a230..134cf278a 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -37,6 +37,9 @@ namespace IRaCIS.Core.Application.Service public class EmailSendService( IRepository _trialEmailNoticeConfigRepository, IRepository _trialRepository, + IRepository _trialUserRepository, + IRepository _visitTaskRepository, + IRepository _trialSiteUserRepository, IOptionsMonitor _SystemEmailSendConfig) : BaseService, IEmailSendService { @@ -66,7 +69,7 @@ namespace IRaCIS.Core.Application.Service result = isPDConfirm; } - var taskInfo = await _repository.Where(t => t.Id == visitTaskId).Select(t => new + var taskInfo = await _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => new { t.Subject.TrialSiteId, t.Trial.ResearchProgramNo, @@ -124,10 +127,10 @@ namespace IRaCIS.Core.Application.Service public async Task SendTrialImageQCTaskEmailAsync(Guid trialId) { var isEn_us = false; - var trialInfo = await _repository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); + var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); //找到 该项目的IQC 用户Id - var userList = await _repository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); + var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); //判断是否任务可以领取 ,可以的话 发送邮件 var userIdList = userList.Select(t => t.UserId).ToList(); @@ -177,10 +180,10 @@ namespace IRaCIS.Core.Application.Service public async Task SendTrialQCQuestionEmailAsync(Guid trialId) { var isEn_us = false; - var trialInfo =await _repository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync(); + var trialInfo =await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync(); //找到 该项目的IQC 用户Id - var userList = await _repository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); + var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); //判断是否任务可以领取 ,可以的话 发送邮件 @@ -232,10 +235,10 @@ namespace IRaCIS.Core.Application.Service { var isEn_us = false; - var trialInfo = await _repository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); + var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); //找到 该项目的CRC 用户Id - var userList = await _repository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); + var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); //判断是否任务可以领取 ,可以的话 发送邮件 @@ -319,7 +322,7 @@ namespace IRaCIS.Core.Application.Service var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList(); - var allUserList = await _repository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToListAsync(); + var allUserList = await _trialUserRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToListAsync(); var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)) @@ -332,7 +335,7 @@ namespace IRaCIS.Core.Application.Service } if (trialSiteId != null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) { - var curentSiteUserIdList = _repository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList(); + var curentSiteUserIdList = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList(); toUserList = toUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList(); } @@ -346,7 +349,7 @@ namespace IRaCIS.Core.Application.Service if (trialSiteId != null && copyUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) { - var curentSiteUserIdList = _repository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList(); + var curentSiteUserIdList = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList(); copyUserList = copyUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList(); } diff --git a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs index 1c2fdd190..3a77e41a1 100644 --- a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs @@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Services public async Task DeleteSystemDocumentAsync(Guid systemDocumentId) { - if (await _repository.Where(t => t.Id == systemDocumentId).AnyAsync(u => u.SystemDocConfirmedUserList.Any())) + if (await _systemDocumentRepository.Where(t => t.Id == systemDocumentId).AnyAsync(u => u.SystemDocConfirmedUserList.Any())) { //---已有用户阅读该文档,并签名,不允许删除。 return ResponseOutput.NotOk(_localizer["SystemD_CannotDeleteSignedFile"]); diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs index 7bf559924..b44940f98 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs @@ -26,6 +26,7 @@ namespace IRaCIS.Core.Application.Services ISystemDocumentService _systemDocumentService, IRepository _systemDocConfirmedUserRepository, IRepository _systemDocumentRepository, + IRepository _trialUserRepository, IRepository _readingQuestionCriterionTrialRepository) : BaseService, ITrialDocumentService { @@ -58,7 +59,7 @@ namespace IRaCIS.Core.Application.Services .WhereIf(inQuery.TrialId != null, t => t.TrialId == inQuery.TrialId) .Where(t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId)) - join trialUser in _repository.Where(t => t.UserId == _userInfo.Id) on trialDoc.TrialId equals trialUser.TrialId + join trialUser in _trialUserRepository.Where(t => t.UserId == _userInfo.Id) on trialDoc.TrialId equals trialUser.TrialId join confirm in _repository.Where() on new { trialUser.UserId, TrialDocumentId = trialDoc.Id } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc @@ -217,7 +218,7 @@ namespace IRaCIS.Core.Application.Services var trialId = inQuery.TrialId; - var trialInfo = await (_repository.Where(t => t.Id == inQuery.TrialId, ignoreQueryFilters: true).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync()); + var trialInfo = await ( _trialRepository.Where(t => t.Id == inQuery.TrialId, ignoreQueryFilters: true).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync()); //系统文档查询 var systemDocumentQueryable = from needConfirmedUserType in _repository.Where(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId) @@ -225,7 +226,7 @@ namespace IRaCIS.Core.Application.Services .WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime) .WhereIf(!_userInfo.IsAdmin, t => t.SystemDocument.IsDeleted == false || (t.SystemDocument.IsDeleted == true && t.SystemDocument.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id))) - join trialUser in _repository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id) + join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id) on needConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId join confirm in _repository.GetQueryable() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmedUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc from confirm in cc.DefaultIfEmpty() @@ -259,7 +260,7 @@ namespace IRaCIS.Core.Application.Services .WhereIf(!_userInfo.IsAdmin, t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId)) .WhereIf(!_userInfo.IsAdmin, t => t.IsDeleted == false || (t.IsDeleted == true && t.TrialDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id))) - join trialUser in _repository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id) on trialDoc.TrialId equals trialUser.TrialId + join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id) on trialDoc.TrialId equals trialUser.TrialId join confirm in _repository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on new { trialUser.UserId, TrialDocumentId = trialDoc.Id } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc from confirm in cc.DefaultIfEmpty() @@ -389,10 +390,10 @@ namespace IRaCIS.Core.Application.Services #endregion - var trialInfo = (await _repository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync()); + var trialInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync()); var trialDocQuery = from trialDocumentNeedConfirmedUserType in _repository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) - join trialUser in _repository.Where(t => t.TrialId == inQuery.TrialId) + join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) .WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId) on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId @@ -431,7 +432,7 @@ namespace IRaCIS.Core.Application.Services var systemDocQuery = from needConfirmEdUserType in _repository.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime) - join trialUser in _repository.Where(t => t.TrialId == inQuery.TrialId) + join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId join confirm in _repository.GetQueryable() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc @@ -494,7 +495,7 @@ namespace IRaCIS.Core.Application.Services [HttpGet("{trialId:guid}")] public async Task> GetTrialUserSelect(Guid trialId) { - return await _repository.Where(t => t.TrialId == trialId) + return await _trialUserRepository.Where(t => t.TrialId == trialId) .Select(t => new TrialUserDto() { UserId = t.UserId, RealName = t.User.FullName, UserName = t.User.UserName }) .ToListAsync(); } @@ -776,7 +777,7 @@ namespace IRaCIS.Core.Application.Services [Obsolete] public List GetTrialUserDocumentList(Guid trialId) { - var query = _repository.Where(t => t.TrialId == trialId) + var query = _trialUserRepository.Where(t => t.TrialId == trialId) .Select(t => new TrialUserUnionDocumentView() { UserId = t.UserId, diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index a7bcd061a..ccb0c0ba5 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -44,6 +44,8 @@ namespace IRaCIS.Core.Application.Service IRepository _trialUserRepository, IRepository _subjectRepository, IRepository _subjectVisitRepository, + IRepository _readingTaskQuestionAnswerRepository, + IRepository _readingQuestionCriterionTrialRepository, IEmailSendService _emailSendService) : BaseService, ITrialEmailNoticeConfigService { @@ -335,7 +337,7 @@ namespace IRaCIS.Core.Application.Service if (answer == "是") { //把另外一个人的任务设置为不加急(如果项目加急是否 subject 加急是否) - var urgent = _repository.Where(t => t.Id == taskInfo.SourceSubjectVisitId).Select(t => new { IsSubjectUrgent = t.Subject.IsUrgent, t.Trial.IsUrgent }).FirstOrDefault(); + var urgent = _subjectVisitRepository.Where(t => t.Id == taskInfo.SourceSubjectVisitId).Select(t => new { IsSubjectUrgent = t.Subject.IsUrgent, t.Trial.IsUrgent }).FirstOrDefault(); if (urgent?.IsUrgent == false || urgent?.IsSubjectUrgent == false) { @@ -856,7 +858,7 @@ namespace IRaCIS.Core.Application.Service var currentLatestPdVisitId = pdSubjectVisitIdList.Last(); //标准配置 - var trialReadingCriterionConfig = await _repository.Where(t => t.Id == trialReadingCriterionId).Select(t => new + var trialReadingCriterionConfig = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCriterionId).Select(t => new { TrialReadingCriterionId = t.Id, t.ReadingType, t.IsReadingTaskViewInOrder, t.CriterionType, t.ArbitrationRule }).FirstNotNullAsync(); // 项目双重 @@ -1071,7 +1073,7 @@ namespace IRaCIS.Core.Application.Service if (readingCategory == ReadingCategory.Visit) { - visitQuestionAnswer = await _repository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync(); + visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync(); answer = visitQuestionAnswer.Answer; @@ -1084,7 +1086,7 @@ namespace IRaCIS.Core.Application.Service answer = questionAnsewer.Answer; if (string.IsNullOrEmpty(questionAnsewer.Answer)) { - answer = await _repository.Where(t => questionAnsewer.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor) + answer = await _readingTaskQuestionAnswerRepository.Where(t => questionAnsewer.TaskId == t.VisitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor) .Select(t => t.Answer).FirstOrDefaultAsync(); } @@ -1093,7 +1095,7 @@ namespace IRaCIS.Core.Application.Service //{ // var judgeResultTaskId = await _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => t.JudgeResultTaskId).FirstNotNullAsync(); - // var questionAnsewer = await _repository.Where(t => t.VisitTaskId == judgeResultTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync(); + // var questionAnsewer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == judgeResultTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.Tumor).FirstNotNullAsync(); // answer = questionAnsewer.Answer; @@ -1119,7 +1121,7 @@ namespace IRaCIS.Core.Application.Service if (readingCategory == ReadingCategory.Visit) { - visitQuestionAnswer = await _repository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync(); + visitQuestionAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync(); answer = visitQuestionAnswer.Answer; @@ -1134,7 +1136,7 @@ namespace IRaCIS.Core.Application.Service //{ // //var judgeResultTaskId = await _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => t.JudgeResultTaskId).FirstNotNullAsync(); - // var questionAnsewer = await _repository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync(); + // var questionAnsewer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTaskId && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync(); // answer = questionAnsewer.Answer; //} @@ -1278,7 +1280,7 @@ namespace IRaCIS.Core.Application.Service }).FirstNotNullAsync(); - var list = await _repository.Where(t => t.TrialId == trialId && t.IsConfirm).Select(t => new { t.CriterionType, TrialReadingCriterionId = t.Id }).ToListAsync(); + var list = await _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsConfirm).Select(t => new { t.CriterionType, TrialReadingCriterionId = t.Id }).ToListAsync(); var addList = _mapper.Map>(batchAddList); @@ -1459,7 +1461,7 @@ namespace IRaCIS.Core.Application.Service #region 人员还未加入,可以先配置邮件 历史废弃 - //var toUserList = await _repository.Where(t => t.TrialId == config.TrialId) + //var toUserList = await _trialUserRepository.Where(t => t.TrialId == config.TrialId) // .WhereIf(config.ToUserTypeList != null, t => config.ToUserTypeList.Contains(t.User.UserTypeEnum)) // .Select(t => new { t.User.EMail, t.User.FullName }).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index bf097ad74..bafb7fc8c 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -36,7 +36,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc IRepository _visitTaskRepository, IRepository _subjectVisitRepository, IOSSService _oSSService, + IRepository _dictionaryRepository, + IRepository _trialRepository, IRepository _studyMonitorRepository, + IRepository _readingQuestionCriterionTrialRepository, IDistributedLockProvider _distributedLockProvider) : BaseService, IDownloadAndUploadService { @@ -99,7 +102,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { await SubejctRandomReadingTaskNameDeal(subjectId, trialReadingCriterionId); - var query = _repository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.SourceSubjectVisitId != null + var query = _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCriterionId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect) .Select(u => new SubjectImageUploadDTO() { @@ -174,7 +177,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc study.PatientBirthDate = $"{study.PatientBirthDate[0]}{study.PatientBirthDate[1]}{study.PatientBirthDate[2]}{study.PatientBirthDate[3]}-{study.PatientBirthDate[4]}{study.PatientBirthDate[5]}-{study.PatientBirthDate[6]}{study.PatientBirthDate[7]}"; } - var dicModalityList = _repository.Where(t => t.Code == "Modality").SelectMany(t => t.ChildList.Select(c => c.Value)).ToList(); + var dicModalityList = _dictionaryRepository.Where(t => t.Code == "Modality").SelectMany(t => t.ChildList.Select(c => c.Value)).ToList(); var modality = study.Modalities; @@ -237,7 +240,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { #region 获取该subject 已生成任务的访视的检查 - var queryStudy = _repository.Where(t => t.SubjectId == incommand.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new + var queryStudy = _visitTaskRepository.Where(t => t.SubjectId == incommand.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new { VisitTaskId = u.Id, SourceSubjectVisitId = u.SourceSubjectVisitId, @@ -484,7 +487,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { - var extralConfig = _repository.Where(t => t.Id == trialId).Select(t => t.TrialExtraConfigJsonStr).FirstOrDefault() ?? string.Empty; + var extralConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialExtraConfigJsonStr).FirstOrDefault() ?? string.Empty; var config = JsonConvert.DeserializeObject(extralConfig) ?? new TrialExtraConfig(); @@ -542,7 +545,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc if (inQuery.TrialReadingCriterionId != null) { - var criterionInfo = await _repository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.IsImageFilter, t.CriterionModalitys }).FirstOrDefaultAsync(); + var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.IsImageFilter, t.CriterionModalitys }).FirstOrDefaultAsync(); if (criterionInfo != null) { diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 7a489fc87..d52abbdbc 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -28,7 +28,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc IRepository _dicomSeriesRepository, IRepository _dicomstudyRepository, IRepository _dictionaryRepository, + IRepository _trialRepository, + IRepository _visitTaskRepository, + IRepository _dicomStudyRepository, IRepository _studyMonitorRepository, + IRepository _noneDicomStudyRepository, IDistributedLockProvider _distributedLockProvider) : BaseService, IStudyService { @@ -345,7 +349,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var svExpression = QCCommon.GetDicomStudySubjectVisitFilter(inQuery.VisitPlanArray); - var dicomStudyQuery = _repository.Where(t => t.TrialId == inQuery.TrialId) + var dicomStudyQuery = _dicomStudyRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) //.WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) .WhereIf(inQuery.VisitPlanArray != null && inQuery.VisitPlanArray?.Length > 0, svExpression) @@ -394,7 +398,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var svExpression2 = QCCommon.GetNoneDicomStudySubjectVisitFilter(inQuery.VisitPlanArray); - var nodeDicomStudyQuery = _repository.Where(t => t.TrialId == inQuery.TrialId) + var nodeDicomStudyQuery = _noneDicomStudyRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) //.WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) .WhereIf(inQuery.VisitPlanArray != null && inQuery.VisitPlanArray?.Length > 0, svExpression2) @@ -576,9 +580,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc // }; #endregion - var studyInfo = _repository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException(); + var studyInfo = _dicomStudyRepository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException(); - var query = _repository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId) + var query = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId) .ProjectTo(_mapper.ConfigurationProvider).ToList(); var list = query.OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList(); @@ -593,7 +597,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc [AllowAnonymous] public IResponseOutput Item(Guid studyId) { - return ResponseOutput.Ok(_mapper.Map(_repository.Where().FirstOrDefault(s => s.Id == studyId))); + return ResponseOutput.Ok(_mapper.Map(_dicomStudyRepository.Where().FirstOrDefault(s => s.Id == studyId))); } @@ -602,7 +606,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc public async Task>> VerifyTaskStudyAllowUploadAsync(VerifyTaskUploadOrReupload verifyInfo) { - var queryStudy = _repository.Where(t => t.SubjectId == verifyInfo.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new + var queryStudy = _visitTaskRepository.Where(t => t.SubjectId == verifyInfo.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new { VisitTaskId = u.Id, SourceSubjectVisitId = u.SourceSubjectVisitId, @@ -632,7 +636,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var subjectId = verifyInfo.SubjectId; - var visitList = _repository.Where(t => t.SubjectId == verifyInfo.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList(); + var visitList = _subjectVisitRepository.Where(t => t.SubjectId == verifyInfo.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList(); foreach (var waitUploadItem in verifyInfo.StudyInstanceUidList) { @@ -724,11 +728,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc [HttpPost] public IResponseOutput> VerifyStudyAllowUpload(VerifyUploadOrReupload verifyInfo) { - var trialInfo = _repository.Where().FirstOrDefault(t => t.Id == verifyInfo.TrialId).IfNullThrowException(); + var trialInfo = _trialRepository.Where().FirstOrDefault(t => t.Id == verifyInfo.TrialId).IfNullThrowException(); var result = new List(); - var visitList = _repository.Where(t => t.SubjectId == verifyInfo.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList(); + var visitList = _subjectVisitRepository.Where(t => t.SubjectId == verifyInfo.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList(); verifyInfo.StudyInstanceUidList.ForEach(waitUploadItem => @@ -813,7 +817,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc - var verifyStudyInfo = _repository.Where(t => t.TrialId == trialId && t.Id == expectStudyId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + var verifyStudyInfo = _dicomStudyRepository.Where(t => t.TrialId == trialId && t.Id == expectStudyId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); result.StudyInfo = verifyStudyInfo; @@ -830,7 +834,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { result.AllowReUpload = true; - result.UploadedSeriesList = _repository.Where(t => t.StudyId == verifyStudyInfo.Id).Select(t => new UploadedSeries() + result.UploadedSeriesList = _dicomSeriesRepository.Where(t => t.StudyId == verifyStudyInfo.Id).Select(t => new UploadedSeries() { SeriesId = t.Id, SeriesInstanceUid = t.SeriesInstanceUid, SOPInstanceUIDList = t.DicomInstanceList.Select(c => c.SopInstanceUid).ToList() }).ToList(); } //不是同一个受试者 diff --git a/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs b/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs index dfbe31491..4a434413e 100644 --- a/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs +++ b/IRaCIS.Core.Application/Service/Inspection/FrontAuditConfigService.cs @@ -33,7 +33,9 @@ namespace IRaCIS.Core.Application.Service IRepository _qCChallengeRepository, IRepository _dictionaryRepository, IRepository _trialRepository, - IRepository _checkChallengeDialogRepository) : BaseService, IFrontAuditConfigService + IRepository _userRepository, + + IRepository _checkChallengeDialogRepository) : BaseService, IFrontAuditConfigService { @@ -403,7 +405,7 @@ namespace IRaCIS.Core.Application.Service //用户的数据稽查没有 临时处理 - var userObj = await _repository.Where(t => t.Id == objectRelationParentId).Select(t => new { UserRealName = t.FullName, t.Phone, t.UserName, UserType = t.UserTypeRole.UserTypeShortName, t.EMail, t.OrganizationName }).FirstOrDefaultAsync(); + var userObj = await _userRepository.Where(t => t.Id == objectRelationParentId).Select(t => new { UserRealName = t.FullName, t.Phone, t.UserName, UserType = t.UserTypeRole.UserTypeShortName, t.EMail, t.OrganizationName }).FirstOrDefaultAsync(); if (userObj != null) { diff --git a/IRaCIS.Core.Application/Service/Management/UserFeedBackService.cs b/IRaCIS.Core.Application/Service/Management/UserFeedBackService.cs index c91073667..86919aca8 100644 --- a/IRaCIS.Core.Application/Service/Management/UserFeedBackService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserFeedBackService.cs @@ -19,7 +19,10 @@ namespace IRaCIS.Core.Application.Service /// UserFeedBackService /// [ApiExplorerSettings(GroupName = "Management")] - public class UserFeedBackService (IRepository _userFeedBackRepository) : BaseService, IUserFeedBackService + public class UserFeedBackService (IRepository _userFeedBackRepository, + IRepository _visitTaskRepository, + IRepository _subjectVisitRepository, + IRepository _subjectRepository) : BaseService, IUserFeedBackService { @@ -74,7 +77,7 @@ namespace IRaCIS.Core.Application.Service if (addOrEditUserFeedBack.VisitTaskId != null) { - var info = await _repository.Where(t => t.Id == addOrEditUserFeedBack.VisitTaskId).Select(t => new { t.SubjectId, t.SourceSubjectVisitId, t.Subject.TrialSiteId }).FirstOrDefaultAsync(); + var info = await _visitTaskRepository.Where(t => t.Id == addOrEditUserFeedBack.VisitTaskId).Select(t => new { t.SubjectId, t.SourceSubjectVisitId, t.Subject.TrialSiteId }).FirstOrDefaultAsync(); if (info != null) { @@ -86,7 +89,7 @@ namespace IRaCIS.Core.Application.Service else if (addOrEditUserFeedBack.SubjectVisitId != null) { - var info = await _repository.Where(t => t.Id == addOrEditUserFeedBack.SubjectVisitId).Select(t => new { t.TrialSiteId, t.SubjectId }).FirstOrDefaultAsync(); + var info = await _subjectVisitRepository.Where(t => t.Id == addOrEditUserFeedBack.SubjectVisitId).Select(t => new { t.TrialSiteId, t.SubjectId }).FirstOrDefaultAsync(); if (info != null) { @@ -96,7 +99,7 @@ namespace IRaCIS.Core.Application.Service } else if (addOrEditUserFeedBack.SubjectId != null) { - var info = await _repository.Where(t => t.Id == addOrEditUserFeedBack.SubjectId).Select(t => new { t.TrialSiteId }).FirstOrDefaultAsync(); + var info = await _subjectRepository.Where(t => t.Id == addOrEditUserFeedBack.SubjectId).Select(t => new { t.TrialSiteId }).FirstOrDefaultAsync(); if (info != null) { diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 050f4009c..d2aa0a4ed 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -32,6 +32,7 @@ namespace IRaCIS.Application.Services IRepository _userPassWordLogRepository, IDistributedLockProvider _distributedLockProvider, IEasyCachingProvider _cache, + IRepository _trialRepository, IOptionsMonitor _verifyConfig, IOptionsMonitor systemEmailConfig, @@ -814,7 +815,7 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetUserLogList(UserLogQuery inQuery) { - DateTime? trialCreateTime = inQuery.TrialId != null ? _repository.Where(t => t.Id == inQuery.TrialId).Select(t => t.CreateTime).FirstOrDefault() : null; + DateTime? trialCreateTime = inQuery.TrialId != null ? _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.CreateTime).FirstOrDefault() : null; var userLogQueryable = _userLogRepository diff --git a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs index 5e682bb99..fabc87882 100644 --- a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs @@ -34,7 +34,7 @@ namespace IRaCIS.Core.Application.Contracts // 最完美方式 其中TrialSite 通过导航属性 两个字段连接出来 - var clinicalObj = await _repository.Where(t => t.Id == subjectVisitId) + var clinicalObj = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId) .ProjectTo(_mapper.ConfigurationProvider, new { subjectVisitId = subjectVisitId, token = _userInfo.UserToken }).FirstOrDefaultAsync().IfNullThrowException(); return clinicalObj; diff --git a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs index ed4e6e254..f9d7d1b9a 100644 --- a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs +++ b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs @@ -19,7 +19,9 @@ namespace IRaCIS.Core.Application.Contracts public class NoneDicomStudyService( IRepository _noneDicomStudyRepository, IRepository _noneDicomStudyFileRepository, + IRepository _trialRepository, IDistributedLockProvider _distributedLockProvider, + IRepository _subjectVisitRepository, QCCommon _qCCommon) : BaseService, INoneDicomStudyService { @@ -44,9 +46,9 @@ namespace IRaCIS.Core.Application.Contracts await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditNoneDicomStudy.SubjectVisitId); - if (_repository.Where(t => t.Id == addOrEditNoneDicomStudy.TrialId).Any(t => t.IsVerifyVisitImageDate==true)) + if ( _trialRepository.Where(t => t.Id == addOrEditNoneDicomStudy.TrialId).Any(t => t.IsVerifyVisitImageDate==true)) { - await _qCCommon.VerifyStudyImageDataAsync(_repository, addOrEditNoneDicomStudy.SubjectId, addOrEditNoneDicomStudy.SubjectVisitId, addOrEditNoneDicomStudy.ImageDate); + await _qCCommon.VerifyStudyImageDataAsync(_subjectVisitRepository, addOrEditNoneDicomStudy.SubjectId, addOrEditNoneDicomStudy.SubjectVisitId, addOrEditNoneDicomStudy.ImageDate); } diff --git a/IRaCIS.Core.Application/Service/QC/QCCommon.cs b/IRaCIS.Core.Application/Service/QC/QCCommon.cs index dba63d1bb..9ab3cfa79 100644 --- a/IRaCIS.Core.Application/Service/QC/QCCommon.cs +++ b/IRaCIS.Core.Application/Service/QC/QCCommon.cs @@ -60,11 +60,11 @@ namespace IRaCIS.Core.Application.Service - public async Task VerifyStudyImageDataAsync(IRepository _repository, Guid subjectId, Guid subjectVisitId, DateTime imageDate) + public async Task VerifyStudyImageDataAsync(IRepository _subjectVisitRepository, Guid subjectId, Guid subjectVisitId, DateTime imageDate) { - var visitList = await _repository.Where(t => t.SubjectId == subjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToListAsync(); + var visitList = await _subjectVisitRepository.Where(t => t.SubjectId == subjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToListAsync(); - var currentVisitNum = await _repository.Where(t => t.Id == subjectVisitId).Select(t => t.VisitNum).FirstOrDefaultAsync(); + var currentVisitNum = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.VisitNum).FirstOrDefaultAsync(); diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index 13114153a..256299f77 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -20,6 +20,11 @@ namespace IRaCIS.Core.Application.Image.QA IRepository _clinicalDataTrialSet, IRepository _trialQCQuestionAnswerRepository, IRepository _trialQCQuestionRepository, + IRepository _dicomStudyRepository, + IRepository _trialUserRepository, + IRepository _dicomSeriesRepository, + IRepository _noneDicomStudyRepository, + IRepository _qcChallengeRepository, IReadingImageTaskService _IReadingImageTaskService) : BaseService, IQCListService { @@ -58,7 +63,7 @@ namespace IRaCIS.Core.Application.Image.QA var defalutSortArray = new string[] { nameof(SubjectVisit.IsUrgent) + " desc", nameof(SubjectVisit.SubjectId), nameof(SubjectVisit.VisitNum) }; var pageList = await query.ToPagedListAsync(inQuery, defalutSortArray); - var config = await _repository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var config = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); config.IsHaveSubjectClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == inQuery.TrialId && x.IsConfirm && (x.ClinicalDataLevel == ClinicalLevel.Subject ) && x.UploadRole == UploadRole.CRC); config.IsHaveVisitClinicalData = await _clinicalDataTrialSet.AnyAsync(x => x.TrialId == inQuery.TrialId && x.IsConfirm && (x.ClinicalDataLevel == ClinicalLevel.SubjectVisit) && x.UploadRole == UploadRole.CRC); return ResponseOutput.Ok (pageList, config); @@ -134,7 +139,7 @@ namespace IRaCIS.Core.Application.Image.QA var svExpression = QCCommon.GetQCChallengeFilter(inQuery.VisitPlanArray); - var query = _repository.Where(x => x.TrialId == inQuery.TrialId) + var query = _qcChallengeRepository.Where(x => x.TrialId == inQuery.TrialId) //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) .WhereIf(inQuery.ReuploadEnum != null, t => t.ReuploadEnum == inQuery.ReuploadEnum) .WhereIf(inQuery.IsClosed != null, t => t.IsClosed == inQuery.IsClosed) @@ -152,7 +157,7 @@ namespace IRaCIS.Core.Application.Image.QA var pageList = await query.ToPagedListAsync(inQuery, new string[] { "IsUrgent desc", "CreateTime asc" }); - var config = await _repository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var config = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); return ResponseOutput.Ok (pageList, config); } @@ -173,7 +178,7 @@ namespace IRaCIS.Core.Application.Image.QA var svExpression = QCCommon.GetQCChallengeFilter(inQuery.VisitPlanArray); - var query = _repository.Where(x => x.TrialId == inQuery.TrialId) + var query = _qcChallengeRepository.Where(x => x.TrialId == inQuery.TrialId) //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) .WhereIf(inQuery.ReuploadEnum != null, t => t.ReuploadEnum == inQuery.ReuploadEnum) .WhereIf(inQuery.IsClosed != null, t => t.IsClosed == inQuery.IsClosed) @@ -190,7 +195,7 @@ namespace IRaCIS.Core.Application.Image.QA var pageList = await query.ToPagedListAsync(inQuery, new string[] { "IsUrgent desc", "IsClosed asc" }); - var config = await _repository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var config = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); return (pageList, config); } @@ -260,7 +265,7 @@ namespace IRaCIS.Core.Application.Image.QA - var config = await _repository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var config = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); return ResponseOutput.Ok (pageList, config); @@ -292,7 +297,7 @@ namespace IRaCIS.Core.Application.Image.QA .ProjectTo(_mapper.ConfigurationProvider); var pageList = await query.ToPagedListAsync(inQuery); - var config = await _repository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var config = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); return (pageList, config); } @@ -371,7 +376,7 @@ namespace IRaCIS.Core.Application.Image.QA ExistsManual= (await _IReadingImageTaskService.GetManualList(new GetManualListInDto() { TrialId = sv.TrialId })).Count() > 0, SeriesList = temp.SeriesList, RelationInfo = await GetVisitQCSubjectInfo(subjectVisitId), - NoneDicomStudyList = await _repository.Where(t => t.SubjectVisitId == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(), + NoneDicomStudyList = await _noneDicomStudyRepository.Where(t => t.SubjectVisitId == subjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(), SubjectClinicalData = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId) .ProjectTo(_mapper.ConfigurationProvider, new { subjectVisitId = subjectVisitId, token = _userInfo.UserToken }).FirstOrDefaultAsync() }; @@ -466,7 +471,7 @@ namespace IRaCIS.Core.Application.Image.QA [HttpGet("{subjectVisitId:guid}/{trialQCProcess:int}/{currentQCType:int}")] public async Task> GetHistoryChallengeList(Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess, [FromRoute] CurrentQC currentQCType) { - var qaChallengeQuery = _repository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess) + var qaChallengeQuery = _qcChallengeRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess) .WhereIf(currentQCType == CurrentQC.First, t => t.CurrentQCEnum == currentQCType)//复审的时候可以看到初审的质疑 .ProjectTo(_mapper.ConfigurationProvider); var qaChallenges = await qaChallengeQuery.ToListAsync(); @@ -498,10 +503,10 @@ namespace IRaCIS.Core.Application.Image.QA [HttpGet("{subjectVisitId:guid}")] public async Task GetVisitQCStudyAndSeriesList(Guid subjectVisitId) { - var studyList = await _repository.Where(s => s.SubjectVisitId == subjectVisitId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var studyList = await _dicomStudyRepository.Where(s => s.SubjectVisitId == subjectVisitId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var studyIds = studyList.Select(t => t.StudyId).ToList(); - var seriesList = await _repository.Where(t => studyIds.Contains(t.StudyId)).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider) + var seriesList = await _dicomSeriesRepository.Where(t => studyIds.Contains(t.StudyId)).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider) .OrderBy(t => t.StudyCode).ThenBy(t => t.SeriesNumber).ToListAsync(); return new QAStudySeriesInfo { StudyList = studyList, SeriesList = seriesList }; @@ -518,10 +523,10 @@ namespace IRaCIS.Core.Application.Image.QA { var visit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).FirstNotNullAsync(); - var list= await _repository.Where(s => s.SubjectVisitId == subjectVisitId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).OrderBy(t=>t.StudyCode).ToListAsync(); + var list= await _dicomStudyRepository.Where(s => s.SubjectVisitId == subjectVisitId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).OrderBy(t=>t.StudyCode).ToListAsync(); - var config = await _repository.Where(t => t.Id == subjectVisitId).Select(t=>t.Trial).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var config = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t=>t.Trial).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); config.IsHaveStudyClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.IsConfirm && x.TrialId == visit.TrialId && x.ClinicalDataLevel == ClinicalLevel.Study); @@ -540,7 +545,7 @@ namespace IRaCIS.Core.Application.Image.QA public async Task> GetQCChallengeDialogList(Guid qaChallengeId) { - var list = await _repository.Where(t => t.Id == qaChallengeId) + var list = await _qcChallengeRepository.Where(t => t.Id == qaChallengeId) .ProjectTo(_mapper.ConfigurationProvider, new { currentUserId = _userInfo.Id }).ToListAsync(); //利用automapper 运行时映射 @@ -562,7 +567,7 @@ namespace IRaCIS.Core.Application.Image.QA public async Task> GetCRCVisitChallengeAndDialog(Guid subjectVisitId, [FromRoute] TrialQCProcess trialQCProcess) { - var qaChallengeQuery = _repository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess) + var qaChallengeQuery = _qcChallengeRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.QCProcessEnum == trialQCProcess) .ProjectTo(_mapper.ConfigurationProvider, new { currentUserId = _userInfo.Id }); var list = await qaChallengeQuery.ToListAsync(); @@ -581,7 +586,7 @@ namespace IRaCIS.Core.Application.Image.QA public async Task> GetQCChallengeCreatorList(Guid trialId) { - return await _repository.Where(t => t.TrialId == trialId && t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new QCChanllengeCreatorDto() + return await _trialUserRepository.Where(t => t.TrialId == trialId && t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new QCChanllengeCreatorDto() { CreatorRealName = t.User.FullName, Creator = t.User.UserName, @@ -598,7 +603,7 @@ namespace IRaCIS.Core.Application.Image.QA [HttpGet("{trialId:guid}")] public async Task> GetQCParticipantList(Guid trialId) { - return await _repository.Where(t => t.TrialId == trialId && (t.User.UserTypeEnum == UserTypeEnum.IQC || t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)).Select(t => new ParticipantDTO() + return await _trialUserRepository.Where(t => t.TrialId == trialId && (t.User.UserTypeEnum == UserTypeEnum.IQC || t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)).Select(t => new ParticipantDTO() { HandleUserRealName = t.User.FullName, HandleUser = t.User.UserName, diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 7ee24f50e..aa7ed7efd 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -31,7 +31,9 @@ namespace IRaCIS.Core.Application.Image.QA IRepository _qCChallengeDialogrepository, IRepository _checkChallengeDialogrepository, IRepository _trialRepository, + IRepository _dicomSeriesRepository, IRepository _visitTaskRepository, + IRepository _readingQuestionCriterionTrialRepository, IDistributedLockProvider _distributedLockProvider, IReadingClinicalDataService _readingClinicalDataService) : BaseService, IQCOperationService { @@ -601,7 +603,7 @@ namespace IRaCIS.Core.Application.Image.QA await VerifyIsCanQCAsync(null, subjectVisitId); - var series = (await _repository.Where(t => t.Id == seriesId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); + var series = (await _dicomSeriesRepository.Where(t => t.Id == seriesId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); if (state == 1) @@ -616,7 +618,7 @@ namespace IRaCIS.Core.Application.Image.QA { series.IsDeleted = true; - var study = (await _repository.Where(t => t.Id == studyId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); + var study = (await _dicomStudyRepository.Where(t => t.Id == studyId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); var instanceIdList = await _repository.Where(t => t.SeriesId == seriesId).Select(t => t.Id).ToListAsync(); @@ -641,7 +643,7 @@ namespace IRaCIS.Core.Application.Image.QA { series.IsDeleted = false; - var study = (await _repository.Where(t => t.Id == studyId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); + var study = (await _dicomStudyRepository.Where(t => t.Id == studyId, true).IgnoreQueryFilters().FirstOrDefaultAsync()).IfNullThrowException(); var instanceIdList = await _repository.Where(t => t.SeriesId == seriesId).Select(t => t.Id).ToListAsync(); @@ -1256,11 +1258,11 @@ namespace IRaCIS.Core.Application.Image.QA .FirstOrDefaultAsync(t => t.TrialId == cRCRequestToQCCommand.TrialId)).IfNullThrowException(); //找到符合配置的标准 确认的并且签名的、双重,有序,阅片期仲裁 - var trialReadingCriterionIdList = _repository.Where(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.IsConfirm && t.ReadingInfoSignTime != null + var trialReadingCriterionIdList = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.IsConfirm && t.ReadingInfoSignTime != null //&& t.ReadingType == ReadingMethod.Double && t.ArbitrationRule == ArbitrationRule.Reading && t.IsReadingTaskViewInOrder == ReadingOrder.InOrder && t.IsReadingPeriod).Select(t => t.Id).ToList(); - var trialInOrderCriterionIdList = _repository.Where(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.IsConfirm && t.ReadingInfoSignTime != null + var trialInOrderCriterionIdList = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == cRCRequestToQCCommand.TrialId && t.IsConfirm && t.ReadingInfoSignTime != null //&& t.ReadingType == ReadingMethod.Double && t.ArbitrationRule == ArbitrationRule.Reading && t.IsReadingTaskViewInOrder == ReadingOrder.InOrder).Select(t => t.Id).ToList(); @@ -1782,7 +1784,7 @@ namespace IRaCIS.Core.Application.Image.QA { //获取项目配置 - var trialConfig = await _repository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }) + var trialConfig = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification }) .FirstOrDefaultAsync().IfNullThrowException(); if (trialConfig.QCProcessEnum == TrialQCProcess.NotAudit) diff --git a/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs b/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs index 55ff08702..19a586a74 100644 --- a/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs +++ b/IRaCIS.Core.Application/Service/QC/TrialQCQuestionService.cs @@ -21,6 +21,7 @@ namespace IRaCIS.Core.Application.Contracts [ApiExplorerSettings(GroupName = "Image")] public class TrialQCQuestionConfigureService( IRepository _trialQcQuestionRepository, + IRepository _trialRepository, IRepository _qCQuestionRepository) : BaseService, ITrialQCQuestionConfigureService { @@ -58,7 +59,7 @@ namespace IRaCIS.Core.Application.Contracts var isHaveQCQuestion = _repository.Where(t => t.TrialId == queryTrialQCQuestionConfigure.TrialId).Any(); - var signInfo = await _repository.Where(t => t.Id == queryTrialQCQuestionConfigure.TrialId) + var signInfo = await _trialRepository.Where(t => t.Id == queryTrialQCQuestionConfigure.TrialId) .Select(trial => new { trial.QCProcessEnum, diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs index 41e521775..95e843f46 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs @@ -37,6 +37,8 @@ namespace IRaCIS.Core.Application.Service IRepository _trialReadingQuestionRepository, IRepository _visitTaskRepository, IVisitTaskHelpeService _IVisitTaskHelpeService, + IRepository _dicomStudyRepository, + IRepository _dicomSeriesRepository, IRepository _taskMedicalReviewRepository, IRepository _visitTaskReReadingRepository) : BaseService, ISubjectCriteriaEvaluationService { @@ -311,7 +313,7 @@ namespace IRaCIS.Core.Application.Service //找到该方式的所有序列 - var list = await _repository.Where(t => t.SubjectVisitId == subjectVisitId && t.SubjectId == subjectId).Select(t => new { SeriesId = t.Id, t.StudyId, t.BodyPartForEdit }).ToListAsync(); + var list = await _dicomSeriesRepository.Where(t => t.SubjectVisitId == subjectVisitId && t.SubjectId == subjectId).Select(t => new { SeriesId = t.Id, t.StudyId, t.BodyPartForEdit }).ToListAsync(); ////已经自动筛选过 @@ -462,7 +464,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetHaveGeneratedTaskList(HaveGeneratedTaskQuery inQuery) { - var list = await _repository.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SubjectId == inQuery.SubjectId && t.TaskState == TaskState.Effect).OrderBy(t => t.VisitTaskNum) + var list = await _visitTaskRepository.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SubjectId == inQuery.SubjectId && t.TaskState == TaskState.Effect).OrderBy(t => t.VisitTaskNum) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); return list; @@ -494,7 +496,7 @@ namespace IRaCIS.Core.Application.Service var idList = batchGenerateTaskCommand.SubjectVisitIdList.Select(t => (Guid?)t).ToList(); //存在任务的访视 - var haveGenerateVisitIdList = await _repository.Where(t => idList.Contains(t.SourceSubjectVisitId) && t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId && t.TaskState == TaskState.Effect) + var haveGenerateVisitIdList = await _visitTaskRepository.Where(t => idList.Contains(t.SourceSubjectVisitId) && t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId && t.TaskState == TaskState.Effect) .Select(t => t.SourceSubjectVisitId).ToListAsync(); var generateVisitIdList = idList.Except(haveGenerateVisitIdList); @@ -514,12 +516,12 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task GetVisitStudyAndSeriesList(VisitStudyAndSeriesQuery inQuery) { - var studyList = await _repository.Where(s => s.SubjectVisitId == inQuery.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var studyList = await _dicomStudyRepository.Where(s => s.SubjectVisitId == inQuery.SubjectVisitId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var studyIds = studyList.Select(t => t.StudyId).ToList(); - var query = from series in _repository.Where(t => studyIds.Contains(t.StudyId)) + var query = from series in _dicomSeriesRepository.Where(t => studyIds.Contains(t.StudyId)) join visitStudyFilter in _subjectCriteriaEvaluationVisitStudyFilterRepository.Where(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.SubjectVisitId == inQuery.SubjectVisitId) on series.Id equals visitStudyFilter.SeriesId into d from visitStudyFilter in d.DefaultIfEmpty() diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index 362281b9c..b89c5f43f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -26,6 +26,7 @@ namespace IRaCIS.Application.Services IRepository _previousPDFRepository, IRepository _dictionaryRepository, IRepository _trialRepository, + IRepository _readingQuestionCriterionTrialRepository, IRepository _trialClinicalQuestionRepository, IRepository _systemClinicalQuestionRepository) : BaseService { @@ -320,7 +321,7 @@ namespace IRaCIS.Application.Services //[HttpPost] //public async Task> GetTrialCriterionSelectList(TrialCriterionSelectQuery inQuery) //{ - // return await _repository.Where(t => t.TrialId == inQuery.TrialId) + // return await _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == inQuery.TrialId) // .WhereIf(!string.IsNullOrEmpty(inQuery.CriterionName), t => t.CriterionName.Contains(inQuery.CriterionName)) // .WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) // .WhereIf(inQuery.IsCompleteConfig != null, t => t.IsCompleteConfig == inQuery.IsCompleteConfig) @@ -363,7 +364,7 @@ namespace IRaCIS.Application.Services var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList(); - var readingCriterionList = _repository.Where(t => t.TrialId == trialId).Where(t => t.ReadingQuestionCriterionSystemId != null) + var readingCriterionList = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId).Where(t => t.ReadingQuestionCriterionSystemId != null) .Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id ,t.CriterionType}).ToList(); @@ -419,7 +420,7 @@ namespace IRaCIS.Application.Services // var systemDataList = systemClinicalDataList.Where(x => needAddids.Contains(x.Id)).ToList(); - // var readingCriterionList = _repository.Where(t => t.TrialId == trialId).Where(t => t.ReadingQuestionCriterionSystemId != null) + // var readingCriterionList = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId).Where(t => t.ReadingQuestionCriterionSystemId != null) // .Select(t => new { t.ReadingQuestionCriterionSystemId, TrialReadingCriterionId = t.Id }).ToList(); diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 663990275..107ec975a 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -431,7 +431,7 @@ namespace IRaCIS.Application.Services //var criterionType = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == trialReadingCritrialId).Select(t => t.CriterionType).FirstOrDefaultAsync(); // 获取确认的项目标准 废弃 签名的时候 传递标准Id - //var confirmedCtritrialList = _repository.Where(t => t.TrialId == trialId && t.ReadingInfoSignTime != null).Select(t => new { t.Id, t.CriterionType }).ToList(); + //var confirmedCtritrialList = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.ReadingInfoSignTime != null).Select(t => new { t.Id, t.CriterionType }).ToList(); var needSignCount = 0; var haveSignedCount = _readingClinicalDataRepository.Where(t => t.TrialId == trialId && t.IsSign && t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count(); diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 23930791e..26c924924 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -35,6 +35,7 @@ namespace IRaCIS.Core.Application.Contracts IRepository _trialSiteSurveyRepository, IRepository _trialSiteUserSurveyRepository, IRepository _userRepository, + IRepository _trialRepository, IRepository _trialSiteRepository, IRepository _trialUserRepository, IRepository _trialSiteUserRepository, @@ -527,7 +528,7 @@ namespace IRaCIS.Core.Application.Contracts [HttpGet("{trialId:guid}")] public async Task GetTrialSurveyInitInfo(Guid trialId) { - var info = await _repository.Where(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var info = await _trialRepository.Where(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); return info; } @@ -745,7 +746,7 @@ namespace IRaCIS.Core.Application.Contracts private async Task GenerateAccountAsync(List needGenerateList, Guid trialId) { - var trialType = _repository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault(); + var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault(); foreach (var item in needGenerateList) { @@ -897,7 +898,7 @@ namespace IRaCIS.Core.Application.Contracts { - var trialType = _repository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault(); + var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault(); //判断是否有系统账号 foreach (var item in list) diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs index 880cf5f1a..74de0f00d 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteUserSurveyService.cs @@ -17,6 +17,8 @@ namespace IRaCIS.Core.Application.Contracts [ApiExplorerSettings(GroupName = "Trial")] public class TrialSiteUserSurveyService( IRepository _trialSiteUserSurveyRepository, + IRepository _trialRepository, + IRepository _userRepository, IRepository _trialSiteSurveyRepository) : BaseService, ITrialSiteUserSurveyService { @@ -51,12 +53,12 @@ namespace IRaCIS.Core.Application.Contracts { var trialId = _trialSiteSurveyRepository.Where(t => t.Id == addOrEditTrialSiteUserSurvey.TrialSiteSurveyId, false, true).Select(t => t.TrialId).FirstOrDefault(); - var trialType = _repository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault(); + var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault(); var item = addOrEditTrialSiteUserSurvey; //找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户 - var sysUserInfo = await _repository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); + var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); if (sysUserInfo != null) { @@ -97,7 +99,7 @@ namespace IRaCIS.Core.Application.Contracts if (addOrEditTrialSiteUserSurvey.UserTypeId != null) { - var existSysUser = await _repository.Where(t => t.EMail == addOrEditTrialSiteUserSurvey.Email && t.UserTypeId == addOrEditTrialSiteUserSurvey.UserTypeId).Include(d => d.UserTypeRole).FirstOrDefaultAsync(); + var existSysUser = await _userRepository.Where(t => t.EMail == addOrEditTrialSiteUserSurvey.Email && t.UserTypeId == addOrEditTrialSiteUserSurvey.UserTypeId).Include(d => d.UserTypeRole).FirstOrDefaultAsync(); if (existSysUser != null) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs index dc368dc31..53921aa14 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs @@ -28,6 +28,7 @@ namespace IRaCIS.Core.Application.Service IRepository _trialExternalUseRepository, IRepository _userRepository, IRepository _trialUserRepository, + IRepository _trialRepository, IMailVerificationService _mailVerificationService, IDistributedLockProvider _distributedLockProvider) : BaseService, ITrialExternalUserService { @@ -97,7 +98,7 @@ namespace IRaCIS.Core.Application.Service var existUser = await _userRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId); - var trialType = await _repository.Where(t => t.Id == addOrEditTrialExternalUser.TrialId).Select(t => t.TrialType).FirstOrDefaultAsync(); + var trialType = await _trialRepository.Where(t => t.Id == addOrEditTrialExternalUser.TrialId).Select(t => t.TrialType).FirstOrDefaultAsync(); if (existUser != null) { diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 1318f7ab2..f0e900098 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -16,6 +16,7 @@ namespace IRaCIS.Application.Services [ApiExplorerSettings(GroupName = "Trial")] public class TrialMaintenanceService( IRepository _trialUseRepository, + IRepository _userRepository, IRepository _trialRepository) : BaseService, ITrialMaintenanceService { @@ -121,7 +122,7 @@ namespace IRaCIS.Application.Services //之前已经选择的用户 不放在列表中,现在又要改回去 废弃 - var query = _repository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin) + var query = _userRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin) //正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户 .WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IsTestUser == false && t.IsZhiZhun) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs index 18f15f6ab..cf0ebde5c 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs @@ -23,6 +23,9 @@ namespace IRaCIS.Application.Services public class TrialService( IRepository _trialRepository, IRepository _trialUserRepository, + IRepository _enrollDetailRepository, + IRepository _dictionaryRepository, + IRepository _enrollRepository, IOptionsMonitor _verifyConfig) : BaseService, ITrialService { @@ -120,7 +123,7 @@ namespace IRaCIS.Application.Services [NonDynamicMethod] public async Task GetTrialMaxState(Guid trialId) { - return await _repository.Where(t => t.TrialId == trialId).MaxAsync(u => (int?)u.EnrollStatus) ?? 0; + return await _enrollDetailRepository.Where(t => t.TrialId == trialId).MaxAsync(u => (int?)u.EnrollStatus) ?? 0; } [HttpGet("{trialId:guid}")] @@ -219,7 +222,7 @@ namespace IRaCIS.Application.Services await DealSponsorAndCROAsync(trial); //维护部位到项目表 - var searchList = await _repository.Where(t => t.Parent.Code == "BodyPart" && t.ParentId != null && t.IsEnable).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var searchList = await _dictionaryRepository.Where(t => t.Parent.Code == "BodyPart" && t.ParentId != null && t.IsEnable).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var needAddBodyPartList = searchList.Select(t => new TrialBodyPart() { Code = t.Code, Name = t.Value, NameCN = t.ValueCN }).ToList(); @@ -620,7 +623,7 @@ namespace IRaCIS.Application.Services /// public async Task> GetTrialEnrollmentReviewerIds(Guid trialId) { - return await _repository.Where(u => u.TrialId == trialId && + return await _enrollRepository.Where(u => u.TrialId == trialId && u.EnrollStatus >= EnrollStatus.DoctorReading).Select(u => u.DoctorId).Distinct().ToListAsync(); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs index 0be57ae8d..d81a4b6d4 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs @@ -18,6 +18,7 @@ namespace IRaCIS.Core.Application.Services IRepository _trialSiteRepository, IRepository _trialSiteUserRepository, IRepository _siteRepository, + IRepository _visitTaskRepository, IRepository _trialRepository) : BaseService, ITrialSiteService { @@ -276,7 +277,7 @@ namespace IRaCIS.Core.Application.Services .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .Select(t => t.TrialSiteCode).ToListAsync(); - var virtualList = await _repository.Where(t => t.IsSelfAnalysis == true && t.TrialId == trialId).Select(t => t.BlindTrialSiteCode).Distinct().ToListAsync(); + var virtualList = await _visitTaskRepository.Where(t => t.IsSelfAnalysis == true && t.TrialId == trialId).Select(t => t.BlindTrialSiteCode).Distinct().ToListAsync(); return isIncludeVirtualSite ? list.Concat(virtualList) : list; } diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 845b51d55..02aede7c8 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -53,6 +53,7 @@ namespace IRaCIS.Application.Services IRepository _subjectRepository, IRepository _subjectVisitRepository, IRepository _dictionaryRepository, + IRepository _dicomStudyRepository, IDistributedLockProvider _distributedLockProvider) : BaseService { @@ -318,11 +319,11 @@ namespace IRaCIS.Application.Services var subjectId = inCommand.SubjectId; - var isVerifyVisitImageDate = await _repository.Where(t => t.Id == inCommand.TrialId).Select(t => t.IsVerifyVisitImageDate).FirstNotNullAsync(); + var isVerifyVisitImageDate = await _trialRepository.Where(t => t.Id == inCommand.TrialId).Select(t => t.IsVerifyVisitImageDate).FirstNotNullAsync(); var result = new List(); - var visitList = _repository.Where(t => t.SubjectId == inCommand.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList(); + var visitList = _subjectVisitRepository.Where(t => t.SubjectId == inCommand.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList(); var currentVisitNum = visitList.First(t => t.Id == inCommand.SubjectVisitId).VisitNum; @@ -355,7 +356,7 @@ namespace IRaCIS.Application.Services } } - var verifyStudyInfo = _repository.Where(t => t.TrialId == trialId && t.Id == waitUploadItem.Id).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + var verifyStudyInfo = _dicomStudyRepository.Where(t => t.TrialId == trialId && t.Id == waitUploadItem.Id).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); var currentStudyResult = new VerifySCPStudyUploadResult() { SCPStudyId = waitUploadItem.Id }; @@ -436,7 +437,7 @@ namespace IRaCIS.Application.Services using (await @lock.AcquireAsync()) { - var dbStudyCodeIntMax = _repository.Where(s => s.TrialId == inCommand.TrialId).Select(t => t.Code).DefaultIfEmpty().Max(); + var dbStudyCodeIntMax = _dicomStudyRepository.Where(s => s.TrialId == inCommand.TrialId).Select(t => t.Code).DefaultIfEmpty().Max(); int currentNextCodeInt = dbStudyCodeIntMax + 1; diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs index 820bdb807..eb5df2263 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs @@ -13,6 +13,7 @@ namespace IRaCIS.Application.Services [ApiExplorerSettings(GroupName = "Trial")] public class SubjectService( IRepository _subjectRepository, + IRepository _trialRepository, IRepository _subjectVisitRepository) : BaseService, ISubjectService { @@ -124,7 +125,7 @@ namespace IRaCIS.Application.Services var pageList = await subjectQuery.ToPagedListAsync(inQuery,nameof(SubjectQueryView.Code)); - var trialConfig = await _repository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); + var trialConfig = await _trialRepository.Where(t => t.Id == inQuery.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException(); return ResponseOutput.Ok(pageList, trialConfig); diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index d45713359..d6a5f2723 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -23,6 +23,7 @@ namespace IRaCIS.Core.Application.Services public class SubjectVisitService( IRepository _subjectVisitRepository, IRepository _trialRepository, + IRepository _dicomStudyRepository, IRepository _noneDicomStudyRepository, IRepository _visitTaskRepository, IRepository _readingTableAnswerRowInfoRepository, @@ -30,6 +31,7 @@ namespace IRaCIS.Core.Application.Services IRepository _noneDicomStudyFileRepository, IRepository _subjectRepository, IServiceProvider _serviceProvider, + IRepository _dicomSeriesRepository, IRepository _trialReadingCriterionRepository ) : BaseService, ISubjectVisitService { @@ -216,7 +218,7 @@ namespace IRaCIS.Core.Application.Services [AllowAnonymous] public async Task> GetVisitStudyList(Guid trialId, Guid sujectVisitId, int isReading) { - var studyList = await _repository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).Select(k => new VisitStudyDTO() + var studyList = await _dicomStudyRepository.Where(t => t.TrialId == trialId && t.SubjectVisitId == sujectVisitId).Select(k => new VisitStudyDTO() { InstanceCount = k.InstanceCount, Modalities = k.Modalities, @@ -231,7 +233,7 @@ namespace IRaCIS.Core.Application.Services foreach (var t in studyList) { - t.SeriesList = await _repository.Where(s => s.StudyId == t.StudyId) + t.SeriesList = await _dicomSeriesRepository.Where(s => s.StudyId == t.StudyId) .WhereIf(isReading == 1, s => s.IsReading).OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -275,7 +277,7 @@ namespace IRaCIS.Core.Application.Services [HttpPost] public async Task GetDicomSeriesInfo(GetDicomSeriesInfoInDto inDto) { - DicomSeriesDTO series = await _repository.Where(s => s.Id == inDto.SeriesId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + DicomSeriesDTO series = await _dicomSeriesRepository.Where(s => s.Id == inDto.SeriesId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); var instanceList = await _repository.Where(t => t.SeriesId == inDto.SeriesId) .Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath, t.SliceLocation }).ToListAsync(); @@ -360,8 +362,8 @@ namespace IRaCIS.Core.Application.Services } - List ctseriesLists = await _repository.Where(s => ctseriesIds.Contains(s.Id)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - List ptseriesLists = await _repository.Where(s => ptseriesIds.Contains(s.Id)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + List ctseriesLists = await _dicomSeriesRepository.Where(s => ctseriesIds.Contains(s.Id)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + List ptseriesLists = await _dicomSeriesRepository.Where(s => ptseriesIds.Contains(s.Id)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var seriesIds = ctseriesIds.Union(ptseriesIds).ToList(); //并集 @@ -370,7 +372,7 @@ namespace IRaCIS.Core.Application.Services var studyIds = instanceList.Select(x => x.StudyId).Distinct().ToList(); - var studyList = await _repository.Where(t => studyIds.Contains(t.Id)) + var studyList = await _dicomStudyRepository.Where(t => studyIds.Contains(t.Id)) .Select(k => new StudyInfo() { InstanceCount = k.InstanceCount, @@ -473,7 +475,7 @@ namespace IRaCIS.Core.Application.Services var isManualGenerate = await _trialReadingCriterionRepository.AnyAsync(t => t.Id == taskInfo.TrialReadingCriterionId && t.IsAutoCreate == false); - var dicomStudyList = await _repository.Where(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId) + var dicomStudyList = await _dicomStudyRepository.Where(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId) .WhereIf(taskInfo.IsImageFilter == true, t => taskInfo.CriterionModalitys.Contains(t.ModalityForEdit)) .WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading)) .Select(k => new VisitStudyDTO() @@ -490,7 +492,7 @@ namespace IRaCIS.Core.Application.Services var instanceList = await _repository.Where(t => studyIds.Contains(t.StudyId)) .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync(); - List seriesLists = await _repository.Where(s => studyIds.Contains(s.StudyId)) + List seriesLists = await _dicomSeriesRepository.Where(s => studyIds.Contains(s.StudyId)) .WhereIf(isManualGenerate == false, t => t.IsReading) .WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading)) .OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -558,7 +560,7 @@ namespace IRaCIS.Core.Application.Services var thisSeriesIdIds = rowInfoList.Where(x => x.SeriesId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(x => x.SeriesId).Distinct().ToList(); if (rowInfoList.Count > 0) { - var thisVisitTaskStudy = await _repository.Where(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO() + var thisVisitTaskStudy = await _dicomStudyRepository.Where(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO() { InstanceCount = k.InstanceCount, @@ -572,7 +574,7 @@ namespace IRaCIS.Core.Application.Services if (thisVisitTaskStudy != null) { thisVisitTaskStudy.StudyId = default(Guid); - var item = await _repository.Where(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber). + var item = await _dicomSeriesRepository.Where(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber). ThenBy(s => s.SeriesTime) .ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); @@ -613,7 +615,7 @@ namespace IRaCIS.Core.Application.Services item.Description = "Key Series"; - var modalityList = await _repository.Where(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime).Select(x => x.Modality).Distinct().ToListAsync(); ; + var modalityList = await _dicomSeriesRepository.Where(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime).Select(x => x.Modality).Distinct().ToListAsync(); ; item.Modality = string.Join(",", modalityList); thisVisitTaskStudy.SeriesList.Add(item); //thisVisitTaskStudy.SeriesCount = thisVisitTaskStudy.SeriesList.Count; diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index 341e427b7..19e0c9162 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -179,7 +179,7 @@ namespace IRaCIS.Application.Services if (stage.IsBaseLine && stage.IsBaseLine != visitPlan.IsBaseLine) { - if (await _repository.Where(t => t.TrialId == visitPlan.TrialId).AnyAsync(v => v.IsBaseLine && v.SubmitState >= SubmitStateEnum.ToSubmit)) + if (await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).AnyAsync(v => v.IsBaseLine && v.SubmitState >= SubmitStateEnum.ToSubmit)) { //---有受试者的基线已经上传了影像数据,不允许修改基线访视。 throw new BusinessValidationFailedException(_localizer["VisitPlan_ExistBaselineImgNoModify"]); diff --git a/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs b/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs index fb24edf70..d22694297 100644 --- a/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs +++ b/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs @@ -22,6 +22,7 @@ namespace IRaCIS.Application.Services IRepository _trialRevenuesPriceRepository, IRepository _trialRevenuesPriceVerificationRepository, IRepository _enrollReadingCriterionRepository, + IRepository _visitTaskRepository, IRepository _taskAllocationRuleRepository) : BaseService, IDoctorWorkloadService { @@ -129,7 +130,7 @@ namespace IRaCIS.Application.Services var enroll = await _enrollRepository.FirstAsync(t => t.Id == inDto.EnrollId); - if (_repository.Where(t => t.TrialId == enroll.TrialId && t.DoctorUserId == enroll.DoctorUserId && t.TaskAllocationState == TaskAllocationState.Allocated && t.TrialReadingCriterionId == inDto.TrialReadingCriterionId).Any()) + if (_visitTaskRepository.Where(t => t.TrialId == enroll.TrialId && t.DoctorUserId == enroll.DoctorUserId && t.TaskAllocationState == TaskAllocationState.Allocated && t.TrialReadingCriterionId == inDto.TrialReadingCriterionId).Any()) { var readingCategoryList = await _enrollReadingCategoryRepository.Where(t => t.EnrollId == inDto.EnrollId && t.TrialReadingCriterionId == inDto.TrialReadingCriterionId).Select(t => t.ReadingCategory).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/WorkLoad/EnrollService.cs b/IRaCIS.Core.Application/Service/WorkLoad/EnrollService.cs index 935da1d58..58eda4ce6 100644 --- a/IRaCIS.Core.Application/Service/WorkLoad/EnrollService.cs +++ b/IRaCIS.Core.Application/Service/WorkLoad/EnrollService.cs @@ -19,6 +19,8 @@ namespace IRaCIS.Application.Services IRepository _doctorRepository, IRepository _enrollDetailRepository, IRepository _workloadRepository, + IRepository _userRepository, + IRepository _trialUserRepository, IMailVerificationService _mailVerificationService) : BaseService, IEnrollService { @@ -140,7 +142,7 @@ namespace IRaCIS.Application.Services TrialId = trialId, EnrollStatus = EnrollStatus.HasApplyDownloadResume, - DoctorUserId = _repository.Where(t => t.DoctorId == doctorId).Select(t => t.Id).FirstOrDefault() + DoctorUserId = _userRepository.Where(t => t.DoctorId == doctorId).Select(t => t.Id).FirstOrDefault() }); ; await _enrollDetailRepository.AddAsync(new EnrollDetail() @@ -168,7 +170,7 @@ namespace IRaCIS.Application.Services var trial = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); - var hasSPMOrCPM = await _repository.Where(t => t.TrialId == trialId).AnyAsync(t=> t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM); + var hasSPMOrCPM = await _trialUserRepository.Where(t => t.TrialId == trialId).AnyAsync(t=> t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM); if (trial != null) { diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 6d617ec9c..b39f9fd6b 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -33,42 +33,19 @@ using Xceed.Words.NET; namespace IRaCIS.Application.Services { [ApiExplorerSettings(GroupName = "Institution")] - public class TestService : BaseService + public class TestService( + IRepository _dicRepository, + IRepository _trialRepository, + IOptionsMonitor _systemEmailConfig, + IOptionsMonitor _basicConfig, + IRepository _dicomStudyRepository, + IRepository _readingQuestionCriterionTrialRepository, + IRepository _visitTaskRepository, + IRepository _userRepository, + IDistributedLockProvider _distributedLockProvider, + ILogger _logger) : BaseService { - public static int IntValue = 100; - private readonly IRepository _dicRepository; - private readonly IRepository _trialRepository; - - //private readonly IDistributedCache _cache; - - private readonly IOptionsMonitor _systemEmailConfig; - - private readonly IOptionsMonitor _basicConfig; - private readonly IRepository _visitTaskRepositoryy; - - private readonly IDistributedLockProvider _distributedLockProvider; - - private readonly ILogger _logger; - - public TestService(IRepository dicRepository, IRepository trialRepository, ILogger logger - - , IOptionsMonitor systemEmailConfig, IOptionsMonitor basicConfig, IRepository visitTaskRepository, IDistributedLockProvider distributedLockProvider) - { - _visitTaskRepositoryy = visitTaskRepository; - - _systemEmailConfig = systemEmailConfig; - _basicConfig = basicConfig; - - _dicRepository = dicRepository; - _trialRepository = trialRepository; - - _distributedLockProvider = distributedLockProvider; - - _logger = logger; - //_cache = cache; - } - /// /// 清理一致性分析任务 /// @@ -78,7 +55,7 @@ namespace IRaCIS.Application.Services { - var consistentSubjectIdList = _repository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == true).Select(t => t.SubjectId).ToList(); + var consistentSubjectIdList = _visitTaskRepository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == true).Select(t => t.SubjectId).ToList(); await _repository.BatchDeleteAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId); @@ -131,7 +108,7 @@ namespace IRaCIS.Application.Services //await _repository.BatchUpdateAsync(t => t.Id == Guid.Empty, u => new Subject() { FirstName = "fddd", LastName = "sss", UpdateTime = DateTime.Now }); - //await _repository.Where().ExecuteUpdateAsync(t => t.SetProperty(t => t.UpdateTime, u => DateTime.Now)); + //await _subjectRepository.Where().ExecuteUpdateAsync(t => t.SetProperty(t => t.UpdateTime, u => DateTime.Now)); return ResponseOutput.Ok(list); } @@ -155,7 +132,7 @@ namespace IRaCIS.Application.Services public async Task TestDistributedLock() { - await _repository.Where().Select(t => t.FullName).FirstNotNullAsync(); + await _userRepository.Where().Select(t => t.FullName).FirstNotNullAsync(); Console.WriteLine($"我进来了当前值是:" + IntValue); _logger.LogWarning($"我进来了当前值是:" + IntValue); @@ -394,7 +371,7 @@ namespace IRaCIS.Application.Services - //var d = _repository.Where(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault(); + //var d = _userRepository.Where(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault(); //var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First(); //CultureInfo culture = CultureInfo.CurrentUICulture; @@ -421,12 +398,12 @@ namespace IRaCIS.Application.Services return _localizer["test{0}", "测试"]; - //var list = _repository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.VisitTaskList).ToList(); + //var list = _subjectVisitRepository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.VisitTaskList).ToList(); - //var list2 = _repository.Where(t => t.Id == Guid.NewGuid()).Select(t => t.SourceSubjectVisit).ToList(); + //var list2 = _visitTaskRepository.Where(t => t.Id == Guid.NewGuid()).Select(t => t.SourceSubjectVisit).ToList(); - //var list3 = _repository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.SourceSubjectVisit.VisitTaskList).ToList(); - //var list2 = _repository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.SubjectVisitTaskList).ToList(); + //var list3 = _visitTaskRepository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.SourceSubjectVisit.VisitTaskList).ToList(); + //var list2 = _subjectRepository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.SubjectVisitTaskList).ToList(); //return _userInfo.LocalIp; } @@ -439,7 +416,7 @@ namespace IRaCIS.Application.Services var needAddBodyPartList = searchList.Select(t => new TrialBodyPart() { Code = t.Code, Name = t.Value, NameCN = t.ValueCN }); - var trialIds = _repository.Where(t => !t.TrialBodyPartList.Any()).Select(t => t.Id).ToList(); + var trialIds = _trialRepository.Where(t => !t.TrialBodyPartList.Any()).Select(t => t.Id).ToList(); foreach (var trialId in trialIds) { @@ -470,7 +447,7 @@ namespace IRaCIS.Application.Services { //找到项目存在的项目标准 - var trialCritrialList = _repository.Where(t => t.TrialId == needAddTrialGroup.Key).ToList(); + var trialCritrialList = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == needAddTrialGroup.Key).ToList(); //遍历项目下的临床数据 foreach (var needAddTrial in needAddTrialGroup) @@ -508,7 +485,7 @@ namespace IRaCIS.Application.Services var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); - var studyList = _repository.Where(t => t.SeriesList.Any(t => t.ImageResizePath.Length < 10)).Select(t => new { t.TrialId, t.Subject.TrialSiteId, t.SubjectId, t.SubjectVisitId, t.Id }).ToList(); + var studyList = _dicomStudyRepository.Where(t => t.SeriesList.Any(t => t.ImageResizePath.Length < 10)).Select(t => new { t.TrialId, t.Subject.TrialSiteId, t.SubjectId, t.SubjectVisitId, t.Id }).ToList(); foreach (var studyitem in studyList) { diff --git a/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs b/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs index 8ee6c4463..d55cd73a6 100644 --- a/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AddCRCCliniaclDataTrigger.cs @@ -8,19 +8,11 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Application.Triggers { - public class AddCRCCliniaclDataTrigger : IAfterSaveTrigger - { - private readonly IRepository _subjectVisitRepository; - private readonly IRepository _repository; - private readonly IClinicalAnswerService _iClinicalAnswerService; - - public AddCRCCliniaclDataTrigger(IRepository subjectVisitRepository, IRepository repository, IClinicalAnswerService iClinicalAnswerService) - { - _subjectVisitRepository = subjectVisitRepository; - - _repository = repository; - this._iClinicalAnswerService = iClinicalAnswerService; - } + public class AddCRCCliniaclDataTrigger( + IRepository _subjectVisitRepository, + IClinicalAnswerService _iClinicalAnswerService) : IAfterSaveTrigger + { + //注意删除不能用扩展方法,必须用EF跟踪的实体 否则不能取到 SubjectVisitId public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) diff --git a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs index 0bf4d5ebb..a20275b91 100644 --- a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs @@ -8,28 +8,14 @@ namespace IRaCIS.Core.Application.Triggers /// /// 添加访视计划 要给改项目下的所有Subject 添加该访视 /// - public class AddSubjectTrigger : IBeforeSaveTrigger + public class AddSubjectTrigger( + IRepository _subjectVisitRepository, + + IRepository _visitStageRepository, + IRepository _trialRepository, + IMapper _mapper) : IBeforeSaveTrigger { - private readonly IRepository _subjectVisitRepository; - private readonly IRepository _clinicalDataTrialSetRepository; - private readonly IRepository _readingClinicalDataRepository; - private readonly IRepository _visitStageRepository; - private readonly IRepository _trialRepository; - private readonly IMapper _mapper; - - public AddSubjectTrigger(IRepository subjectVisitRepository, - IRepository clinicalDataTrialSetRepository, - IRepository readingClinicalDataRepository, - IMapper mapper, IRepository visitStageRepository, IRepository trialRepository) - { - _subjectVisitRepository = subjectVisitRepository; - this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; - this._readingClinicalDataRepository = readingClinicalDataRepository; - _trialRepository = trialRepository; - - _visitStageRepository = visitStageRepository; - _mapper = mapper; - } + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { diff --git a/IRaCIS.Core.Application/Triggers/AddlTrialUserTrigger.cs b/IRaCIS.Core.Application/Triggers/AddlTrialUserTrigger.cs index 6f5082e6e..85a721ffb 100644 --- a/IRaCIS.Core.Application/Triggers/AddlTrialUserTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AddlTrialUserTrigger.cs @@ -12,20 +12,13 @@ namespace IRaCIS.Core.Application.Triggers { // 统一处理 外部用户、中心调研(先添加 再发送邮件)、参与医生加入到项目 ----废弃 - public class AddlTrialUserTrigger :IBeforeSaveTrigger + public class AddlTrialUserTrigger( + IStringLocalizer _localizer, + IRepository _trialRepository, + IRepository _userRepository) : IBeforeSaveTrigger { - public IStringLocalizer _localizer; - private readonly IRepository _trialRepository; - private readonly IRepository _userRepository; - - public AddlTrialUserTrigger(IRepository trialRepository, IRepository userRepository, IStringLocalizer localizer) - { - _trialRepository = trialRepository; - - _userRepository = userRepository; - _localizer = localizer; - } + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { var trialUser = context.Entity; diff --git a/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs b/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs index 24431b77f..e169a367a 100644 --- a/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/ChallengeStateTrigger.cs @@ -5,14 +5,9 @@ namespace IRaCIS.Core.Application.Triggers { //访视 质疑状态 触发修改 - public class ChallengeStateTrigger : IAfterSaveTrigger + public class ChallengeStateTrigger(IRepository _qcChallengeRepository, IRepository _subjectVisitRepository) : IAfterSaveTrigger { - private readonly IRepository _repository; - - public ChallengeStateTrigger(IRepository repository) - { - _repository = repository; - } + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) { @@ -21,7 +16,7 @@ namespace IRaCIS.Core.Application.Triggers ChallengeStateEnum subjectVisitChallengeState = default; - var closedStateList = await _repository.Where(t => t.SubjectVisitId == subjectVisitId).Select(t => t.IsClosed).ToListAsync(); + var closedStateList = await _qcChallengeRepository.Where(t => t.SubjectVisitId == subjectVisitId).Select(t => t.IsClosed).ToListAsync(); if (closedStateList.Count == 0) { @@ -37,7 +32,7 @@ namespace IRaCIS.Core.Application.Triggers } - await _repository.BatchUpdateAsync(t => t.Id == subjectVisitId, + await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { ChallengeState = subjectVisitChallengeState }); } } diff --git a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs index 2c958a2bb..cb45fed4c 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs @@ -11,18 +11,12 @@ namespace IRaCIS.Core.Application.Triggers /// /// /// - public class SubjectStateTrigger : IAfterSaveTrigger + public class SubjectStateTrigger( + IStringLocalizer _localizer, + IRepository _repository, + IRepository _subjectVisitRepository) : IAfterSaveTrigger { - public IStringLocalizer _localizer; - private readonly IRepository _repository; - private readonly IRepository _subjectVisitRepository; - - public SubjectStateTrigger(IRepository subjectVisitRepository, IStringLocalizer localizer, IRepository repository) - { - _repository = repository; - _localizer = localizer; - _subjectVisitRepository = subjectVisitRepository; - } + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) { diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs index 94463c240..2884dddfb 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs @@ -12,44 +12,14 @@ namespace IRaCIS.Core.Application.Triggers /// /// 处理 访视 末次评估 会影响Subject 状态 /// - public class SubjectVisitCheckPassedTrigger : IBeforeSaveTrigger + public class SubjectVisitCheckPassedTrigger( + IVisitTaskHelpeService _visitTaskHelpeService, + IRepository _subjectRepository, + IRepository _trialReadingCriterionRepository, + ISubjectCriteriaEvaluationService _subjectCriteriaEvaluationService, + IRepository _subjectCriteriaEvaluationRepository) : IBeforeSaveTrigger { - private readonly IVisitTaskHelpeService _visitTaskHelpeService; - - private readonly IRepository _subjectRepository; - private readonly IRepository _clinicalDataTrialSetRepository; - private readonly IRepository _readingClinicalDataRepository; - - private readonly IRepository _trialReadingCriterionRepository; - - private readonly IRepository _SubjectCriteriaEvaluationVisitFilterRepository; - - - - private readonly ISubjectCriteriaEvaluationService _subjectCriteriaEvaluationService; - - private readonly IRepository _subjectCriteriaEvaluationRepository; - - public SubjectVisitCheckPassedTrigger(IRepository subjectRepository, - IRepository clinicalDataTrialSetRepository, - IRepository readingClinicalDataRepository, - IVisitTaskHelpeService visitTaskHelpeService, IRepository trialReadingCriterionRepository, - IRepository subjectCriteriaEvaluationVisitFilterRepository, ISubjectCriteriaEvaluationService subjectCriteriaEvaluationService - , IRepository subjectCriteriaEvaluationRepository) - { - _subjectCriteriaEvaluationRepository= subjectCriteriaEvaluationRepository; - _subjectRepository = subjectRepository; - _clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; - _readingClinicalDataRepository = readingClinicalDataRepository; - this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; - _visitTaskHelpeService = visitTaskHelpeService; - _trialReadingCriterionRepository = trialReadingCriterionRepository; - _SubjectCriteriaEvaluationVisitFilterRepository = subjectCriteriaEvaluationVisitFilterRepository; - _subjectCriteriaEvaluationService = subjectCriteriaEvaluationService; - } - - public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { @@ -71,7 +41,7 @@ namespace IRaCIS.Core.Application.Triggers context.Entity.IsPMBackOrReReading = false; //找到手动生成任务的标准 - var criterionList = await _trialReadingCriterionRepository.Where(t => t.IsAutoCreate == false && t.IsSigned == true).Select(t => new { t.Id, t.TrialId,t.IsReadingTaskViewInOrder }).ToListAsync(); + var criterionList = await _trialReadingCriterionRepository.Where(t => t.IsAutoCreate == false && t.IsSigned == true).Select(t => new { t.Id, t.TrialId, t.IsReadingTaskViewInOrder }).ToListAsync(); foreach (var criterion in criterionList) { @@ -81,7 +51,7 @@ namespace IRaCIS.Core.Application.Triggers //} //如果参与评估,那么久对当前访视进行自动筛选 - if( await _subjectCriteriaEvaluationRepository.AnyAsync(t=>t.SubjectId==subjectVisit.SubjectId && t.TrialReadingCriterionId==criterion.Id && t.IsJoinEvaluation)) + if (await _subjectCriteriaEvaluationRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.TrialReadingCriterionId == criterion.Id && t.IsJoinEvaluation)) { await _subjectCriteriaEvaluationService.AutoSubjectCriteriaEvaluationVisitFilter(subjectVisit.SubjectId, subjectVisit.Id, criterion.Id); diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs index 2a9254098..a530cec5c 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitFinalVisitTrigger.cs @@ -12,38 +12,18 @@ namespace IRaCIS.Core.Application.Triggers /// /// 处理 访视 末次评估 会影响Subject 状态 /// - public class SubjectVisitFinalVisitTrigger :IAfterSaveTrigger + public class SubjectVisitFinalVisitTrigger( + IRepository _subjectVisitRepository, + IRepository _readModuleRepository, + IRepository _subjectRepository, + IRepository _visitTaskRepository, + IVisitTaskHelpeService _ivisitTaskHelpeService, + IStringLocalizer _localizer, + IRepository _trialRepository, + IRepository _readingQuestionCriterionTrialRepository, + IRepository _repository) : IAfterSaveTrigger { - private readonly IRepository _subjectVisitRepository; - private readonly IRepository _readingPeriodSetRepository; - private readonly IRepository _readingPeriodPlanRepository; - private readonly IRepository _readModuleRepository; - private readonly IRepository _subjectRepository; - private readonly IRepository _visitTaskRepository; - private readonly IVisitTaskHelpeService _ivisitTaskHelpeService; - public IStringLocalizer _localizer; - private readonly IRepository _repository; - public SubjectVisitFinalVisitTrigger(IRepository subjectVisitRepository, - - IRepository readingPeriodSetRepository, - IRepository readingPeriodPlanRepository, - IRepository visitTaskRepository, - IVisitTaskHelpeService visitTaskHelpeService, - IRepository readModuleRepository, - IRepository subjectRepository, - IStringLocalizer localizer, - IRepository repository) - { - _subjectVisitRepository = subjectVisitRepository; - this._readingPeriodSetRepository = readingPeriodSetRepository; - this._visitTaskRepository = visitTaskRepository; - this._ivisitTaskHelpeService = visitTaskHelpeService; - this._readingPeriodPlanRepository = readingPeriodPlanRepository; - this._readModuleRepository = readModuleRepository; - _subjectRepository = subjectRepository; - _repository = repository; - _localizer = localizer; - } + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) { @@ -112,12 +92,12 @@ namespace IRaCIS.Core.Application.Triggers // 是否全局阅片 - var trial = await _repository.Where(x => x.Id == trialId).FirstNotNullAsync(); + var trial = await _trialRepository.Where(x => x.Id == trialId).FirstNotNullAsync(); if (!subjectVisit.IsBaseLine && subjectVisit.SubmitState == SubmitStateEnum.Submitted) { - var criterionList = await _repository.Where(x => x.TrialId == trialId && x.ReadingInfoSignTime != null && x.IsConfirm && x.IsReadingPeriod && x.IsReadingTaskViewInOrder == ReadingOrder.InOrder).ToListAsync(); + var criterionList = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == trialId && x.ReadingInfoSignTime != null && x.IsConfirm && x.IsReadingPeriod && x.IsReadingTaskViewInOrder == ReadingOrder.InOrder).ToListAsync(); foreach (var item in criterionList) { diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs index 04e0c5d44..2107b9dff 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitTrigger.cs @@ -7,18 +7,14 @@ namespace IRaCIS.Core.Application.Triggers /// /// 处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期 /// - public class SubjectVisitTrigger : IAfterSaveTrigger, IAfterSaveTrigger, IAfterSaveTrigger + public class SubjectVisitTrigger( + IRepository _subjectVisitRepository, + IClinicalAnswerService _iClinicalAnswerService, + IRepository _dicomSeriesRepository, + IRepository _noneDicomStudyRepository, + IRepository _repository) : IAfterSaveTrigger, IAfterSaveTrigger, IAfterSaveTrigger { - private readonly IRepository _subjectVisitRepository; - private readonly IClinicalAnswerService _iClinicalAnswerService; - private readonly IRepository _repository; - - public SubjectVisitTrigger(IRepository subjectVisitRepository, IClinicalAnswerService iClinicalAnswerService,IRepository repository) - { - _subjectVisitRepository = subjectVisitRepository; - this._iClinicalAnswerService = iClinicalAnswerService; - _repository = repository; - } + //注意删除不能用扩展方法,必须用EF跟踪的实体 否则不能取到 SubjectVisitId public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) @@ -54,7 +50,7 @@ namespace IRaCIS.Core.Application.Triggers var studyId = context.Entity.Id; //处理Modality - var seriesModalityList = _repository.Where(t => t.StudyId == studyId).Select(u => u.Modality).Distinct(); + var seriesModalityList = _dicomSeriesRepository.Where(t => t.StudyId == studyId).Select(u => u.Modality).Distinct(); string ModaliyStr = string.Join('、', seriesModalityList.ToList()); @@ -101,7 +97,7 @@ namespace IRaCIS.Core.Application.Triggers public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) { - var subjectVisitId =await _repository.Where(x=>x.Id== context.Entity.NoneDicomStudyId).Select(x=>x.SubjectVisitId).FirstOrDefaultAsync(); + var subjectVisitId =await _noneDicomStudyRepository.Where(x=>x.Id== context.Entity.NoneDicomStudyId).Select(x=>x.SubjectVisitId).FirstOrDefaultAsync(); if (context.ChangeType == ChangeType.Deleted || context.ChangeType == ChangeType.Added) { diff --git a/IRaCIS.Core.Application/Triggers/TableQuestionRowTrigger.cs b/IRaCIS.Core.Application/Triggers/TableQuestionRowTrigger.cs index 1d7e49c2a..40ba60b9d 100644 --- a/IRaCIS.Core.Application/Triggers/TableQuestionRowTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/TableQuestionRowTrigger.cs @@ -5,15 +5,10 @@ using System.Linq.Dynamic.Core; namespace IRaCIS.Core.Application.Triggers { //病灶编号维护 - public class TableQuestionRowTrigger : IBeforeSaveTrigger + public class TableQuestionRowTrigger( + IRepository _readingQuestionTrialRepository) : IBeforeSaveTrigger { - private readonly IRepository _readingQuestionTrialRepository; - - public TableQuestionRowTrigger(IRepository readingQuestionTrialRepository, IRepository repository) - { - this._readingQuestionTrialRepository = readingQuestionTrialRepository; - } - + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { Dictionary splitLesionDic = new Dictionary() diff --git a/IRaCIS.Core.Application/Triggers/TrialCriterionSignTrigger.cs b/IRaCIS.Core.Application/Triggers/TrialCriterionSignTrigger.cs index ece0a42a3..f33ee4537 100644 --- a/IRaCIS.Core.Application/Triggers/TrialCriterionSignTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/TrialCriterionSignTrigger.cs @@ -11,20 +11,11 @@ namespace IRaCIS.Core.Application.Triggers /// /// 因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务 /// - public class TrialCriterionSignTrigger : IBeforeSaveTrigger + public class TrialCriterionSignTrigger( + IVisitTaskHelpeService _visitTaskHelpeService) : IBeforeSaveTrigger { - private readonly IVisitTaskHelpeService _visitTaskHelpeService; - - - public TrialCriterionSignTrigger( - - IVisitTaskHelpeService visitTaskHelpeService) - { - - - _visitTaskHelpeService = visitTaskHelpeService; - } + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { diff --git a/IRaCIS.Core.Application/Triggers/UserLogTrigger.cs b/IRaCIS.Core.Application/Triggers/UserLogTrigger.cs index eb94e0e15..1ae92ddff 100644 --- a/IRaCIS.Core.Application/Triggers/UserLogTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/UserLogTrigger.cs @@ -10,16 +10,10 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Application.Triggers { - public class UserLogTrigger : IBeforeSaveTrigger + public class UserLogTrigger( + ISearcher _searcher) : IBeforeSaveTrigger { - public ISearcher _searcher; - - public ILogger _logger; - public UserLogTrigger(ISearcher searcher,ILogger logger) - { - _searcher = searcher; - _logger= logger; - } + //国家|区域|省份|城市|ISP 缺省的地域信息默认是0 //0|0|0|内网IP|内网IP diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs index 9c7eec7ab..d10cdd576 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIbeforeTrigger.cs @@ -11,20 +11,12 @@ using System.Linq.Expressions; namespace IRaCIS.Core.Application.Triggers { - public class VisitTaskIbeforeTrigger : IBeforeSaveTrigger, IAfterSaveTrigger + public class VisitTaskIbeforeTrigger( + IRepository _visitTaskRepository, + IRepository _readingJudgeInfoRepository) : IBeforeSaveTrigger, IAfterSaveTrigger { - private readonly IRepository _visitTaskRepository; - private readonly IRepository _readingJudgeInfoRepository; - - public VisitTaskIbeforeTrigger( - - IRepository visitTaskRepository, IRepository readingJudgeInfoRepository) - { - - _visitTaskRepository = visitTaskRepository; - _readingJudgeInfoRepository = readingJudgeInfoRepository; - } + /// /// 因为维护状态先后顺序导致 裁判任务关联的 任务上的JudgeVisitTaskId==nulll 在这里需要重新设置下 diff --git a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs index efac2b1a1..cda03515b 100644 --- a/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/VisitTaskIsFrontTaskNeedSignButNotSignTrigger.cs @@ -12,35 +12,12 @@ namespace IRaCIS.Core.Application.Triggers /// /// 维护 IsFrontTaskNeedSignButNotSign 字段 另外附加评估结果 /// - public class VisitTaskIsFrontTaskNeedSignButNotSignTrigger : IAfterSaveTrigger + public class VisitTaskIsFrontTaskNeedSignButNotSignTrigger( + IRepository _visitTaskRepository, + IRepository _trialReadingCriterionRepository) : IAfterSaveTrigger { - private readonly IRepository _visitTaskRepository; - private readonly IRepository _trialReadingCriterionRepository; - - private readonly IRepository _trialReadingQuestionRepository; - - private readonly IRepository _readingTaskQuestionAnswerRepository; - - private readonly IRepository _subjectAdditionalEvaluationResultRepository; - private readonly IRepository _readingJudgeInfoRepository; - - - public VisitTaskIsFrontTaskNeedSignButNotSignTrigger( - - IRepository visitTaskRepository, IRepository trialReadingCriterionRepository, IRepository trialReadingQuestionRepository - , IRepository readingTaskQuestionAnswerRepository, IRepository subjectAdditionalEvaluationResultRepository, IRepository readingJudgeInfoRepository) - { - _trialReadingCriterionRepository = trialReadingCriterionRepository; - - _visitTaskRepository = visitTaskRepository; - _trialReadingQuestionRepository = trialReadingQuestionRepository; - - _readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; - _subjectAdditionalEvaluationResultRepository = subjectAdditionalEvaluationResultRepository; - _readingJudgeInfoRepository = readingJudgeInfoRepository; - } - + //添加任务的时候 如果需要签名 并且已经签名了 那么要维护该标准 该Subject IsFrontTaskNeedSignButNotSign字段 public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken)