From 813eaff653a0c1314c45c695bd99d3187451c2ba Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 9 Jun 2022 16:13:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 105 ++++++++++++-- .../Service/Reading/ClinicalDataSetService.cs | 5 +- .../Dto/ClinicalDataServiceViewModel.cs | 3 - .../Reading/Dto/ReadingClinicalDataDto.cs | 39 +++++ .../Reading/ReadingClinicalDataService.cs | 134 ++++++++++++++++++ .../TrialSiteUser/DTO/TrialConfigDTO.cs | 2 + .../TrialSiteUser/TrialConfigService.cs | 29 ++-- .../Reading/ReadingClinicalData.cs | 15 ++ .../Context/IRaCISDBContext.cs | 2 + 9 files changed, 311 insertions(+), 23 deletions(-) create mode 100644 IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs create mode 100644 IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index c16a14530..348c8c0f5 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -445,6 +445,26 @@ + + + 名称 + + + + + 临床级别 + + + + + 上传方式 + + + + + 是否启用 + + 项目ID @@ -455,6 +475,11 @@ 是否勾选 + + + 枚举 + + 名称 @@ -475,6 +500,31 @@ 是否启用 + + + 名称 + + + + + 临床级别 + + + + + 上传方式 + + + + + 创建时间 + + + + + 创建人 + + 项目ID @@ -500,6 +550,11 @@ 是否使用 + + + 枚举 + + 名称 @@ -890,6 +945,26 @@ 排序字段 + + + 项目ID + + + + + 对象ID + + + + + 临床数据类型Id + + + + + 临床数据类型Id + + 项目ID @@ -3269,60 +3344,60 @@ - + 临床数据配置 - + 新增或者修改(项目) - + 新增或者修改(系统) - + 获取系统临床数据(系统) - + 获取项目的临床数据 - + 设置勾选 - + 将系统配置添加到项目配置 - + 删除(项目) - + 删除(系统) @@ -3355,6 +3430,18 @@ + + + 临床数据配置 + + + + + 新增或者修改 + + + + 阅片期配置 diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index 648a71234..af2e4a25a 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 ClinicalDataSetService : BaseService + public class ReadingClinicalDataService : BaseService { public IRepository _subjectVisitRepository; @@ -25,7 +25,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _clinicalDataSystemSetRepository; private readonly IRepository _previousPDFRepository; - public ClinicalDataSetService(IRepository subjectVisitRepository, + public ReadingClinicalDataService(IRepository subjectVisitRepository, IRepository ClinicalDataTrialSetRepository, IRepository ClinicalDataSystemSetRepository, @@ -79,6 +79,7 @@ namespace IRaCIS.Application.Services .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); } + /// /// 获取项目的临床数据 /// diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index 7e403e2ad..a25ef623f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -89,9 +89,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid Id { get; set; } - - - /// /// 名称 /// diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs new file mode 100644 index 000000000..4a248f2ea --- /dev/null +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Application.Service.Reading.Dto +{ + + public class AddOrUpdateReadingClinicalDataDto + { + + public Guid? Id { get; set; } + + /// + /// 项目ID + /// + public Guid TrialId { get; set; } + + /// + /// 对象ID + /// + public Guid objectId { get; set; } + + /// + /// 临床数据类型Id + /// + public Guid ClinicalDataTrialSetId { get; set; } + + /// + /// 临床数据类型Id + /// + public bool IsVisit { get; set; } + } + + public class GetTrialClinicalData + { + } +} diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs new file mode 100644 index 000000000..7d9864c1d --- /dev/null +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -0,0 +1,134 @@ +using IRaCIS.Application.Interfaces; +using IRaCIS.Core.Infra.EFCore; +using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Application.Filter; +using Microsoft.AspNetCore.Mvc; +using IRaCIS.Core.Application.Service.WorkLoad.DTO; +using Microsoft.AspNetCore.Authorization; +using IRaCIS.Core.Application.Auth; +using IRaCIS.Core.Application.Service.Reading.Dto; +using IRaCIS.Core.Domain.Share.Reading; +using MassTransit; + +namespace IRaCIS.Application.Services +{ + /// + /// 临床数据配置 + /// + [ApiExplorerSettings(GroupName = "Reading")] + public class ClinicalDataSetService : BaseService + { + private readonly IRepository _readingClinicalDataRepository; + + public ClinicalDataSetService(IRepository readingClinicalDataRepository + ) + { + this._readingClinicalDataRepository = readingClinicalDataRepository; + } + + + /// + /// 新增或者修改 + /// + /// + /// + [HttpPost] + public async Task AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto) + { + var entity = await _readingClinicalDataRepository.InsertOrUpdateAsync(indto,true); + return ResponseOutput.Ok(entity.Id.ToString()); + } + + + //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(); + //} + + + ///// + ///// 获取项目的临床数据 + ///// + ///// + ///// + //[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(); + + //} + + + + + ///// + ///// 将系统配置添加到项目配置 + ///// + ///// + ///// + + //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/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index 06c2782a4..fbe94a2f2 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -76,6 +76,8 @@ namespace IRaCIS.Core.Application.Contracts public List CriterionIds { get; set; } = new List(); + public List ClinicalDataTrialSetIds { get; set; } = new List(); + public Guid TrialId { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index caeab0956..379ee44f4 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -311,17 +311,28 @@ namespace IRaCIS.Core.Application _mapper.Map(trialConfig, trialInfo); trialInfo.UpdateTime = DateTime.Now; - - await _clinicalDataTrialSetRepository.BatchUpdateNoTrackingAsync(x => x.TrialId == trialConfig.TrialId, x => new ClinicalDataTrialSet - { - IsConfirm = false - }); - await _clinicalDataTrialSetRepository.BatchUpdateNoTrackingAsync(x => x.TrialId == trialConfig.TrialId && x.IsCheck, x => new ClinicalDataTrialSet - { - IsConfirm = true - }); + + var noconfirmids = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == trialConfig.TrialId && !trialConfig.ClinicalDataTrialSetIds.Contains(x.Id)).Select(x => x.Id).ToListAsync(); + foreach (var item in trialConfig.ClinicalDataTrialSetIds) + { + await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() + { + IsConfirm = true + }); + } + + foreach (var item in noconfirmids) + { + await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() + { + IsConfirm = false + }); + } + + + return ResponseOutput.Ok(await _repository.SaveChangesAsync()); } diff --git a/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs b/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs index ca10210f7..ecc4cccc3 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs @@ -19,6 +19,21 @@ namespace IRaCIS.Core.Domain.Models /// public Guid TrialId { get; set; } + /// + /// 对象ID + /// + public Guid ObjectId { get; set; } + + /// + /// 临床数据类型Id + /// + public Guid ClinicalDataTrialSetId { get; set; } + + /// + /// 临床数据类型Id + /// + public bool IsVisit { get; set; } + /// /// 创建时间 /// diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 95cb745cf..7f8dd68ac 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -180,6 +180,8 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet ReadingPeriodPlan { get; set; } + public virtual DbSet ReadingClinicalData { get; set; } + public virtual DbSet ReadModule { get; set; } public virtual DbSet ReadModuleView { get; set; }