Uat_Study
parent
a6cebc1fd1
commit
3c4d07e162
|
@ -1112,7 +1112,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class GetCustomQuestionPreviewInDto
|
||||||
|
{
|
||||||
|
[NotDefault]
|
||||||
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
}
|
||||||
public class GetCalculateQuestionsInDto
|
public class GetCalculateQuestionsInDto
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
|
|
|
@ -16,7 +16,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
Task<IResponseOutput> SubmitJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto);
|
Task<IResponseOutput> SubmitJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto);
|
||||||
|
|
||||||
|
|
||||||
|
Task<List<DicomReadingQuestionAnswer>> GetReadingQuestion(Guid trialReadingCriterionId, Guid? visitTaskId);
|
||||||
|
|
||||||
|
Task<GetReadingTableQuestionOutDto> GetReadingTableQuestion(Guid trialReadingCriterionId, Guid? taskId, List<ReadingTableQuestionAnswerInfo> tableAnswers, List<TableAnsweRowInfo> tableAnsweRowInfos);
|
||||||
|
|
||||||
Task<IResponseOutput> SubmitGlobalReadingInfo(SubmitGlobalReadingInfoInDto inDto);
|
Task<IResponseOutput> SubmitGlobalReadingInfo(SubmitGlobalReadingInfoInDto inDto);
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||||
private readonly IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository;
|
private readonly IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository;
|
||||||
private readonly IRepository<Dictionary> _dictionaryRepository;
|
private readonly IRepository<Dictionary> _dictionaryRepository;
|
||||||
|
private readonly IReadingImageTaskService _iReadingImageTaskService;
|
||||||
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
||||||
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
|
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
|
||||||
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
|
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
|
||||||
|
@ -43,6 +44,7 @@ namespace IRaCIS.Application.Services
|
||||||
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
|
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
|
||||||
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
|
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
|
||||||
IRepository<Dictionary> dictionaryRepository,
|
IRepository<Dictionary> dictionaryRepository,
|
||||||
|
IReadingImageTaskService iReadingImageTaskService,
|
||||||
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
|
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
|
||||||
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
||||||
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
|
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
|
||||||
|
@ -62,6 +64,7 @@ namespace IRaCIS.Application.Services
|
||||||
this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
|
this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
|
||||||
this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository;
|
this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository;
|
||||||
this._dictionaryRepository = dictionaryRepository;
|
this._dictionaryRepository = dictionaryRepository;
|
||||||
|
this._iReadingImageTaskService = iReadingImageTaskService;
|
||||||
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
||||||
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
|
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
|
||||||
this._readingCriterionPageRepository = readingCriterionPageRepository;
|
this._readingCriterionPageRepository = readingCriterionPageRepository;
|
||||||
|
@ -75,6 +78,29 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
#region 获取计算问题
|
#region 获取计算问题
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取自定义问题预览
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<List<DicomReadingQuestionAnswer>> GetCustomQuestionPreview(GetCustomQuestionPreviewInDto inDto)
|
||||||
|
{
|
||||||
|
return await _iReadingImageTaskService.GetReadingQuestion(inDto.TrialReadingCriterionId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取自定义表格问题预览
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<GetReadingTableQuestionOutDto> GetCustomTableQuestionPreview(GetCustomQuestionPreviewInDto inDto)
|
||||||
|
{
|
||||||
|
List<ReadingTableQuestionAnswerInfo> tableAnswers = new List<ReadingTableQuestionAnswerInfo>();
|
||||||
|
List<TableAnsweRowInfo> tableAnsweRowInfos = new List<TableAnsweRowInfo>();
|
||||||
|
return await _iReadingImageTaskService.GetReadingTableQuestion(inDto.TrialReadingCriterionId, null, tableAnswers, tableAnsweRowInfos);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取问题
|
/// 获取问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -351,15 +351,46 @@ namespace IRaCIS.Application.Services
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<(List<DicomReadingQuestionAnswer>, object)> GetDicomReadingQuestionAnswer(GetDicomReadingQuestionAnswerInDto inDto)
|
public async Task<(List<DicomReadingQuestionAnswer>, object)> GetDicomReadingQuestionAnswer(GetDicomReadingQuestionAnswerInDto inDto)
|
||||||
{
|
{
|
||||||
await AddDefaultValueToTask(inDto.VisitTaskId);
|
await AddDefaultValueToTask(inDto.VisitTaskId);
|
||||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||||
var criterionId = taskInfo.TrialReadingCriterionId;
|
var result = await GetReadingQuestion(taskInfo.TrialReadingCriterionId, taskInfo.Id);
|
||||||
|
|
||||||
|
return (result, new
|
||||||
|
{
|
||||||
|
|
||||||
|
ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取阅片外层问题
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="trialReadingCriterionId"></param>
|
||||||
|
/// <param name="visitTaskId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[NonDynamicMethod]
|
||||||
|
public async Task<List<DicomReadingQuestionAnswer>> GetReadingQuestion(Guid trialReadingCriterionId,Guid? visitTaskId)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
var criterionIdInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == trialReadingCriterionId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
|
||||||
//排除表格问题
|
//排除表格问题
|
||||||
var questions = await _readingQuestionTrialRepository.Where(x => x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == criterionId && x.Type != ReadingQestionType.Table)
|
var questions = await _readingQuestionTrialRepository
|
||||||
|
.WhereIf(criterionIdInfo.IseCRFShowInDicomReading, x=>x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type != ReadingQestionType.Table)
|
||||||
|
.WhereIf(!criterionIdInfo.IseCRFShowInDicomReading, x=>x.IsShowInDicom && x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.Type != ReadingQestionType.Table)
|
||||||
|
|
||||||
.ProjectTo<DicomReadingQuestionAnswer>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
.ProjectTo<DicomReadingQuestionAnswer>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||||
|
|
||||||
var answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ToListAsync();
|
|
||||||
|
var answers = new List<ReadingTaskQuestionAnswer>();
|
||||||
|
|
||||||
|
if (visitTaskId != null)
|
||||||
|
{
|
||||||
|
answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//排除表格问题 同时排除组问题
|
//排除表格问题 同时排除组问题
|
||||||
var groups = questions.Where(x => x.Type != ReadingQestionType.Group).Select(x => x.GroupName).ToList();
|
var groups = questions.Where(x => x.Type != ReadingQestionType.Group).Select(x => x.GroupName).ToList();
|
||||||
|
@ -371,11 +402,7 @@ namespace IRaCIS.Application.Services
|
||||||
GetDicomReadingAnswer(item, questions, answers);
|
GetDicomReadingAnswer(item, questions, answers);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (result, new
|
return result;
|
||||||
{
|
|
||||||
|
|
||||||
ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List<DicomReadingQuestionAnswer> questions, List<ReadingTaskQuestionAnswer> answers)
|
private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List<DicomReadingQuestionAnswer> questions, List<ReadingTaskQuestionAnswer> answers)
|
||||||
|
@ -479,7 +506,7 @@ namespace IRaCIS.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取表格问题及答案 只返回表格问题
|
/// 获取表格问题及答案 只返回表格问题(任务和标准)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="trialReadingCriterionId"></param>
|
/// <param name="trialReadingCriterionId"></param>
|
||||||
/// <param name="taskId"></param>
|
/// <param name="taskId"></param>
|
||||||
|
|
|
@ -257,8 +257,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||||
{
|
{
|
||||||
|
|
||||||
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).ToList();
|
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).Distinct().ToList();
|
||||||
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).Select(x => x.SeriesId).ToList();
|
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).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()
|
||||||
|
@ -287,7 +287,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
thisVisitTaskStudy.SeriesList.ForEach(x =>
|
thisVisitTaskStudy.SeriesList.ForEach(x =>
|
||||||
{
|
{
|
||||||
|
|
||||||
x.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).Select(y => y.InstanceId.Value).ToList();
|
x.InstanceList = thisRowinfo.Where(y => y.InstanceId != null).Select(y => y.InstanceId.Value).Distinct().ToList();
|
||||||
x.InstanceCount = x.InstanceList.Count();
|
x.InstanceCount = x.InstanceList.Count();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue