Uat_Study
parent
067fd8f49d
commit
1ff6f32e8d
|
@ -38,6 +38,7 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
|
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
|
||||||
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
|
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
|
||||||
private readonly IRepository<ReadModule> _readModuleRepository;
|
private readonly IRepository<ReadModule> _readModuleRepository;
|
||||||
|
private readonly IRepository<DicomInstance> _dicomInstanceRepository;
|
||||||
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
||||||
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
|
private readonly IRepository<TumorAssessment> _tumorAssessmentRepository;
|
||||||
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
private readonly IRepository<ReadingTableAnswerRowInfo> _readingTableAnswerRowInfoRepository;
|
||||||
|
@ -71,6 +72,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
|
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
|
||||||
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
|
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
|
IRepository<DicomInstance> dicomInstanceRepository,
|
||||||
IMemoryCache cache,
|
IMemoryCache cache,
|
||||||
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
|
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
|
||||||
IRepository<TumorAssessment> tumorAssessmentRepository,
|
IRepository<TumorAssessment> tumorAssessmentRepository,
|
||||||
|
@ -102,6 +104,7 @@ namespace IRaCIS.Application.Services
|
||||||
this._readingCriterionPageRepository = readingCriterionPageRepository;
|
this._readingCriterionPageRepository = readingCriterionPageRepository;
|
||||||
this._readingJudgeInfoRepository = readingJudgeInfoRepository;
|
this._readingJudgeInfoRepository = readingJudgeInfoRepository;
|
||||||
this._readModuleRepository = readModuleRepository;
|
this._readModuleRepository = readModuleRepository;
|
||||||
|
this._dicomInstanceRepository = dicomInstanceRepository;
|
||||||
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
||||||
this._tumorAssessmentRepository = tumorAssessmentRepository;
|
this._tumorAssessmentRepository = tumorAssessmentRepository;
|
||||||
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository;
|
||||||
|
@ -1063,6 +1066,14 @@ namespace IRaCIS.Application.Services
|
||||||
SubmitTableQuestionOutDto result = new SubmitTableQuestionOutDto();
|
SubmitTableQuestionOutDto result = new SubmitTableQuestionOutDto();
|
||||||
|
|
||||||
await VerifyTaskIsSign(inDto.VisitTaskId);
|
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 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 criterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync();
|
||||||
var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == criterionId).FirstNotNullAsync();
|
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 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 class VisitStudyDTO
|
||||||
{
|
{
|
||||||
public Guid StudyId { get; set; }
|
public Guid StudyId { get; set; }
|
||||||
|
|
|
@ -284,7 +284,14 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
var result = new List<VisitStudyDTO>();
|
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();
|
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)
|
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||||
{
|
{
|
||||||
|
|
||||||
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).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).Select(x => x.SeriesId).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)
|
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)).Select(k => new VisitStudyDTO()
|
||||||
|
@ -318,13 +325,31 @@ namespace IRaCIS.Core.Application.Services
|
||||||
{
|
{
|
||||||
item.SeriesInstanceUid = string.Empty;
|
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)
|
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)
|
if (u.NumberOfFrames > 1)
|
||||||
|
|
Loading…
Reference in New Issue