Uat_Study
parent
d0856021db
commit
412ca21ba2
|
@ -24,6 +24,7 @@ using Microsoft.AspNetCore.Authorization;
|
|||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using Microsoft.AspNetCore.StaticFiles;
|
||||
using Microsoft.AspNetCore.WebUtilities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
@ -130,7 +131,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
|
||||
/// <summary> 流式上传 Dicom上传 </summary>
|
||||
[Route("base")]
|
||||
public virtual async Task<int> DicomFileUploadAsync(Func<string, Stream, Task> filePathFunc)
|
||||
public virtual async Task<int> DicomFileUploadAsync(Func<string, Stream, int, Task> filePathFunc)
|
||||
{
|
||||
|
||||
var fileCount = 0;
|
||||
|
@ -163,7 +164,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
{
|
||||
++fileCount;
|
||||
|
||||
await filePathFunc(entry.Key, entry.OpenEntryStream());
|
||||
await filePathFunc(entry.Key, entry.OpenEntryStream(), fileCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -174,7 +175,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
{
|
||||
++fileCount;
|
||||
|
||||
await filePathFunc(fileName, section.Body);
|
||||
await filePathFunc(fileName, section.Body, fileCount);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -224,12 +225,12 @@ namespace IRaCIS.Core.API.Controllers
|
|||
[DisableRequestSizeLimit]
|
||||
[TypeFilter(typeof(TrialResourceFilter))]
|
||||
public async Task<IResponseOutput> ArchiveStudyNew([FromForm] ArchiveStudyCommand archiveStudyCommand,
|
||||
[FromServices] ILogger<UploadDownLoadController> _logger,
|
||||
[FromServices] ILogger<UploadDownLoadController> _logger,
|
||||
[FromServices] IEasyCachingProvider _provider,
|
||||
[FromServices] IStudyService _studyService,
|
||||
|
||||
[FromServices] IDicomArchiveService _dicomArchiveService,
|
||||
[FromServices] IRepository _repository
|
||||
[FromServices] IStudyService _studyService,
|
||||
[FromServices] IHubContext<UploadHub, IUploadClient> _uploadHub,
|
||||
[FromServices] IDicomArchiveService _dicomArchiveService,
|
||||
[FromServices] IRepository _repository
|
||||
)
|
||||
{
|
||||
|
||||
|
@ -261,7 +262,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
|
||||
var savedInfo = _studyService.GetSaveToDicomInfo(archiveStudyCommand.SubjectVisitId);
|
||||
|
||||
archiveResult.ReceivedFileCount = await DicomFileUploadAsync(async (fileName, fileStream) =>
|
||||
archiveResult.ReceivedFileCount = await DicomFileUploadAsync(async (fileName, fileStream, receivedCount) =>
|
||||
{
|
||||
|
||||
try
|
||||
|
@ -280,6 +281,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||
}
|
||||
}
|
||||
|
||||
await _uploadHub.Clients.All.ReceivProgressAsync(archiveStudyCommand.StudyInstanceUid, receivedCount);
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -337,7 +339,6 @@ namespace IRaCIS.Core.API.Controllers
|
|||
else
|
||||
{
|
||||
studyMonitor.IsSuccess = false;
|
||||
studyMonitor.UploadFinishedTime = DateTime.Now;
|
||||
studyMonitor.Note= JsonConvert.SerializeObject(archiveResult);
|
||||
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
|
||||
|
||||
|
|
|
@ -220,10 +220,10 @@
|
|||
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.FileUploadAsync(System.Func{System.String,System.Threading.Tasks.Task{System.String}})">
|
||||
<summary> 流式上传 通用封装 不返回任何数据,后续还有事情处理 </summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Threading.Tasks.Task})">
|
||||
<member name="M:IRaCIS.Core.API.Controllers.UploadBaseController.DicomFileUploadAsync(System.Func{System.String,System.IO.Stream,System.Int32,System.Threading.Tasks.Task})">
|
||||
<summary> 流式上传 Dicom上传 </summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(IRaCIS.Core.Application.Contracts.ArchiveStudyCommand,Microsoft.Extensions.Logging.ILogger{IRaCIS.Core.API.Controllers.UploadDownLoadController},EasyCaching.Core.IEasyCachingProvider,IRaCIS.Core.Application.Contracts.IStudyService,IRaCIS.Core.Application.Contracts.Dicom.IDicomArchiveService,IRaCIS.Core.Infra.EFCore.IRepository)">
|
||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.ArchiveStudyNew(IRaCIS.Core.Application.Contracts.ArchiveStudyCommand,Microsoft.Extensions.Logging.ILogger{IRaCIS.Core.API.Controllers.UploadDownLoadController},EasyCaching.Core.IEasyCachingProvider,IRaCIS.Core.Application.Contracts.IStudyService,Microsoft.AspNetCore.SignalR.IHubContext{IRaCIS.Core.API.UploadHub,IRaCIS.Core.API.IUploadClient},IRaCIS.Core.Application.Contracts.Dicom.IDicomArchiveService,IRaCIS.Core.Infra.EFCore.IRepository)">
|
||||
<summary>Dicom 归档</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadVisitClinicalData(System.Guid)">
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
using EasyCaching.Core;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.SignalR;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IRaCIS.Core.API
|
||||
{
|
||||
public interface IUploadClient
|
||||
{
|
||||
Task ReceivProgressAsync( string studyInstanceUid , int haveReceivedCount);
|
||||
}
|
||||
|
||||
|
||||
//[Authorize]
|
||||
public class UploadHub : Hub<IUploadClient>
|
||||
{
|
||||
//private IEasyCachingProvider _provider { get; }
|
||||
|
||||
//public UploadHub(IEasyCachingProvider provider)
|
||||
//{
|
||||
// _provider = provider;
|
||||
//}
|
||||
|
||||
public override Task OnConnectedAsync()
|
||||
{
|
||||
return base.OnConnectedAsync();
|
||||
}
|
||||
|
||||
public async Task SendProgress(string studyInstanceUid, int haveReceivedCount)
|
||||
{
|
||||
|
||||
|
||||
await Clients.All.ReceivProgressAsync(studyInstanceUid, haveReceivedCount);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -146,6 +146,8 @@ namespace IRaCIS.Core.API
|
|||
//DicomÓ°ÏñäÖȾͼƬ ¿çƽ̨
|
||||
services.AddDicomSetup();
|
||||
|
||||
// 实时应用
|
||||
services.AddSignalR();
|
||||
|
||||
//services.AddSingleton<IImportResultFilter, ImportResultFilteTest>();
|
||||
|
||||
|
@ -212,6 +214,7 @@ namespace IRaCIS.Core.API
|
|||
|
||||
app.UseEndpoints(endpoints =>
|
||||
{
|
||||
endpoints.MapHub<UploadHub>("/UploadHub");
|
||||
endpoints.MapControllers();
|
||||
});
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ namespace IRaCIS.Core.API._PipelineExtensions.Serilog
|
|||
|
||||
if (ContentType != null)
|
||||
{
|
||||
isUploadRelation = context.Request.ContentType.Contains("multipart/form-data") || context.Request.ContentType.Contains("boundary");
|
||||
isUploadRelation = context.Request.ContentType.Contains("multipart/form-data") || context.Request.ContentType.Contains("boundary") || context.Request.ContentType.Contains("octet-stream");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4757,6 +4757,13 @@
|
|||
<param name="trialQCProcess">项目配置的针对访视检查是那种审核,0 不审,1 单审,2双审</param>
|
||||
<param name="currentQCType">当前 QC进入的是那种审核 1 单审,2复审</param>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetQCQuestionAnswer(IRaCIS.Core.Application.Contracts.GetQCQuestionAnswerInDto)">
|
||||
<summary>
|
||||
获取质控问题答案
|
||||
</summary>
|
||||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCListService.GetQCQuestionAnswerList(System.Guid,System.Guid,IRaCIS.Core.Domain.Share.TrialQCProcess,IRaCIS.Core.Domain.Share.CurrentQC)">
|
||||
<summary>
|
||||
获取某次访视 QC 问题核对答案 列表 初始化进去的时候是模板项,QC填写了就是对应的内容
|
||||
|
|
Loading…
Reference in New Issue