From 5aaa9043ff41c76c19412d1e2e5539416d0dd085 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Tue, 19 Mar 2024 14:56:52 +0800 Subject: [PATCH] =?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/Visit/DTO/VisitPointViewModel.cs | 21 ++++++++- .../Service/Visit/SubjectVisitService.cs | 46 +++++++++++++++---- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs index 2765e84f2..db776d131 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs @@ -209,7 +209,26 @@ namespace IRaCIS.Core.Application.Contracts public Guid CTSeriesId { get; set; } public Guid PTSeriesId { get; set; } - public DicomSeriesDTO? CTSeries { get; set; } + + public string TaskBlindName { get; set; } = string.Empty; + + public StudyInfo? StudyInfo { get; set; } + } + + public class StudyInfo + { + public Guid StudyId { get; set; } + public string StudyCode { get; set; } = String.Empty; + public string Modalities { get; set; } = String.Empty; + + public bool IsCriticalSequence { get; set; } = false; + + public int SeriesCount { get; set; } + public int InstanceCount { get; set; } + + public bool IsDicom { get; set; } = true; + + public DicomSeriesDTO? CTSeries { get; set; } public DicomSeriesDTO? PTSeries { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 47e92f328..424a36957 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -350,8 +350,10 @@ namespace IRaCIS.Core.Application.Services x.PTSeriesId, x.CTSeriesId, x.VisitTaskId, + x.OtherStudyId, x.VisitTask.VisitTaskNum, - x.UpdateTime + x.VisitTask.TaskBlindName, + x.UpdateTime, }).ToListAsync(); List result = new List(); @@ -368,7 +370,8 @@ namespace IRaCIS.Core.Application.Services { PTSeriesId = visitSeries.PTSeriesId!.Value, CTSeriesId = visitSeries.CTSeriesId!.Value, - }); + TaskBlindName=visitSeries.TaskBlindName, + }); seriesIds.Add(visitSeries.PTSeriesId!.Value); seriesIds.Add(visitSeries.CTSeriesId!.Value); @@ -377,12 +380,21 @@ namespace IRaCIS.Core.Application.Services } - List seriesLists = await _repository.Where(s => seriesIds.Contains(s.Id)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - var instanceList = await _repository.Where(t => seriesIds.Contains(t.SeriesId)) - .Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync(); + .Select(t => new { t.SeriesId,t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath }).ToListAsync(); + var studyIds = instanceList.Select(x => x.StudyId).Distinct().ToList(); + + var studyList = await _repository.Where(t => studyIds.Contains(t.Id)) + .Select(k => new StudyInfo() + { + InstanceCount = k.InstanceCount, + Modalities = k.Modalities, + SeriesCount = k.SeriesCount, + StudyCode = k.StudyCode, + StudyId = k.Id, + }).ToListAsync(); seriesLists.ForEach(series => { series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList(); @@ -418,10 +430,26 @@ namespace IRaCIS.Core.Application.Services }); - foreach (var item in result) - { - item.PTSeries = seriesLists.Where(x => x.Id == item.PTSeriesId).FirstOrDefault(); - item.CTSeries = seriesLists.Where(x => x.Id == item.CTSeriesId).FirstOrDefault(); + foreach (var item in result) + { + + var series = seriesLists.Where(x => x.Id == item.PTSeriesId).FirstOrDefault(); + + if (series != null) + { + item.StudyInfo = studyList.Where(x => x.StudyId == series.StudyId).FirstOrDefault(); + if (item.StudyInfo != null) + { + item.StudyInfo.PTSeries = seriesLists.Where(x => x.Id == item.PTSeriesId).FirstOrDefault(); + item.StudyInfo.CTSeries = seriesLists.Where(x => x.Id == item.CTSeriesId).FirstOrDefault(); + } + + } + + + + + } return result;