修改检查获取序列列表

IRC_NewDev
hang 2024-04-22 17:19:47 +08:00
parent 0f25c7db0e
commit c91e21c23a
2 changed files with 15 additions and 10 deletions

View File

@ -244,6 +244,8 @@ namespace IRaCIS.Core.Application.Contracts
public class GetDicomSeriesInfoInDto
{
[NotDefault]
public Guid TrialId { get; set; }
public Guid SeriesId { get; set; }
}

View File

@ -14,6 +14,7 @@ using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Application.Services;
using Microsoft.Extensions.DependencyInjection;
using DocumentFormat.OpenXml.Drawing.Charts;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Services
{
@ -268,12 +269,12 @@ namespace IRaCIS.Core.Application.Services
}).ToListAsync();
var studyIds = studyList.Select(t => t.StudyId).ToList();
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId) && t.TrialId == trialId)
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.HtmlPath }).ToListAsync();
foreach (var t in studyList)
{
t.SeriesList = await _repository.Where<DicomSeries>(s => s.StudyId == t.StudyId)
t.SeriesList = await _repository.Where<DicomSeries>(s => s.StudyId == t.StudyId && s.TrialId == trialId)
.WhereIf(isReading == 1, s => s.IsReading).OrderBy(s => s.SeriesNumber).ThenBy(s => s.SeriesTime)
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
@ -335,9 +336,10 @@ namespace IRaCIS.Core.Application.Services
[HttpPost]
public async Task<DicomSeriesDTO> GetDicomSeriesInfo(GetDicomSeriesInfoInDto inDto)
{
DicomSeriesDTO series = await _repository.Where<DicomSeries>(s =>s.Id==inDto.SeriesId).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstNotNullAsync();
var trialId = inDto.TrialId;
DicomSeriesDTO series = await _repository.Where<DicomSeries>(s =>s.Id==inDto.SeriesId && s.TrialId == trialId).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstNotNullAsync();
var instanceList = await _repository.Where<DicomInstance>(t => t.SeriesId==inDto.SeriesId)
var instanceList = await _repository.Where<DicomInstance>(t => t.SeriesId==inDto.SeriesId && t.TrialId == trialId)
.Select(t => new { t.SeriesId, t.StudyId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames, t.WindowCenter, t.WindowWidth, t.HtmlPath ,t.SliceLocation}).ToListAsync();
series.InstanceList = instanceList.Where(t => t.SeriesId == series.Id).OrderByDescending(t => t.SliceLocation).ThenBy(t=>t.InstanceNumber).Select(k => k.Id).ToList();
@ -522,6 +524,7 @@ namespace IRaCIS.Core.Application.Services
[HttpPost]
public async Task<List<VisitStudyDTO>> GetReadingVisitStudyList(GetReadingVisitStudyListIndto indto)
{
var trialId = indto.TrialId;
var result = new List<VisitStudyDTO>();
var thisRowinfo = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId && x.StudyId != null).OrderBy(x => x.ReadingQuestionTrial.ShowOrder).ThenBy(x => x.RowIndex).Select(x => new
@ -543,7 +546,7 @@ namespace IRaCIS.Core.Application.Services
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(x => x.SeriesId).Distinct().ToList();
if (thisRowinfo.Count > 0)
{
var thisVisitTaskStudy = await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id)).Select(k => new VisitStudyDTO()
var thisVisitTaskStudy = await _repository.Where<DicomStudy>(t => thisStudyIds.Contains(t.Id) && t.TrialId==trialId).Select(k => new VisitStudyDTO()
{
InstanceCount = k.InstanceCount,
@ -557,7 +560,7 @@ namespace IRaCIS.Core.Application.Services
if (thisVisitTaskStudy != null)
{
thisVisitTaskStudy.StudyId = default(Guid);
var item = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
var item = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id) && s.TrialId == trialId).OrderBy(s => s.SeriesNumber).
ThenBy(s => s.SeriesTime)
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
@ -567,7 +570,7 @@ namespace IRaCIS.Core.Application.Services
item.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).Select(y => y.InstanceId!.Value).Distinct().ToList();
var tempInstanceList = await _repository.Where<DicomInstance>(t => item.InstanceList.Contains(t.Id)).OrderBy(t => t.InstanceNumber)
var tempInstanceList = await _repository.Where<DicomInstance>(t => item.InstanceList.Contains(t.Id) && t.TrialId == trialId).OrderBy(t => t.InstanceNumber)
.Select(t => new TempInstance
{
@ -616,7 +619,7 @@ namespace IRaCIS.Core.Application.Services
item.Description = "Key Series";
var modalityList = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
var modalityList = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id) && s.TrialId == trialId).OrderBy(s => s.SeriesNumber).
ThenBy(s => s.SeriesTime).Select(x => x.Modality).Distinct().ToListAsync(); ;
item.Modality = string.Join(",", modalityList);
thisVisitTaskStudy.SeriesList.Add(item);
@ -653,12 +656,12 @@ namespace IRaCIS.Core.Application.Services
}).ToListAsync();
var studyIds = studyList.Select(t => t.StudyId).ToList();
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId))
var instanceList = await _repository.Where<DicomInstance>(t => studyIds.Contains(t.StudyId) && t.TrialId == trialId)
.Select(t => new { t.SeriesId, t.Id, t.InstanceNumber, t.Path, t.NumberOfFrames,t.WindowCenter,t.WindowWidth,t.HtmlPath }).ToListAsync();
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => studyIds.Contains(s.StudyId) /*&& s.IsReading*/)
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => studyIds.Contains(s.StudyId) && s.TrialId == trialId /*&& s.IsReading*/)
.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).