Uat_Study
he 2022-12-19 13:06:30 +08:00 committed by {872297557@qq.com}
parent 067fd8f49d
commit 1ff6f32e8d
3 changed files with 56 additions and 6 deletions

View File

@ -38,6 +38,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
private readonly IRepository<ReadModule> _readModuleRepository;
private readonly IRepository<DicomInstance> _dicomInstanceRepository;
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
@ -71,6 +72,7 @@ namespace IRaCIS.Application.Services
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
IRepository<ReadModule> readModuleRepository,
IRepository<DicomInstance> dicomInstanceRepository,
IMemoryCache cache,
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
IRepository<TumorAssessment> tumorAssessmentRepository,
@ -102,6 +104,7 @@ namespace IRaCIS.Application.Services
this._readingCriterionPageRepository = readingCriterionPageRepository;
this._readingJudgeInfoRepository = readingJudgeInfoRepository;
this._readModuleRepository = readModuleRepository;
this._dicomInstanceRepository = dicomInstanceRepository;
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
this._tumorAssessmentRepository = tumorAssessmentRepository;
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
@ -1063,6 +1066,14 @@ namespace IRaCIS.Application.Services
SubmitTableQuestionOutDto result = new SubmitTableQuestionOutDto();
await VerifyTaskIsSign(inDto.VisitTaskId);
if (inDto.InstanceId != null)
{
if (!(await _dicomInstanceRepository.AnyAsync(x => x.Id == inDto.InstanceId && x.SeriesId == inDto.SeriesId)))
{
throw new BusinessValidationFailedException($"InstanceId和SeriesId不对应");
}
}
var questionInfo = await _readingQuestionTrialRepository.Where(x => x.Id == inDto.QuestionId).FirstNotNullAsync();
var criterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync();
var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == criterionId).FirstNotNullAsync();

View File

@ -189,6 +189,20 @@ namespace IRaCIS.Core.Application.Contracts
public Guid? VisitTaskId { get; set; }
}
public class TempInstance
{
public Guid Id { get; set; }
public string Path { get; set; }
public int NumberOfFrames { get; set; }
public int InstanceNumber { get; set; }
public int ShowOrder { get; set; }
public decimal RowIndex { get; set; }
}
public class VisitStudyDTO
{
public Guid StudyId { get; set; }

View File

@ -284,7 +284,14 @@ namespace IRaCIS.Core.Application.Services
{
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).ToListAsync();
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
{
x.ReadingQuestionTrial.ShowOrder,
x.RowIndex,
x.SeriesId,
x.StudyId,
x.InstanceId,
}).ToListAsync();
var taskInfo = await _visitTaskRepository.Where(x => x.Id == indto.VisitTaskId).FirstNotNullAsync();
@ -292,8 +299,8 @@ namespace IRaCIS.Core.Application.Services
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
{
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).Distinct().ToList();
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).Select(x => x.SeriesId).Distinct().ToList();
var thisStudyIds = thisRowinfo.OrderBy(x=>x.ShowOrder).ThenBy(x=>x.RowIndex).Select(x => x.StudyId).Distinct().ToList();
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()
@ -318,13 +325,31 @@ namespace IRaCIS.Core.Application.Services
{
item.SeriesInstanceUid = string.Empty;
item.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).Select(y => y.InstanceId.Value).Distinct().ToList();
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)
.Select(t => new { t.Path, t.NumberOfFrames,t.InstanceNumber }).ToListAsync();
.Select(t => new TempInstance {
Id=t.Id,
Path=t.Path,
NumberOfFrames=t.NumberOfFrames,
InstanceNumber = t.InstanceNumber }).ToListAsync();
item.InstancePathList = tempInstanceList.OrderBy(t => t.InstanceNumber).SelectMany(u =>
tempInstanceList.ForEach(x =>
{
var item = thisRowinfo.FirstOrDefault(y => y.InstanceId == x.Id);
if (item != null)
{
x.ShowOrder = item.ShowOrder;
x.RowIndex = item.RowIndex;
}
});
item.InstancePathList = tempInstanceList.OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex).SelectMany(u =>
{
if (u.NumberOfFrames > 1)