diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index 6d593a1ed..763be10a4 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -42,6 +42,75 @@ namespace IRaCIS.Core.Application.Service _systemClinicalQuestionRepository = systemClinicalQuestionRepository; } + /// + /// 获取系统临床数据预览 + /// + /// + /// + [HttpPost] + public async Task<(List, bool)> GetSystemClinicalQuestionPreview(GetSystemClinicalQuestionPreviewDto inDto) + { + var questions = await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + var tableQuestions= await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + + var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList(); + + result.ForEach(x => + { + this.FindChildQuestion(x, questions, tableQuestions); + }); + + return (result, true); + } + + + /// + /// 获取项目临床数据预览 + /// + /// + /// + [HttpPost] + public async Task<(List, bool)> GetTrialClinicalQuestionPreview(GetTrialClinicalQuestionPreviewDto inDto) + { + var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + var tableQuestions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + + var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList(); + + result.ForEach(x => + { + this.FindChildQuestion(x, questions, tableQuestions); + }); + + return (result, true); + } + + + + /// + /// 获取子元素 + /// + /// + /// + /// + public void FindChildQuestion(ClinicalQuestionPreviewDto item, List questions, List tableQuestions) + { + item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).ToList(); + + item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).ToList(); + + item.Childrens.ForEach(x => { + this.FindChildQuestion(x, questions, tableQuestions); + }); + } #region 项目问题 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index d6bce9130..6b557fe60 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -8,6 +8,61 @@ using System.Threading.Tasks; namespace IRaCIS.Core.Application.Service.Reading.Dto { + #region 预览 + + + public class GetSystemClinicalQuestionPreviewDto + { + /// + /// 系统临床数据Id + /// + public Guid SystemClinicalId { get; set; } + } + + public class GetTrialClinicalQuestionPreviewDto + { + /// + /// 项目临床数据Id + /// + public Guid TrialClinicalId { get; set; } + } + + /// + /// 项目预览问题Dto + /// + public class ClinicalQuestionPreviewDto : TrialClinicalQuestionDto + { + /// + /// 系统临床数据Id + /// + public Guid SystemClinicalId { get; set; } + + /// + /// 子问题 + /// + public List Childrens { get; set; } = new List(); + + /// + /// 表格问题 + /// + public List TableQuestions { get; set; } = new List(); + } + + + /// + /// 系统临床数据问题 + /// + public class ClinicalTablePreviewDto : TrialClinicalTableQuestionDto + { + /// + /// 系统临床数据Id + /// + public Guid SystemClinicalId { get; set; } + } + + #endregion + + #region 外层问题 /// /// 临床问题基本信息 @@ -155,7 +210,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string CalculateQuestions { get; set; } = "[]"; } - /// /// 获取系统临床数据 /// @@ -306,6 +360,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid SystemClinicalId { get; set; } } + /// diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 2ea05fb7c..41effd2f3 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -36,6 +36,12 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id)); + + // 预览 + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); #endregion CreateMap();