Test.EIImageViewer
he 2022-06-09 21:25:47 +08:00
parent 61e8576807
commit 57f89ca5ea
9 changed files with 311 additions and 49 deletions

View File

@ -362,9 +362,6 @@ namespace IRaCIS.Core.API.Controllers
}
/// <summary>
/// 上传临床数据 多文件
/// </summary>
@ -397,48 +394,29 @@ namespace IRaCIS.Core.API.Controllers
}
/// <summary>
/// 上传临床数据(废弃)
/// 上传阅片临床数据
/// </summary>
/// <param name="id"></param>
/// <param name="isVisit"></param>
/// <param name="readingClinicalDataId"></param>
/// <returns></returns>
[HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{id:guid}/{isVisit:bool}")]
[HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{readingClinicalDataId:guid}")]
[DisableRequestSizeLimit]
public async Task<IResponseOutput> UploadClinicalData(Guid id, bool isVisit)
public async Task<IResponseOutput> UploadReadClinicalData(Guid readingClinicalDataId)
{
var filerelativePath = string.Empty;
if (isVisit)
// 写法一致 使用 _repository
var clinicalData = (await _repository.Where<ReadingClinicalData>(x => x.Id == readingClinicalDataId).FirstOrDefaultAsync()).IfNullThrowException();
var siteid =await _repository.Where<Subject>(x => x.Id == clinicalData.SubjectId).Select(x => x.SiteId).FirstOrDefaultAsync();
await FileUploadAsync(async (fileName) =>
{
var sv = _repository.Where<SubjectVisit>(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<ReadModule>(x => x.Id == id).Select(x =>
x.SubjectId
).FirstOrDefaultAsync();
var subject = await _repository.Where<Subject>(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);
}

View File

@ -171,12 +171,11 @@
<param name="subjectVisitId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadClinicalData(System.Guid,System.Boolean)">
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadReadClinicalData(System.Guid)">
<summary>
上传临床数据(废弃)
上传阅片临床数据
</summary>
<param name="id"></param>
<param name="isVisit"></param>
<param name="readingClinicalDataId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadNoneDicomFile(Microsoft.AspNetCore.Http.IFormCollection,System.Guid,System.Guid)">

View File

@ -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)
{

View File

@ -975,6 +975,81 @@
获取访视列表
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.TrialId">
<summary>
项目ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.ObjectId">
<summary>
对象ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.SubjectId">
<summary>
受试者ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.ReadingClinicalDataId">
<summary>
阅片临床数据ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.Path">
<summary>
Path
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.FileName">
<summary>
FileName
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListOutDto.IsVisit">
<summary>
是否为访视
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.TrialId">
<summary>
项目ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.ObjectId">
<summary>
对象ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.SubjectId">
<summary>
受试者ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.ReadingClinicalDataId">
<summary>
阅片临床数据ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.Path">
<summary>
Path
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.FileName">
<summary>
FileName
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.IsVisit">
<summary>
是否为访视
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto.ClinicalDataLevel">
<summary>
临床级别
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataListOutDto.ClinicalDataSetName">
<summary>
名称
@ -3507,7 +3582,7 @@
<param name="indto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingClinicalDataService.ReadingClinicalData(System.Guid)">
<member name="M:IRaCIS.Application.Services.ReadingClinicalDataService.DeleteReadingClinicalData(System.Guid)">
<summary>
删除
</summary>
@ -3525,9 +3600,30 @@
<summary>
获取阅片临床数据列表
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingClinicalDataService.GetReadingClinicalDataPDFList(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingClinicalDataPDFListIndto)">
<summary>
获取单个阅片临床数据的所有文件
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingClinicalDataService.AddOrUpdateReadingClinicalDataPDF(IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingClinicalDataPDFDto)">
<summary>
新增或者修改PDF
</summary>
<param name="indto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Application.Services.ReadingClinicalDataService.DeleteReadingClinicalDataPDF(System.Guid)">
<summary>
删除PDF
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Application.Services.ReadingPeriodSetService">
<summary>
阅片期配置

View File

@ -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; }
/// <summary>
/// 项目ID
/// </summary>
public Guid TrialId { get; set; }
/// <summary>
/// 对象ID
/// </summary>
public Guid ObjectId { get; set; }
/// <summary>
/// 受试者ID
/// </summary>
public Guid SubjectId { get; set; }
/// <summary>
/// 阅片临床数据ID
/// </summary>
public Guid ReadingClinicalDataId { get; set; }
/// <summary>
/// Path
/// </summary>
public string Path { get; set; }
/// <summary>
/// FileName
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 是否为访视
/// </summary>
public bool IsVisit { get; set; }
}
public class AddOrUpdateReadingClinicalDataPDFDto
{
public Guid? Id { get; set; }
/// <summary>
/// 项目ID
/// </summary>
public Guid TrialId { get; set; }
/// <summary>
/// 对象ID
/// </summary>
public Guid ObjectId { get; set; }
/// <summary>
/// 受试者ID
/// </summary>
public Guid SubjectId { get; set; }
/// <summary>
/// 阅片临床数据ID
/// </summary>
public Guid ReadingClinicalDataId { get; set; }
/// <summary>
/// Path
/// </summary>
public string Path { get; set; }
/// <summary>
/// FileName
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 是否为访视
/// </summary>
public bool IsVisit { get; set; }
/// <summary>
/// 临床级别
/// </summary>
public ClinicalLevel ClinicalDataLevel { get; set; }
}
public class GetReadingClinicalDataListOutDto
{

View File

@ -23,13 +23,16 @@ namespace IRaCIS.Application.Services
{
private readonly IRepository<ReadingClinicalData> _readingClinicalDataRepository;
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
private readonly IRepository<ReadingClinicalDataPDF> _readingClinicalDataPDFRepository;
public ReadingClinicalDataService(IRepository<ReadingClinicalData> readingClinicalDataRepository,
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
IRepository<ReadingClinicalDataPDF> readingClinicalDataPDFRepository
)
{
this._readingClinicalDataRepository = readingClinicalDataRepository;
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
this._readingClinicalDataPDFRepository = readingClinicalDataPDFRepository;
}
@ -54,13 +57,14 @@ namespace IRaCIS.Application.Services
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id:guid}")]
public async Task<IResponseOutput> ReadingClinicalData(Guid id)
public async Task<IResponseOutput> DeleteReadingClinicalData(Guid id)
{
await _readingClinicalDataRepository.DeleteFromQueryAsync(x => x.Id == id, true);
return ResponseOutput.Result(true);
}
/// <summary>
/// 获取下拉菜单
/// </summary>
@ -82,10 +86,12 @@ namespace IRaCIS.Application.Services
return clinicalList;
}
/// <summary>
/// 获取阅片临床数据列表
/// </summary>
/// <param name="indto"></param>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<GetReadingClinicalDataListOutDto>> GetReadingClinicalDataList(GetReadingClinicalDataListIndto inDto)
@ -102,6 +108,44 @@ namespace IRaCIS.Application.Services
}
/// <summary>
/// 获取单个阅片临床数据的所有文件
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
public async Task<PageOutput<GetReadingClinicalDataPDFListOutDto>> GetReadingClinicalDataPDFList(GetReadingClinicalDataPDFListIndto inDto) {
var result = await _readingClinicalDataPDFRepository.Where(x => x.ReadingClinicalDataId == inDto.ReadingClinicalDataId).ProjectTo<GetReadingClinicalDataPDFListOutDto>(_mapper.ConfigurationProvider)
.ToPagedListAsync(inDto.PageIndex, inDto.PageSize, inDto.SortField == null ? nameof(GetReadingClinicalDataPDFListOutDto.FileName) : inDto.SortField,
inDto.Asc);
return result;
}
/// <summary>
/// 新增或者修改PDF
/// </summary>
/// <param name="indto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateReadingClinicalDataPDF(AddOrUpdateReadingClinicalDataPDFDto indto)
{
var entity = await _readingClinicalDataPDFRepository.InsertOrUpdateAsync(indto, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 删除PDF
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id:guid}")]
public async Task<IResponseOutput> DeleteReadingClinicalDataPDF(Guid id)
{
await _readingClinicalDataPDFRepository.DeleteFromQueryAsync(x => x.Id == id, true);
return ResponseOutput.Result(true);
}
}

View File

@ -24,8 +24,13 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingClinicalData, GetReadingClinicalDataListOutDto>()
.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<ReadingClinicalDataPDF, GetReadingClinicalDataPDFListOutDto>();
//.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<ReadingClinicalData, AddOrUpdateReadingClinicalDataDto>().ReverseMap();
CreateMap<ReadingClinicalDataPDF, AddOrUpdateReadingClinicalDataPDFDto>().ReverseMap();
CreateMap<ClinicalDataTrialSet, ClinicalDataTrialSetAddOrEdit>().ReverseMap();
CreateMap<ClinicalDataSystemSet, ClinicalDataSystemSetAddOrEdit>().ReverseMap();
CreateMap<ClinicalDataTrialSet, ClinicalDataTrialSetView>();
CreateMap<ClinicalDataTrialSet, ClinicalDataTrialSetView>()
.ForMember(d => d.IsUsed, u => u.MapFrom(s => s.ReadingClinicalDataList.Count()>0));
CreateMap<ClinicalDataSystemSet, ClinicalDataSystemSetView>();
CreateMap<PreviousPDF, PreviousPDFAddOrEdit>().ReverseMap();

View File

@ -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
/// </summary>
public bool IsConfirm { get; set; }
/// <summary>
///
/// </summary>
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
[ForeignKey("TrialId")]
public Trial Trial { get; set; }

View File

@ -34,6 +34,18 @@ namespace IRaCIS.Core.Domain.Models
/// </summary>
public Guid ReadingClinicalDataId { get; set; }
/// <summary>
/// Path
/// </summary>
[Required]
public string Path { get; set; }
/// <summary>
/// FileName
/// </summary>
[Required]
public string FileName { get; set; }
/// <summary>
/// 是否为访视
/// </summary>
@ -54,6 +66,11 @@ namespace IRaCIS.Core.Domain.Models
/// </summary>
public Guid CreateUserId { get; set; }
[ForeignKey("ReadingClinicalDataId")]
public ReadingClinicalData ReadingClinicalData { get; set; }