修改非dicom 上传
parent
ca9193438b
commit
427cb38f39
|
@ -267,7 +267,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
[DisableFormValueModelBinding]
|
[DisableFormValueModelBinding]
|
||||||
[DisableRequestSizeLimit]
|
[DisableRequestSizeLimit]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
public async Task<IResponseOutput> ArchiveStudyNew(/*[FromForm] ArchiveStudyCommand archiveStudyCommand,*/ Guid trialId, Guid subjectVisitId, string studyInstanceUid, Guid? abandonStudyId,Guid studyMonitorId,
|
public async Task<IResponseOutput> ArchiveStudyNew(/*[FromForm] ArchiveStudyCommand archiveStudyCommand,*/ Guid trialId, Guid subjectVisitId, string studyInstanceUid, Guid? abandonStudyId, Guid studyMonitorId,
|
||||||
[FromServices] ILogger<UploadDownLoadController> _logger,
|
[FromServices] ILogger<UploadDownLoadController> _logger,
|
||||||
[FromServices] IEasyCachingProvider _provider,
|
[FromServices] IEasyCachingProvider _provider,
|
||||||
[FromServices] IStudyService _studyService,
|
[FromServices] IStudyService _studyService,
|
||||||
|
@ -671,24 +671,43 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class UploadNoneDicomFileCommand
|
||||||
|
{
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
public Guid NoneDicomStudyId { get; set; }
|
||||||
|
public Guid StudyMonitorId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<OSSFileDTO> UploadedFileList { get; set; } = new List<OSSFileDTO>();
|
||||||
|
|
||||||
|
|
||||||
|
public class OSSFileDTO
|
||||||
|
{
|
||||||
|
public string FilePath { get; set; }
|
||||||
|
public string FileName { get; set; }
|
||||||
|
public int FileFize { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上传非Dicom 文件 支持压缩包 多文件上传
|
/// 上传非Dicom 文件 支持压缩包 多文件上传
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="formCollection"></param>
|
|
||||||
/// <param name="subjectVisitId"></param>
|
|
||||||
/// <param name="noneDicomStudyId"></param>
|
|
||||||
/// <param name="studyMonitorId"></param>
|
|
||||||
/// <param name="_noneDicomStudyRepository"></param>
|
/// <param name="_noneDicomStudyRepository"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
//[DisableRequestSizeLimit]
|
//[DisableRequestSizeLimit]
|
||||||
[RequestSizeLimit(1_073_741_824)]
|
[HttpPost("NoneDicomStudy/UploadNoneDicomFile")]
|
||||||
[HttpPost("NoneDicomStudy/UploadNoneDicomFile/{trialId:guid}/{subjectVisitId:guid}/{noneDicomStudyId:guid}/{studyMonitorId:guid}")]
|
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||||
//[Authorize(Policy = IRaCISPolicy.CRC)]
|
//[Authorize(Policy = IRaCISPolicy.CRC)]
|
||||||
public async Task<IResponseOutput> UploadNoneDicomFile(IFormCollection formCollection, Guid subjectVisitId, Guid noneDicomStudyId, Guid studyMonitorId,
|
public async Task<IResponseOutput> UploadNoneDicomFile(UploadNoneDicomFileCommand incommand,
|
||||||
[FromServices] IRepository<NoneDicomStudy> _noneDicomStudyRepository, [FromServices] IRepository<StudyMonitor> _studyMonitorRepository)
|
[FromServices] IRepository<NoneDicomStudy> _noneDicomStudyRepository, [FromServices] IRepository<StudyMonitor> _studyMonitorRepository)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var subjectVisitId = incommand.SubjectVisitId;
|
||||||
|
var studyMonitorId=incommand.StudyMonitorId;
|
||||||
|
var noneDicomStudyId=incommand.NoneDicomStudyId;
|
||||||
|
|
||||||
|
|
||||||
await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
|
await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
|
||||||
|
|
||||||
var sv = (await _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException();
|
var sv = (await _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException();
|
||||||
|
@ -697,28 +716,19 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
studyMonitor.UploadFinishedTime = DateTime.Now;
|
studyMonitor.UploadFinishedTime = DateTime.Now;
|
||||||
|
|
||||||
await FileUploadAsync(async (fileName) =>
|
foreach (var item in incommand.UploadedFileList)
|
||||||
{
|
{
|
||||||
|
await _repository.AddAsync(new NoneDicomStudyFile() { FileName = item.FileName, Path = item.FilePath, NoneDicomStudyId = noneDicomStudyId });
|
||||||
|
|
||||||
var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetNoneDicomFilePath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, subjectVisitId);
|
}
|
||||||
|
|
||||||
await _repository.AddAsync(new NoneDicomStudyFile() { FileName = fileRealName, Path = relativePath, NoneDicomStudyId = noneDicomStudyId });
|
|
||||||
|
|
||||||
return serverFilePath;
|
|
||||||
});
|
|
||||||
|
|
||||||
var uploadFinishedTime = DateTime.Now;
|
var uploadFinishedTime = DateTime.Now;
|
||||||
|
|
||||||
|
|
||||||
//// 上传非Dicom 后 将状态改为待提交 分为普通上传 和QC后重传 普通上传时才改为待提交
|
|
||||||
//await _repository.UpdatePartialFromQueryAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.None, u => new SubjectVisit() { SubmitState = SubmitStateEnum.ToSubmit });
|
|
||||||
|
|
||||||
var noneDicomStudy = await _noneDicomStudyRepository.FirstOrDefaultAsync((t => t.Id == noneDicomStudyId));
|
var noneDicomStudy = await _noneDicomStudyRepository.FirstOrDefaultAsync((t => t.Id == noneDicomStudyId));
|
||||||
|
|
||||||
noneDicomStudy.FileCount = noneDicomStudy.FileCount + formCollection.Files.Count;
|
noneDicomStudy.FileCount = noneDicomStudy.FileCount + incommand.UploadedFileList.Count;
|
||||||
|
|
||||||
studyMonitor.FileCount = formCollection.Files.Count;
|
studyMonitor.FileCount = incommand.UploadedFileList.Count;
|
||||||
studyMonitor.FileSize = formCollection.Files.Sum(t => t.Length);
|
studyMonitor.FileSize = incommand.UploadedFileList.Sum(t => t.FileFize);
|
||||||
studyMonitor.IsDicom = false;
|
studyMonitor.IsDicom = false;
|
||||||
studyMonitor.IsDicomReUpload = false;
|
studyMonitor.IsDicomReUpload = false;
|
||||||
studyMonitor.StudyId = noneDicomStudyId;
|
studyMonitor.StudyId = noneDicomStudyId;
|
||||||
|
@ -910,7 +920,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
var dt = DateTime.Now;
|
var dt = DateTime.Now;
|
||||||
|
|
||||||
etcCheckList = etcCheckList.Where(t => !(t.Modality == string.Empty || t.SiteCode == string.Empty || t.SubjectCode == string.Empty || t.VisitName == string.Empty || t.StudyDate == string.Empty ||! DateTime.TryParse(t.StudyDate, out dt))).ToList();
|
etcCheckList = etcCheckList.Where(t => !(t.Modality == string.Empty || t.SiteCode == string.Empty || t.SubjectCode == string.Empty || t.VisitName == string.Empty || t.StudyDate == string.Empty || !DateTime.TryParse(t.StudyDate, out dt))).ToList();
|
||||||
|
|
||||||
if (etcCheckList.Count == 0)
|
if (etcCheckList.Count == 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -266,14 +266,10 @@
|
||||||
<param name="taskMedicalReviewId"></param>
|
<param name="taskMedicalReviewId"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadNoneDicomFile(Microsoft.AspNetCore.Http.IFormCollection,System.Guid,System.Guid,System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.StudyMonitor})">
|
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadNoneDicomFile(IRaCIS.Core.API.Controllers.StudyController.UploadNoneDicomFileCommand,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.StudyMonitor})">
|
||||||
<summary>
|
<summary>
|
||||||
上传非Dicom 文件 支持压缩包 多文件上传
|
上传非Dicom 文件 支持压缩包 多文件上传
|
||||||
</summary>
|
</summary>
|
||||||
<param name="formCollection"></param>
|
|
||||||
<param name="subjectVisitId"></param>
|
|
||||||
<param name="noneDicomStudyId"></param>
|
|
||||||
<param name="studyMonitorId"></param>
|
|
||||||
<param name="_noneDicomStudyRepository"></param>
|
<param name="_noneDicomStudyRepository"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
|
|
@ -11841,6 +11841,14 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.ClaimOrCancelSubjectAsync(IRaCIS.Core.Application.ViewModel.ClaimSubjectDto)">
|
||||||
|
<summary>
|
||||||
|
前端 仅仅释放的时候使用,领取是后端调用该方法
|
||||||
|
</summary>
|
||||||
|
<param name="claimSubjectDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SubmitTaskChangeState(System.Guid)">
|
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.SubmitTaskChangeState(System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
签名提交任务修改状态
|
签名提交任务修改状态
|
||||||
|
|
|
@ -894,9 +894,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public Guid? VisitTaskId { get; set; }
|
public Guid? VisitTaskId { get; set; }
|
||||||
|
|
||||||
[NotDefault]
|
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
[NotDefault]
|
|
||||||
public Guid SubejctId { get; set; }
|
public Guid SubejctId { get; set; }
|
||||||
|
|
||||||
public bool IsClaim { get; set; }
|
public bool IsClaim { get; set; }
|
||||||
|
|
|
@ -30,6 +30,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public bool IsDeleted { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
public bool IsReading { get; set; } = true;
|
public bool IsReading { get; set; } = true;
|
||||||
|
|
||||||
|
public string IamgeResizePath { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,15 @@ namespace IRaCIS.Core.Application.Services
|
||||||
/// <summary> 指定资源Id,获取Dicom序列所属的实例信息列表 </summary>
|
/// <summary> 指定资源Id,获取Dicom序列所属的实例信息列表 </summary>
|
||||||
/// <param name="seriesId"> Dicom序列的Id </param>
|
/// <param name="seriesId"> Dicom序列的Id </param>
|
||||||
[HttpGet("{seriesId:guid}")]
|
[HttpGet("{seriesId:guid}")]
|
||||||
public async Task<IEnumerable<DicomInstanceDTO>> List(Guid seriesId)
|
public async Task<IResponseOutput<List<DicomInstanceDTO>> > List(Guid seriesId)
|
||||||
{
|
{
|
||||||
return await _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber).
|
var list= await _instanceRepository.Where(s => s.SeriesId == seriesId).OrderBy(s => s.InstanceNumber).
|
||||||
ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
||||||
.ProjectTo<DicomInstanceDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<DicomInstanceDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
var imageResizePath = await _instanceRepository.Where(s => s.SeriesId == seriesId).Select(t=>t.DicomSerie.ImageResizePath).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(list, new { ImageResizePath = imageResizePath });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
public interface IInstanceService
|
public interface IInstanceService
|
||||||
{
|
{
|
||||||
Task<FileContentResult> Content(Guid instanceId);
|
Task<FileContentResult> Content(Guid instanceId);
|
||||||
Task<IEnumerable<DicomInstanceDTO>> List(Guid seriesId);
|
Task<IResponseOutput<List<DicomInstanceDTO>>> List(Guid seriesId);
|
||||||
IEnumerable<Guid> List(Guid seriesId, string tpCode, bool? key);
|
IEnumerable<Guid> List(Guid seriesId, string tpCode, bool? key);
|
||||||
Task<FileContentResult> Preview(Guid instanceId);
|
Task<FileContentResult> Preview(Guid instanceId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2315,8 +2315,8 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
if (task != null)
|
if (task != null)
|
||||||
{
|
{
|
||||||
// 无序 自动领取该Subject
|
// 无序
|
||||||
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, TrialReadingCriterionId=task.TrialReadingCriterionId, VisitTaskId = task.VisitTaskId, IsInOrder = false });
|
await ClaimOrCancelSubjectAsync(new ClaimSubjectDto() { IsClaim = true, VisitTaskId = task.VisitTaskId, IsInOrder = false });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2448,7 +2448,12 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 前端 仅仅释放的时候使用,领取是后端调用该方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="claimSubjectDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task ClaimOrCancelSubjectAsync(ClaimSubjectDto claimSubjectDto)
|
public async Task ClaimOrCancelSubjectAsync(ClaimSubjectDto claimSubjectDto)
|
||||||
{
|
{
|
||||||
|
|
|
@ -180,11 +180,12 @@ namespace IRaCIS.Application.Services
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<object> GetEnvironmentName([FromServices] IWebHostEnvironment env)
|
public async Task<object> GetEnvironmentName([FromServices] IWebHostEnvironment env)
|
||||||
{
|
{
|
||||||
var a = IdentifierHelper.CreateGuid("123456");
|
var a = IdentifierHelper.CreateGuid("654321");
|
||||||
|
|
||||||
var k = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes("123456"));
|
var k = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes("123456"));
|
||||||
|
|
||||||
var c = MD5Helper.Md5("123456");
|
var c = MD5Helper.Md5("654321");
|
||||||
|
|
||||||
|
|
||||||
//update DicomInstance set Path = '/IRaCISData/TrialData/' + cast(DicomInstance.TrialId as varchar) + '/' + DicomInstance.SiteId + '/' + DicomInstance.SubjectId + '/' + DicomInstance.SubjectVisitId + '/Dicom/' + DicomInstance.StudyId + '/' + DicomInstance.Id + '.dcm'
|
//update DicomInstance set Path = '/IRaCISData/TrialData/' + cast(DicomInstance.TrialId as varchar) + '/' + DicomInstance.SiteId + '/' + DicomInstance.SubjectId + '/' + DicomInstance.SubjectVisitId + '/Dicom/' + DicomInstance.StudyId + '/' + DicomInstance.Id + '.dcm'
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public bool IsDeleted {get;set;}
|
public bool IsDeleted {get;set;}
|
||||||
public bool IsReading { get; set; } = true;
|
public bool IsReading { get; set; } = true;
|
||||||
|
|
||||||
public string IamgeResizePath { get; set; }=string.Empty;
|
public string ImageResizePath { get; set; }=string.Empty;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue