From 114ad745223672b15b3eeadfcee271dffbccebd7 Mon Sep 17 00:00:00 2001 From: "{872297557@qq.com}" <872297557@qq.com> Date: Wed, 1 Feb 2023 11:43:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=82=BF=E7=98=A4=E5=AD=A6=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingQuestionService.cs | 1 - .../TrialSiteUser/TrialConfigService.cs | 126 +++++------ .../Common/AuditingData.cs | 205 +++++++++++------- 3 files changed, 193 insertions(+), 139 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs index 29b108845..7e3602572 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs @@ -954,7 +954,6 @@ namespace IRaCIS.Application.Services await _readingTableQuestionTrialRepository.AddRangeAsync(needAddTableDatas); #endregion - await _readingQuestionTrialRepository.SaveChangesAsync(); } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index b19c44a8f..6f52861fb 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -20,7 +20,7 @@ using static IRaCIS.Core.Domain.Share.StaticData; namespace IRaCIS.Core.Application { [ApiExplorerSettings(GroupName = "Trial")] - public class TrialConfigService : BaseService, ITrialConfigService + public class TrialConfigService : BaseService, ITrialConfigService { private readonly IRepository _trialRepository; private readonly IRepository _trialQCQuestionRepository; @@ -101,7 +101,7 @@ namespace IRaCIS.Core.Application .WhereIf(trialCriterion.FormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null) .AnyAsync(); - if (existsJudge&& trialCriterion.IsArbitrationReading) + if (existsJudge && trialCriterion.IsArbitrationReading) { throw new BusinessValidationFailedException("有裁判问题未配置产生裁判阅片任务的条件,操作失败!"); } @@ -134,14 +134,14 @@ namespace IRaCIS.Core.Application [NonDynamicMethod] public async Task TrialReadingInfoSign(TrialReadingInfoSignInDto inDto) { - var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); + var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); var existsJudge = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id && x.IsJudgeQuestion && x.JudgeType == JudgeTypeEnum.None) .WhereIf(trialCriterion.FormType == FormType.SinglePage, x => x.ReadingCriterionPageId == null) .WhereIf(trialCriterion.FormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null) .AnyAsync(); - if (existsJudge&& trialCriterion.IsArbitrationReading) + if (existsJudge && trialCriterion.IsArbitrationReading) { throw new BusinessValidationFailedException("有裁判问题未配置产生裁判阅片任务的条件,操作失败!"); } @@ -164,10 +164,10 @@ namespace IRaCIS.Core.Application [HttpPost] public async Task GetCriterionReadingInfo(GetTrialReadingInfoInDto inDto) { - - GetTrialReadingInfoOutDto trialInfo= await _readingQuestionCriterionTrialRepository.Where(x=>x.Id==inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + + GetTrialReadingInfoOutDto trialInfo = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); if (trialInfo.ReadingTool == null) { @@ -192,14 +192,15 @@ namespace IRaCIS.Core.Application await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id); var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value) .ToListAsync(); - criterionDictionaryList.ForEach(x => { + criterionDictionaryList.ForEach(x => + { x.Id = NewId.NextGuid(); x.Dictionary = null; x.IsSystemCriterion = false; x.CriterionId = inDto.TrialReadingCriterionId; }); - if (trialCriterion.SynchronizeOriginalTime == null ) + if (trialCriterion.SynchronizeOriginalTime == null) { // 同步器官 await _iOrganInfoService.SynchronizeSystemOrganToTrial(new SynchronizeSystemOrganToTrialInDto() @@ -215,20 +216,14 @@ namespace IRaCIS.Core.Application TrialReadingCriterionId = inDto.TrialReadingCriterionId, }); - // 清除多余答案 - var questionQuery = _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).AsQueryable(); - var tableQuestionQuery = _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).AsQueryable(); - await _readingTaskQuestionAnswer.BatchDeleteNoTrackingAsync(x => questionQuery.Count(y => y.Id == x.ReadingQuestionTrialId) == 0) ; - await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => questionQuery.Count(y => y.Id == x.QuestionId)==0); - await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => tableQuestionQuery.Count(y => y.Id == x.TableQuestionId)==0); var systemCriterion = await _readingQuestionCriterionSystemRepository.Where(x => x.Id == trialCriterion.ReadingQuestionCriterionSystemId).FirstNotNullAsync(); await _readingQuestionCriterionTrialRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial() { IsOncologyReading = systemCriterion.IsOncologyReading, - IseCRFShowInDicomReading=systemCriterion.IseCRFShowInDicomReading, + IseCRFShowInDicomReading = systemCriterion.IseCRFShowInDicomReading, }); @@ -239,7 +234,16 @@ namespace IRaCIS.Core.Application { SynchronizeOriginalTime = DateTime.Now }); + await _readingCriterionDictionaryRepository.SaveChangesAsync(); + + + // 清除多余答案 + var questionQuery = _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).AsQueryable(); + var tableQuestionQuery = _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId).AsQueryable(); + await _readingTaskQuestionAnswer.BatchDeleteNoTrackingAsync(x => questionQuery.Count(y => y.Id == x.ReadingQuestionTrialId) == 0); + await _readingTableAnswerRowInfoRepository.BatchDeleteNoTrackingAsync(x => questionQuery.Count(y => y.Id == x.QuestionId) == 0); + await _readingTableQuestionAnswerRepository.BatchDeleteNoTrackingAsync(x => tableQuestionQuery.Count(y => y.Id == x.TableQuestionId) == 0); } return ResponseOutput.Ok(true); @@ -265,13 +269,13 @@ namespace IRaCIS.Core.Application { CriterionId = inDto.TrialReadingCriterionId, DictionaryId = x.DictionaryId, - IsBaseLineUse=x.IsBaseLineUse, - IsFollowVisitUse=x.IsFollowVisitUse, + IsBaseLineUse = x.IsBaseLineUse, + IsFollowVisitUse = x.IsFollowVisitUse, IsSystemCriterion = false, ParentCode = ReadingCommon.CriterionDictionary.GlobalAssess })); - var result= await _readingCriterionDictionaryRepository.SaveChangesAsync(); + var result = await _readingCriterionDictionaryRepository.SaveChangesAsync(); return ResponseOutput.Ok(result); } @@ -289,8 +293,8 @@ namespace IRaCIS.Core.Application GetGlobalReadingOutDto result = new GetGlobalReadingOutDto() { IsGlobalReading = trialCriterion.IsGlobalReading, - IsSystemCriterion= trialCriterion.ReadingQuestionCriterionSystemId!=null, - IsSign=trialCriterion.ReadingInfoSignTime!=null, + IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null, + IsSign = trialCriterion.ReadingInfoSignTime != null, GlobalAssessTypes = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.CriterionDictionary.GlobalAssess ) @@ -308,7 +312,7 @@ namespace IRaCIS.Core.Application Value = x.Dictionary.Value, ValueCN = x.Dictionary.ValueCN }).OrderBy(x => x.ParentCode).ThenBy(x => x.ShowOrder).ToListAsync() - }; + }; return result; } @@ -324,9 +328,9 @@ namespace IRaCIS.Core.Application var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); return new GetOncologySetOutDto { - EvaluationReason = trialCriterion.EvaluationReason.IsNullOrEmpty()? ReadingCommon.EvaluationReason : trialCriterion.EvaluationReason, + 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(), - IsSystemCriterion= trialCriterion.ReadingQuestionCriterionSystemId!=null, + IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null, IsSign = trialCriterion.ReadingInfoSignTime != null, }; } @@ -340,13 +344,13 @@ namespace IRaCIS.Core.Application [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task SetOncologySet(SetOncologySetInDto inDto) { - - + + await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial() { EvaluationResult = inDto.EvaluationResult, EvaluationReason = inDto.EvaluationReason, - IsShowDetail=inDto.IsShowDetail, + IsShowDetail = inDto.IsShowDetail, }); @@ -370,31 +374,31 @@ namespace IRaCIS.Core.Application /// /// [HttpPost] - public async Task<(List,object)> GetTrialReadingJudgeList(GetTrialReadingInfoInDto inDto) + public async Task<(List, object)> GetTrialReadingJudgeList(GetTrialReadingInfoInDto inDto) { var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); - - var judgeQuestionList= await _readingQuestionTrialRepository - .WhereIf(trialCriterion.FormType==FormType.SinglePage,x=>x.ReadingCriterionPageId==null) + + var judgeQuestionList = await _readingQuestionTrialRepository + .WhereIf(trialCriterion.FormType == FormType.SinglePage, x => x.ReadingCriterionPageId == null) .WhereIf(trialCriterion.FormType == FormType.MultiplePage, x => x.ReadingCriterionPageId != null) - .Where(x => x.ReadingQuestionCriterionTrial.IsConfirm && x.IsJudgeQuestion && x.TrialId == inDto.TrialId&&x.ReadingQuestionCriterionTrialId== trialCriterion.Id) + .Where(x => x.ReadingQuestionCriterionTrial.IsConfirm && x.IsJudgeQuestion && x.TrialId == inDto.TrialId && x.ReadingQuestionCriterionTrialId == trialCriterion.Id) .Select(x => new TrialJudgeQuestion() { AnswerCombination = x.AnswerCombination, AnswerGroup = x.AnswerGroup, JudgeType = x.JudgeType, QuestionId = x.Id, - PageName=x.ReadingCriterionPage.PageName, + PageName = x.ReadingCriterionPage.PageName, QuestionName = x.QuestionName.LanguageName(x.QuestionEnName, _userInfo.IsEn_Us), ReadingQuestionCriterionTrialId = x.ReadingQuestionCriterionTrialId }).ToListAsync(); - + return (judgeQuestionList, new { - IsSign= trialCriterion.ReadingInfoSignTime!= null, + IsSign = trialCriterion.ReadingInfoSignTime != null, }); } @@ -407,7 +411,7 @@ namespace IRaCIS.Core.Application [HttpPost] public async Task> GetReadingCriterionPageList(GetTrialReadingInfoInDto inDto) { - return await _readingCriterionPageRepository.Where(x => x.TrialId == inDto.TrialId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + return await _readingCriterionPageRepository.Where(x => x.TrialId == inDto.TrialId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } /// @@ -419,20 +423,20 @@ namespace IRaCIS.Core.Application public async Task GetTrialReadingCriterionInfo(GetTrialReadingInfoInDto inDto) { GetTrialReadingCriterionInfoOutDto result = new GetTrialReadingCriterionInfoOutDto(); - result.ReadingCriterionPageList = await _readingCriterionPageRepository.Where(x => x.TrialId == inDto.TrialId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync(); - var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); + result.ReadingCriterionPageList = await _readingCriterionPageRepository.Where(x => x.TrialId == inDto.TrialId).ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); + var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); result.ReadingInfoSignTime = trialCriterion.ReadingInfoSignTime; - + result.DigitPlaces = trialCriterion.DigitPlaces; result.TrialCriterionId = trialCriterion.Id; result.FormType = trialCriterion.FormType; result.IsFromSystem = trialCriterion.ReadingQuestionCriterionSystemId != null; result.IsMustGlobalReading = trialCriterion.IsMustGlobalReading; result.IsSystemCriterion = trialCriterion.ReadingQuestionCriterionSystemId != null; - - result.TrialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrial.IsConfirm && x.TrialId == inDto.TrialId&&x.ReadingQuestionCriterionTrialId == result.TrialCriterionId - &&x.ReadingCriterionPageId==null) + + result.TrialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrial.IsConfirm && x.TrialId == inDto.TrialId && x.ReadingQuestionCriterionTrialId == result.TrialCriterionId + && x.ReadingCriterionPageId == null) .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); return result; @@ -460,13 +464,13 @@ namespace IRaCIS.Core.Application throw new BusinessValidationFailedException("当前标准下未配置问题"); } } - + await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial() { FormType = inDto.FormType, }); - + var result = await _trialRepository.SaveChangesAsync(); @@ -493,28 +497,28 @@ namespace IRaCIS.Core.Application await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial() { - ReadingTool=inDto.ReadingTool, - IsReadingPeriod=inDto.IsReadingPeriod, + ReadingTool = inDto.ReadingTool, + IsReadingPeriod = inDto.IsReadingPeriod, //DigitPlaces=inDto.DigitPlaces, - IsReadingTaskViewInOrder =inDto.IsReadingTaskViewInOrder, + IsReadingTaskViewInOrder = inDto.IsReadingTaskViewInOrder, ReadingTaskViewEnum = inDto.ReadingTaskViewEnum, - DigitPlaces= inDto.DigitPlaces, + DigitPlaces = inDto.DigitPlaces, //IsImageIabeled = inDto.IsImageIabeled, IsReadingShowSubjectInfo = inDto.IsReadingShowSubjectInfo, IsReadingShowPreviousResults = inDto.IsReadingShowPreviousResults, - GlobalUpdateType=inDto.GlobalUpdateType, - ImagePlatform=inDto.ImagePlatform, - IseCRFShowInDicomReading=inDto.IseCRFShowInDicomReading, - ArbitrationRule= arbitration, + GlobalUpdateType = inDto.GlobalUpdateType, + ImagePlatform = inDto.ImagePlatform, + IseCRFShowInDicomReading = inDto.IseCRFShowInDicomReading, + ArbitrationRule = arbitration, ReadingType = inDto.ReadingType, IsGlobalReading = inDto.IsGlobalReading, IsArbitrationReading = inDto.IsArbitrationReading, IsOncologyReading = inDto.IsOncologyReading, - + }); - + var result = await _readingQuestionCriterionTrialRepository.SaveChangesAsync(); @@ -541,7 +545,7 @@ namespace IRaCIS.Core.Application { SignCodeId = signRawText.Id, SignCode = signRawText.Code, - SignText = _userInfo.IsEn_Us? signRawText.ParentValue.Replace("xxx", signRawText.Value) : signRawText.ParentValueCN.Replace("xxx", signRawText.ValueCN), + SignText = _userInfo.IsEn_Us ? signRawText.ParentValue.Replace("xxx", signRawText.Value) : signRawText.ParentValueCN.Replace("xxx", signRawText.ValueCN), //SignTextCN = signRawText.ParentValueCN.Replace("xxx", signRawText.Value) }); } @@ -627,8 +631,8 @@ namespace IRaCIS.Core.Application { await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true }); } - else - + else + if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString()) { @@ -699,7 +703,7 @@ namespace IRaCIS.Core.Application trialInfo.UpdateTime = DateTime.Now; - + return ResponseOutput.Ok(await _repository.SaveChangesAsync()); } @@ -719,12 +723,12 @@ namespace IRaCIS.Core.Application return ResponseOutput.NotOk("该项目当前状态不是初始化,不允许进行该操作。"); } - + var trialInfo = await _trialRepository.Where(t => t.Id == trialConfig.TrialId, true).Include(t => t.TrialDicList.Where(u => u.KeyName == StaticData.Criterion)).FirstOrDefaultAsync(); if (trialInfo == null) return Null404NotFound(trialInfo); - + _mapper.Map(trialConfig, trialInfo); @@ -959,7 +963,7 @@ namespace IRaCIS.Core.Application /// /// [HttpPut] - [TypeFilter(typeof(TrialResourceFilter),Arguments = new object[] { "BeforeOngoingCantOpt", "AfterStopCannNotOpt" })] + [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt", "AfterStopCannNotOpt" })] //[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task ConfigTrialReadingTaskViewRule(TrialReadingTaskViewConfig trialConfig) { @@ -970,7 +974,7 @@ namespace IRaCIS.Core.Application return ResponseOutput.Ok(await _trialRepository.SaveChangesAsync()); } - + } } diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 0dfa843b9..045589a8a 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -141,9 +141,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common { //TrialDicList = string.Join(",", trialDics) - CriterionNames = criterionNameList.Count() > 0? string.Join(",", criterionNameList):string.Empty, + CriterionNames = criterionNameList.Count() > 0 ? string.Join(",", criterionNameList) : string.Empty, - ClinicalDataSetNames = clinicalDataSetNameList.Count() > 0 ? string.Join(",", clinicalDataSetNameList):String.Empty, + ClinicalDataSetNames = clinicalDataSetNameList.Count() > 0 ? string.Join(",", clinicalDataSetNameList) : String.Empty, }); ; } @@ -196,10 +196,18 @@ namespace IRaCIS.Core.Infra.EFCore.Common var isDistinctionInterface = false; //设置项目配置 肿瘤学配置 和阅片标准配置 - if (_userInfo.RequestUrl == "TrialConfig/setOncologySet" || _userInfo.RequestUrl == "TrialConfig/setTrialReadingCriterion" || _userInfo.RequestUrl == "configTrialBasicInfo/ConfigTrialProcessInfoConfirm" + if (_userInfo.RequestUrl == "TrialConfig/setOncologySet" + + //现在废弃 没用 + || _userInfo.RequestUrl == "TrialConfig/setTrialReadingCriterion" + + //项目流程确认 + || _userInfo.RequestUrl == "configTrialBasicInfo/ConfigTrialProcessInfoConfirm" //阅片单元 保存阅片规则 - || _userInfo.RequestUrl == "TrialConfig/setCriterionReadingInfo") + || _userInfo.RequestUrl == "TrialConfig/setCriterionReadingInfo" + + || _userInfo.RequestUrl == "configTrialBasicInfo/TrialReadingInfoSign") { isDistinctionInterface = true; } @@ -212,6 +220,20 @@ namespace IRaCIS.Core.Infra.EFCore.Common extraIdentification = "/Auto"; } + //保存肿瘤学配置哪里 强行要将 评估结果(中间字典表的多条数据)存到标准稽查上 + + var dicIdList = entitys.Where(x => x.Entity.GetType() == typeof(ReadingCriterionDictionary)).Select(t => t.Entity as ReadingCriterionDictionary).Where(t=>t.CriterionId==entity.Id).Select(t=>t.DictionaryId).ToList(); + + var dicValueList = new List(); + if (dicIdList.Count() == 0) + { + dicValueList = await _dbContext.ReadingCriterionDictionary.Where(t => t.CriterionId == entity.Id).Select(t => t.Dictionary.Value).ToListAsync(); + } + else + { + dicValueList = await _dbContext.Dictionary.Where(t => dicIdList.Contains(t.Id) ).Select(t => t.Value).ToListAsync(); + } + await InsertInspection(entity, type, x => new InspectionConvertDTO() { @@ -223,7 +245,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common ExtraIndentification = extraIdentification - }); + }, new + { + EvaluationResultTypes = dicValueList.Count > 0 ? string.Join(",", dicValueList) : string.Empty + }) ; } //系统标准问题 @@ -264,21 +289,40 @@ namespace IRaCIS.Core.Infra.EFCore.Common var isDistinctionInterface = false; - //重置仲裁规则 - if (_userInfo.RequestUrl == "ReadingImageTask/setTrialCriterionJudgeQuestionAnswerGroup") - { - isDistinctionInterface = true; - } - - + var extraIdentification = string.Empty; //同步的数据 后面加"/Auto" 因为同步的地方可能会改 所以取反 - var extraIdentification = string.Empty; if (_userInfo.RequestUrl != "ReadingQuestion/addOrUpdateReadingQuestionTrial" && type == AuditOpt.Add) { extraIdentification = "/Auto"; } + //重置仲裁规则 + + var cloneEntity = entity.Clone(); + + if (_userInfo.RequestUrl == "ReadingImageTask/setTrialCriterionJudgeQuestionAnswerGroup") + { + isDistinctionInterface = true; + + if (entity.JudgeType == JudgeTypeEnum.None) + { + extraIdentification = "/Reset"; + } + + //翻译 可能自己填写的 也有可能是从字典中获取的 + if (entity.QuestionGenre == TableQuestionType.Dictionary && !string.IsNullOrWhiteSpace(entity.DictionaryCode)) + { + var translateList = _dbContext.Dictionary.Where(t => t.Code == entity.DictionaryCode.Trim()).SelectMany(t => t.ChildList).Select(t => new { t.Code, t.Value, t.ValueCN }).ToList(); + + foreach (var translateItem in translateList) + { + cloneEntity.AnswerCombination = cloneEntity.AnswerCombination.Replace($"\"{translateItem.Code}\"", $"\"{translateItem.Value}\""); + + cloneEntity.AnswerGroup = cloneEntity.AnswerGroup.Replace($"|{translateItem.Code}|", $"|{translateItem.Value}|"); + } + } + } int? parentQuestionShowOrder = null; int? relavantQuestionShowOrder = null; @@ -295,7 +339,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common } - await InsertInspection(entity, type, x => new InspectionConvertDTO() + await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() { IsDistinctionInterface = isDistinctionInterface, @@ -545,68 +589,75 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingCriterionDictionary))) { - //系统标准设置 没有翻译的字段 - //if (_userInfo.RequestUrl == "ReadingQuestion/setCriterionDictionary") - //{ + var type = AuditOpt.Add; - var list = entitys.Where(x => x.Entity.GetType() == typeof(ReadingCriterionDictionary)).Select(t => t.Entity as ReadingCriterionDictionary).ToList(); - - var firstEntity = list.First(); - - var cloneEntity = firstEntity.Clone(); - + var allList = entitys.Where(x => x.Entity.GetType() == typeof(ReadingCriterionDictionary)).Select(t => t.Entity as ReadingCriterionDictionary).ToList(); //查询出字典的Value ValueCN Des 保存 - var dicIdList = list.Select(t => t.DictionaryId).ToList(); + var dicIdList = allList.Select(t => t.DictionaryId).ToList(); + var selectList = await _dbContext.Dictionary.Where(x => dicIdList.Contains(x.Id)).Select(t => new { t.Id, t.Value, t.ValueCN, t.Description, t.ShowOrder }).ToListAsync(); - //保证Id 唯一 - cloneEntity.Id = IdentifierHelper.CreateGuid(firstEntity.CriterionId.ToString(), firstEntity.ParentCode.ToString()); - - var extraIdentification = string.Empty; - - //系统标准 - if (cloneEntity.IsSystemCriterion) - { - extraIdentification = $"/{cloneEntity.ParentCode}"; - } - else - { - extraIdentification = $"/{cloneEntity.ParentCode}/IsTrial"; - } - - - await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() + foreach (var list in allList.GroupBy(t => t.ParentCode)) { - ObjectRelationParentId = x.CriterionId, + var firstEntity = list.First(); + var cloneEntity = list.First().Clone(); - TrialReadingCriterionId = x.IsSystemCriterion == false ? x.CriterionId : null, - //不显示区分接口 通过是否是系统字典 以及字典Code 区分 - IsDistinctionInterface = false, - ExtraIndentification = extraIdentification + //保证Id 唯一 + cloneEntity.Id = IdentifierHelper.CreateGuid(firstEntity.CriterionId.ToString(), firstEntity.ParentCode.ToString()); - }, - new + + var extraIdentification = string.Empty; + + //系统标准 + if (cloneEntity.IsSystemCriterion) { - SelectList = selectList.Join(list, t => t.Id, u => u.DictionaryId, (t, u) => - new - { - t.Value, - t.ValueCN, - t.Description, - t.ShowOrder, - u.IsBaseLineUse, - u.IsFollowVisitUse - } - ).OrderBy(t => t.ShowOrder).ToList() - }); + extraIdentification = $"/{cloneEntity.ParentCode}"; + } + else + { + extraIdentification = $"/{cloneEntity.ParentCode}/IsTrial"; + } + + + await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() + { + + ObjectRelationParentId = x.CriterionId, + + TrialReadingCriterionId = x.IsSystemCriterion == false ? x.CriterionId : null, + + //不显示区分接口 通过是否是系统字典 以及字典Code 区分 + IsDistinctionInterface = false, + ExtraIndentification = extraIdentification + + }, + new + { + SelectList = selectList.Join(list, t => t.Id, u => u.DictionaryId, (t, u) => + new + { + t.Value, + t.ValueCN, + t.Description, + t.ShowOrder, + u.IsBaseLineUse, + u.IsFollowVisitUse + } + ).OrderBy(t => t.ShowOrder).ToList() + }); + } + + + + + - //} } @@ -1573,11 +1624,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common //} //trialDics = await this._dbContext.Dictionary.Where(x => dictionaryIds.Contains(x.Id)).Select(x => x.ValueCN).ToListAsync(); - var trialReadingCritiralIdList= new List(); + var trialReadingCritiralIdList = new List(); var criterionNameList = new List(); - if (entity.TrialClinicalDataSetCriteriaList==null || entity.TrialClinicalDataSetCriteriaList.Count() == 0) + if (entity.TrialClinicalDataSetCriteriaList == null || entity.TrialClinicalDataSetCriteriaList.Count() == 0) { criterionNameList = await _dbContext.TrialClinicalDataSetCriterion.Where(t => t.TrialClinicalDataSetId == entity.Id).Select(t => t.TrialReadingCriterion.CriterionName).ToListAsync(); } @@ -1592,9 +1643,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common IsDistinctionInterface = false, ObjectRelationParentId = entity.TrialId, ExtraIndentification = extraIdentification, - },new + }, new { - CriterionNames= criterionNameList?.Count()>0? string.Join(",", criterionNameList):string.Empty + CriterionNames = criterionNameList?.Count() > 0 ? string.Join(",", criterionNameList) : string.Empty }); } @@ -2527,22 +2578,22 @@ namespace IRaCIS.Core.Infra.EFCore.Common } break; - case nameof(ReadingQuestionTrial): + //case nameof(ReadingQuestionTrial): - var trialReadingQuestion = entityObj as ReadingQuestionTrial; + // var trialReadingQuestion = entityObj as ReadingQuestionTrial; - switch (_userInfo.RequestUrl) - { - case "ReadingImageTask/setTrialCriterionJudgeQuestionAnswerGroup": + // switch (_userInfo.RequestUrl) + // { + // case "ReadingImageTask/setTrialCriterionJudgeQuestionAnswerGroup": - if (trialReadingQuestion.JudgeType == JudgeTypeEnum.None) - { - type = type + "/" + "Reset"; - } + // if (trialReadingQuestion.JudgeType == JudgeTypeEnum.None) + // { + // type = type + "/" + "Reset"; + // } - break; - } - break; + // break; + // } + // break;