上传监控

Uat_Study
hang 2022-08-04 15:25:00 +08:00
parent f2202daa75
commit 8eb5476f8e
6 changed files with 174 additions and 46 deletions

View File

@ -199,19 +199,19 @@ namespace IRaCIS.Core.API.Controllers
public IMapper _mapper { get; set; } public IMapper _mapper { get; set; }
public IUserInfo _userInfo { get; set; } public IUserInfo _userInfo { get; set; }
private readonly IMediator _mediator; private readonly IMediator _mediator;
private readonly IWebHostEnvironment _hostEnvironment; private readonly IWebHostEnvironment _hostEnvironment;
private readonly IRepository _repository; private readonly IRepository _repository;
public StudyController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, public StudyController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator,
IRepository repository) IRepository repository)
{ {
_hostEnvironment = hostEnvironment; _hostEnvironment = hostEnvironment;
_mediator = mediator; _mediator = mediator;
_mapper = mapper; _mapper = mapper;
_userInfo = userInfo; _userInfo = userInfo;
_repository = repository; _repository = repository;
@ -227,7 +227,7 @@ namespace IRaCIS.Core.API.Controllers
[FromServices] ILogger<UploadDownLoadController> _logger, [FromServices] ILogger<UploadDownLoadController> _logger,
[FromServices] IEasyCachingProvider _provider, [FromServices] IEasyCachingProvider _provider,
[FromServices] IStudyService _studyService, [FromServices] IStudyService _studyService,
[FromServices] IDicomArchiveService _dicomArchiveService, [FromServices] IDicomArchiveService _dicomArchiveService,
[FromServices] IRepository _repository [FromServices] IRepository _repository
) )
@ -293,9 +293,27 @@ namespace IRaCIS.Core.API.Controllers
}); });
var studyMonitor = new StudyMonitor()
{
TrialId = savedInfo.TrialId,
SiteId = savedInfo.SiteId,
SubjectId = savedInfo.SubjectId,
SubjectVisitId = savedInfo.SubjectVisitId,
StudyId = archivedStudyIds[0],
StudyCode = studycode,
UploadStartTime = startTime,
UploadFinishedTime = DateTime.Now,
FileSize = (decimal)HttpContext.Request.ContentLength,
FileCount = archiveResult.ReceivedFileCount,
IsDicom = true,
IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null,
IP = _userInfo.IP
};
try try
{ {
if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑 if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑
{ {
@ -305,24 +323,9 @@ namespace IRaCIS.Core.API.Controllers
archiveResult.ReuploadNewStudyId = archivedStudyIds[0] == archiveStudyCommand.AbandonStudyId ? archivedStudyIds[0] : Guid.Empty; archiveResult.ReuploadNewStudyId = archivedStudyIds[0] == archiveStudyCommand.AbandonStudyId ? archivedStudyIds[0] : Guid.Empty;
await _repository.AddAsync(new StudyMonitor()
{
TrialId = savedInfo.TrialId,
SiteId = savedInfo.SiteId,
SubjectId = savedInfo.SubjectId,
SubjectVisitId = savedInfo.SubjectVisitId,
StudyId = archivedStudyIds[0],
StudyCode = studycode,
UploadStartTime = startTime,
UploadFinishedTime = DateTime.Now,
FileSize = (decimal)HttpContext.Request.ContentLength,
FileCount = archiveResult.ReceivedFileCount,
IsDicom = true,
IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null,
IP = _userInfo.IP
}, true);
studyMonitor.IsSuccess = true;
//_studyService.UploadOrReUploadNeedTodo(archiveStudyCommand, archivedStudyIds, ref archiveResult, ); //_studyService.UploadOrReUploadNeedTodo(archiveStudyCommand, archivedStudyIds, ref archiveResult, );
@ -331,20 +334,32 @@ namespace IRaCIS.Core.API.Controllers
} }
else else
{ {
studyMonitor.IsSuccess = false;
studyMonitor.Note= JsonConvert.SerializeObject(archiveResult);
return ResponseOutput.NotOk(archiveResult); return ResponseOutput.NotOk(archiveResult);
} }
} }
catch (Exception e) catch (Exception e)
{ {
studyMonitor.IsSuccess = false;
studyMonitor.Note = JsonConvert.SerializeObject(new { Message=e.Message,Result= archiveResult });
_logger.LogError(e.Message + e.StackTrace); _logger.LogError(e.Message + e.StackTrace);
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid); _provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
return ResponseOutput.NotOk(e.Message, ApiResponseCodeEnum.ProgramException); return ResponseOutput.NotOk(e.Message, ApiResponseCodeEnum.ProgramException);
}
finally
{
await _repository.AddAsync(studyMonitor, true);
} }
return ResponseOutput.Ok(archiveResult); return ResponseOutput.Ok(archiveResult);
@ -354,7 +369,7 @@ namespace IRaCIS.Core.API.Controllers
} }
@ -370,19 +385,24 @@ namespace IRaCIS.Core.API.Controllers
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
var sv = _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefault().IfNullThrowException(); var sv = _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefault().IfNullThrowException();
await FileUploadAsync(async (fileName) => await FileUploadAsync(async (fileName) =>
{ {
var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, subjectVisitId); var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, subjectVisitId);
//插入临床pdf 路径 //插入临床pdf 路径
await _repository.AddAsync(new PreviousPDF() { SubjectVisitId = subjectVisitId, await _repository.AddAsync(new PreviousPDF()
{
SubjectVisitId = subjectVisitId,
IsVisist=true, IsVisist = true,
DataType= ClinicalDataType.MedicalHistory, DataType = ClinicalDataType.MedicalHistory,
UploadType=ClinicalUploadType.PDF, UploadType = ClinicalUploadType.PDF,
SubjectId= sv.SubjectId, SubjectId = sv.SubjectId,
TrialId=sv.TrialId, TrialId = sv.TrialId,
ClinicalLevel = ClinicalLevel.Subject, Path = relativePath, FileName = fileRealName }); ClinicalLevel = ClinicalLevel.Subject,
Path = relativePath,
FileName = fileRealName
});
return serverFilePath; return serverFilePath;
}); });
await _repository.SaveChangesAsync(); await _repository.SaveChangesAsync();
@ -397,11 +417,11 @@ namespace IRaCIS.Core.API.Controllers
/// <returns></returns> /// <returns></returns>
[HttpPost("ClinicalData/UploadClinicalTemplate")] [HttpPost("ClinicalData/UploadClinicalTemplate")]
[DisableRequestSizeLimit] [DisableRequestSizeLimit]
public async Task<IResponseOutput<List<FileDto>>> UploadClinicalTemplate(Guid? trialId) public async Task<IResponseOutput<List<FileDto>>> UploadClinicalTemplate(Guid? trialId)
{ {
if(trialId==null) if (trialId == null)
trialId=default(Guid); trialId = default(Guid);
var filerelativePath = string.Empty; var filerelativePath = string.Empty;
List<FileDto> fileDtos = new List<FileDto>(); List<FileDto> fileDtos = new List<FileDto>();
@ -434,7 +454,7 @@ namespace IRaCIS.Core.API.Controllers
/// <returns></returns> /// <returns></returns>
[HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{subjectId:guid}/{readingId:guid}")] [HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{subjectId:guid}/{readingId:guid}")]
[DisableRequestSizeLimit] [DisableRequestSizeLimit]
public async Task<IResponseOutput<List<FileDto>>> UploadReadClinicalData(Guid trialId,Guid subjectId,Guid readingId) public async Task<IResponseOutput<List<FileDto>>> UploadReadClinicalData(Guid trialId, Guid subjectId, Guid readingId)
{ {
var filerelativePath = string.Empty; var filerelativePath = string.Empty;
List<FileDto> fileDtos = new List<FileDto>(); List<FileDto> fileDtos = new List<FileDto>();
@ -457,7 +477,7 @@ namespace IRaCIS.Core.API.Controllers
}); });
return ResponseOutput.Ok(fileDtos); return ResponseOutput.Ok(fileDtos);
} }
/// <summary> /// <summary>
@ -480,7 +500,7 @@ namespace IRaCIS.Core.API.Controllers
return serverFilePath; return serverFilePath;
}); });
return ResponseOutput.Ok(fileDto); return ResponseOutput.Ok(fileDto);
} }
@ -494,7 +514,7 @@ namespace IRaCIS.Core.API.Controllers
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput<FileDto>> UploadJudgeTaskImage(Guid trialId, Guid visitTaskId) public async Task<IResponseOutput<FileDto>> UploadJudgeTaskImage(Guid trialId, Guid visitTaskId)
{ {
FileDto fileDto = new FileDto(); FileDto fileDto = new FileDto();
await FileUploadAsync(async (fileName) => await FileUploadAsync(async (fileName) =>
{ {
@ -531,13 +551,13 @@ namespace IRaCIS.Core.API.Controllers
await _repository.UpdatePartialFromQueryAsync<TaskMedicalReview>(x => x.Id == taskMedicalReviewId, x => new TaskMedicalReview() await _repository.UpdatePartialFromQueryAsync<TaskMedicalReview>(x => x.Id == taskMedicalReviewId, x => new TaskMedicalReview()
{ {
ImagePath = relativePath, ImagePath = relativePath,
FileName=fileName, FileName = fileName,
}); });
path = relativePath; path = relativePath;
fileDto.Path = relativePath; fileDto.Path = relativePath;
fileDto.FileName = fileName; fileDto.FileName = fileName;
return serverFilePath; return serverFilePath;
}); });
await _repository.SaveChangesAsync(); await _repository.SaveChangesAsync();
@ -617,9 +637,9 @@ namespace IRaCIS.Core.API.Controllers
[HttpPost("QCOperation/UploadVisitCheckExcel/{trialId:guid}")] [HttpPost("QCOperation/UploadVisitCheckExcel/{trialId:guid}")]
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
[Authorize(Policy = IRaCISPolicy.PM_APM)] [Authorize(Policy = IRaCISPolicy.PM_APM)]
public async Task<IResponseOutput> UploadVisitCheckExcel(Guid trialId ) public async Task<IResponseOutput> UploadVisitCheckExcel(Guid trialId)
{ {
var (serverFilePath, relativePath, fileName) = (string.Empty, string.Empty, string.Empty); var (serverFilePath, relativePath, fileName) = (string.Empty, string.Empty, string.Empty);
await FileUploadAsync(async (realFileName) => await FileUploadAsync(async (realFileName) =>
{ {
@ -812,7 +832,7 @@ namespace IRaCIS.Core.API.Controllers
{ {
public IMapper _mapper { get; set; } public IMapper _mapper { get; set; }
public IUserInfo _userInfo { get; set; } public IUserInfo _userInfo { get; set; }
private readonly IWebHostEnvironment _hostEnvironment; private readonly IWebHostEnvironment _hostEnvironment;
@ -820,11 +840,11 @@ namespace IRaCIS.Core.API.Controllers
public FileController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment,IFileService fileService) public FileController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IFileService fileService)
{ {
_fileService = fileService; _fileService = fileService;
_hostEnvironment = hostEnvironment; _hostEnvironment = hostEnvironment;
_mapper = mapper; _mapper = mapper;
_userInfo = userInfo; _userInfo = userInfo;
} }
@ -923,7 +943,7 @@ namespace IRaCIS.Core.API.Controllers
[HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")] [HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")]
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
[AllowAnonymous] [AllowAnonymous]
public async Task<IResponseOutput<string>> DownloadResume( int language, Guid trialId, Guid[] doctorIdArray) public async Task<IResponseOutput<string>> DownloadResume(int language, Guid trialId, Guid[] doctorIdArray)
{ {
var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray); var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray);

View File

@ -249,6 +249,14 @@
<param name="readingId"></param> <param name="readingId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadReadingAnswerImage(System.Guid,System.Guid)">
<summary>
上传Reading问题的图像
</summary>
<param name="trialId"></param>
<param name="visitTaskId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadJudgeTaskImage(System.Guid,System.Guid)"> <member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadJudgeTaskImage(System.Guid,System.Guid)">
<summary> <summary>
上传裁判任务的图像 上传裁判任务的图像

View File

@ -1537,6 +1537,11 @@
评估原因 评估原因
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetOncologyReadingInfoOutDto.IsShowDetail">
<summary>
是否显示详情
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetGlobalReadingInfoInDto.UsingOriginalData"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetGlobalReadingInfoInDto.UsingOriginalData">
<summary> <summary>
当新答案为空的时候 是否是有原数据 当新答案为空的时候 是否是有原数据
@ -1662,6 +1667,21 @@
标准分页Id 标准分页Id
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.RelevanceId">
<summary>
关联ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.RelevanceValue">
<summary>
关联Value
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.ImageCount">
<summary>
图片数量
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IRConfirmMedicalReviewInDto.DoctorUserIdeaEnum"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IRConfirmMedicalReviewInDto.DoctorUserIdeaEnum">
<summary> <summary>
阅片人是否认同 阅片人是否认同
@ -2390,6 +2410,21 @@
标准分页Id 标准分页Id
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.RelevanceId">
<summary>
关联ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.RelevanceValue">
<summary>
关联Value
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.ImageCount">
<summary>
图片数量
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.Id"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.Id">
<summary> <summary>
Id Id
@ -2450,6 +2485,11 @@
是否是裁判问题 是否是裁判问题
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.ImageCount">
<summary>
图片数量
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialViewInDto.ReadingQuestionCriterionTrialId"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialViewInDto.ReadingQuestionCriterionTrialId">
<summary> <summary>
系统标准Id 系统标准Id
@ -2550,6 +2590,21 @@
裁判类型 裁判类型
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialQuestion.RelevanceId">
<summary>
关联ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialQuestion.RelevanceValue">
<summary>
关联Value
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialQuestion.ImageCount">
<summary>
图片数量
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.GroupName"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.GroupName">
<summary> <summary>
分组 分组
@ -2610,6 +2665,11 @@
类型值 类型值
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.ImageCount">
<summary>
图片数量
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.Id"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.Id">
<summary> <summary>
Id Id
@ -2680,6 +2740,21 @@
标准分页Id 标准分页Id
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.RelevanceId">
<summary>
关联ID
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.RelevanceValue">
<summary>
关联Value
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.ImageCount">
<summary>
图片数量
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionSystemView.Id"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionSystemView.Id">
<summary> <summary>
返回的对象 返回的对象
@ -2740,6 +2815,11 @@
修约小数点 修约小数点
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionTrialView.ShowOrder">
<summary>
排序
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionTrialView.IsSystemData"> <member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionTrialView.IsSystemData">
<summary> <summary>
是否是系统数据 是否是系统数据
@ -4285,6 +4365,11 @@
评估原因 评估原因
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.IsShowDetail">
<summary>
是否显示详情
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.EvaluationResult"> <member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.EvaluationResult">
<summary> <summary>
评估结果 评估结果
@ -4295,6 +4380,11 @@
评估原因 评估原因
</summary> </summary>
</member> </member>
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.IsShowDetail">
<summary>
是否显示详情
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.SetTrialReadingCriterionInDto.FormType"> <member name="P:IRaCIS.Core.Application.Contracts.SetTrialReadingCriterionInDto.FormType">
<summary> <summary>
表单类型 表单类型

View File

@ -103,6 +103,10 @@ namespace IRaCIS.Core.Application.Contracts
public int FileCount { get; set; } public int FileCount { get; set; }
public bool IsSuccess = true;
public string Note = string.Empty;
} }

View File

@ -180,7 +180,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
UploadTime = t.CreateTime, UploadTime = t.CreateTime,
IsSuccess=t.IsSuccess,
Note=t.Note,
IP = t.IP, IP = t.IP,
FileCount = t.FileCount, FileCount = t.FileCount,
FileSize = t.FileSize, FileSize = t.FileSize,

View File

@ -80,6 +80,11 @@ namespace IRaCIS.Core.Domain.Models
[ForeignKey("CreateUserId")] [ForeignKey("CreateUserId")]
public User Uploader { get; set; } public User Uploader { get; set; }
public bool IsSuccess = true;
public string Note = string.Empty;
} }
} }