上传监控

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

@ -293,19 +293,7 @@ namespace IRaCIS.Core.API.Controllers
}); });
var studyMonitor = new StudyMonitor()
try
{
if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑
{
// 同一个访视 多个线程上传处理 批量保存 可能造成死锁 https://www.cnblogs.com/johnblogs/p/9945767.html
await _dicomArchiveService.DicomDBDataSaveChange();
archiveResult.ReuploadNewStudyId = archivedStudyIds[0] == archiveStudyCommand.AbandonStudyId ? archivedStudyIds[0] : Guid.Empty;
await _repository.AddAsync(new StudyMonitor()
{ {
TrialId = savedInfo.TrialId, TrialId = savedInfo.TrialId,
SiteId = savedInfo.SiteId, SiteId = savedInfo.SiteId,
@ -321,7 +309,22 @@ namespace IRaCIS.Core.API.Controllers
IsDicom = true, IsDicom = true,
IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null, IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null,
IP = _userInfo.IP IP = _userInfo.IP
}, true); };
try
{
if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑
{
// 同一个访视 多个线程上传处理 批量保存 可能造成死锁 https://www.cnblogs.com/johnblogs/p/9945767.html
await _dicomArchiveService.DicomDBDataSaveChange();
archiveResult.ReuploadNewStudyId = archivedStudyIds[0] == archiveStudyCommand.AbandonStudyId ? archivedStudyIds[0] : Guid.Empty;
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);
@ -375,14 +390,19 @@ namespace IRaCIS.Core.API.Controllers
{ {
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();
@ -400,8 +420,8 @@ namespace IRaCIS.Core.API.Controllers
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>();
@ -531,7 +551,7 @@ 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;
@ -617,7 +637,7 @@ 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);
@ -820,7 +840,7 @@ 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;
@ -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;
} }
} }