Uat_Study
parent
067fd8f49d
commit
1ff6f32e8d
|
@ -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();
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue