From cd9769b39c6f519427fbf058a616db731e5703c4 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 30 Dec 2025 10:19:21 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=8E=B7=E5=8F=96Series=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/ImageAndDoc/_MapConfig.cs | 3 ++ .../Service/Visit/SubjectVisitService.cs | 51 +++++++++++++------ 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs index 4b271380f..f74509831 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs @@ -92,6 +92,9 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.SubjectVisit.Subject.Code)) .ForMember(o => o.VisitName, t => t.MapFrom(u => u.SubjectVisit.VisitName)); + CreateMap() + .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.SubjectVisit.Subject.Code)) + .ForMember(o => o.VisitName, t => t.MapFrom(u => u.SubjectVisit.VisitName)); CreateMap(); diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 268b171e5..bdddf04e0 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -28,6 +28,8 @@ namespace IRaCIS.Core.Application.Services IRepository _subjectRepository, IRepository _dicomInstanceRepository, IRepository _taskStudyRepository, + IRepository _taskSeriesRepository, + IRepository _taskInstanceRepository, IServiceProvider _serviceProvider, IRepository _dicomSeriesRepository, IRepository _trialReadingCriterionRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ISubjectVisitService @@ -337,29 +339,48 @@ namespace IRaCIS.Core.Application.Services [HttpPost] public async Task GetDicomSeriesInfo(GetDicomSeriesInfoInDto inDto) { - DicomSeriesDTO series = await _dicomSeriesRepository.Where(s => s.Id == inDto.SeriesId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + DicomSeriesDTO? series = await _dicomSeriesRepository.Where(s => s.Id == inDto.SeriesId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); - var instanceList = await _dicomInstanceRepository.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, t.FileSize }).ToListAsync(); + if (series != null) + { + var instanceList = await _dicomInstanceRepository.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, t.FileSize }).ToListAsync(); - series.InstanceInfoList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => - new InstanceBasicInfo() - { - Id = k.Id, - NumberOfFrames = k.NumberOfFrames, - HtmlPath = k.HtmlPath, - Path = k.Path, - InstanceNumber = k.InstanceNumber, - FileSize = k.FileSize + series.InstanceInfoList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => + new InstanceBasicInfo() + { + Id = k.Id, + NumberOfFrames = k.NumberOfFrames, + HtmlPath = k.HtmlPath, + Path = k.Path, + InstanceNumber = k.InstanceNumber, + FileSize = k.FileSize - }).ToList(); + }).ToList(); + } + else + { + series = await _taskSeriesRepository .Where(s => s.Id == inDto.SeriesId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + + var instanceList = await _taskInstanceRepository.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, t.FileSize }).ToListAsync(); - //series.WindowWidth = instanceList.FirstOrDefault()!.WindowWidth; - //series.WindowCenter = instanceList.FirstOrDefault()!.WindowCenter; + series.InstanceInfoList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => + new InstanceBasicInfo() + { + Id = k.Id, + NumberOfFrames = k.NumberOfFrames, + HtmlPath = k.HtmlPath, + Path = k.Path, + InstanceNumber = k.InstanceNumber, + FileSize = k.FileSize + + }).ToList(); + } return series; } From c16905101f2f3dc6d15ed53c2717cc00bfc6a48d Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 30 Dec 2025 11:36:52 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs | 2 ++ .../Service/Document/TrialEmailNoticeConfigService.cs | 1 + 2 files changed, 3 insertions(+) diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs index 77f950fba..438f8f25f 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialEmailNoticeConfigViewModel.cs @@ -97,6 +97,8 @@ namespace IRaCIS.Core.Application.ViewModel [NotDefault] public Guid TrialId { get; set; } + public string EmailTopic { get; set; } = string.Empty; + public EmailBusinessScenario? BusinessScenarioEnum { get; set; } public CriterionType? CriterionTypeEnum { get; set; } diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 16ae85809..294871348 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -1674,6 +1674,7 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi var trialConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId) + .WhereIf(inQuery.EmailTopic.IsNotNullOrEmpty(), t => t.EmailTopic.Contains(inQuery.EmailTopic)||t.EmailTopicCN.Contains(inQuery.EmailTopic)) .WhereIf(inQuery.IsDistinguishCriteria == false, t => t.IsDistinguishCriteria == false) .WhereIf(inQuery.IsDistinguishCriteria == true, t => t.IsDistinguishCriteria == true) .WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeList.Any(c => c == inQuery.CriterionTypeEnum))