diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 0ff2820ca..3637f7341 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1091,7 +1091,12 @@ - 名称 + 项目配置临床类型Name + + + + + 下拉ID @@ -1119,6 +1124,11 @@ 上传方式名称 + + + 是否为CRC上传 + + 文件数量 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index c0b19639c..679ccc7ba 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -1,6 +1,7 @@ using IRaCIS.Core.Domain.Share.Reading; using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -66,7 +67,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public class GetReadingClinicalDataListIndto :PageInput { - public Guid ReadingId { get; set; } + [Required] + public Guid SubjectId { get; set; } + + [Required] + public Guid ReadingId { get; set; } } public class GetReadingClinicalDataPDFListIndto:PageInput @@ -171,7 +176,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// - /// 名称 + /// 项目配置临床类型Name /// public string ClinicalDataSetName { get; set; } @@ -202,6 +207,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string ClinicalUploadTypeName { get; set; } + /// + /// 是否为CRC上传 + /// + public bool IsCRCUpload { get; set; } + /// /// 文件数量 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index 7093e6a30..16a78d990 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -24,15 +24,21 @@ namespace IRaCIS.Application.Services { private readonly IRepository _readingClinicalDataRepository; private readonly IRepository _clinicalDataTrialSetRepository; + private readonly IRepository _readingClinicalDataViewRepository; + private readonly IRepository _previousPDFRepository; private readonly IRepository _readingClinicalDataPDFRepository; public ReadingClinicalDataService(IRepository readingClinicalDataRepository, IRepository clinicalDataTrialSetRepository, + IRepository readingClinicalDataViewRepository, + IRepository previousPDFRepository, IRepository readingClinicalDataPDFRepository ) { this._readingClinicalDataRepository = readingClinicalDataRepository; this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; + this._readingClinicalDataViewRepository = readingClinicalDataViewRepository; + this._previousPDFRepository = previousPDFRepository; this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository; } @@ -124,7 +130,7 @@ namespace IRaCIS.Application.Services public async Task> GetTrialClinicalDataSelect(GetTrialClinicalDataSelectIndto inDto) { - List clinicalList = await _clinicalDataTrialSetRepository.Where(x=>x.TrialId==inDto.TrialId&&x.IsConfirm) + List clinicalList = await _clinicalDataTrialSetRepository.Where(x=>x.TrialId==inDto.TrialId&&x.IsConfirm&&x.ClinicalDataSetName!= "既往局部治疗史") //.WhereIf(inDto.ReadingClinicalDataId==null, x=> _readingClinicalDataPDFRepository.Where(y=>y.ObjectId==inDto.ObjectId&&)) @@ -151,7 +157,8 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) { - var result = await _readingClinicalDataRepository.Where(x=>x.ReadingId==inDto.ReadingId).ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, + var result = await _readingClinicalDataViewRepository.Where(x=>x.SubjectId==inDto.SubjectId) + .Where(x=>x.ReadingId==inDto.ReadingId||x.ReadingId==null).ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, inDto.Asc); @@ -159,17 +166,38 @@ namespace IRaCIS.Application.Services { item.ClinicalDataLevelName = item.ClinicalDataLevel.GetDisplayName(); item.ClinicalUploadTypeName = item.ClinicalUploadType.GetDisplayName(); - item.FileList = item.ClinicalDataLevel != ClinicalLevel.Subject ? (await _readingClinicalDataPDFRepository.Where(y => y.ReadingClinicalDataId == item.Id).Select(y => new GetFileDto() + + if (item.IsCRCUpload) { - Id = y.Id, - FileName = y.FileName, - Path = y.Path - }).ToListAsync()) : (await _readingClinicalDataPDFRepository.Where(y => y.SubjectId == item.SubjectId).Select(y => new GetFileDto() + item.FileList = await _previousPDFRepository.Where(x => x.SubjectId == inDto.SubjectId).Select(y => new GetFileDto() + { + Id = y.Id, + FileName = y.FileName, + Path = y.Path + }).ToListAsync(); + } + else { - Id = y.Id, - FileName = y.FileName, - Path = y.Path - }).ToListAsync()); + if (item.ClinicalDataLevel != ClinicalLevel.Subject) + { + item.FileList = await _readingClinicalDataPDFRepository.Where(y => y.ReadingClinicalDataId == item.Id).Select(y => new GetFileDto() + { + Id = y.Id, + FileName = y.FileName, + Path = y.Path + }).ToListAsync(); + } + else + { + item.FileList = await _readingClinicalDataPDFRepository.Where(y => y.SubjectId == item.SubjectId).Select(y => new GetFileDto() + { + Id = y.Id, + FileName = y.FileName, + Path = y.Path + }).ToListAsync(); + } + } + } @@ -195,19 +223,6 @@ namespace IRaCIS.Application.Services return result; } - ///// - ///// 新增或者修改PDF - ///// - ///// - ///// - //[HttpPost] - //public async Task AddOrUpdateReadingClinicalDataPDF(AddOrUpdateReadingClinicalDataPDFDto indto) - //{ - // var entity = await _readingClinicalDataPDFRepository.InsertOrUpdateAsync(indto, true); - // return ResponseOutput.Ok(entity.Id.ToString()); - //} - - /// /// 删除PDF单个文件 /// diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index 58fcda16a..72509e2a4 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -21,10 +21,12 @@ namespace IRaCIS.Core.Application.Service .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)); + + CreateMap(); + // 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.FileCount, u => u.MapFrom(s => s.ReadingClinicalDataPDFList.Count())); diff --git a/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs b/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs new file mode 100644 index 000000000..5145e8821 --- /dev/null +++ b/IRaCIS.Core.Domain/Reading/View/ReadingClinicalDataView.cs @@ -0,0 +1,56 @@ +using IRaCIS.Core.Domain.Share; +using IRaCIS.Core.Domain.Share.Reading; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Domain.Models +{ + public class ReadingClinicalDataView : Entity + { + + /// + /// 项目ID + /// + public Guid TrialId { get; set; } + + /// + /// 受试者ID + /// + public Guid SubjectId { get; set; } + + + /// + /// 阅片 + /// + public Guid? ReadingId { get; set; } + + + /// + /// 项目配置临床类型ID + /// + public Guid ClinicalDataTrialSetId { get; set; } + + /// + /// 项目配置临床类型Name + /// + public string ClinicalDataSetName { get; set; } + + + /// + /// + /// + public ClinicalLevel ClinicalDataLevel { get; set; } + + /// + /// 是否为CRC上传 + /// + public bool IsCRCUpload { get; set; } + + + + + } +} diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index b5119609a..53ccfcecc 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -182,6 +182,8 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet ReadingClinicalData { get; set; } + public virtual DbSet ReadingClinicalDataView { get; set; } + public virtual DbSet ReadingClinicalDataPDF { get; set; } public virtual DbSet ReadModule { get; set; }