diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index cd0358230..f00c10d6d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -11593,6 +11593,13 @@ + + + 获取Series信息 + + + + 获取PTAndCtSeries diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 63ab8a26a..2427928c1 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -208,7 +208,7 @@ namespace IRaCIS.Application.Services } - return result; + return result.Where(x=>x.PicturePath!=string.Empty).ToList(); } /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs index 022557e76..4777364ae 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/LuganoCalculateService.cs @@ -2075,7 +2075,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { return "NA"; } - + if (TaskAnswer.Count() == 0) + { + return "0"; + } var presentSpd = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SpleenLength).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0(); var lowSplenoncus = TaskAnswer.OrderBy(x => x.SpleenLength).Select(x => x.SpleenLength).FirstOrDefault(); return (presentSpd - lowSplenoncus).ToString(); @@ -2099,7 +2102,10 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { return "NA"; } - + if (taskAnswer.Count() == 0) + { + return "NA"; + } var lowSplenoncus = taskAnswer.OrderBy(x => x.SpleenLength).FirstOrDefault(); return lowSplenoncus.BlindName; diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs index bfe3e47db..5e08a5994 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs @@ -209,10 +209,13 @@ namespace IRaCIS.Core.Application.Contracts public Guid CTSeriesId { get; set; } public Guid PTSeriesId { get; set; } + + public Guid StudyId { get; set; } + public Guid? SubjectVisitId { get; set; } - public bool IsBaseLine { get; set; } + public bool IsBaseLineTask { get; set; } public string TaskBlindName { get; set; } = string.Empty; @@ -239,7 +242,13 @@ namespace IRaCIS.Core.Application.Contracts public List PTSeriesList { get; set; } } - public class GetPTAndCtSeriesInDto + public class GetDicomSeriesInfoInDto + { + public Guid SeriesId { get; set; } + } + + + public class GetPTAndCtSeriesInDto { public Guid VisitTaskId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index 3cf925bbe..d0e1a04eb 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -328,11 +328,58 @@ namespace IRaCIS.Core.Application.Services } /// - /// 获取PTAndCtSeries + /// 获取Series信息 /// /// /// [HttpPost] + public async Task GetDicomSeriesInfo(GetDicomSeriesInfoInDto inDto) + { + DicomSeriesDTO series = await _repository.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 }).ToListAsync(); + series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderBy(t => t.InstanceNumber).Select(k => k.Id).ToList(); + + + series.InstanceHtmlPathList = instanceList.Where(t => t.SeriesId == series.Id && t.HtmlPath != string.Empty).OrderBy(t => t.InstanceNumber).Select(k => k.HtmlPath).ToList(); + + //处理多帧 + series.InstancePathList = instanceList.Where(s => s.SeriesId == series.Id).OrderBy(t => t.InstanceNumber) + .SelectMany(u => + { + + if (u.NumberOfFrames > 1) + { + var pathList = new List(); + + for (int i = 1; i <= u.NumberOfFrames; i++) + { + pathList.Add(u.Path + "?frame=" + (i - 1)); + } + return pathList; + } + else + { + return new List { u.Path }; + + } + }) + .ToList(); + + series.WindowWidth = instanceList.FirstOrDefault()!.WindowWidth; + series.WindowCenter = instanceList.FirstOrDefault()!.WindowCenter; + + return series; + } + + + /// + /// 获取PTAndCtSeries + /// + /// + /// + [HttpPost] public async Task> GetPTAndCtSeries(GetPTAndCtSeriesInDto inDto) { @@ -376,7 +423,7 @@ namespace IRaCIS.Core.Application.Services TaskBlindName=visitSeries.TaskBlindName, VisitTaskId= item, SubjectVisitId= visitSeries.SourceSubjectVisitId!.Value, - IsBaseLine=visitSeries.IsBaseLine, + IsBaseLineTask=visitSeries.IsBaseLine, }); @@ -451,7 +498,9 @@ namespace IRaCIS.Core.Application.Services foreach (var item in result) { - item.StudyInfoList = studyList.Where(x => x.SubjectVisitId == item.SubjectVisitId).ToList(); + item.StudyId = ptseriesLists.Where(x => x.Id == item.PTSeriesId).Select(x => x.StudyId).FirstOrDefault(); + + item.StudyInfoList = studyList.Where(x => x.SubjectVisitId == item.SubjectVisitId).ToList(); foreach (var study in item.StudyInfoList) {