//-------------------------------------------------------------------- // 此代码由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; namespace IRaCIS.Core.Application.Service { /// /// 临床数据问题 /// [ApiExplorerSettings(GroupName = "Reading")] public class ClinicalQuestionService : BaseService { private readonly IRepository _trialClinicalQuestionRepository; private readonly IRepository _systemClinicalQuestionRepository; private readonly IRepository _systemClinicalTableQuestionRepository; private readonly IRepository _trialClinicalTableQuestionRepository; public ClinicalQuestionService(IRepository trialClinicalQuestionRepository, IRepository systemClinicalTableQuestionRepository, IRepository trialClinicalTableQuestionRepository, IRepository systemClinicalQuestionRepository ) { _systemClinicalTableQuestionRepository = systemClinicalTableQuestionRepository; _trialClinicalQuestionRepository = trialClinicalQuestionRepository; _trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository; _systemClinicalQuestionRepository = systemClinicalQuestionRepository; } #region 项目问题 /// /// 获取项目临床问题 /// /// /// [HttpPost] public async Task> GetTrialClinicalQuestionList(TrialClinicalQuestionQuery inQuery) { var trialClinicalQuestionQueryable = _trialClinicalQuestionRepository .WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName)) .ProjectTo(_mapper.ConfigurationProvider); var pageList = await trialClinicalQuestionQueryable .ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TrialClinicalQuestion.ShowOrder) : inQuery.SortField, inQuery.Asc); return pageList; } /// /// 新增或者修改项目临床问题 /// /// /// [HttpPost] public async Task AddOrUpdateTrialClinicalQuestion(TrialClinicalQuestionDto inDto) { var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除项目临床数据问题 /// /// /// [HttpPost("{id:guid}")] public async Task DeleteTrialClinicalQuestion(Guid id) { var success = await _trialClinicalQuestionRepository.DeleteFromQueryAsync(t => t.Id == id, true); return ResponseOutput.Ok(); } /// /// 获取项目问题分组 /// /// /// [HttpPost] public async Task> GetTrialClinicalGroupQuestionList(GetTrialGroupDto inDto) { return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId&&x.ClinicalQuestionType== "group") .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } /// /// 获取项目标准其他问题 /// /// /// [HttpPost] public async Task> GetTrialClinicalOtherQuestionList(GetTrialGroupDto inDto) { var types = new List() { "select","radio" }; return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && types.Contains( x.ClinicalQuestionType)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } #endregion #region 系统问题 /// /// 获取系统临床问题 /// /// /// [HttpPost] public async Task> GetSystemClinicalQuestionList(SystemClinicalQuestionQuery inQuery) { var systemClinicalQuestionQueryable = _systemClinicalQuestionRepository .WhereIf(!inQuery.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inQuery.QuestionName) || x.QuestionEnName.Contains(inQuery.QuestionName)) .ProjectTo(_mapper.ConfigurationProvider); var pageList = await systemClinicalQuestionQueryable .ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(SystemClinicalQuestion.ShowOrder) : inQuery.SortField, inQuery.Asc); return pageList; } /// /// 新增或者修改系统临床问题 /// /// /// [HttpPost] public async Task AddOrUpdateSystemClinicalQuestion(SystemClinicalQuestionDto inDto) { var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除系统临床数据问题 /// /// /// [HttpPost("{id:guid}")] public async Task DeleteSystemClinicalQuestion(Guid id) { var success = await _systemClinicalQuestionRepository.DeleteFromQueryAsync(t => t.Id == id, true); return ResponseOutput.Ok(); } /// /// 获取系统问题分组 /// /// /// [HttpPost] public async Task> GetSystemClinicalGroupQuestionList(GetSystemGroupDto inDto) { return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionType =="group") .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } /// /// 获取系统其他问题 /// /// /// [HttpPost] public async Task> GetSystemClinicalOtherQuestionList(GetSystemGroupDto inDto) { var types = new List() { "select","radio" }; return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && types.Contains(x.ClinicalQuestionType)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } #endregion #region 系统表格问题 /// /// 获取系统表格问题 /// /// /// [HttpPost] public async Task> GetSystemClinicalTableQuestionList(SystemClinicalTableQuestionQuery inQuery) { var systemClinicalTableQuestionQueryable = this._systemClinicalTableQuestionRepository .Where(x => x.QuestionId == inQuery.QuestionId) .ProjectTo(_mapper.ConfigurationProvider); var pageList = await systemClinicalTableQuestionQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(SystemClinicalTableQuestion.ShowOrder) : inQuery.SortField, inQuery.Asc); return pageList; } /// /// 新增或修改系统表格问题 /// /// /// [HttpPost] public async Task AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto) { var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除系统表格问题 /// /// /// [HttpPost("{id:guid}")] public async Task DeleteSystemClinicalTableQuestion(Guid id) { var success = await _systemClinicalTableQuestionRepository.DeleteFromQueryAsync(t => t.Id == id, true); return ResponseOutput.Ok(); } #endregion #region 项目表格问题 /// /// 获取项目表格问题 /// /// /// [HttpPost] public async Task> GetTrialClinicalTableQuestionList(TrialClinicalTableQuestionQuery inQuery) { var trialClinicalTableQuestionQueryable = this._trialClinicalTableQuestionRepository .Where(x => x.QuestionId == inQuery.QuestionId) .ProjectTo(_mapper.ConfigurationProvider); var pageList = await trialClinicalTableQuestionQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TrialClinicalTableQuestion.ShowOrder) : inQuery.SortField, inQuery.Asc); return pageList; } /// /// 新增或修改项目表格问题 /// /// /// [HttpPost] public async Task AddOrUpdateTrialClinicalTableQuestion(TrialClinicalTableQuestionDto inDto) { var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除项目表格问题 /// /// /// [HttpPost("{id:guid}")] public async Task DeleteTrialClinicalTableQuestion(Guid id) { var success = await _trialClinicalTableQuestionRepository.DeleteFromQueryAsync(t => t.Id == id, true); return ResponseOutput.Ok(); } #endregion #region 同步系统问题 public async Task SynchronizationQuestion(List inDto) { var trialClinicalId = inDto.Select(x => x.TrialClinicalId).ToList(); var systemClinicalId = inDto.Select(x => x.SystemClinicalId).ToList(); var questionRelation = _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary( x => x.SystemClinicalQuestionId ?? default(Guid), x => x.Id ); var tableQuestionRelation = _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary( x => x.SystemTableQuestionId ?? default(Guid), x => x.Id ); //var } #endregion } }