Uat_Study
he 2022-11-22 13:37:26 +08:00
parent a6cebc1fd1
commit 3c4d07e162
5 changed files with 74 additions and 15 deletions

View File

@ -1112,7 +1112,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
}
public class GetCustomQuestionPreviewInDto
{
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
}
public class GetCalculateQuestionsInDto
{
[NotDefault]

View File

@ -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);

View File

@ -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>

View File

@ -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>

View File

@ -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();
});