//-------------------------------------------------------------------- // 此代码由T4模板自动生成 byzhouhang 20210918 // 生成时间 2023-06-15 15:06:06 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- using Microsoft.AspNetCore.Mvc; using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Domain.Share; using MassTransit; namespace IRaCIS.Core.Application.Service { /// /// 临床答案 /// [ApiExplorerSettings(GroupName = "Reading")] public class ClinicalAnswerService : BaseService { private readonly IRepository _trialClinicalQuestionRepository; private readonly IRepository _systemClinicalQuestionRepository; private readonly IRepository _systemClinicalTableQuestionRepository; private readonly IRepository _trialClinicalTableQuestionRepository; private readonly IRepository _clinicalDataTrialSetRepository; private readonly IRepository _clinicalFormRepository; private readonly IRepository _clinicalQuestionAnswerRepository; private readonly IRepository _clinicalTableAnswerRepository; private readonly IClinicalQuestionService _iClinicalQuestionService; public ClinicalAnswerService(IRepository trialClinicalQuestionRepository, IRepository systemClinicalTableQuestionRepository, IRepository trialClinicalTableQuestionRepository, IRepository clinicalFormRepository, IRepository clinicalTableAnswerRepository, IRepository clinicalQuestionAnswerRepository, IClinicalQuestionService iClinicalQuestionService, IRepository clinicalDataTrialSetRepository, IRepository systemClinicalQuestionRepository ) { _clinicalQuestionAnswerRepository = clinicalQuestionAnswerRepository; _systemClinicalTableQuestionRepository = systemClinicalTableQuestionRepository; _trialClinicalQuestionRepository = trialClinicalQuestionRepository; _trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository; _systemClinicalQuestionRepository = systemClinicalQuestionRepository; _clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; _clinicalFormRepository = clinicalFormRepository; _clinicalTableAnswerRepository = clinicalTableAnswerRepository; _iClinicalQuestionService = iClinicalQuestionService; } /// /// 获取CRC受试者临床数据 /// /// /// [HttpPost] public async Task> GetCRCSubjectClinicalList(GetCRCSubjectClinicalInDto inDto) { var result =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId).OrderBy(x=>x.ClinicalDataSetName).Select(x => new GetCRCSubjectClinicalOutDto() { ClinicalDataTrialSetId = x.Id, ClinicalDataSetName = x.ClinicalDataSetName.LanguageName(x.ClinicalDataSetEnName, _userInfo.IsEn_Us), }).ToListAsync(); var clinicalData = await _clinicalFormRepository.Where(x => x.SubjectId == inDto.TrialId).ToListAsync(); result.ForEach(x => { x.ClinicalCount = clinicalData.Where(y => y.ClinicalDataTrialSetId == x.ClinicalDataTrialSetId).Count(); }); return result; } /// /// 获取表单列表 /// /// /// [HttpPost] public async Task GetClinicalQuestionFormList(GetClinicalQuestionAnswerListInDto inDto) { var result = new GetClinicalQuestionAnswerListOutDto(); result.AnswerList = new List>(); result.QuestionList=await _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inDto.ClinicalDataTrialSetId &&x.ClinicalQuestionType!= ReadingQestionType.Group && x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.ShowOrder) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var answers = await _clinicalQuestionAnswerRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId) .Select(x => new { x.ClinicalFormId, x.ClinicalForm.CheckDate, x.QuestionId, x.Answer }) .ToListAsync(); var ClinicalFormIds = answers.OrderBy(x=>x.CheckDate).Select(x => x.ClinicalFormId).Distinct().ToList(); ClinicalFormIds.ForEach(x => { var dic = answers.Where(y => y.ClinicalFormId == x).ToDictionary(x => x.QuestionId.ToString(), x => x.Answer); dic.Add("clinicalFormId", x.ToString()); result.AnswerList.Add(dic); }); return result; } /// /// 获取临床数据表单问题 /// /// /// public async Task GetClinicalFormInfo(GetClinicalFormInfoInDto inDto) { var formInfo = await _clinicalFormRepository.Where(x => x.Id == inDto.ClinicalFormId).FirstNotNullAsync(); var questionAnswer = await _clinicalQuestionAnswerRepository.Where(x => x.ClinicalFormId == inDto.ClinicalFormId).Select(x => new ClinicalFormQuestionAnswer { QuestionId = x.QuestionId, Answer = x.Answer }).ToListAsync(); var tableAnswer = await _clinicalTableAnswerRepository.Where(x => x.ClinicalFormId == inDto.ClinicalFormId).Select(x => new ClinicalFormTableQuestionAnswer { TableQuestionId = x.TableQuestionId, Answer = x.Answer, QuestionId = x.QuestionId, RowIndex = x.ClinicalAnswerRowInfo.RowIndex }).ToListAsync(); var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var tableQuestions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == formInfo.ClinicalDataTrialSetId) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList(); result.ForEach(x => { _iClinicalQuestionService.FindChildQuestion(x, questions, tableQuestions, questionAnswer, tableAnswer); }); return new GetClinicalFormInfoOutDto() { Question = result }; } /// /// 提交临床数据表单 /// /// /// public async Task SubmitClinicalForm(SubmitClinicalFormInDto inDto) { } } }