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
|
||||
{
|
||||
[NotDefault]
|
||||
|
|
|
@ -16,7 +16,9 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
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);
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace IRaCIS.Application.Services
|
|||
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
|
||||
private readonly IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository;
|
||||
private readonly IRepository<Dictionary> _dictionaryRepository;
|
||||
private readonly IReadingImageTaskService _iReadingImageTaskService;
|
||||
private readonly IRepository<ReadingCriterionDictionary> _readingCriterionDictionaryRepository;
|
||||
private readonly IRepository<ReadingTableQuestionTrial> _readingTableQuestionTrialRepository;
|
||||
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
|
||||
|
@ -43,6 +44,7 @@ namespace IRaCIS.Application.Services
|
|||
IRepository<ClinicalDataTrialSet> ClinicalDataTrialSetRepository,
|
||||
IRepository<ClinicalDataSystemSet> ClinicalDataSystemSetRepository,
|
||||
IRepository<Dictionary> dictionaryRepository,
|
||||
IReadingImageTaskService iReadingImageTaskService,
|
||||
IRepository<ReadingCriterionDictionary> readingCriterionDictionaryRepository,
|
||||
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
||||
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
|
||||
|
@ -62,6 +64,7 @@ namespace IRaCIS.Application.Services
|
|||
this._clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository;
|
||||
this._clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository;
|
||||
this._dictionaryRepository = dictionaryRepository;
|
||||
this._iReadingImageTaskService = iReadingImageTaskService;
|
||||
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
||||
this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository;
|
||||
this._readingCriterionPageRepository = readingCriterionPageRepository;
|
||||
|
@ -75,6 +78,29 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
#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>
|
||||
|
|
|
@ -351,15 +351,46 @@ namespace IRaCIS.Application.Services
|
|||
[HttpPost]
|
||||
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 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();
|
||||
|
||||
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();
|
||||
|
@ -371,11 +402,7 @@ namespace IRaCIS.Application.Services
|
|||
GetDicomReadingAnswer(item, questions, answers);
|
||||
}
|
||||
|
||||
return (result, new
|
||||
{
|
||||
|
||||
ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
private void GetDicomReadingAnswer(DicomReadingQuestionAnswer item, List<DicomReadingQuestionAnswer> questions, List<ReadingTaskQuestionAnswer> answers)
|
||||
|
@ -479,7 +506,7 @@ namespace IRaCIS.Application.Services
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取表格问题及答案 只返回表格问题
|
||||
/// 获取表格问题及答案 只返回表格问题(任务和标准)
|
||||
/// </summary>
|
||||
/// <param name="trialReadingCriterionId"></param>
|
||||
/// <param name="taskId"></param>
|
||||
|
|
|
@ -257,8 +257,8 @@ namespace IRaCIS.Core.Application.Services
|
|||
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
{
|
||||
|
||||
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).ToList();
|
||||
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).Select(x => x.SeriesId).ToList();
|
||||
var thisStudyIds = thisRowinfo.Select(x => x.StudyId).Distinct().ToList();
|
||||
var thisSeriesIdIds = thisRowinfo.Where(x => x.SeriesId != null).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()
|
||||
|
@ -287,7 +287,7 @@ namespace IRaCIS.Core.Application.Services
|
|||
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();
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in New Issue