diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index b7117b77d..07f4bd52e 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -399,20 +399,20 @@ namespace IRaCIS.Core.API.Controllers /// /// 上传阅片临床数据 /// - /// + /// /// - [HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{readingClinicalDataId:guid}")] + [HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{subjectId:guid}/{readingId:guid}")] [DisableRequestSizeLimit] - public async Task UploadReadClinicalData(Guid readingClinicalDataId) + public async Task UploadReadClinicalData(Guid trialId, Guid subjectId, Guid readingId) { var filerelativePath = string.Empty; // 写法一致 使用 _repository - var clinicalData = (await _repository.Where(x => x.Id == readingClinicalDataId).FirstOrDefaultAsync()).IfNullThrowException(); - var siteid =await _repository.Where(x => x.Id == clinicalData.SubjectId).Select(x => x.SiteId).FirstOrDefaultAsync(); + + var siteid =await _repository.Where(x => x.Id == subjectId).Select(x => x.SiteId).FirstOrDefaultAsync(); await FileUploadAsync(async (fileName) => { - var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetReadClinicalDataPath(_hostEnvironment, fileName, clinicalData.TrialId, siteid, clinicalData.SubjectId, clinicalData.ObjectId, clinicalData.Id); + var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetReadClinicalDataPath(_hostEnvironment, fileName, trialId, siteid, subjectId, readingId); //插入临床pdf 路径 filerelativePath = relativePath; return serverFilePath; diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 957fbd70f..781039f32 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -171,11 +171,11 @@ - + 上传阅片临床数据 - + diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs index 0c9a5ecc2..dead03be7 100644 --- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs @@ -211,18 +211,18 @@ public static class FileStoreHelper } - public static (string PhysicalPath, string RelativePath, string FileRealName) GetReadClinicalDataPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid siteId, Guid subjectId, Guid objectId,Guid readingClinicalDataId) + public static (string PhysicalPath, string RelativePath, string FileRealName) GetReadClinicalDataPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid siteId, Guid subjectId, Guid readingId) { var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); - string uploadFolderPath = Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString(), "Reading", objectId.ToString(), readingClinicalDataId.ToString(), StaticData.Folder.TreatmenthistoryFolder); + string uploadFolderPath = Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString(), "Reading", readingId.ToString(), StaticData.Folder.TreatmenthistoryFolder); if (!Directory.Exists(uploadFolderPath)) Directory.CreateDirectory(uploadFolderPath); var (trustedFileNameForFileStorage, fileRealName) = FileStoreHelper.GetStoreFileName(fileName); - var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/Reading/{objectId}/{readingClinicalDataId}/{StaticData.Folder.TreatmenthistoryFolder}/{trustedFileNameForFileStorage}"; + var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/Reading/{readingId}/{StaticData.Folder.TreatmenthistoryFolder}/{trustedFileNameForFileStorage}"; var serverFilePath = Path.Combine(uploadFolderPath, trustedFileNameForFileStorage); diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index e360da6e5..7d7fe83b1 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -955,9 +955,9 @@ 受试者ID - + - 对象ID + 阅片ID @@ -970,6 +970,21 @@ 临床数据类型Id + + + 文件列表 + + + + + 文件名称 + + + + + 路径 + + 获取访视列表 @@ -980,7 +995,7 @@ 项目ID - + 对象ID @@ -1015,7 +1030,7 @@ 项目ID - + 对象ID @@ -1080,6 +1095,26 @@ 文件数量 + + + 项目ID + + + + + 阅片期临床数据ID + + + + + 对象ID + + + + + 是否是访视 + + 名称 @@ -3516,13 +3551,6 @@ - - - 设置勾选 - - - - 将系统配置添加到项目配置 @@ -3610,16 +3638,9 @@ - - - 新增或者修改PDF - - - - - 删除PDF + 删除PDF单个文件 diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs index a5929bed1..f9271e34d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalDataSetService.cs @@ -100,35 +100,6 @@ namespace IRaCIS.Application.Services } - /// - /// 设置勾选 - /// - /// - /// - public async Task SetClinicalDataCheckd(SetClinicalDataCheckdIndto setClinicalData) - { - // 为了后面稽查这样写 - var nocheckids =await _clinicalDataTrialSetRepository.Where(x => x.TrialId == setClinicalData.TrialId && !setClinicalData.ClinicalDataTrialIds.Contains(x.Id)).Select(x => x.Id).ToListAsync(); - foreach (var item in setClinicalData.ClinicalDataTrialIds) - { - await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() - { - IsCheck = true - }); - } - - foreach (var item in nocheckids) - { - await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() - { - IsCheck = false - }); - } - - await _clinicalDataTrialSetRepository.SaveChangesAsync(); - - return ResponseOutput.Ok(true); - } /// /// 将系统配置添加到项目配置 diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs index 61baeb344..5a968de13 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs @@ -24,9 +24,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid SubjectId { get; set; } /// - /// 对象ID + /// 阅片ID /// - public Guid objectId { get; set; } + public Guid ReadingId { get; set; } /// /// 临床数据类型Id @@ -37,15 +37,32 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 临床数据类型Id /// public bool IsVisit { get; set; } + + /// + /// 文件列表 + /// + public List FileList { get; set; } } + public class FileDto + { + /// + /// 文件名称 + /// + public string FileName { get; set; } + + /// + /// 路径 + /// + public string Path { get; set; } + } /// /// 获取访视列表 /// public class GetReadingClinicalDataListIndto :PageInput { - public Guid ObjectId { get; set; } + public Guid ReadingId { get; set; } } public class GetReadingClinicalDataPDFListIndto:PageInput @@ -65,7 +82,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 对象ID /// - public Guid ObjectId { get; set; } + public Guid ReadingId { get; set; } /// /// 受试者ID @@ -108,7 +125,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 对象ID /// - public Guid ObjectId { get; set; } + public Guid ReadingId { get; set; } /// /// 受试者ID @@ -185,8 +202,27 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetTrialClinicalDataSelectIndto { + /// + /// 项目ID + /// public Guid TrialId { get; set; } - } + + /// + /// 阅片期临床数据ID + /// + public Guid? ReadingClinicalDataId { get; set; } + + /// + /// 对象ID + /// + public Guid ReadingId { get; set; } + + /// + /// 是否是访视 + /// + public bool IsVisit { get; set; } + + } public class GetTrialClinicalDataSelectOutDto { diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs index df8f2d1e6..ff30528a8 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs @@ -44,13 +44,50 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task AddOrUpdateReadingClinicalData(AddOrUpdateReadingClinicalDataDto indto) { - var entity = await _readingClinicalDataRepository.InsertOrUpdateAsync(indto,true); - return ResponseOutput.Ok(entity.Id.ToString()); + + + + if (indto.Id == null) + { + var entity = _mapper.Map(indto); + entity.ReadingClinicalDataPDFList = indto.FileList.Select(x => new ReadingClinicalDataPDF() + { + + TrialId = entity.TrialId, + SubjectId= indto.SubjectId, + FileName=x.FileName, + Path=x.Path, + IsVisit= indto.IsVisit, + ReadingId=indto.ReadingId + }).ToList(); + + + await _readingClinicalDataRepository.AddAsync(entity, true); + return ResponseOutput.Ok(entity.Id); + } + else + { + var entity = (await _readingClinicalDataRepository.Where(t => t.Id == indto.Id, true).Include(t => t.ReadingClinicalDataPDFList).FirstOrDefaultAsync()).IfNullThrowException(); + _mapper.Map(indto, entity); + + entity.ReadingClinicalDataPDFList = indto.FileList.Select(x => new ReadingClinicalDataPDF() + { + + TrialId = entity.TrialId, + SubjectId = indto.SubjectId, + FileName = x.FileName, + Path = x.Path, + IsVisit = indto.IsVisit, + ReadingId = indto.ReadingId + }).ToList(); + + var success = await _readingClinicalDataRepository.SaveChangesAsync(); + return ResponseOutput.Ok(entity.Id); + + } + } - - - /// /// 删除 /// @@ -64,7 +101,6 @@ namespace IRaCIS.Application.Services } - /// /// 获取下拉菜单 /// @@ -73,7 +109,12 @@ namespace IRaCIS.Application.Services [HttpPost] public async Task> GetTrialClinicalDataSelect(GetTrialClinicalDataSelectIndto inDto) { - List clinicalList = await _clinicalDataTrialSetRepository.Select(x => new GetTrialClinicalDataSelectOutDto() + + List clinicalList = await _clinicalDataTrialSetRepository + + //.WhereIf(inDto.ReadingClinicalDataId==null, x=> _readingClinicalDataPDFRepository.Where(y=>y.ObjectId==inDto.ObjectId&&)) + + .Select(x => new GetTrialClinicalDataSelectOutDto() { ClinicalDataLevel = x.ClinicalDataLevel, ClinicalDataSetName = x.ClinicalDataSetName, @@ -96,7 +137,7 @@ namespace IRaCIS.Application.Services [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, + var result = await _readingClinicalDataRepository.ProjectTo(_mapper.ConfigurationProvider).ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataListOutDto.ClinicalDataSetName) : inDto.SortField, inDto.Asc); result.CurrentPageData.ForEach(x => { @@ -123,21 +164,21 @@ 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 + ///// + ///// + ///// + //[HttpPost] + //public async Task AddOrUpdateReadingClinicalDataPDF(AddOrUpdateReadingClinicalDataPDFDto indto) + //{ + // var entity = await _readingClinicalDataPDFRepository.InsertOrUpdateAsync(indto, true); + // return ResponseOutput.Ok(entity.Id.ToString()); + //} /// - /// 删除PDF + /// 删除PDF单个文件 /// /// /// diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 713344843..ca22576d1 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -167,7 +167,7 @@ namespace IRaCIS.Core.Application { await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() { - IsCheck= true, + IsConfirm = true }); } @@ -176,7 +176,7 @@ namespace IRaCIS.Core.Application { await _clinicalDataTrialSetRepository.UpdatePartialFromQueryAsync(item, x => new ClinicalDataTrialSet() { - IsCheck = false, + IsConfirm = false }); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index e7f7b73d8..e976cdb85 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -143,7 +143,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap().ForMember(t => t.TrialId, u => u.MapFrom(c => c.Id)) - .ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsCheck&&v.IsConfirm).Select(r => r.ClinicalDataSetName))) + .ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.ClinicalDataSetName))) .ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId))); CreateMap(); CreateMap(); diff --git a/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs index 90a958b8e..df1f18fc5 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs @@ -53,12 +53,6 @@ namespace IRaCIS.Core.Domain.Models /// public Guid CreateUserId { get; set; } - /// - /// 是否勾选 - /// - public bool IsCheck { get; set; } - - /// /// 是否确认 /// diff --git a/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs b/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs index 8195efed0..677939a50 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingClinicalData.cs @@ -21,9 +21,9 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } /// - /// 对象ID + /// 阅片ID /// - public Guid ObjectId { get; set; } + public Guid ReadingId { get; set; } /// /// 受试者ID diff --git a/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs b/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs index 9f561b182..61fe84890 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs @@ -22,7 +22,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 对象ID /// - public Guid ObjectId { get; set; } + public Guid ReadingId { get; set; } /// /// 受试者ID