diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index f5bda2762..5bb4d1c93 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1095,6 +1095,21 @@ 文件数量 + + + Id + + + + + Path + + + + + FileName + + 项目ID diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index fe4dbe377..5c7f82c08 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -180,6 +180,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public ClinicalLevel ClinicalDataLevel { get; set; } + public Guid SubjectId { get; set; } /// /// 上传方式 @@ -199,10 +200,37 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 文件数量 /// - public int FileCount { get; set; } = 0; + public int FileCount { get { + + return this.FileList.Count(); + } } + + public List FileList { get; set; } = new List(); } + public class GetFileDto + { + + /// + /// Id + /// + + public Guid Id { get; set; } + + /// + /// Path + /// + + public string Path { get; set; } + + /// + /// FileName + /// + + public string FileName { get; set; } + } + public class GetTrialClinicalDataSelectIndto { @@ -221,6 +249,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public Guid ReadingId { get; set; } + public Guid SubjectId { get; set; } + /// /// 是否是访视 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index f70a9929c..762ed177f 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -46,6 +46,7 @@ namespace IRaCIS.Application.Services public async Task AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto) { + var clinicalDataTrialSet = (await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.ClinicalDataTrialSetId).FirstOrDefaultAsync()).IfNullThrowException(); if (indto.Id == null) { var entity = _mapper.Map(indto); @@ -56,7 +57,9 @@ namespace IRaCIS.Application.Services SubjectId= indto.SubjectId, FileName=x.FileName, Path=x.Path, + ClinicalDataTrialSetId=indto.ClinicalDataTrialSetId, IsVisit= indto.IsVisit, + ClinicalDataLevel= clinicalDataTrialSet.ClinicalDataLevel, ReadingId=indto.ReadingId }).ToList(); @@ -79,6 +82,7 @@ namespace IRaCIS.Application.Services FileName = x.FileName, Path = x.Path, IsVisit = indto.IsVisit, + ClinicalDataLevel = clinicalDataTrialSet.ClinicalDataLevel, ReadingId = indto.ReadingId }).ToList(); await _readingClinicalDataPDFRepository.AddRangeAsync(addFileList); @@ -139,13 +143,30 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto) { - var result = await _readingClinicalDataRepository.ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, + var result = await _readingClinicalDataRepository.Where(x=>x.Id==inDto.ReadingId).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(); - }); + + foreach (var item in result.CurrentPageData) + { + 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() + { + Id = y.Id, + FileName = y.FileName, + Path = y.Path + }).ToListAsync()) : (await _readingClinicalDataPDFRepository.Where(y => y.SubjectId == item.SubjectId).Select(y => new GetFileDto() + { + Id = y.Id, + FileName = y.FileName, + Path = y.Path + }).ToListAsync()); + } + + + + return result; } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index cc3a94fb4..58fcda16a 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -24,8 +24,8 @@ namespace IRaCIS.Core.Application.Service 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())); + .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/ReadingClinicalDataPDF.cs b/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs index 61fe84890..adaad7703 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs @@ -67,6 +67,10 @@ namespace IRaCIS.Core.Domain.Models public Guid CreateUserId { get; set; } + /// + /// 项目模板Id + /// + public Guid ClinicalDataTrialSetId { get; set; }