From 2dec249cc4f026a8240c4df015d2d5b8e63ffe9f Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 9 Jun 2022 17:33:46 +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 --- .../IRaCIS.Core.Application.xml | 105 ++++++++++++-- .../Service/Reading/ClinicalDataSetService.cs | 4 +- .../Reading/Dto/ReadingClinicalDataDto.cs | 90 +++++++++++- .../Reading/ReadingClinicalDataService.cs | 130 ++++++------------ .../Service/Reading/_MapConfig.cs | 8 ++ .../TrialSiteUser/TrialConfigService.cs | 2 + IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs | 6 + .../Reading/ReadingClinicalData.cs | 6 +- .../Common/ReadingCommon.cs | 16 +++ 9 files changed, 264 insertions(+), 103 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 348c8c0f5..07aa41df8 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -965,6 +965,66 @@ 临床数据类型Id + + + 获取访视列表 + + + + + 名称 + + + + + 临床级别 + + + + + 上传方式 + + + + + 临床级别名称 + + + + + 上传方式名称 + + + + + 文件数量 + + + + + 名称 + + + + + 临床级别 + + + + + 上传方式 + + + + + 临床级别名称 + + + + + 上传方式名称 + + 项目ID @@ -3344,60 +3404,60 @@ - + 临床数据配置 - + 新增或者修改(项目) - + 新增或者修改(系统) - + 获取系统临床数据(系统) - + 获取项目的临床数据 - + 设置勾选 - + 将系统配置添加到项目配置 - + 删除(项目) - + 删除(系统) @@ -3430,18 +3490,39 @@ - + - 临床数据配置 + 阅片临床数据配置 - + 新增或者修改 + + + 删除 + + + + + + + 获取下拉菜单 + + + + + + + 获取阅片临床数据列表 + + + + 阅片期配置 diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index af2e4a25a..a5929bed1 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs @@ -16,7 +16,7 @@ namespace IRaCIS.Application.Services /// 临床数据配置 /// [ApiExplorerSettings(GroupName = "Reading")] - public class ReadingClinicalDataService : BaseService + public class ClinicalDataSetService : BaseService { public IRepository _subjectVisitRepository; @@ -25,7 +25,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _clinicalDataSystemSetRepository; private readonly IRepository _previousPDFRepository; - public ReadingClinicalDataService(IRepository subjectVisitRepository, + public ClinicalDataSetService(IRepository subjectVisitRepository, IRepository ClinicalDataTrialSetRepository, IRepository ClinicalDataSystemSetRepository, diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index abf3b9286..8de233a73 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -1,4 +1,5 @@ -using System; +using IRaCIS.Core.Domain.Share.Reading; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -33,8 +34,93 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public bool IsVisit { get; set; } } + + /// + /// 获取访视列表 + /// + public class GetReadingClinicalDataListIndto :PageInput + { + public Guid ObjectId { get; set; } + } + + + public class GetReadingClinicalDataListOutDto + { + + public Guid Id { get; set; } + + + /// + /// 名称 + /// + public string ClinicalDataSetName { get; set; } + + /// + /// 临床级别 + /// + public ClinicalLevel ClinicalDataLevel { get; set; } + + + /// + /// 上传方式 + /// + public ClinicalUploadType ClinicalUploadType { get; set; } + + /// + /// 临床级别名称 + /// + public string ClinicalDataLevelName { get; set; } + + /// + /// 上传方式名称 + /// + public string ClinicalUploadTypeName { get; set; } + + /// + /// 文件数量 + /// + public int FileCount { get; set; } = 0; + } + + + public class GetTrialClinicalDataSelectIndto { - public int MyProperty { get; set; } + public Guid TrialId { get; set; } } + + public class GetTrialClinicalDataSelectOutDto + { + + public Guid Id { get; set; } + + /// + /// 名称 + /// + public string ClinicalDataSetName { get; set; } + + /// + /// 临床级别 + /// + public ClinicalLevel ClinicalDataLevel { get; set; } + + + /// + /// 上传方式 + /// + public ClinicalUploadType ClinicalUploadType { get; set; } + + /// + /// 临床级别名称 + /// + public string ClinicalDataLevelName { get; set; } + + /// + /// 上传方式名称 + /// + public string ClinicalUploadTypeName { get; set; } + + + } + } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index c0254a444..8d07e5e4b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -9,6 +9,9 @@ using IRaCIS.Core.Application.Auth; using IRaCIS.Core.Application.Service.Reading.Dto; using IRaCIS.Core.Domain.Share.Reading; using MassTransit; +using System.ComponentModel.DataAnnotations; +using System.Reflection; +using IRaCIS.Core.Infra.EFCore.Common; namespace IRaCIS.Application.Services { @@ -16,14 +19,17 @@ namespace IRaCIS.Application.Services /// 阅片临床数据配置 /// [ApiExplorerSettings(GroupName = "Reading")] - public class ClinicalDataSetService : BaseService + public class ReadingClinicalDataService : BaseService { private readonly IRepository _readingClinicalDataRepository; + private readonly IRepository _clinicalDataTrialSetRepository; - public ClinicalDataSetService(IRepository readingClinicalDataRepository + public ReadingClinicalDataService(IRepository readingClinicalDataRepository, + IRepository clinicalDataTrialSetRepository ) { this._readingClinicalDataRepository = readingClinicalDataRepository; + this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; } @@ -55,97 +61,51 @@ namespace IRaCIS.Application.Services } - //public async Task<> GetTrialClinicalDataSelect() + /// + /// 获取下拉菜单 + /// + /// + /// + [HttpPost] + public async Task> GetTrialClinicalDataSelect(GetTrialClinicalDataSelectIndto inDto) + { + List clinicalList = await _clinicalDataTrialSetRepository.Select(x => new GetTrialClinicalDataSelectOutDto() + { + ClinicalDataLevel = x.ClinicalDataLevel, + ClinicalDataSetName = x.ClinicalDataSetName, + ClinicalUploadType = x.ClinicalUploadType, + ClinicalDataLevelName = x.ClinicalDataLevel.GetDisplayName(), + ClinicalUploadTypeName = x.ClinicalUploadType.GetDisplayName(), + + Id = x.Id + }).ToListAsync() ; - //public async Task> GetTrialClinicalData() - - ///// - ///// 获取系统临床数据(系统) - ///// - ///// - //[HttpPost] - //public async Task> GetSystemClinicalDataSystemSetList(GetTrialClinicalDataSystemIndto inDto) - //{ - // return await _clinicalDataSystemSetRepository.AsQueryable() - // .WhereIf(inDto.ClinicalDataLevel != null, x => x.ClinicalDataLevel == inDto.ClinicalDataLevel) - // .WhereIf(inDto.ClinicalUploadType != null, x => x.ClinicalUploadType == inDto.ClinicalUploadType) - // .WhereIf(inDto.ClinicalDataSetName != String.Empty, x => x.ClinicalDataSetName.Contains(inDto.ClinicalDataSetName)) - - // .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - //} + return clinicalList; - ///// - ///// 获取项目的临床数据 - ///// - ///// - ///// - //[HttpPost] - //public async Task> GetTrialClinicalDataTrialSetList(GetTrialClinicalDataTrialIndto inDto) - //{ - // await this.AddTrialClinicalDataTrialSet(inDto.TrialId); - // return await _clinicalDataTrialSetRepository.AsQueryable() + } - // .Where(x => x.TrialId == inDto.TrialId) - // .WhereIf(inDto.ClinicalDataLevel!=null,x=>x.ClinicalDataLevel== inDto.ClinicalDataLevel) - // .WhereIf(inDto.ClinicalUploadType != null, x => x.ClinicalUploadType == inDto.ClinicalUploadType) - // .WhereIf(inDto.ClinicalDataSetName != String.Empty, x => x.ClinicalDataSetName.Contains(inDto.ClinicalDataSetName)) - // .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + /// + /// 获取阅片临床数据列表 + /// + /// + /// + [HttpPost] + public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) + { + var result = await _readingClinicalDataRepository.Where(x => x.ObjectId == inDto.ObjectId).ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, + inDto.Asc); - //} + result.CurrentPageData.ForEach(x => { + x.ClinicalDataLevelName = x.ClinicalDataLevel.GetDisplayName(); + x.ClinicalUploadTypeName = x.ClinicalUploadType.GetDisplayName(); + }); + + return result; + } - ///// - ///// 将系统配置添加到项目配置 - ///// - ///// - ///// - - //private async Task AddTrialClinicalDataTrialSet(Guid trialId) - //{ - // var systemIds = await _clinicalDataSystemSetRepository.Select(x => x.Id).ToListAsync(); - // var trialSystemIds =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialId && x.SystemClinicalDataSetId != null).Select(x => x.SystemClinicalDataSetId.Value).ToListAsync(); - // var needAddids = systemIds.Except(trialSystemIds).ToList(); - // var systemDataList =await _clinicalDataSystemSetRepository.Where(x => needAddids.Contains(x.Id)).ToListAsync(); - // List dataSets = systemDataList.Select(x => new ClinicalDataTrialSet() - // { - // Id= NewId.NextGuid(), - // SystemClinicalDataSetId=x.Id, - // ClinicalDataSetName=x.ClinicalDataSetName, - // ClinicalDataLevel=x.ClinicalDataLevel, - // ClinicalUploadType=x.ClinicalUploadType, - // TrialId= trialId, - - // }).ToList(); - // await _clinicalDataTrialSetRepository.AddRangeAsync(dataSets); - // var result= await _clinicalDataTrialSetRepository.SaveChangesAsync(); - // return ResponseOutput.Ok(result); - //} - - ///// - ///// 删除(项目) - ///// - ///// - ///// - //[HttpDelete("{id:guid}")] - //public async Task DeleteClinicalTrialSetData(Guid id) - //{ - // await _clinicalDataTrialSetRepository.DeleteFromQueryAsync(x=>x.Id== id,true); - // return ResponseOutput.Result(true); - //} - - ///// - ///// 删除(系统) - ///// - ///// - ///// - //[HttpDelete("{id:guid}")] - //public async Task DeleteClinicalSystemSetData(Guid id) - //{ - // await _clinicalDataSystemSetRepository.DeleteFromQueryAsync(x => x.Id == id, true); - // return ResponseOutput.Result(true); - //} } } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index fdc45c5f2..a59f0ea3b 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -20,10 +20,18 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SiteCodes, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.TrialSite.TrialSiteCode))) .ForMember(d => d.PlanCount, u => u.MapFrom(s => s.ReadingPeriodPlanList.Count)); + + 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.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList())); + CreateMap().ReverseMap(); CreateMap().ReverseMap(); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 955927d5b..713344843 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -167,6 +167,7 @@ namespace IRaCIS.Core.Application { await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() { + IsCheck= true, IsConfirm = true }); } @@ -175,6 +176,7 @@ namespace IRaCIS.Core.Application { await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() { + IsCheck = false, IsConfirm = false }); } diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 7244a023c..81e10e9da 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -143,11 +144,13 @@ namespace IRaCIS.Core.Domain.Share.Reading /// /// 表格 /// + [Display(Name = "表格")] Table = 0, /// /// PDF /// + [Display(Name = "PDF")] PDF = 1, } @@ -181,16 +184,19 @@ namespace IRaCIS.Core.Domain.Share.Reading /// /// 受试者 /// + [DisplayAttribute(Name ="受试者")] Subject = 0, /// /// 访视 /// + [DisplayAttribute(Name = "访视")] SubjectVisit = 1, /// /// 阅片 /// + [DisplayAttribute(Name = "阅片")] Read = 2, } } diff --git a/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs b/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs index ecc4cccc3..414b45d64 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs @@ -30,7 +30,7 @@ namespace IRaCIS.Core.Domain.Models public Guid ClinicalDataTrialSetId { get; set; } /// - /// 临床数据类型Id + /// 是否为访视 /// public bool IsVisit { get; set; } @@ -44,8 +44,10 @@ namespace IRaCIS.Core.Domain.Models /// public Guid CreateUserId { get; set; } + [ForeignKey("ClinicalDataTrialSetId")] + + public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; } - } diff --git a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs index 10644a97f..b1c5c369e 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/ReadingCommon.cs @@ -3,7 +3,9 @@ using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share.Reading; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; @@ -37,5 +39,19 @@ namespace IRaCIS.Core.Infra.EFCore.Common return ReadModuleEnum.ReadComplete; } } + + + /// + /// 获取DisplayName + /// + /// + /// + public static string GetDisplayName(this Enum enumName) + { + var type = enumName.GetType();//先获取这个枚举的类型 + var field = type.GetField(enumName.ToString());//通过这个类型获取到值 + var obj = (DisplayAttribute)field.GetCustomAttribute(typeof(DisplayAttribute));//得到特性 + return obj.Name ?? ""; + } } }