diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index ff56af219..345dd2a67 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -42,12 +42,56 @@ namespace IRaCIS.Core.Application.Service _systemClinicalQuestionRepository = systemClinicalQuestionRepository; } - /// - /// 获取系统临床数据预览 - /// - /// - /// - [HttpPost] + /// + /// 获取计算问题 + /// + /// + /// + [HttpPost] + public async Task> GetClinicalCalculateQuestions(GetClinicalCalculateQuestionsInDto inDto) + { + var result = await _trialClinicalQuestionRepository + + .Where(x => x.TrialClinicalId == inDto.TrialClinicalId) + .WhereIf(!inDto.ClinicalQuestionType.IsNullOrEmpty(), x => x.ClinicalQuestionType == inDto.ClinicalQuestionType) + .OrderBy(x => x.ShowOrder) + .Select(x => new GetClinicalCalculateQuestionsOutDto + () + { + QuestionId = x.Id, + QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us) + + }).ToListAsync(); + + var tablequestion = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.ClinicalTableQuestionType == "number").Select(x => + new + { + TableQuestionId = x.Id, + QuestionId= x.QuestionId, + QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us) + }).ToListAsync(); + + + result.ForEach(x => + { + x.TableQuestions = tablequestion.Where(y => x.QuestionId == y.QuestionId).Select(y => new CalculateQuestion() + { + + QuestionId = y.QuestionId, + QuestionName = y.QuestionName + + }).ToList(); + }); + + return result; + } + + /// + /// 获取系统临床数据预览 + /// + /// + /// + [HttpPost] public async Task<(List, bool)> GetSystemClinicalQuestionPreview(GetSystemClinicalQuestionPreviewDto inDto) { var questions = await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index 9474d06c5..ad8ab1cb9 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -10,10 +10,37 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Application.Service.Reading.Dto { - #region 预览 - public class GetSystemClinicalQuestionPreviewDto + #region 获取计算问题 + public class GetClinicalCalculateQuestionsOutDto + { + public Guid QuestionId { get; set; } + + public string QuestionName { get; set; } + + public List TableQuestions { get; set; } + } + + + public class GetClinicalCalculateQuestionsInDto + { + /// + /// 项目临床数据Id + /// + public Guid TrialClinicalId { get; set; } + + /// + /// 临床问题类型(分组,单选。) + /// + public string ClinicalQuestionType { get; set; } = string.Empty; + } + #endregion + + #region 预览 + + + public class GetSystemClinicalQuestionPreviewDto { /// /// 系统临床数据Id