From 6bfbcd7d2c839c0174277a01d8535f87f8ca320d Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 19 Oct 2022 14:28:29 +0800 Subject: [PATCH] =?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/Dto/ReadingImageTaskViewModel.cs | 10 ++ .../ReadingJudgeTaskService.cs | 2 + .../TrialSiteUser/DTO/TrialConfigDTO.cs | 33 +++++- .../TrialSiteUser/TrialConfigService.cs | 103 ++++++++++++------ .../Common/ReadingCommon.cs | 5 + 5 files changed, 115 insertions(+), 38 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 4599d6aae..d633cb05b 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -889,6 +889,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string TypeValue { get; set; } + /// + /// 问题类型 + /// + public TableQuestionType? QuestionGenre { get; set; } + + /// + /// 字典code + /// + public string DictionaryCode { get; set; } = string.Empty; + /// /// 裁判类别 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs index 16b2d1d60..0c6a9a546 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingJudgeTaskService.cs @@ -41,6 +41,8 @@ namespace IRaCIS.Application.Services QuestionName = x.QuestionName, PageName = x.ReadingCriterionPage.PageName, TypeValue = x.TypeValue, + QuestionGenre=x.QuestionGenre, + DictionaryCode=x.DictionaryCode, JudgeType = x.JudgeType, ReadingQuestionTrialId = x.Id }).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index c526badf4..036083462 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -347,10 +347,6 @@ namespace IRaCIS.Core.Application.Contracts /// public int ImagePlatform { get; set; } = 1; - /// - /// 全局阅片 - /// - public bool IsGlobalReading { get; set; } /// /// 系统标准ID @@ -419,7 +415,7 @@ namespace IRaCIS.Core.Application.Contracts public bool? IsArbitrationReading { get; set; } - public List GlobalAssessTypeIds { get; set; } + ///// @@ -763,6 +759,33 @@ namespace IRaCIS.Core.Application.Contracts } + public class GetGlobalReadingOutDto + { + public List GlobalAssessTypeIds { get; set; } + + + /// + /// 全局阅片 + /// + public bool IsGlobalReading { get; set; } + + public bool IsSystemCriterion { get; set; } + } + + public class SetGlobalReadingInfoInDto + { + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } + + public List GlobalAssessTypeIds { get; set; } + + + /// + /// 全局阅片 + /// + public bool IsGlobalReading { get; set; } + } + public class GetOncologySetInDto { public Guid TrialReadingCriterionId { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 396059644..e5d2acacb 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -138,10 +138,57 @@ namespace IRaCIS.Core.Application { var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); - if ((!await _readingCriterionDictionaryRepository.AnyAsync(x=>x.CriterionId == trialCriterion.Id && x.ParentCode == "GlobalAssessType"))&& trialCriterion.ReadingQuestionCriterionSystemId!=null) + + + + GetTrialReadingInfoOutDto trialInfo= await _readingQuestionCriterionTrialRepository.Where(x=>x.Id==inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + + + + return trialInfo; + } + + /// + /// 修改全局阅片配置信息 + /// + /// + /// + public async Task SetGlobalReadingInfo(SetGlobalReadingInfoInDto inDto) + { + + await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(inDto.TrialReadingCriterionId, x => new ReadingQuestionCriterionTrial() { - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id&&x.ParentCode== "GlobalAssessType"); - var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value&&x.ParentCode== "GlobalAssessType"). + IsGlobalReading = inDto.IsGlobalReading + + }); + await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.GlobalAssess); + await _readingCriterionDictionaryRepository.AddRangeAsync(inDto.GlobalAssessTypeIds.Select(x => new ReadingCriterionDictionary + { + CriterionId = inDto.TrialReadingCriterionId, + DictionaryId = x, + IsSystemCriterion = false, + ParentCode = ReadingCommon.GlobalAssess + })); + + var result= await _readingCriterionDictionaryRepository.SaveChangesAsync(); + + return ResponseOutput.Ok(result); + } + + /// + /// 获取全局阅片信息 + /// + /// + /// + public async Task GetGlobalReadingInfo(GetOncologySetInDto inDto) + { + + var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); + + if ((!await _readingCriterionDictionaryRepository.AnyAsync(x => x.CriterionId == trialCriterion.Id && x.ParentCode == ReadingCommon.GlobalAssess)) && trialCriterion.ReadingQuestionCriterionSystemId != null) + { + await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id && x.ParentCode == ReadingCommon.GlobalAssess); + var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value && x.ParentCode == ReadingCommon.GlobalAssess). Select(x => new ReadingCriterionDictionary() { CriterionId = trialCriterion.Id, @@ -154,31 +201,30 @@ namespace IRaCIS.Core.Application await _readingCriterionDictionaryRepository.AddRangeAsync(criterionDictionaryList); await _readingCriterionDictionaryRepository.SaveChangesAsync(); } - - - GetTrialReadingInfoOutDto trialInfo= await _readingQuestionCriterionTrialRepository.Where(x=>x.Id==inDto.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); - - trialInfo.GlobalAssessTypeIds = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == "GlobalAssessType").Select(x => x.DictionaryId).ToListAsync(); - - return trialInfo; + GetGlobalReadingOutDto result = new GetGlobalReadingOutDto() + { + IsGlobalReading = trialCriterion.IsGlobalReading, + IsSystemCriterion= trialCriterion.ReadingQuestionCriterionSystemId!=null, + GlobalAssessTypeIds = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.GlobalAssess).Select(x => x.DictionaryId).ToListAsync(), + }; + return result; } - - /// - /// 获取项目肿瘤学配置 - /// - /// - /// + /// + /// 获取项目肿瘤学配置 + /// + /// + /// [HttpPost] public async Task GetOncologySet(GetOncologySetInDto inDto) { - var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); + var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstNotNullAsync(); - if ((!await _readingCriterionDictionaryRepository.AnyAsync(x => x.CriterionId == trialCriterion.Id && x.ParentCode == "OncologyAssessType")) && trialCriterion.ReadingQuestionCriterionSystemId != null) + if ((!await _readingCriterionDictionaryRepository.AnyAsync(x => x.CriterionId == trialCriterion.Id && x.ParentCode == ReadingCommon.OncologyAssess)) && trialCriterion.ReadingQuestionCriterionSystemId != null) { - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id && x.ParentCode == "OncologyAssessType"); - var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value && x.ParentCode == "OncologyAssessType"). + await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterion.Id && x.ParentCode == ReadingCommon.OncologyAssess); + var criterionDictionaryList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == trialCriterion.ReadingQuestionCriterionSystemId.Value && x.ParentCode == ReadingCommon.OncologyAssess). Select(x => new ReadingCriterionDictionary() { CriterionId = trialCriterion.Id, @@ -196,7 +242,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 == "OncologyAssessType").Select(x => x.DictionaryId).ToListAsync(), + OncologyAssessIds = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.OncologyAssess).Select(x => x.DictionaryId).ToListAsync(), IsSystemCriterion= trialCriterion.ReadingQuestionCriterionSystemId!=null, IsSign = trialCriterion.ReadingInfoSignTime != null, }; @@ -220,14 +266,14 @@ namespace IRaCIS.Core.Application }); - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == "OncologyAssess"); + await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == ReadingCommon.OncologyAssess); await _readingCriterionDictionaryRepository.AddRangeAsync(inDto.OncologyAssessIds.Select(x => new ReadingCriterionDictionary { CriterionId = inDto.TrialReadingCriterionId, DictionaryId = x, IsSystemCriterion = false, - ParentCode = "OncologyAssess" + ParentCode = ReadingCommon.OncologyAssess })); var result = await _readingQuestionCriterionTrialRepository.SaveChangesAsync(); @@ -353,9 +399,6 @@ namespace IRaCIS.Core.Application DigitPlaces = inDto.DigitPlaces, }); - - await _readingCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.TrialReadingCriterionId && x.ParentCode == "GlobalAssessType"); - @@ -400,13 +443,7 @@ namespace IRaCIS.Core.Application }); - await _readingCriterionDictionaryRepository.AddRangeAsync(inDto.GlobalAssessTypeIds.Select(x => new ReadingCriterionDictionary - { - CriterionId = inDto.TrialReadingCriterionId, - DictionaryId = x, - IsSystemCriterion = false, - ParentCode = "GlobalAssessType" - })); + var result = await _readingQuestionCriterionTrialRepository.SaveChangesAsync(); diff --git a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs index 4c3a06649..7d356e119 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs @@ -15,6 +15,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common public static class ReadingCommon { + public const string GlobalAssess = "GlobalAssessType"; + + public const string OncologyAssess = "OncologyAssessType"; + + public static Dictionary SplitLesionDic = new Dictionary() { {1, "a" },