diff --git a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs index d4716b5dd..9b6e8f2b7 100644 --- a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs +++ b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs @@ -22,8 +22,10 @@ namespace IRaCIS.Application.Services private readonly IRepository _trialRepository; private readonly IRepository _systemCriterionDictionaryCodeRepository; private readonly IRepository _trialCriterionDictionaryCodeRepository; - private readonly IRepository _readingCriterionDictionaryRepository; - private readonly IRepository _readingQuestionCriterionSystem; + private readonly IRepository _readingTrialCriterionDictionaryRepository; + + private readonly IRepository _readingCriterionDictionaryRepository; + private readonly IRepository _readingQuestionCriterionSystem; private readonly IRepository _readingQuestionCriterionTrial; private readonly IReadingQuestionService _readingQuestionService; @@ -32,7 +34,8 @@ namespace IRaCIS.Application.Services IRepository systemCriterionDictionaryCodeRepository, IRepository trialCriterionDictionaryCodeRepository, - IRepository readingCriterionDictionaryRepository, + IRepository readingTrialCriterionDictionaryRepository, + IRepository readingCriterionDictionaryRepository, IRepository readingQuestionCriterionSystem, IRepository readingQuestionCriterionTrial, IReadingQuestionService readingQuestionService @@ -47,7 +50,8 @@ namespace IRaCIS.Application.Services _trialRepository = trialRepository; this._systemCriterionDictionaryCodeRepository = systemCriterionDictionaryCodeRepository; this._trialCriterionDictionaryCodeRepository = trialCriterionDictionaryCodeRepository; - this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; + this._readingTrialCriterionDictionaryRepository = readingTrialCriterionDictionaryRepository; + this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._readingQuestionCriterionSystem = readingQuestionCriterionSystem; this._readingQuestionCriterionTrial = readingQuestionCriterionTrial; this._readingQuestionService = readingQuestionService; @@ -179,7 +183,14 @@ namespace IRaCIS.Application.Services //return ResponseOutput.NotOk(_localizer["Dictionary_DictionaryDeletion"]); } - if (await _dicRepository.AnyAsync(t => t.ParentId == id)) + if (await _readingTrialCriterionDictionaryRepository.AnyAsync(x => x.DictionaryId == id)) + { + await _readingTrialCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.DictionaryId == id); + //---当前字典在标准中被引用,不允许删除! + //return ResponseOutput.NotOk(_localizer["Dictionary_DictionaryDeletion"]); + } + + if (await _dicRepository.AnyAsync(t => t.ParentId == id)) { //---有子项数据,不允许直接删除! return ResponseOutput.NotOk(_localizer["Dictionary_SubitemDeletion"]); @@ -201,12 +212,6 @@ namespace IRaCIS.Application.Services return ResponseOutput.NotOk(_localizer["Dictionary_ProjectReference"]); } - if (await _readingCriterionDictionaryRepository.AnyAsync(x => x.DictionaryId == id)) - { - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.DictionaryId == id); - //---当前条目已经在阅片标准中被引用。 - //return ResponseOutput.NotOk(_localizer["Dictionary_StandardReference"]); - } var success = await _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == id); return ResponseOutput.Result(success); @@ -293,7 +298,7 @@ namespace IRaCIS.Application.Services { var criterionCodes = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.TrialCriterionId).ToListAsync(); - var parentCodes = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialCriterionId).Select(x => x.ParentCode).ToListAsync(); + var parentCodes = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialCriterionId).Select(x => x.ParentCode).ToListAsync(); var codes = criterionCodes.Select(x => x.Code).ToList(); @@ -337,16 +342,49 @@ namespace IRaCIS.Application.Services else { List selectCode = new List(); + List criterionDictionList = new List(); - var isSystemCriterion = await _readingQuestionCriterionSystem.AnyAsync(x => x.Id == inDto.ReadingCriterionId); + var isSystemCriterion = await _readingQuestionCriterionSystem.AnyAsync(x => x.Id == inDto.ReadingCriterionId); if (isSystemCriterion) { selectCode = await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync(); - } + + criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect() + { + ChildGroup = x.Dictionary.ChildGroup, + Code = x.Dictionary.Code, + DataTypeEnum = x.Dictionary.DataTypeEnum, + ParentChildCodeEnum = x.Dictionary.Parent.ChildCodeEnum, + ShowOrder = x.Dictionary.ShowOrder, + ParentCode = x.ParentCode, + CrterionDictionaryGroup = x.CrterionDictionaryGroup, + Id = x.DictionaryId, + ParentId = x.Dictionary.ParentId, + Value = x.Dictionary.Value, + ValueCN = x.Dictionary.ValueCN + + }).ToListAsync(); + } else { selectCode = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync(); - } + + criterionDictionList = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect() + { + ChildGroup = x.Dictionary.ChildGroup, + Code = x.Dictionary.Code, + DataTypeEnum = x.Dictionary.DataTypeEnum, + ParentChildCodeEnum = x.Dictionary.Parent.ChildCodeEnum, + ShowOrder = x.Dictionary.ShowOrder, + ParentCode = x.ParentCode, + CrterionDictionaryGroup = x.CrterionDictionaryGroup, + Id = x.DictionaryId, + ParentId = x.Dictionary.ParentId, + Value = x.Dictionary.Value, + ValueCN = x.Dictionary.ValueCN + + }).ToListAsync(); + } var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync(); @@ -361,21 +399,7 @@ namespace IRaCIS.Application.Services } - var criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect() - { - ChildGroup = x.Dictionary.ChildGroup, - Code = x.Dictionary.Code, - DataTypeEnum = x.Dictionary.DataTypeEnum, - ParentChildCodeEnum = x.Dictionary.Parent.ChildCodeEnum, - ShowOrder = x.Dictionary.ShowOrder, - ParentCode = x.ParentCode, - CrterionDictionaryGroup = x.CrterionDictionaryGroup, - Id = x.DictionaryId, - ParentId = x.Dictionary.ParentId, - Value = x.Dictionary.Value, - ValueCN = x.Dictionary.ValueCN - - }).ToListAsync(); + criterionDictionList = criterionDictionList.Where(x => selectCode.Contains(x.ParentCode)).ToList(); @@ -438,7 +462,7 @@ namespace IRaCIS.Application.Services - var criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId).Select(x => new BasicDicSelect() + var criterionDictionList = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId).Select(x => new BasicDicSelect() { ChildGroup = x.Dictionary.ChildGroup, Code = x.Dictionary.Code, diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs index 731d2be80..6d503ee96 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs @@ -156,8 +156,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetAssessTypeInDto { - [NotDefault] - public Guid CriterionId { get; set; } + + public Guid? SystemCriterionId { get; set; } + + public Guid? TrialCriterionId { get; set; } public string ParentCode { get; set; } = string.Empty; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs index 8c005d95a..c127c7dca 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingCriterionService.cs @@ -20,7 +20,8 @@ namespace IRaCIS.Core.Application.Service.RC private readonly IRepository _readingTaskQuestionAnswer; private readonly IRepository _readingCriterionPageRepository; private readonly IRepository _readingCriterionDictionaryRepository; - private readonly IRepository _visitTaskRepository; + private readonly IRepository _readingTrialCriterionDictionaryRepository; + private readonly IRepository _visitTaskRepository; private readonly IRepository _systemCriterionDictionaryCodeRepository; private readonly IRepository _readingTableQuestionAnswerRepository; private readonly IRepository _readingTableAnswerRowInfoRepository; @@ -32,7 +33,8 @@ namespace IRaCIS.Core.Application.Service.RC IRepository readingQuestionCriterionTrialRepository, IRepository readingQuestionTrialRepository, IRepository readingCriterionDictionaryRepository, - IRepository visitTaskRepository, + IRepository readingTrialCriterionDictionaryRepository, + IRepository visitTaskRepository, IRepository systemCriterionDictionaryCodeRepository, IRepository readingTableQuestionTrialRepository, IRepository readingTableQuestionAnswerRepository, @@ -46,7 +48,8 @@ namespace IRaCIS.Core.Application.Service.RC this._readingTableQuestionTrialRepository = readingTableQuestionTrialRepository; this._readingCriterionPageRepository = readingCriterionPageRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; - this._visitTaskRepository = visitTaskRepository; + this._readingTrialCriterionDictionaryRepository = readingTrialCriterionDictionaryRepository; + this._visitTaskRepository = visitTaskRepository; this._systemCriterionDictionaryCodeRepository = systemCriterionDictionaryCodeRepository; this._readingTableQuestionAnswerRepository = readingTableQuestionAnswerRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; @@ -568,11 +571,23 @@ namespace IRaCIS.Core.Application.Service.RC [HttpPost] public async Task> GetAssessType(GetAssessTypeInDto inDto) { - List result = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.CriterionId + + if (inDto.SystemCriterionId != null) + { + return await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.SystemCriterionId ) - .WhereIf(!inDto.ParentCode.IsNullOrEmpty(), x => x.ParentCode ==inDto.ParentCode) + .WhereIf(!inDto.ParentCode.IsNullOrEmpty(), x => x.ParentCode == inDto.ParentCode) .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ParentCode).ThenBy(x => x.ShowOrder).ToListAsync(); - return result; + } + else + { + return await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.SystemCriterionId + ) + .WhereIf(!inDto.ParentCode.IsNullOrEmpty(), x => x.ParentCode == inDto.ParentCode) + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ParentCode).ThenBy(x => x.ShowOrder).ToListAsync(); + } + + } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs index 88633c0e6..bd89a4a8c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingGlobalTaskService.cs @@ -435,7 +435,7 @@ namespace IRaCIS.Application.Services var subjectVisitId = await _readModuleRepository.Where(x => x.Id == taskInfo.SouceReadModuleId).Select(x => x.SubjectVisitId).FirstOrDefaultAsync(); var isBaseLine = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Select(x => x.IsBaseLine).FirstOrDefaultAsync(); - List assessTypeList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == taskInfo.TrialReadingCriterionId + List assessTypeList = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == taskInfo.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.GlobalAssess ) //.WhereIf(isBaseLine,x=>x.IsBaseLineUse) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index a9aa1d405..49d586f02 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -43,7 +43,8 @@ namespace IRaCIS.Application.Services private readonly IRepository _dicomInstanceRepository; private readonly IRepository _organInfoRepository; private readonly IRepository _readingCriterionDictionaryRepository; - private readonly IRepository _tumorAssessmentRepository; + private readonly IRepository _readingTrialCriterionDictionaryRepository; + private readonly IRepository _tumorAssessmentRepository; private readonly IRepository _readingTableAnswerRowInfoRepository; private readonly IRepository _readingTableQuestionSystemRepository; private readonly IRepository _readingTableQuestionTrialRepository; @@ -80,7 +81,8 @@ namespace IRaCIS.Application.Services IRepository organInfoRepository, IMemoryCache cache, IRepository readingCriterionDictionaryRepository, - IRepository tumorAssessmentRepository, + IRepository readingTrialCriterionDictionaryRepository, + IRepository tumorAssessmentRepository, IRepository readingTableAnswerRowInfoRepository, IRepository readingTableQuestionSystemRepository, IRepository readingTableQuestionTrialRepository, @@ -120,7 +122,9 @@ namespace IRaCIS.Application.Services this._readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository; this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._readingQuestionCriterionSystemRepository = readingQuestionCriterionSystemRepository; - this._readingQuestionSystem = ReadingQuestionSystem; + this._readingTrialCriterionDictionaryRepository = readingTrialCriterionDictionaryRepository; + + this._readingQuestionSystem = ReadingQuestionSystem; this._noneDicomStudyFileSystem = noneDicomStudyFileSystem; this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._cache = cache; diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs index 6a784f08d..70bb92f7e 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingOncologyTaskService.cs @@ -145,7 +145,7 @@ namespace IRaCIS.Application.Services result.OncologyVisits = oncologyVisits; - List assessTypeList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == taskInfo.TrialReadingCriterionId + List assessTypeList = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == taskInfo.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.OncologyAssess ) .Select(x => new CriterionDictionaryInfo() diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 741a612e2..d3c5a76ae 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -39,16 +39,25 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.Value, u => u.MapFrom(s => s.Dictionary.Value)) .ForMember(d => d.ValueCN, u => u.MapFrom(s => s.Dictionary.ValueCN)); + CreateMap() + .ForMember(d => d.ChildGroup, u => u.MapFrom(s => s.Dictionary.ChildGroup)) + .ForMember(d => d.Code, u => u.MapFrom(s => s.Dictionary.Code)) + .ForMember(d => d.Description, u => u.MapFrom(s => s.Dictionary.Description)) + .ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.Dictionary.ShowOrder)) + .ForMember(d => d.ParentCode, u => u.MapFrom(s => s.Dictionary.Parent.Code)) + .ForMember(d => d.Value, u => u.MapFrom(s => s.Dictionary.Value)) + .ForMember(d => d.ValueCN, u => u.MapFrom(s => s.Dictionary.ValueCN)); - //CreateMap(); - // CreateMap() - //.ForMember(d => d.ClinicalDataLevel, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataLevel)) - //.ForMember(d => d.ClinicalDataLevelName, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataSetName)) - //.ForMember(d => d.ClinicalUploadType, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalUploadType)); - //.ForMember(d => d.FileCount, u => u.MapFrom(s => s.ReadingClinicalDataPDFList.Count())); - CreateMap(); + //CreateMap(); + // CreateMap() + //.ForMember(d => d.ClinicalDataLevel, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataLevel)) + //.ForMember(d => d.ClinicalDataLevelName, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalDataSetName)) + //.ForMember(d => d.ClinicalUploadType, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalUploadType)); + //.ForMember(d => d.FileCount, u => u.MapFrom(s => s.ReadingClinicalDataPDFList.Count())); + + CreateMap(); //.ForMember(d => d.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList())); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 9259b46b9..acc889d4b 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -38,7 +38,8 @@ namespace IRaCIS.Core.Application private readonly IOrganInfoService _iOrganInfoService; private readonly IRepository _taskAllocationRuleRepository; private readonly IRepository _readingCriterionDictionaryRepository; - private readonly IReadingQuestionService iReadingQuestionService; + private readonly IRepository _readingTrialCriterionDictionaryRepository; + private readonly IReadingQuestionService iReadingQuestionService; private readonly IRepository _trialCriterionAdditionalAssessmentTypeRepository; private readonly IRepository _readingTaskQuestionAnswer; @@ -60,7 +61,8 @@ namespace IRaCIS.Core.Application IRepository readingCriterionPageRepository, IRepository taskAllocationRuleRepository, IRepository readingCriterionDictionaryRepository, - IReadingQuestionService iReadingQuestionService, + IRepository readingTrialCriterionDictionaryRepository, + IReadingQuestionService iReadingQuestionService, IEasyCachingProvider provider, IOrganInfoService iOrganInfoService, IRepository trialCriterionAdditionalAssessmentTypeRepository, @@ -76,7 +78,8 @@ namespace IRaCIS.Core.Application _trialRepository = trialRepository; _taskAllocationRuleRepository = taskAllocationRuleRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; - this.iReadingQuestionService = iReadingQuestionService; + this._readingTrialCriterionDictionaryRepository = readingTrialCriterionDictionaryRepository; + this.iReadingQuestionService = iReadingQuestionService; this._trialQCQuestionRepository = trialQCQuestionRepository; this._readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository; @@ -226,7 +229,7 @@ namespace IRaCIS.Core.Application await _trialCriterionDictionaryCode.BatchDeleteNoTrackingAsync(x => x.TrialCriterionId == trialCriterion.Id); - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id); + await _readingTrialCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id); var criterionDictionaryCodeList = await _systemCriterionDictionaryCode.Where(x => x.SystemCriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value) .Select(x => new TrialCriterionDictionaryCode() @@ -242,15 +245,19 @@ namespace IRaCIS.Core.Application var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value) + .Select(x=>new ReadingTrialCriterionDictionary() { + + Id = NewId.NextGuid(), + CriterionId = inDto.TrialReadingCriterionId, + CrterionDictionaryGroup=x.CrterionDictionaryGroup, + IsBaseLineUse=x.IsBaseLineUse, + IsFollowVisitUse=x.IsFollowVisitUse, + DictionaryId=x.DictionaryId, + ParentCode=x.ParentCode, + }) .ToListAsync(); - criterionDictionaryList.ForEach(x => - { - x.Id = NewId.NextGuid(); - x.Dictionary = null; - x.IsSystemCriterion = false; - x.CriterionId = inDto.TrialReadingCriterionId; - }); - await _readingCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList); + + await _readingTrialCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList); await _trialCriterionDictionaryCode.AddRangeAsync(criterionDictionaryCodeList); #endregion @@ -309,14 +316,13 @@ namespace IRaCIS.Core.Application // IsGlobalReading = inDto.IsGlobalReading //}); - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.GlobalAssess); - await _readingCriterionDictionaryRepository.AddRangeAsync(inDto.GlobalAssessList.Select(x => new ReadingCriterionDictionary + await _readingTrialCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.GlobalAssess); + await _readingTrialCriterionDictionaryRepository.AddRangeAsync(inDto.GlobalAssessList.Select(x => new ReadingTrialCriterionDictionary { CriterionId = inDto.TrialReadingCriterionId, DictionaryId = x.DictionaryId, IsBaseLineUse = x.IsBaseLineUse, IsFollowVisitUse = x.IsFollowVisitUse, - IsSystemCriterion = false, ParentCode = ReadingCommon.CriterionDictionary.GlobalAssess })); @@ -340,7 +346,7 @@ namespace IRaCIS.Core.Application IsGlobalReading = trialCriterion.IsGlobalReading, IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null, IsSign = trialCriterion.IsSigned, - GlobalAssessTypes = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId + GlobalAssessTypes = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.GlobalAssess ) .Select(x => new CriterionDictionaryInfo() @@ -374,7 +380,7 @@ namespace IRaCIS.Core.Application return new GetOncologySetOutDto { EvaluationReason = trialCriterion.EvaluationReason.IsNullOrEmpty() ? ReadingCommon.EvaluationReason : trialCriterion.EvaluationReason, - OncologyAssessIds = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.OncologyAssess).Select(x => x.DictionaryId).ToListAsync(), + OncologyAssessIds = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.OncologyAssess).Select(x => x.DictionaryId).ToListAsync(), IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null, IsSign = trialCriterion.IsSigned, }; @@ -399,13 +405,12 @@ namespace IRaCIS.Core.Application }); - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.OncologyAssess); + await _readingTrialCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.OncologyAssess); - await _readingCriterionDictionaryRepository.AddRangeAsync(inDto.OncologyAssessIds.Select(x => new ReadingCriterionDictionary + await _readingTrialCriterionDictionaryRepository.AddRangeAsync(inDto.OncologyAssessIds.Select(x => new ReadingTrialCriterionDictionary { CriterionId = inDto.TrialReadingCriterionId, DictionaryId = x, - IsSystemCriterion = false, ParentCode = ReadingCommon.CriterionDictionary.OncologyAssess })); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs index 78cd34c0c..ac69da8c1 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialService.cs @@ -409,7 +409,7 @@ namespace IRaCIS.Application.Services await _repository.BatchDeleteAsync(o => o.TrialReadingCriterion.TrialId == trialId) || - await _repository.BatchDeleteAsync(o => o.TrialReadingCriterion.TrialId == trialId) || + await _repository.BatchDeleteAsync(o => o.TrialId == trialId) || diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingCriterionDictionary.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingCriterionDictionary.cs index 1d7f8fd3e..7357954ac 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingCriterionDictionary.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingCriterionDictionary.cs @@ -63,9 +63,7 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("DictionaryId")] public Dictionary Dictionary { get; set; } - [ForeignKey("CriterionId")] - [JsonIgnore] - public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; } + } diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs index 6a574de75..7039f4836 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs @@ -15,13 +15,6 @@ namespace IRaCIS.Core.Domain.Models [Table("ReadingTrialCriterionDictionary")] public class ReadingTrialCriterionDictionary : Entity, IAuditAdd { - - /// - /// Id - /// - [Key] - [Required] - public Guid Id { get; set; } /// /// CriterionId @@ -69,9 +62,17 @@ namespace IRaCIS.Core.Domain.Models /// CrterionDictionaryGroup /// [Required] - public int CrterionDictionaryGroup { get; set; } - - } + public CrterionDictionaryGroup CrterionDictionaryGroup { get; set; } + + [JsonIgnore] + [ForeignKey("DictionaryId")] + public Dictionary Dictionary { get; set; } + + [ForeignKey("CriterionId")] + [JsonIgnore] + public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; } + + } } diff --git a/IRaCIS.Core.Domain/SQLFile/Test.sql b/IRaCIS.Core.Domain/SQLFile/Test.sql index da2c35a15..9ac62d4a7 100644 --- a/IRaCIS.Core.Domain/SQLFile/Test.sql +++ b/IRaCIS.Core.Domain/SQLFile/Test.sql @@ -1015,8 +1015,15 @@ INSERT INTO ReadingTaskRelation(Id, TaskId, RelevanceTaskId, RelevanceType, Crea SELECT NEWID(), TaskId, RelevanceTaskId, 2,ReadingTaskRelation.CreateTime ,ReadingTaskRelation.CreateUserId FROM ReadingTaskRelation inner join VisitTask on VisitTask.Id=ReadingTaskRelation.TaskId WHERE RelevanceType = 1 and ReadingCategory=1 -----------------------------------------2023-04-24----------------------------------- ---维护CriterionNidusTrial 数据 +-- 维护CriterionNidusTrial 数据 INSERT INTO CriterionNidusTrial (Id, CriterionId, CreateTime, CreateUserId, LesionType, OrganType) SELECT NEWID(), CriterionId, GETDATE(), '00000000-0000-0000-0000-000000000000', LesionType, OrganType FROM CriterionNidus -WHERE CriterionId NOT IN (SELECT DISTINCT CriterionId FROM CriterionNidusTrial ) and IsSystemCriterion=0 \ No newline at end of file +WHERE CriterionId NOT IN (SELECT DISTINCT CriterionId FROM CriterionNidusTrial ) and IsSystemCriterion=0 + + +-- 维护ReadingTrialCriterionDictionary 数据 +INSERT INTO ReadingTrialCriterionDictionary (Id, CriterionId, DictionaryId, CreateTime, CreateUserId, ParentCode, IsBaseLineUse, IsFollowVisitUse, CrterionDictionaryGroup) +SELECT NEWID(), RC.CriterionId, RC.DictionaryId, GETDATE(), '00000000-0000-0000-0000-000000000000', RC.ParentCode, RC.IsBaseLineUse, RC.IsFollowVisitUse, RC.CrterionDictionaryGroup +FROM ReadingCriterionDictionary RC +WHERE CriterionId NOT IN (SELECT DISTINCT CriterionId FROM ReadingTrialCriterionDictionary ) and IsSystemCriterion=0 \ No newline at end of file