From e3541d78ce431f2e6c80f0a0df95b661e0e54b9a Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 19 Jun 2023 15:45:29 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/ShortcutKey/ShortcutKeyService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ShortcutKey/ShortcutKeyService.cs b/IRaCIS.Core.Application/Service/Reading/ShortcutKey/ShortcutKeyService.cs index dc1592d23..6b484c41e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ShortcutKey/ShortcutKeyService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ShortcutKey/ShortcutKeyService.cs @@ -64,7 +64,7 @@ namespace IRaCIS.Core.Application.Service AltKey = isnull ? false : key.AltKey, CtrlKey = isnull ? false : key.CtrlKey, MetaKey = isnull ? false : key.MetaKey, - ShiftKey = isnull ? false : key.ShiftKey, + ShiftKey = isnull && int.Parse(x.Code) == 11 ? true : isnull ? false : key.ShiftKey, Text = isnull ? defaultkey.Text : key.Text, Code = isnull ? defaultkey.Code : key.Code, }); From 1b443af1231467f109a1ffb277a26ccf34ac668b Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 19 Jun 2023 16:19:15 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClinicalData/ClinicalQuestionService.cs | 22 +++++++++---------- IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 1 + 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index 316b1c952..519757da8 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -15,11 +15,11 @@ namespace IRaCIS.Core.Application.Service /// /// 临床数据问题 /// - [ ApiExplorerSettings(GroupName = "Reading")] - public class ClinicalQuestionService: BaseService + [ApiExplorerSettings(GroupName = "Reading")] + public class ClinicalQuestionService : BaseService { - private readonly IRepository _trialClinicalQuestionRepository; + private readonly IRepository _trialClinicalQuestionRepository; private readonly IRepository _systemClinicalQuestionRepository; @@ -33,11 +33,11 @@ namespace IRaCIS.Core.Application.Service IRepository trialClinicalTableQuestionRepository, IRepository systemClinicalQuestionRepository ) - { + { _systemClinicalTableQuestionRepository = systemClinicalTableQuestionRepository; _trialClinicalQuestionRepository = trialClinicalQuestionRepository; _trialClinicalTableQuestionRepository = trialClinicalTableQuestionRepository; - _systemClinicalQuestionRepository = systemClinicalQuestionRepository; + _systemClinicalQuestionRepository = systemClinicalQuestionRepository; } @@ -52,8 +52,8 @@ namespace IRaCIS.Core.Application.Service public async Task> GetTrialClinicalQuestionList(TrialClinicalQuestionQuery inQuery) { - var trialClinicalQuestionQueryable =_trialClinicalQuestionRepository - .WhereIf(!inQuery.QuestionName.IsNullOrEmpty(),x=>x.QuestionName.Contains(inQuery.QuestionName)||x.QuestionEnName.Contains(inQuery.QuestionName)) + 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, @@ -95,7 +95,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetTrialClinicalGroupQuestionList(GetTrialGroupDto inDto) { - return await this._trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId== inDto.TrialClinicalId) + return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } @@ -175,7 +175,7 @@ namespace IRaCIS.Core.Application.Service { var systemClinicalTableQuestionQueryable = this._systemClinicalTableQuestionRepository - .Where(x=>x.QuestionId==inQuery.QuestionId) + .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, @@ -193,7 +193,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto) { - + var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); @@ -265,4 +265,4 @@ namespace IRaCIS.Core.Application.Service #endregion } -} +} diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 975ff7279..64b2ce88a 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -21,6 +21,7 @@ namespace IRaCIS.Core.Domain.Share /// public enum ClinicalTableQuestionMark { + Test=1, } /// From 6987f4be838543f57750b376b7fa6c87329228e6 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Mon, 19 Jun 2023 16:24:47 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/ClinicalData/ClinicalQuestionService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index 519757da8..b07e79eb1 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application.Service /// /// /// - [HttpDelete("{id:guid}")] + [HttpPost("{id:guid}")] public async Task DeleteSystemClinicalTableQuestion(Guid id) { var success = await _systemClinicalTableQuestionRepository.DeleteFromQueryAsync(t => t.Id == id, true); @@ -256,7 +256,7 @@ namespace IRaCIS.Core.Application.Service /// /// /// - [HttpDelete("{id:guid}")] + [HttpPost("{id:guid}")] public async Task DeleteTrialClinicalTableQuestion(Guid id) { var success = await _trialClinicalTableQuestionRepository.DeleteFromQueryAsync(t => t.Id == id, true); From d34bf1ee7d3af29ca34e1ec4c7d1a8b72c63f1ae Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 20 Jun 2023 10:13:34 +0800 Subject: [PATCH 04/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClinicalData/ClinicalQuestionService.cs | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index b07e79eb1..94eb0108a 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -9,6 +9,7 @@ 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 { @@ -95,10 +96,22 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetTrialClinicalGroupQuestionList(GetTrialGroupDto inDto) { - return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId) + return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId&&x.ClinicalQuestionTypeEnum== ClinicalQuestionType.Group) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } + /// + /// 获取项目标准其他问题 + /// + /// + /// + [HttpPost] + public async Task> GetTrialClinicalOtherQuestionList(GetTrialGroupDto inDto) + { + return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.ClinicalQuestionTypeEnum == ClinicalQuestionType.Select) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + } + #endregion @@ -158,9 +171,24 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetSystemClinicalGroupQuestionList(GetSystemGroupDto inDto) { - return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId) + return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionTypeEnum == ClinicalQuestionType.Group) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } + + + /// + /// 获取系统其他问题 + /// + /// + /// + [HttpPost] + public async Task> GetSystemClinicalOtherQuestionList(GetSystemGroupDto inDto) + { + return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionTypeEnum == ClinicalQuestionType.Select) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + } + + #endregion #region 系统表格问题 From eef042b46924ce85a54cca6143af312bfad30f14 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 20 Jun 2023 13:17:36 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClinicalData/ClinicalQuestionService.cs | 42 +++++++++++++++++-- .../Reading/Dto/ClinicalQuestionDto.cs | 25 +++++++++-- .../Service/Reading/_MapConfig.cs | 7 ++++ .../SystemClinicalQuestion.cs | 2 +- .../SystemClinicalTableQuestion.cs | 2 +- .../ClinicalQuestion/TrialClinicalQuestion.cs | 2 +- .../TrialClinicalTableQuestion.cs | 7 +++- 7 files changed, 75 insertions(+), 12 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index 94eb0108a..3a408f938 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -96,7 +96,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetTrialClinicalGroupQuestionList(GetTrialGroupDto inDto) { - return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId&&x.ClinicalQuestionTypeEnum== ClinicalQuestionType.Group) + return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId&&x.ClinicalQuestionType== "group") .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } @@ -108,7 +108,11 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetTrialClinicalOtherQuestionList(GetTrialGroupDto inDto) { - return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.ClinicalQuestionTypeEnum == ClinicalQuestionType.Select) + var types = new List() + { + "select","radio" + }; + return await this._trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && types.Contains( x.ClinicalQuestionType)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } @@ -171,7 +175,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetSystemClinicalGroupQuestionList(GetSystemGroupDto inDto) { - return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionTypeEnum == ClinicalQuestionType.Group) + return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionType =="group") .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } @@ -184,7 +188,11 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetSystemClinicalOtherQuestionList(GetSystemGroupDto inDto) { - return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.ClinicalQuestionTypeEnum == ClinicalQuestionType.Select) + var types = new List() + { + "select","radio" + }; + return await this._systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && types.Contains(x.ClinicalQuestionType)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } @@ -292,5 +300,31 @@ namespace IRaCIS.Core.Application.Service } #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 + } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index bc469e571..9c5cc15f5 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -32,7 +32,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 临床问题类型(分组,单选。) /// - public ClinicalQuestionType ClinicalQuestionTypeEnum { get; set; } + public string ClinicalQuestionType { get; set; } /// /// 问题标识 @@ -192,7 +192,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 临床问题类型(分组,单选。) /// - public ClinicalTableQuestionType ClinicalTableQuestionTypeEnum { get; set; } + public string ClinicalTableQuestionType { get; set; } /// /// 问题标识 @@ -314,8 +314,25 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { } - - #endregion + + #region 同步临床数据 + + public class SynchronizationQuestionDto + { + /// + /// 系统临床数据Id + /// + public Guid SystemClinicalId { get; set; } + + + + /// + /// 项目临床数据Id + /// + public Guid TrialClinicalId { get; set; } + } + + #endregion } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index d1c6e3868..2ea05fb7c 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -29,6 +29,13 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap(); + + CreateMap() + .ForMember(d => d.SystemClinicalQuestionId, u => u.MapFrom(s => s.Id)); + + CreateMap() + .ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id)); + #endregion CreateMap(); diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs index 50e7e5fce..c55251892 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs @@ -35,7 +35,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 临床问题类型(分组,单选。) /// - public ClinicalQuestionType ClinicalQuestionTypeEnum { get; set; } + public string ClinicalQuestionType { get; set; } /// /// 问题标识 diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs index 8a7eccaed..2719cfcc3 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs @@ -33,7 +33,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 临床问题类型(分组,单选。) /// - public ClinicalTableQuestionType ClinicalTableQuestionTypeEnum { get; set; } + public string ClinicalTableQuestionType { get; set; } /// /// 问题标识 diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs index 81f1e4da6..20e436b36 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs @@ -35,7 +35,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 临床问题类型(分组,单选。) /// - public ClinicalQuestionType ClinicalQuestionTypeEnum { get; set; } + public string ClinicalQuestionType { get; set; } /// /// 问题标识 diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs index 129dc32a5..73a12f283 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs @@ -33,7 +33,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 临床问题类型(分组,单选。) /// - public ClinicalTableQuestionType ClinicalTableQuestionTypeEnum { get; set; } + public string ClinicalTableQuestionType { get; set; } /// /// 问题标识 @@ -85,6 +85,11 @@ namespace IRaCIS.Core.Domain.Models /// public Guid QuestionId { get; set; } + /// + /// 系统表格问题Id + /// + public Guid? SystemTableQuestionId { get; set; } + /// /// 自定义计算标记 /// From fbc639030a2baebf873da6ac838d36fdf8f9e3e2 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 20 Jun 2023 15:46:48 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClinicalData/ClinicalDataSetService.cs | 16 ++- .../ClinicalData/ClinicalQuestionService.cs | 117 ++++++++++++++++-- .../Reading/Dto/ClinicalQuestionDto.cs | 13 ++ .../Interface/IClinicalQuestionService.cs | 25 ++++ .../ReadingQuestionService.cs | 2 +- .../ClinicalData/ClinicalDataSystemSet.cs | 13 +- .../ClinicalData/ClinicalDataTrialSet.cs | 6 + 7 files changed, 173 insertions(+), 19 deletions(-) create mode 100644 IRaCIS.Core.Application/Service/Reading/Interface/IClinicalQuestionService.cs diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index b1bc46252..60a5e7fb4 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -2,6 +2,7 @@ using IRaCIS.Core.Application.Service.Reading.Dto; using MassTransit; using IRaCIS.Core.Domain.Models; +using IRaCIS.Core.Application.Interfaces; namespace IRaCIS.Application.Services { @@ -11,7 +12,7 @@ namespace IRaCIS.Application.Services [ApiExplorerSettings(GroupName = "Reading")] public class ClinicalDataSetService : BaseService { - + public IClinicalQuestionService _iClinicalQuestionService; public IRepository _subjectVisitRepository; private readonly IRepository _clinicalDataTrialSetRepository; @@ -22,7 +23,7 @@ namespace IRaCIS.Application.Services public ClinicalDataSetService(IRepository subjectVisitRepository, - + IClinicalQuestionService iClinicalQuestionService, IRepository ClinicalDataTrialSetRepository, IRepository ClinicalDataSystemSetRepository, IRepository previousPDFRepository, @@ -32,7 +33,7 @@ namespace IRaCIS.Application.Services ) { - + _iClinicalQuestionService = iClinicalQuestionService; _subjectVisitRepository = subjectVisitRepository; _clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository; @@ -260,7 +261,7 @@ namespace IRaCIS.Application.Services //不存在的时候,就将系统数据同步到项目临床数据配置 if (!await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null)) { - var systemClinicalDataList = await _clinicalDataSystemSetRepository.AsQueryable().ToListAsync(); + var systemClinicalDataList = await _clinicalDataSystemSetRepository.Where(x=>x.IsFinish).AsQueryable().ToListAsync(); var systemIds = systemClinicalDataList.Select(x => x.Id).ToList(); var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync(); @@ -299,6 +300,13 @@ namespace IRaCIS.Application.Services var result = await _clinicalDataTrialSetRepository.SaveChangesAsync(); + + await _iClinicalQuestionService.SynchronizationQuestion(dataSets.Select(x => new SynchronizationQuestionDto() + { + SystemClinicalId = x.SystemClinicalDataSetId.Value, + TrialClinicalId = x.Id, + + }).ToList()); } #endregion diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index 3a408f938..ec6d7c4f4 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -10,6 +10,7 @@ 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 { @@ -17,7 +18,7 @@ namespace IRaCIS.Core.Application.Service /// 临床数据问题 /// [ApiExplorerSettings(GroupName = "Reading")] - public class ClinicalQuestionService : BaseService + public class ClinicalQuestionService : BaseService, IClinicalQuestionService { private readonly IRepository _trialClinicalQuestionRepository; @@ -303,24 +304,120 @@ namespace IRaCIS.Core.Application.Service #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 questionRelationList =await _trialClinicalQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic() + { + SystemQuestionId=x.SystemClinicalQuestionId?? default(Guid), + TrialQuestionId=x.Id, + TrialClinicalId=x.TrialClinicalId, + }).ToListAsync(); - var tableQuestionRelation = _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).ToDictionary( - x => x.SystemTableQuestionId ?? default(Guid), - x => x.Id - ); + var tableQuestionRelationList = await _trialClinicalTableQuestionRepository.Where(x => trialClinicalId.Contains(x.TrialClinicalId)).Select(x => new QuestionDic() + { + SystemQuestionId = x.SystemTableQuestionId ?? default(Guid), + TrialQuestionId = x.Id, + TrialClinicalId = x.TrialClinicalId, + }).ToListAsync(); + + var newTrialQuestionAll = await _systemClinicalQuestionRepository.Where(x => systemClinicalId.Contains(x.SystemClinicalId)) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + var newTrialTableQuestionAll = await _systemClinicalTableQuestionRepository.Where(x => systemClinicalId.Contains(x.SystemClinicalId)) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - //var + List addTrialDataList = new List(); + List addTrialTableList = new List(); + foreach (var item in inDto) + { + var questionRelation = questionRelationList.Where(x=>x.TrialClinicalId==item.TrialClinicalId).ToDictionary( + x => x.SystemQuestionId, + x => x.TrialQuestionId + ); + var newTrialQuestionList = newTrialQuestionAll.Where(x => x.SystemClinicalQuestionId == item.SystemClinicalId).ToList(); + newTrialQuestionList.ForEach(x => + { + if (questionRelation.ContainsKey(x.Id)) + { + x.Id = questionRelation[x.Id]; + } + else + { + var newid = NewId.NextGuid(); + questionRelation.Add(x.Id, newid); + x.Id = newid; + } + + x.TrialClinicalId = item.TrialClinicalId; + }); + + var copyNewQuestionList = newTrialQuestionList.Clone(); + foreach (var x in newTrialQuestionList) + { + var question = x.Clone(); + if (question.ParentId != null) + { + question.ParentId = questionRelation[question.ParentId ?? default(Guid)]; + } + if (question.GroupId != null) + { + question.GroupId = questionRelation[question.GroupId ?? default(Guid)]; + } + addTrialDataList.Add(question); + }; + + + + var tableQuestionRelation = tableQuestionRelationList.Where(x => x.TrialClinicalId == item.TrialClinicalId).ToDictionary( + x => x.SystemQuestionId, + x => x.TrialQuestionId + ); + + var newTrialTableQuestionList = newTrialTableQuestionAll.Where(x => x.TrialClinicalId == item.TrialClinicalId) + .ToList(); + + + newTrialTableQuestionList.ForEach(x => + { + if (tableQuestionRelation.ContainsKey(x.Id)) + { + x.Id = tableQuestionRelation[x.Id]; + } + else + { + var newid = NewId.NextGuid(); + tableQuestionRelation.Add(x.Id, newid); + x.Id = newid; + } + }); + + foreach (var x in newTrialTableQuestionList) + { + var tableQuestion = x.Clone(); + tableQuestion.TrialClinicalId = item.TrialClinicalId; + + tableQuestion.QuestionId = copyNewQuestionList.Where(y => y.SystemClinicalQuestionId == x.QuestionId).Select(y => y.Id).FirstOrDefault(); + + + addTrialTableList.Add(tableQuestion); + } + } + + + await _trialClinicalQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId)); + await _trialClinicalQuestionRepository.AddRangeAsync(addTrialDataList); + await _trialClinicalTableQuestionRepository.BatchDeleteNoTrackingAsync(x => trialClinicalId.Contains(x.TrialClinicalId) ); + await _trialClinicalTableQuestionRepository.AddRangeAsync(addTrialTableList); } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index 9c5cc15f5..fef9c511a 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -334,5 +334,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialClinicalId { get; set; } } + + public class QuestionDic + { + public Guid SystemQuestionId { get; set; } + + public Guid TrialQuestionId { get; set; } + + /// + /// 项目临床数据Id + /// + public Guid TrialClinicalId { get; set; } + } + #endregion } diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalQuestionService.cs new file mode 100644 index 000000000..f61454573 --- /dev/null +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalQuestionService.cs @@ -0,0 +1,25 @@ +//-------------------------------------------------------------------- +// 此代码由T4模板自动生成 byzhouhang 20210918 +// 生成时间 2022-08-12 14:07:43 +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +//-------------------------------------------------------------------- + +using IRaCIS.Core.Application.Service.Reading.Dto; +using IRaCIS.Core.Application.ViewModel; +namespace IRaCIS.Core.Application.Interfaces +{ + /// + /// IClinicalQuestionService + /// + public interface IClinicalQuestionService + { + + + Task SynchronizationQuestion(List inDto); + + + + + + } +} diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs index 0c940d0b3..4e227fb40 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs @@ -980,7 +980,7 @@ namespace IRaCIS.Application.Services x.TrialId = trialCriterion.TrialId; }); var copyNewQuestionList = newTrialQuestionList.Clone(); - var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync(); + // var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync(); var needAddDatas = new List(); foreach (var x in newTrialQuestionList) diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs index 2bbf6687e..d6fe0fb4d 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs @@ -26,10 +26,15 @@ namespace IRaCIS.Core.Domain.Models /// public string ClinicalDataSetName { get; set; } - /// - /// 英文名称 - /// - public string ClinicalDataSetEnName { get; set; } = string.Empty; + /// + /// 是否配置完成 + /// + public bool IsFinish { get; set; } = false; + + /// + /// 英文名称 + /// + public string ClinicalDataSetEnName { get; set; } = string.Empty; /// /// 临床级别 diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs index 882aec273..4260c2098 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs @@ -63,6 +63,12 @@ namespace IRaCIS.Core.Domain.Models /// public bool IsConfirm { get; set; } + + /// + /// 是否配置完成 + /// + public bool IsFinish { get; set; } = false; + /// /// 上传角色 /// From ea48fcac64a0e956bc05852c13d08270c62a389d Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 20 Jun 2023 17:09:59 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/ClinicalData/ClinicalDataSetService.cs | 3 ++- .../Reading/ClinicalData/ClinicalDataSystemSet.cs | 4 ++-- .../Reading/ClinicalData/ClinicalDataTrialSet.cs | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index 60a5e7fb4..fe7aaa3b9 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -261,7 +261,7 @@ namespace IRaCIS.Application.Services //不存在的时候,就将系统数据同步到项目临床数据配置 if (!await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null)) { - var systemClinicalDataList = await _clinicalDataSystemSetRepository.Where(x=>x.IsFinish).AsQueryable().ToListAsync(); + var systemClinicalDataList = await _clinicalDataSystemSetRepository.Where(x=>x.IsApply).AsQueryable().ToListAsync(); var systemIds = systemClinicalDataList.Select(x => x.Id).ToList(); var trialSystemClinicalDataSetIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync(); @@ -286,6 +286,7 @@ namespace IRaCIS.Application.Services FileName = x.FileName, Path = x.Path, TrialId = trialId, + IsApply = x.IsApply, //项目不采用 标准枚举字符串的方式 //CriterionEnumListStr=x.CriterionEnumListStr diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs index d6fe0fb4d..12bf5729d 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataSystemSet.cs @@ -27,9 +27,9 @@ namespace IRaCIS.Core.Domain.Models public string ClinicalDataSetName { get; set; } /// - /// 是否配置完成 + /// 是否应用 /// - public bool IsFinish { get; set; } = false; + public bool IsApply { get; set; } = false; /// /// 英文名称 diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs index 4260c2098..fef381af9 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ClinicalDataTrialSet.cs @@ -65,9 +65,9 @@ namespace IRaCIS.Core.Domain.Models /// - /// 是否配置完成 + /// 是否应用 /// - public bool IsFinish { get; set; } = false; + public bool IsApply { get; set; } = false; /// /// 上传角色 From 5360c577af30bd84e84ab367c3312db2b0420fea Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 14:01:49 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Application/Resources/en-US.json | 3 + IRaCIS.Core.Application/Resources/zh-CN.json | 3 + .../ClinicalData/ClinicalDataSetService.cs | 77 ++++++++++++++++++- .../ClinicalData/ClinicalQuestionService.cs | 19 ++++- .../Dto/ClinicalDataServiceViewModel.cs | 17 ++++ .../Reading/Dto/ClinicalQuestionDto.cs | 5 ++ .../SystemClinicalQuestion.cs | 5 ++ .../ClinicalQuestion/TrialClinicalQuestion.cs | 5 ++ 8 files changed, 129 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Resources/en-US.json b/IRaCIS.Core.Application/Resources/en-US.json index 829a4985c..ddbb461e4 100644 --- a/IRaCIS.Core.Application/Resources/en-US.json +++ b/IRaCIS.Core.Application/Resources/en-US.json @@ -39,7 +39,10 @@ //-------------------------------------------------------------------------------------Reading----------------------------------------------------------------- //ClinicalDataSetService + "ClinicalDataSet_Apply": "", "ClinicalDataSet_DupTypeFail": "The same type of clinical data exists. The operation failed.", + //ClinicalQuestionService + "ClinicalQuestion_Repeat": "", //ReadingClinicalDataService "ReadingClinicalData_DupTypeFail": "The same type of clinical data exists. The operation failed.", "ReadingClinicalData_Unchecked": "The current clinical data status is not verified and signing is not allowed!", diff --git a/IRaCIS.Core.Application/Resources/zh-CN.json b/IRaCIS.Core.Application/Resources/zh-CN.json index 30eabe946..1e44d8da2 100644 --- a/IRaCIS.Core.Application/Resources/zh-CN.json +++ b/IRaCIS.Core.Application/Resources/zh-CN.json @@ -39,7 +39,10 @@ // ------------------------------------------------------------Reading-------------------------------------------------------------------- //ClinicalDataSetService + "ClinicalDataSet_Apply": "当前临床数据需要配置一个检查日期才能应用", "ClinicalDataSet_DupTypeFail": "存在同类型的临床数据,操作失败", + //ClinicalQuestionService + "ClinicalQuestion_Repeat": "存在相同的问题名称!", //ReadingClinicalDataService "ReadingClinicalData_DupTypeFail": "存在同类型的临床数据,操作失败", "ReadingClinicalData_Unchecked": "当前临床数据状态不是已核查状态,不允许签名!", diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index fe7aaa3b9..726d5388f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -3,6 +3,8 @@ using IRaCIS.Core.Application.Service.Reading.Dto; using MassTransit; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Application.Interfaces; +using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Infrastructure; namespace IRaCIS.Application.Services { @@ -20,7 +22,9 @@ namespace IRaCIS.Application.Services private readonly IRepository _previousPDFRepository; private readonly IRepository _dictionaryRepository; private readonly IRepository _trialRepository; - + private readonly IRepository _trialClinicalQuestionRepository; + + private readonly IRepository _systemClinicalQuestionRepository; public ClinicalDataSetService(IRepository subjectVisitRepository, IClinicalQuestionService iClinicalQuestionService, @@ -28,14 +32,18 @@ namespace IRaCIS.Application.Services IRepository ClinicalDataSystemSetRepository, IRepository previousPDFRepository, IRepository dictionaryRepository, - IRepository trialRepository + IRepository trialClinicalQuestionRepository, + IRepository systemClinicalQuestionRepository, + + IRepository trialRepository ) { _iClinicalQuestionService = iClinicalQuestionService; _subjectVisitRepository = subjectVisitRepository; - + _trialClinicalQuestionRepository = trialClinicalQuestionRepository; + _systemClinicalQuestionRepository = systemClinicalQuestionRepository; _clinicalDataTrialSetRepository = ClinicalDataTrialSetRepository; _clinicalDataSystemSetRepository = ClinicalDataSystemSetRepository; this._previousPDFRepository = previousPDFRepository; @@ -44,6 +52,58 @@ namespace IRaCIS.Application.Services } + /// + /// 应用系统临床数据 + /// + /// + /// + /// + [HttpPost] + public async Task ApplySystemClinical(ApplySystemClinicalInDto inDto) + { + if (_systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId && x.IsCheckDate).Count() != 1) + { + throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]); + + } + + await _clinicalDataSystemSetRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.SystemClinicalId, x => new ClinicalDataSystemSet() + { + IsApply = true + }); + + + await _clinicalDataSystemSetRepository.SaveChangesAsync(); + + return ResponseOutput.Ok(true); + } + + /// + /// 应用项目临床数据 + /// + /// + /// + /// + [HttpPost] + public async Task ApplyTrialClinical(ApplyTrialClinicalInDto inDto) + { + if (_trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId && x.IsCheckDate).Count() != 1) + { + throw new BusinessValidationFailedException(_localizer["ClinicalDataSet_Apply"]); + + } + + await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.TrialClinicalId, x => new ClinicalDataTrialSet() + { + IsApply = true + }); + + + await _clinicalDataTrialSetRepository.SaveChangesAsync(); + + return ResponseOutput.Ok(true); + } + #region 系统 /// @@ -54,7 +114,10 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateClinicalDataSystemSet(ClinicalDataSystemSetAddOrEdit indto) { - + if (indto.ClinicalUploadType == ClinicalUploadType.Table || indto.ClinicalUploadType == ClinicalUploadType.PDF) + { + indto.IsApply = true; + } var dictionary = await _dictionaryRepository.Where(x => x.Parent.Code == "ClinicalDataType" && x.Code == indto.ClinicalDataSetEnum.ToString()).FirstNotNullAsync(); indto.ClinicalDataSetName = dictionary.ValueCN; indto.ClinicalDataSetEnName = dictionary.Value; @@ -130,6 +193,12 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateClinicalDataTrialSet(ClinicalDataTrialSetAddOrEdit indto) { + + if (indto.ClinicalUploadType == ClinicalUploadType.Table || indto.ClinicalUploadType == ClinicalUploadType.PDF) + { + indto.IsApply = true; + } + var existsQuery = _clinicalDataTrialSetRepository .WhereIf(indto.Id != null, x => x.Id != indto.Id) .Where(x => (x.ClinicalDataSetName == indto.ClinicalDataSetName||x.ClinicalDataSetEnName==indto.ClinicalDataSetEnName) && x.TrialId == indto.TrialId); diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index ec6d7c4f4..6d593a1ed 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -72,6 +72,11 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateTrialClinicalQuestion(TrialClinicalQuestionDto inDto) { + if (await _trialClinicalQuestionRepository.AnyAsync(x =>x.TrialClinicalId==inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } + var entity = await _trialClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); @@ -149,6 +154,11 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateSystemClinicalQuestion(SystemClinicalQuestionDto inDto) { + + if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } var entity = await _systemClinicalQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); @@ -230,6 +240,10 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto) { + if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } var entity = await _systemClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true); @@ -281,7 +295,10 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateTrialClinicalTableQuestion(TrialClinicalTableQuestionDto inDto) { - + if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } var entity = await _trialClinicalTableQuestionRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index 672467388..8e0dd533f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -13,6 +13,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public Guid? Id { get; set; } + /// + /// 是否应用 + /// + public bool IsApply { get; set; } = false; /// /// 名称 @@ -73,10 +77,23 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto //public List CriterionEnumList { get; set; } } + public class ApplySystemClinicalInDto + { + public Guid SystemClinicalId { get; set; } + } + + public class ApplyTrialClinicalInDto + { + public Guid TrialClinicalId { get; set; } + } public class ClinicalDataSystemSetAddOrEdit { public Guid? Id { get; set; } + /// + /// 是否应用 + /// + public bool IsApply { get; set; } = false; /// /// 枚举 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index fef9c511a..fa9e287ab 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -88,6 +88,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 显示类型 /// public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; + + /// + /// 是否是检查日期 + /// + public bool IsCheckDate { get; set; } } /// diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs index c55251892..b732fefcd 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs @@ -102,6 +102,11 @@ namespace IRaCIS.Core.Domain.Models /// public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; + /// + /// 是否是检查日期 + /// + public bool IsCheckDate { get; set; } + } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs index 20e436b36..7d7ce713e 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs @@ -107,6 +107,11 @@ namespace IRaCIS.Core.Domain.Models /// public ClinicalQuestionShow ClinicalQuestionShowEnum { get; set; } = ClinicalQuestionShow.Show; + /// + /// 是否是检查日期 + /// + public bool IsCheckDate { get; set; } + /// /// 自定义计算标记 /// From 8205f33ec61789109b3974d98816dfc4bbe53614 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 14:51:15 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/Dto/ClinicalQuestionDto.cs | 10 ++++++++++ .../ClinicalQuestion/SystemClinicalQuestion.cs | 9 +++++++++ .../SystemClinicalTableQuestion.cs | 14 ++++++++++++-- .../ClinicalQuestion/TrialClinicalQuestion.cs | 10 ++++++++++ .../ClinicalQuestion/TrialClinicalTableQuestion.cs | 10 ++++++++++ 5 files changed, 51 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index fa9e287ab..fec88acc1 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -93,6 +93,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 是否是检查日期 /// public bool IsCheckDate { get; set; } + + /// + /// 小数点位数 + /// + public int? DigitPlaces { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } = string.Empty; } /// diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs index b732fefcd..43ea5b35f 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalQuestion.cs @@ -107,6 +107,15 @@ namespace IRaCIS.Core.Domain.Models /// public bool IsCheckDate { get; set; } + /// + /// 小数点位数 + /// + public int? DigitPlaces { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } = string.Empty; } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs index 2719cfcc3..97b019d28 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/SystemClinicalTableQuestion.cs @@ -84,8 +84,18 @@ namespace IRaCIS.Core.Domain.Models /// 外层问题Id /// public Guid QuestionId { get; set; } - - } + + /// + /// 小数点位数 + /// + public int? DigitPlaces { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } = string.Empty; + + } } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs index 7d7ce713e..994c4ac14 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalQuestion.cs @@ -121,6 +121,16 @@ namespace IRaCIS.Core.Domain.Models /// 自定义计算问题 /// public string CalculateQuestions { get; set; } = "[]"; + + /// + /// 小数点位数 + /// + public int? DigitPlaces { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } = string.Empty; } diff --git a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs index 73a12f283..0cf0e675e 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalQuestion/TrialClinicalTableQuestion.cs @@ -100,6 +100,16 @@ namespace IRaCIS.Core.Domain.Models /// public string CalculateQuestions { get; set; } = "[]"; + /// + /// 小数点位数 + /// + public int? DigitPlaces { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } = string.Empty; + } From 6f09c10bd7771ba6e07f71757083583f764fc1b4 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 15:06:03 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/Reading/Dto/ClinicalQuestionDto.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index fec88acc1..d6bce9130 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -258,6 +258,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 外层问题Id /// public Guid QuestionId { get; set; } + + /// + /// 小数点位数 + /// + public int? DigitPlaces { get; set; } + + /// + /// 单位 + /// + public string Unit { get; set; } = string.Empty; } From ca5f50586b4655df83ef32189c8c97c0dbc1a20d Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 15:25:23 +0800 Subject: [PATCH 11/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/ReadingImageTask/ReadingTaskQuestionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs index cb7a3935e..de0a472bf 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs @@ -152,7 +152,7 @@ namespace IRaCIS.Application.Services TrialId = data.TrialId, Type = data.Type, ParentTriggerValue = data.ParentTriggerValue, - GroupName = data.GroupName, + GroupName = data.GroupName.LanguageName(data.GroupEnName, _userInfo.IsEn_Us), QuestionName = data.QuestionName.LanguageName(data.QuestionEnName, _userInfo.IsEn_Us), IsRequired = data.IsRequired, ShowQuestion = data.ShowQuestion, From 0cb5c8ca94193955e5424d3f3d1f3720d463c6bc Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 15:41:55 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/ReadingImageTask/ReadingTaskQuestionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs index de0a472bf..ba18f07a4 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs @@ -196,7 +196,7 @@ namespace IRaCIS.Application.Services [NonDynamicMethod] public void FindChildQuestion(GetTrialReadingQuestionOutDto item, List questionlists, List tableQuestions) { - item.Childrens = questionlists.Where(x => x.ParentId == item.Id || (item.Type == ReadingQestionType.Group && x.Type != ReadingQestionType.Group && x.ParentId == null && x.GroupName == item.GroupName)).ToList(); + item.Childrens = questionlists.Where(x => x.ParentId == item.Id || (item.Type == ReadingQestionType.Group && x.Type != ReadingQestionType.Group && x.ParentId == null && x.Id == item.GroupId)).ToList(); item.Childrens.AddRange(tableQuestions.Where(x => x.ReadingQuestionId == item.Id).Select(x => new GetTrialReadingQuestionOutDto From 793704c11100d735ad6bf0aadaf3c6e4a3ee27d5 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 15:44:10 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/ReadingImageTask/ReadingTaskQuestionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs index ba18f07a4..eecc7d3ff 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs @@ -196,7 +196,7 @@ namespace IRaCIS.Application.Services [NonDynamicMethod] public void FindChildQuestion(GetTrialReadingQuestionOutDto item, List questionlists, List tableQuestions) { - item.Childrens = questionlists.Where(x => x.ParentId == item.Id || (item.Type == ReadingQestionType.Group && x.Type != ReadingQestionType.Group && x.ParentId == null && x.Id == item.GroupId)).ToList(); + item.Childrens = questionlists.Where(x => x.ParentId == item.Id || (item.Type == ReadingQestionType.Group && x.Type != ReadingQestionType.Group && x.ParentId == null && x.GroupId == item.Id)).ToList(); item.Childrens.AddRange(tableQuestions.Where(x => x.ReadingQuestionId == item.Id).Select(x => new GetTrialReadingQuestionOutDto From 9171a62979149959bf190a4d3f58df092af5463e Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 21 Jun 2023 15:49:40 +0800 Subject: [PATCH 14/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Reading/ReadingImageTask/ReadingTaskQuestionService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs index eecc7d3ff..874a2545f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingTaskQuestionService.cs @@ -107,7 +107,7 @@ namespace IRaCIS.Application.Services { qusetionList = qusetionList.Where(x => x.ReadingCriterionPageId == null).ToList(); - groupList = qusetionList.Where(x => x.Type == ReadingQestionType.Group || (x.ParentId == null && x.GroupName.IsNullOrEmpty())).ToList(); + groupList = qusetionList.Where(x => x.Type == ReadingQestionType.Group || (x.ParentId == null && x.GroupId==null)).ToList(); groupList.ForEach(x => { this.FindChildQuestion(x, qusetionList, tableQuestionList);