From 07a2bcf446b3d280812afba21f2ccc9ebbfc73df Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 18 Aug 2022 16:32:32 +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 --- .../Service/Reading/Dto/OrganInfoViewModel.cs | 28 +++++++----- .../Service/Reading/OrganInfoService.cs | 43 ++++++++++--------- IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 20 +++++++++ IRaCIS.Core.Domain/Reading/CriterionLesion.cs | 9 +++- IRaCIS.Core.Domain/Reading/OrganInfo.cs | 4 +- IRaCIS.Core.Domain/Reading/OrganTrialInfo.cs | 2 +- 6 files changed, 70 insertions(+), 36 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs index c1208f3b0..6a5e68f69 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs @@ -13,8 +13,12 @@ namespace IRaCIS.Core.Application.ViewModel { public Guid? Id { get; set; } public Guid CriterionId { get; set; } - public string NidusType { get; set; } - public string NidusTypeCN { get; set; } + /// + /// 器官类型 + /// + public OrganType OrganType { get; set; } + + public LesionType LesionType { get; set; } public DateTime CreateTime { get; set; } public Guid CreateUserId { get; set; } } @@ -62,8 +66,6 @@ namespace IRaCIS.Core.Application.ViewModel public class GetCriterionLesionTypeInDto { public Guid CriterionId { get; set; } - - public bool IsSystem { get; set; } } ///CriterionNidusQuery 列表查询参数模型 @@ -82,6 +84,10 @@ namespace IRaCIS.Core.Application.ViewModel /// 病灶类型 /// public LesionType LesionType { get; set; } + /// + /// 器官类型 + /// + public OrganType OrganType { get; set; } public DateTime CreateTime { get; set; } public Guid CreateUserId { get; set; } } @@ -126,9 +132,9 @@ namespace IRaCIS.Core.Application.ViewModel public bool IsLymphNodes { get; set; } /// - /// 病灶类型 + /// 器官类型 /// - public LesionType LesionType { get; set; } + public OrganType OrganType { get; set; } } public class GetTrialSelectOrganListInDto @@ -165,7 +171,7 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 病灶类型 /// - public LesionType? LesionType { get; set; } + public OrganType? OrganType { get; set; } public bool? IsEnable { get; set; } } @@ -187,9 +193,9 @@ namespace IRaCIS.Core.Application.ViewModel public bool IsEnable { get; set; } /// - /// 病灶类型 + /// 器官类型 /// - public LesionType LesionType { get; set; } + public OrganType OrganType { get; set; } @@ -214,7 +220,7 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 病灶类型 /// - public LesionType? LesionType { get; set; } + public OrganType? OrganType { get; set; } public Guid SystemCriterionId { get; set; } @@ -244,7 +250,7 @@ namespace IRaCIS.Core.Application.ViewModel /// /// 病灶类型 /// - public LesionType LesionType { get; set; } + public OrganType OrganType { get; set; } /// /// 标准 病灶类型 diff --git a/IRaCIS.Core.Application/Service/Reading/OrganInfoService.cs b/IRaCIS.Core.Application/Service/Reading/OrganInfoService.cs index c7315f8b6..bd0fdb2bb 100644 --- a/IRaCIS.Core.Application/Service/Reading/OrganInfoService.cs +++ b/IRaCIS.Core.Application/Service/Reading/OrganInfoService.cs @@ -10,6 +10,7 @@ using IRaCIS.Core.Application.Interfaces; using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Infra.EFCore.Common; using MassTransit; +using IRaCIS.Core.Infrastructure; namespace IRaCIS.Core.Application.Service { @@ -50,14 +51,11 @@ namespace IRaCIS.Core.Application.Service public async Task> GetCriterionLesionType(GetCriterionLesionTypeInDto inDto) { var dicNums = new List(); - if (inDto.IsSystem) - { - dicNums = await _organInfoRepository.Where(x => x.SystemCriterionId == inDto.CriterionId).Select(x => (int)x.LesionType).Distinct().ToListAsync(); - } - else - { - dicNums = await _organTrialInfoRepository.Where(x => x.TrialCriterionId == inDto.CriterionId).Select(x => (int)x.LesionType).Distinct().ToListAsync(); - } + + + dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.CriterionId).Select(x => (int)x.LesionType).Distinct().ToListAsync(); + + var dictionaryId = await _dictionaryRepository.Where(x => x.Code == "LesionType").Select(x => x.Id).FirstOrDefaultAsync(); @@ -67,7 +65,7 @@ namespace IRaCIS.Core.Application.Service } /// - /// 获取标准病灶列表 + /// 获取标准病灶器官关系信息 /// /// /// @@ -83,22 +81,26 @@ namespace IRaCIS.Core.Application.Service } /// - /// 新增修改标准病灶列表 + /// 新增修改标准病灶器官关系信息 /// - /// + /// /// [HttpPost] - public async Task AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit addOrEditCriterionNidus) + public async Task AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit inDto) { - - var entity = await _criterionNidusRepository.InsertOrUpdateAsync(addOrEditCriterionNidus, true); + + if (await _criterionNidusRepository.AnyAsync(x => x.OrganType == inDto.OrganType && x.LesionType == inDto.LesionType && x.CriterionId == inDto.CriterionId && x.Id != inDto.Id)) + { + throw new BusinessValidationFailedException("存在相同的数据,操作失败"); + } + var entity = await _criterionNidusRepository.InsertOrUpdateAsync(inDto, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// - /// 删除病灶列表 + /// 删除病灶病灶器官关系信息 /// /// /// @@ -120,7 +122,7 @@ namespace IRaCIS.Core.Application.Service { var organInfoQueryable = _organInfoRepository .Where(x=>x.SystemCriterionId==inQuery.SystemCriterionId) - .WhereIf(inQuery.LesionType != null, x => x.LesionType == inQuery.LesionType) + .WhereIf(inQuery.OrganType != null, x => x.OrganType == inQuery.OrganType) .ProjectTo(_mapper.ConfigurationProvider); return await organInfoQueryable.ToListAsync(); } @@ -198,7 +200,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetTrialOrganList(GetTrialOrganListInDto inDto) { - var organInfoQueryable = from data in _organInfoRepository.WhereIf(inDto.LesionType != null, x => x.LesionType == inDto.LesionType) + var organInfoQueryable = from data in _organInfoRepository.WhereIf(inDto.OrganType != null, x => x.OrganType == inDto.OrganType) join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable) .Where(x => x.TrialId == inDto.TrialId) on data.Id equals trialData.OrganInfoId @@ -212,7 +214,7 @@ namespace IRaCIS.Core.Application.Service IsLymphNodes = data.IsLymphNodes, IsEnable= trialData.IsEnable, - LesionType= trialData.LesionType, + OrganType = trialData.OrganType, }; @@ -281,6 +283,7 @@ namespace IRaCIS.Core.Application.Service CriterionId = trialCriterionId, LesionType = x.LesionType, OriginalId = x.Id, + OrganType=x.OrganType, }).ToListAsync(); @@ -291,7 +294,7 @@ namespace IRaCIS.Core.Application.Service var originalIds = criterionNidusList.Select(x => x.OriginalId).Distinct().ToList(); List organTrialInfoList = await _organInfoRepository.Where(x =>x.SystemCriterionId== inDto.SystemCriterionId).Select(x => new OrganTrialInfo() { - LesionType=x.LesionType, + OrganType=x.OrganType, Id = x.Id, IsEnable = true, TrialCriterionId= readingQuestionCriterionTrial.Id, @@ -299,7 +302,7 @@ namespace IRaCIS.Core.Application.Service TrialId = inDto.TrialId, }).ToListAsync(); - criterionNidusList.ForEach(x => x.Id = NewId.NextGuid()); + organTrialInfoList.ForEach(x => x.Id = NewId.NextGuid()); await _organTrialInfoRepository.AddRangeAsync(organTrialInfoList); await _readingQuestionCriterionTrial.UpdatePartialFromQueryAsync(trialCriterionId,x=> new ReadingQuestionCriterionTrial() { SynchronizeOriginalTime=DateTime.Now diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index f9b5041cd..bf419c8d3 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -156,6 +156,26 @@ namespace IRaCIS.Core.Domain.Share } public enum LesionType + { + /// + /// 靶病灶 + /// + TargetLesion = 0, + + /// + /// 非靶病灶 + /// + NonTargetLesions = 1, + + /// + /// 新病灶 + /// + NewLesions = 1, + + } + + + public enum OrganType { /// /// 非靶和新病灶 diff --git a/IRaCIS.Core.Domain/Reading/CriterionLesion.cs b/IRaCIS.Core.Domain/Reading/CriterionLesion.cs index edd164f50..0b5219725 100644 --- a/IRaCIS.Core.Domain/Reading/CriterionLesion.cs +++ b/IRaCIS.Core.Domain/Reading/CriterionLesion.cs @@ -35,8 +35,13 @@ namespace IRaCIS.Core.Domain.Models /// CreateUserId /// public Guid CreateUserId { get; set; } - - } + + /// + /// 器官类型 + /// + public OrganType OrganType { get; set; } + + } } diff --git a/IRaCIS.Core.Domain/Reading/OrganInfo.cs b/IRaCIS.Core.Domain/Reading/OrganInfo.cs index f75daa716..014773634 100644 --- a/IRaCIS.Core.Domain/Reading/OrganInfo.cs +++ b/IRaCIS.Core.Domain/Reading/OrganInfo.cs @@ -44,9 +44,9 @@ namespace IRaCIS.Core.Domain.Models public bool IsLymphNodes { get; set; } /// - /// 病灶类型 + /// 器官类型 /// - public LesionType LesionType { get; set; } + public OrganType OrganType { get; set; } /// /// 标准Id diff --git a/IRaCIS.Core.Domain/Reading/OrganTrialInfo.cs b/IRaCIS.Core.Domain/Reading/OrganTrialInfo.cs index ec26b74c9..eb2a3abf8 100644 --- a/IRaCIS.Core.Domain/Reading/OrganTrialInfo.cs +++ b/IRaCIS.Core.Domain/Reading/OrganTrialInfo.cs @@ -42,7 +42,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 病灶类型 /// - public LesionType LesionType { get; set; } + public OrganType OrganType { get; set; } /// /// 标准Id