获取PT CT 序列
parent
a15c91ebcb
commit
78756aa2f4
|
@ -1645,7 +1645,8 @@ namespace IRaCIS.Application.Services
|
|||
var needFilterState = new List<string>();
|
||||
|
||||
var query = _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == rowinfo.VisitTaskId && x.QuestionId == rowinfo.QuestionId && x.Id != rowinfo.Id)
|
||||
.Where(x => x.SplitOrMergeType != SplitOrMergeType.Split && x.SplitOrMergeType != SplitOrMergeType.SplitMain&&x.SplitOrMergeType!=SplitOrMergeType.Merge && x.SplitOrMergeType != SplitOrMergeType.MergeMain);
|
||||
.Where(x => x.SplitOrMergeType != SplitOrMergeType.Split && x.SplitOrMergeType != SplitOrMergeType.SplitMain
|
||||
&&x.SplitOrMergeType!=SplitOrMergeType.Merge && x.SplitOrMergeType != SplitOrMergeType.MergeMain && x.SplitOrMergeType != SplitOrMergeType.MergeMained);
|
||||
|
||||
switch (taskInfo.TrialReadingCriterion.CriterionType)
|
||||
{
|
||||
|
@ -1855,12 +1856,21 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
IsDeleted = true
|
||||
});
|
||||
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo()
|
||||
if (!(await _readingTableAnswerRowInfoRepository.AnyAsync(x => x.SplitRowId == deleteRowInfo.SplitRowId && x.Id != deleteRowInfo.Id)))
|
||||
{
|
||||
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == deleteRowInfo.SplitRowId, x => new ReadingTableAnswerRowInfo()
|
||||
{
|
||||
SplitOrMergeType = null,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
IsDeleted = true
|
||||
});
|
||||
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
||||
await _readingTableAnswerRowInfoRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.RowId, x => new ReadingTableAnswerRowInfo()
|
||||
{
|
||||
|
||||
IsDeleted = true
|
||||
});
|
||||
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
||||
|
||||
|
||||
if (inDto.IsNeedSort)
|
||||
|
|
|
@ -203,6 +203,22 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
}
|
||||
|
||||
public class GetPTAndCtSeriesOutDto
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
public Guid CTSeriesId { get; set; }
|
||||
public Guid PTSeriesId { get; set; }
|
||||
|
||||
public DicomSeriesDTO? CTSeries { get; set; }
|
||||
|
||||
public DicomSeriesDTO? PTSeries { get; set; }
|
||||
}
|
||||
|
||||
public class GetPTAndCtSeriesInDto
|
||||
{
|
||||
public List<Guid> VisitTaskIds { get; set; }
|
||||
}
|
||||
|
||||
public class VisitStudyDTO
|
||||
{
|
||||
public Guid StudyId { get; set; }
|
||||
|
|
|
@ -10,6 +10,7 @@ using IRaCIS.Core.Infrastructure;
|
|||
using IRaCIS.Core.Application.Auth;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using MassTransit;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
|
||||
namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
|
@ -321,11 +322,104 @@ namespace IRaCIS.Core.Application.Services
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的
|
||||
/// 获取PTAndCtSeries
|
||||
/// </summary>
|
||||
/// <param name="indto"></param>
|
||||
/// <param name="inDto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<GetPTAndCtSeriesOutDto>> GetPTAndCtSeries(GetPTAndCtSeriesInDto inDto)
|
||||
{
|
||||
var visitSeriesList=await _readingTableAnswerRowInfoRepository.Where(x => inDto.VisitTaskIds.Contains(x.VisitTaskId))
|
||||
.Where(x => x.PTSeriesId != null && x.CTSeriesId != null)
|
||||
.Select(x => new
|
||||
{
|
||||
x.PTSeriesId,
|
||||
x.CTSeriesId,
|
||||
x.VisitTaskId,
|
||||
x.VisitTask.VisitTaskNum,
|
||||
x.UpdateTime
|
||||
}).ToListAsync();
|
||||
|
||||
List<GetPTAndCtSeriesOutDto> result = new List<GetPTAndCtSeriesOutDto>();
|
||||
|
||||
List<Guid> seriesIds = new List<Guid>();
|
||||
|
||||
|
||||
foreach (var item in inDto.VisitTaskIds)
|
||||
{
|
||||
var visitSeries = visitSeriesList.Where(x => x.VisitTaskId == item).OrderByDescending(x => x.UpdateTime).FirstOrDefault();
|
||||
if (visitSeries != null)
|
||||
{
|
||||
result.Add(new GetPTAndCtSeriesOutDto()
|
||||
{
|
||||
PTSeriesId = visitSeries.PTSeriesId!.Value,
|
||||
CTSeriesId = visitSeries.CTSeriesId!.Value,
|
||||
});
|
||||
|
||||
seriesIds.Add(visitSeries.PTSeriesId!.Value);
|
||||
seriesIds.Add(visitSeries.CTSeriesId!.Value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => seriesIds.Contains(s.Id)).ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
var instanceList = await _repository.Where<DicomInstance>(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();
|
||||
|
||||
seriesLists.ForEach(series =>
|
||||
{
|
||||
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<string>();
|
||||
|
||||
for (int i = 1; i <= u.NumberOfFrames; i++)
|
||||
{
|
||||
pathList.Add(u.Path + "?frame=" + (i - 1));
|
||||
}
|
||||
return pathList;
|
||||
}
|
||||
else
|
||||
{
|
||||
return new List<string> { u.Path };
|
||||
|
||||
}
|
||||
})
|
||||
.ToList();
|
||||
|
||||
series.WindowWidth = instanceList.FirstOrDefault()!.WindowWidth;
|
||||
series.WindowCenter = instanceList.FirstOrDefault()!.WindowCenter;
|
||||
});
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取访视下的Dicom 检查信息 分所有的, 阅片的 不阅片 isReading : 0 查询所有 1 查询仅仅阅片的
|
||||
/// </summary>
|
||||
/// <param name="indto"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<List<VisitStudyDTO>> GetReadingVisitStudyList(GetReadingVisitStudyListIndto indto)
|
||||
{
|
||||
var result = new List<VisitStudyDTO>();
|
||||
|
|
Loading…
Reference in New Issue