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