diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs index 0a2315ad7..1b15b16db 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/OrganInfoViewModel.cs @@ -67,8 +67,10 @@ namespace IRaCIS.Core.Application.ViewModel public class GetCriterionLesionTypeInDto { - public Guid CriterionId { get; set; } - } + public Guid? SystemCriterionId { get; set; } + + public Guid? TrialCriterionId { get; set; } + } ///CriterionNidusQuery 列表查询参数模型 public class CriterionNidusQuery diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs index 45a7a039e..f7e35166c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/OrganInfoService.cs @@ -28,14 +28,18 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _organTrialInfoRepository; private readonly IRepository _readingQuestionCriterionTrial; private readonly IRepository _criterionNidusRepository; + private readonly IRepository _criterionNidusTrialRepository; + private readonly IRepository _readingQuestionCriterionSystemRepository; - public OrganInfoService( + public OrganInfoService( IRepository organInfoRepository, IRepository dictionaryRepository, IRepository visitTaskRepository, IRepository organTrialInfoRepository, IRepository readingQuestionCriterionTrial, - IRepository criterionNidusRepository + IRepository criterionNidusTrialRepository, + IRepository readingQuestionCriterionSystemRepository, + IRepository criterionNidusRepository ) { _organInfoRepository = organInfoRepository; @@ -44,7 +48,9 @@ namespace IRaCIS.Core.Application.Service this._organTrialInfoRepository = organTrialInfoRepository; this._readingQuestionCriterionTrial = readingQuestionCriterionTrial; this._criterionNidusRepository = criterionNidusRepository; - } + this._criterionNidusTrialRepository = criterionNidusTrialRepository; + this._readingQuestionCriterionSystemRepository = readingQuestionCriterionSystemRepository; + } #region 系统器官 @@ -146,7 +152,7 @@ namespace IRaCIS.Core.Application.Service join trialData in _organTrialInfoRepository.AsQueryable().Where( x => x.IsEnable&&x.TrialCriterionId== trialReadingCriterionId) on data.Id equals trialData.OrganInfoId - join criterionNidus in _criterionNidusRepository.AsQueryable().Where(x=>x.CriterionId== trialReadingCriterionId) + join criterionNidus in _criterionNidusTrialRepository.AsQueryable().Where(x=>x.CriterionId== trialReadingCriterionId) on data.OrganType equals criterionNidus.OrganType select new ReadingOrganDto() { @@ -203,7 +209,7 @@ namespace IRaCIS.Core.Application.Service if (inDto.LesionType != null) { var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync(); - organs = await _criterionNidusRepository.Where(x => x.CriterionId == (criterion == null ? default(Guid) : criterion.Id) && x.LesionType == inDto.LesionType) + organs = await _criterionNidusTrialRepository.Where(x => x.CriterionId == (criterion == null ? default(Guid) : criterion.Id) && x.LesionType == inDto.LesionType) .Select(x => x.OrganType).ToListAsync(); } @@ -315,7 +321,15 @@ namespace IRaCIS.Core.Application.Service public async Task> GetCriterionLesionType(GetCriterionLesionTypeInDto inDto) { var dicNums = new List(); - dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.CriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync(); + if (inDto.TrialCriterionId != null) + { + dicNums = await _criterionNidusTrialRepository.Where(x => x.CriterionId == inDto.TrialCriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync(); + } + else + { + dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.SystemCriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync(); + } + var dictionaryId = await _dictionaryRepository.Where(x => x.Code == "LesionType").Select(x => x.Id).FirstOrDefaultAsync(); var result = await _dictionaryRepository.Where(x => x.ParentId == dictionaryId && dicNums.Contains(x.Code)).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); @@ -332,11 +346,19 @@ namespace IRaCIS.Core.Application.Service public async Task> GetCriterionNidusList(CriterionNidusQuery inQuery) { - var criterionNidusQueryable = _criterionNidusRepository - .Where(x => x.CriterionId == inQuery.CriterionId) - .ProjectTo(_mapper.ConfigurationProvider); - - return await criterionNidusQueryable.ToListAsync(); + if (await _readingQuestionCriterionSystemRepository.AnyAsync(x => x.Id == inQuery.CriterionId)) + { + return await _criterionNidusRepository + .Where(x => x.CriterionId == inQuery.CriterionId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + } + else + { + return await _criterionNidusTrialRepository + .Where(x => x.CriterionId == inQuery.CriterionId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + } + } /// @@ -418,20 +440,22 @@ namespace IRaCIS.Core.Application.Service { inDto.SystemCriterionId = readingQuestionCriterionTrial.ReadingQuestionCriterionSystemId; } - await _criterionNidusRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterionId); - List criterionNidusList = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.SystemCriterionId).Select(x => new CriterionNidusData() + await _criterionNidusTrialRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == trialCriterionId); + + + List criterionNidusList = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.SystemCriterionId).Select(x => new CriterionNidusTrial() { Id = x.Id, CriterionId = trialCriterionId, LesionType = x.LesionType, - OriginalId = x.Id, + OrganType=x.OrganType, - IsSystemCriterion=false, + }).ToListAsync(); criterionNidusList.ForEach(x => x.Id = NewId.NextGuid()); - await _criterionNidusRepository.AddRangeAsync(criterionNidusList); + await _criterionNidusTrialRepository.AddRangeAsync(criterionNidusList); await _organTrialInfoRepository.BatchDeleteNoTrackingAsync(x => x.TrialCriterionId == readingQuestionCriterionTrial.Id); List organTrialInfoList = await _organInfoRepository.Where(x =>x.SystemCriterionId== inDto.SystemCriterionId).Select(x => new OrganTrialInfo() { diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 0bb8cad44..741a612e2 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -238,12 +238,12 @@ namespace IRaCIS.Core.Application.Service //.ForMember(x => x.FileList, y => y.MapFrom(n => n.FileList)) .ForMember(x => x.CreateUserName, y => y.MapFrom(n => n.CreateUser.UserName)); - #endregion - - #region 阅片部位 + #endregion + #region 阅片部位 - CreateMap(); + CreateMap(); + CreateMap(); CreateMap().ReverseMap(); CreateMap(); diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidus.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidus.cs index dfe935bc5..63dee9c27 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidus.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidus.cs @@ -9,16 +9,16 @@ using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace IRaCIS.Core.Domain.Models { - /// - /// 标准病灶中间表 - /// - [Table("CriterionNidus")] - public class CriterionNidus : Entity, IAuditAdd - { - + /// + /// 标准病灶中间表 + /// + [Table("CriterionNidus")] + public class CriterionNidus : Entity, IAuditAdd + { + /// - /// 标准ID - /// + /// 标准ID + /// public Guid CriterionId { get; set; } @@ -33,14 +33,14 @@ namespace IRaCIS.Core.Domain.Models /// public LesionType LesionType { get; set; } - /// - /// CreateTime - /// - public DateTime CreateTime { get; set; } - /// - /// CreateUserId - /// + /// CreateTime + /// + public DateTime CreateTime { get; set; } + + /// + /// CreateUserId + /// public Guid CreateUserId { get; set; } /// @@ -49,12 +49,12 @@ namespace IRaCIS.Core.Domain.Models public bool IsSystemCriterion { get; set; } - [ForeignKey("CriterionId")] - [JsonIgnore] - public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; } + [ForeignKey("CriterionId")] + [JsonIgnore] + public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; } - } + } + - } diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidusTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidusTrial.cs new file mode 100644 index 000000000..7ead42443 --- /dev/null +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/CriterionNidusTrial.cs @@ -0,0 +1,51 @@ + +//-------------------------------------------------------------------- +// 此代码由T4模板自动生成 byzhouhang 20210918 +// 生成时间 2023-04-24 09:29:54 +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +using System; +using IRaCIS.Core.Domain.Share; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace IRaCIS.Core.Domain.Models +{ + /// + ///CriterionNidusTrial + /// + [Table("CriterionNidusTrial")] + public class CriterionNidusTrial : Entity, IAuditAdd + { + + /// + /// CriterionId + /// + [Required] + public Guid CriterionId { get; set; } + + /// + /// CreateTime + /// + [Required] + public DateTime CreateTime { get; set; } + + /// + /// CreateUserId + /// + [Required] + public Guid CreateUserId { get; set; } + + + /// + /// 病灶类型 + /// + public LesionType LesionType { get; set; } + + /// + /// 器官类型 + /// + public OrganType OrganType { get; set; } + + } + + +} diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs new file mode 100644 index 000000000..6a574de75 --- /dev/null +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTrialCriterionDictionary.cs @@ -0,0 +1,77 @@ + +//-------------------------------------------------------------------- +// 此代码由T4模板自动生成 byzhouhang 20210918 +// 生成时间 2023-04-24 09:32:01 +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +using System; +using IRaCIS.Core.Domain.Share; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace IRaCIS.Core.Domain.Models +{ + /// + ///ReadingTrialCriterionDictionary + /// + [Table("ReadingTrialCriterionDictionary")] + public class ReadingTrialCriterionDictionary : Entity, IAuditAdd + { + + /// + /// Id + /// + [Key] + [Required] + public Guid Id { get; set; } + + /// + /// CriterionId + /// + [Required] + public Guid CriterionId { get; set; } + + /// + /// DictionaryId + /// + [Required] + public Guid DictionaryId { get; set; } + + /// + /// CreateTime + /// + [Required] + public DateTime CreateTime { get; set; } + + /// + /// CreateUserId + /// + [Required] + public Guid CreateUserId { get; set; } + + /// + /// ParentCode + /// + [Required] + public string ParentCode { get; set; } = string.Empty; + + /// + /// IsBaseLineUse + /// + [Required] + public bool IsBaseLineUse { get; set; } + + /// + /// IsFollowVisitUse + /// + [Required] + public bool IsFollowVisitUse { get; set; } + + /// + /// CrterionDictionaryGroup + /// + [Required] + public int CrterionDictionaryGroup { get; set; } + + } + + +} diff --git a/IRaCIS.Core.Domain/SQLFile/Test.sql b/IRaCIS.Core.Domain/SQLFile/Test.sql index 9e56e04ea..da2c35a15 100644 --- a/IRaCIS.Core.Domain/SQLFile/Test.sql +++ b/IRaCIS.Core.Domain/SQLFile/Test.sql @@ -1013,3 +1013,10 @@ delete ReadingTaskRelation where RelevanceType=2 INSERT INTO ReadingTaskRelation(Id, TaskId, RelevanceTaskId, RelevanceType, CreateTime,CreateUserId) 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 数据 +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 diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 0842531aa..5c834ca38 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -261,7 +261,11 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet CriterionNidus { get; set; } - public virtual DbSet ReadingTableQuestionTrial { get; set; } + public virtual DbSet CriterionNidusTrial { get; set; } + + public virtual DbSet ReadingTrialCriterionDictionary { get; set; } + + public virtual DbSet ReadingTableQuestionTrial { get; set; } public virtual DbSet TumorAssessment_RECIST1Point1BM { get; set; } diff --git a/IRaCIS.Core.Test/DbHelper.ttinclude b/IRaCIS.Core.Test/DbHelper.ttinclude index e1c821df4..793d43cb7 100644 --- a/IRaCIS.Core.Test/DbHelper.ttinclude +++ b/IRaCIS.Core.Test/DbHelper.ttinclude @@ -4,7 +4,7 @@ public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"; public static readonly string DbDatabase = "IRaCIS_New_Tet"; //ַ,ƴ - public static readonly string TableName = "SubjectCriteriaEvaluation"; + public static readonly string TableName = "ReadingTrialCriterionDictionary"; //ļ service Ƿҳ } #>