diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
index 1e6a9af25..b7117b77d 100644
--- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
+++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
@@ -362,9 +362,6 @@ namespace IRaCIS.Core.API.Controllers
}
-
-
-
///
/// 上传临床数据 多文件
///
@@ -397,48 +394,29 @@ namespace IRaCIS.Core.API.Controllers
}
-
+
///
- /// 上传临床数据(废弃)
+ /// 上传阅片临床数据
///
- ///
- ///
+ ///
///
- [HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{id:guid}/{isVisit:bool}")]
+ [HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{readingClinicalDataId:guid}")]
[DisableRequestSizeLimit]
- public async Task UploadClinicalData(Guid id, bool isVisit)
+ public async Task UploadReadClinicalData(Guid readingClinicalDataId)
{
var filerelativePath = string.Empty;
- if (isVisit)
+
+ // 写法一致 使用 _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();
+ await FileUploadAsync(async (fileName) =>
{
- var sv = _repository.Where(t => t.Id == id).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefault().IfNullThrowException();
- await FileUploadAsync(async (fileName) =>
- {
- var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, id);
- //插入临床pdf 路径
- filerelativePath = relativePath;
- return serverFilePath;
- });
- }
- else
- {
- var subjectId = await _repository.Where(x => x.Id == id).Select(x =>
- x.SubjectId
- ).FirstOrDefaultAsync();
- var subject = await _repository.Where(x => x.Id == subjectId).Select(x => new
- {
- x.TrialId,
- x.SiteId,
- }).FirstOrDefaultAsync();
- await FileUploadAsync(async (fileName) =>
- {
- var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, subject.TrialId, subject.SiteId, subjectId, id);
- //插入临床pdf 路径
- filerelativePath = relativePath;
- return serverFilePath;
- });
- }
+ var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetReadClinicalDataPath(_hostEnvironment, fileName, clinicalData.TrialId, siteid, clinicalData.SubjectId, clinicalData.ObjectId, clinicalData.Id);
+ //插入临床pdf 路径
+ filerelativePath = relativePath;
+ return serverFilePath;
+ });
return ResponseOutput.Ok(filerelativePath);
}
diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml
index 5e29e14bc..957fbd70f 100644
--- a/IRaCIS.Core.API/IRaCIS.Core.API.xml
+++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml
@@ -171,12 +171,11 @@
-
+
- 上传临床数据(废弃)
+ 上传阅片临床数据
-
-
+
diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs
index 95b145d77..0c9a5ecc2 100644
--- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs
+++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs
@@ -210,6 +210,26 @@ public static class FileStoreHelper
return (serverFilePath, relativePath);
}
+
+ public static (string PhysicalPath, string RelativePath, string FileRealName) GetReadClinicalDataPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid siteId, Guid subjectId, Guid objectId,Guid readingClinicalDataId)
+ {
+ 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);
+
+ 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 serverFilePath = Path.Combine(uploadFolderPath, trustedFileNameForFileStorage);
+
+ return (serverFilePath, relativePath, fileRealName);
+
+ }
+
//获取临床数据存放路径
public static (string PhysicalPath, string RelativePath,string FileRealName) GetClinicalDataPath(IWebHostEnvironment _hostEnvironment, string fileName,Guid trialId,Guid siteId,Guid subjectId,Guid subjectVisitId)
{
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index ff93c8901..e360da6e5 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -975,6 +975,81 @@
获取访视列表
+
+
+ 项目ID
+
+
+
+
+ 对象ID
+
+
+
+
+ 受试者ID
+
+
+
+
+ 阅片临床数据ID
+
+
+
+
+ Path
+
+
+
+
+ FileName
+
+
+
+
+ 是否为访视
+
+
+
+
+ 项目ID
+
+
+
+
+ 对象ID
+
+
+
+
+ 受试者ID
+
+
+
+
+ 阅片临床数据ID
+
+
+
+
+ Path
+
+
+
+
+ FileName
+
+
+
+
+ 是否为访视
+
+
+
+
+ 临床级别
+
+
名称
@@ -3507,7 +3582,7 @@
-
+
删除
@@ -3525,9 +3600,30 @@
获取阅片临床数据列表
+
+
+
+
+
+ 获取单个阅片临床数据的所有文件
+
+
+
+
+
+
+ 新增或者修改PDF
+
+
+
+ 删除PDF
+
+
+
+
阅片期配置
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
index 35e3e43a5..61baeb344 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingClinicalDataDto.cs
@@ -48,7 +48,101 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid ObjectId { get; set; }
}
-
+ public class GetReadingClinicalDataPDFListIndto:PageInput
+ {
+ public Guid ReadingClinicalDataId { get; set; }
+ }
+
+ public class GetReadingClinicalDataPDFListOutDto
+ {
+ public Guid? Id { get; set; }
+
+ ///
+ /// 项目ID
+ ///
+ public Guid TrialId { get; set; }
+
+ ///
+ /// 对象ID
+ ///
+ public Guid ObjectId { get; set; }
+
+ ///
+ /// 受试者ID
+ ///
+ public Guid SubjectId { get; set; }
+
+ ///
+ /// 阅片临床数据ID
+ ///
+ public Guid ReadingClinicalDataId { get; set; }
+
+ ///
+ /// Path
+ ///
+ public string Path { get; set; }
+
+ ///
+ /// FileName
+ ///
+ public string FileName { get; set; }
+
+ ///
+ /// 是否为访视
+ ///
+ public bool IsVisit { get; set; }
+
+
+ }
+
+ public class AddOrUpdateReadingClinicalDataPDFDto
+ {
+
+ public Guid? Id { get; set; }
+
+ ///
+ /// 项目ID
+ ///
+ public Guid TrialId { get; set; }
+
+ ///
+ /// 对象ID
+ ///
+ public Guid ObjectId { get; set; }
+
+ ///
+ /// 受试者ID
+ ///
+ public Guid SubjectId { get; set; }
+
+ ///
+ /// 阅片临床数据ID
+ ///
+ public Guid ReadingClinicalDataId { get; set; }
+
+ ///
+ /// Path
+ ///
+ public string Path { get; set; }
+
+ ///
+ /// FileName
+ ///
+ public string FileName { get; set; }
+
+ ///
+ /// 是否为访视
+ ///
+ public bool IsVisit { get; set; }
+
+ ///
+ /// 临床级别
+ ///
+ public ClinicalLevel ClinicalDataLevel { get; set; }
+ }
+
+
+
public class GetReadingClinicalDataListOutDto
{
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
index d9bc0aa7c..abb74a67c 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingClinicalDataService.cs
@@ -23,13 +23,16 @@ namespace IRaCIS.Application.Services
{
private readonly IRepository _readingClinicalDataRepository;
private readonly IRepository _clinicalDataTrialSetRepository;
+ private readonly IRepository _readingClinicalDataPDFRepository;
public ReadingClinicalDataService(IRepository readingClinicalDataRepository,
- IRepository clinicalDataTrialSetRepository
+ IRepository clinicalDataTrialSetRepository,
+ IRepository readingClinicalDataPDFRepository
)
{
this._readingClinicalDataRepository = readingClinicalDataRepository;
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
+ this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository;
}
@@ -54,13 +57,14 @@ namespace IRaCIS.Application.Services
///
///
[HttpDelete("{id:guid}")]
- public async Task ReadingClinicalData(Guid id)
+ public async Task DeleteReadingClinicalData(Guid id)
{
await _readingClinicalDataRepository.DeleteFromQueryAsync(x => x.Id == id, true);
return ResponseOutput.Result(true);
}
+
///
/// 获取下拉菜单
///
@@ -82,10 +86,12 @@ namespace IRaCIS.Application.Services
return clinicalList;
}
+
+
///
/// 获取阅片临床数据列表
///
- ///
+ ///
///
[HttpPost]
public async Task> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto)
@@ -102,6 +108,44 @@ namespace IRaCIS.Application.Services
}
+ ///
+ /// 获取单个阅片临床数据的所有文件
+ ///
+ ///
+ ///
+ public async Task> GetReadingClinicalDataPDFList(GetReadingClinicalDataPDFListIndto inDto) {
+
+ var result = await _readingClinicalDataPDFRepository.Where(x => x.ReadingClinicalDataId == inDto.ReadingClinicalDataId).ProjectTo(_mapper.ConfigurationProvider)
+ .ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataPDFListOutDto.FileName) : inDto.SortField,
+ inDto.Asc);
+
+ return result;
+ }
+
+ ///
+ /// 新增或者修改PDF
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task AddOrUpdateReadingClinicalDataPDF(AddOrUpdateReadingClinicalDataPDFDto indto)
+ {
+ var entity = await _readingClinicalDataPDFRepository.InsertOrUpdateAsync(indto, true);
+ return ResponseOutput.Ok(entity.Id.ToString());
+ }
+
+
+ ///
+ /// 删除PDF
+ ///
+ ///
+ ///
+ [HttpDelete("{id:guid}")]
+ public async Task DeleteReadingClinicalDataPDF(Guid id)
+ {
+ await _readingClinicalDataPDFRepository.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 a59f0ea3b..cc3a94fb4 100644
--- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs
@@ -24,8 +24,13 @@ 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.ClinicalUploadType, u => u.MapFrom(s => s.ClinicalDataTrialSet.ClinicalUploadType))
+ .ForMember(d => d.FileCount, u => u.MapFrom(s => s.ReadingClinicalDataPDFList.Count()));
+
+
+
+ CreateMap();
+
//.ForMember(d => d.SiteNames, u => u.MapFrom(s => s.ReadingPeriodSites.SelectMany(x => x.Site.SiteName).ToList()));
@@ -33,11 +38,14 @@ namespace IRaCIS.Core.Application.Service
CreateMap().ReverseMap();
+ CreateMap().ReverseMap();
+
CreateMap().ReverseMap();
CreateMap().ReverseMap();
- CreateMap();
+ CreateMap()
+ .ForMember(d => d.IsUsed, u => u.MapFrom(s => s.ReadingClinicalDataList.Count()>0));
CreateMap();
CreateMap().ReverseMap();
diff --git a/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs b/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs
index 616124bda..90a958b8e 100644
--- a/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs
+++ b/IRaCIS.Core.Domain/Reading/ClinicalDataTrialSet.cs
@@ -5,6 +5,7 @@ using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using IRaCIS.Core.Domain.Share.Reading;
+using System.Collections.Generic;
namespace IRaCIS.Core.Domain.Models
{
@@ -63,6 +64,11 @@ namespace IRaCIS.Core.Domain.Models
///
public bool IsConfirm { get; set; }
+ ///
+ ///
+ ///
+ public List ReadingClinicalDataList { get; set; }
+
[ForeignKey("TrialId")]
public Trial Trial { get; set; }
diff --git a/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs b/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs
index 6ced553ae..9f561b182 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingClinicalDataPDF.cs
@@ -34,6 +34,18 @@ namespace IRaCIS.Core.Domain.Models
///
public Guid ReadingClinicalDataId { get; set; }
+ ///
+ /// Path
+ ///
+ [Required]
+ public string Path { get; set; }
+
+ ///
+ /// FileName
+ ///
+ [Required]
+ public string FileName { get; set; }
+
///
/// 是否为访视
///
@@ -54,6 +66,11 @@ namespace IRaCIS.Core.Domain.Models
///
public Guid CreateUserId { get; set; }
+
+
+
+
+
[ForeignKey("ReadingClinicalDataId")]
public ReadingClinicalData ReadingClinicalData { get; set; }