diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index b69eb7eb1..dceeec729 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -199,19 +199,19 @@ namespace IRaCIS.Core.API.Controllers public IMapper _mapper { get; set; } public IUserInfo _userInfo { get; set; } private readonly IMediator _mediator; - + private readonly IWebHostEnvironment _hostEnvironment; private readonly IRepository _repository; public StudyController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, - + IRepository repository) { _hostEnvironment = hostEnvironment; _mediator = mediator; - + _mapper = mapper; _userInfo = userInfo; _repository = repository; @@ -227,7 +227,7 @@ namespace IRaCIS.Core.API.Controllers [FromServices] ILogger _logger, [FromServices] IEasyCachingProvider _provider, [FromServices] IStudyService _studyService, - + [FromServices] IDicomArchiveService _dicomArchiveService, [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 { + if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑 { @@ -305,24 +323,9 @@ namespace IRaCIS.Core.API.Controllers 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, ); @@ -331,20 +334,32 @@ namespace IRaCIS.Core.API.Controllers } else { + studyMonitor.IsSuccess = false; + studyMonitor.Note= JsonConvert.SerializeObject(archiveResult); + return ResponseOutput.NotOk(archiveResult); } + } catch (Exception e) { + studyMonitor.IsSuccess = false; + studyMonitor.Note = JsonConvert.SerializeObject(new { Message=e.Message,Result= archiveResult }); + _logger.LogError(e.Message + e.StackTrace); _provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid); return ResponseOutput.NotOk(e.Message, ApiResponseCodeEnum.ProgramException); + } + finally + { + await _repository.AddAsync(studyMonitor, true); + } 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); var sv = _repository.Where(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefault().IfNullThrowException(); - + await FileUploadAsync(async (fileName) => { var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, subjectVisitId); //插入临床pdf 路径 - await _repository.AddAsync(new PreviousPDF() { SubjectVisitId = subjectVisitId, + await _repository.AddAsync(new PreviousPDF() + { + SubjectVisitId = subjectVisitId, - IsVisist=true, - DataType= ClinicalDataType.MedicalHistory, - UploadType=ClinicalUploadType.PDF, - SubjectId= sv.SubjectId, - TrialId=sv.TrialId, - ClinicalLevel = ClinicalLevel.Subject, Path = relativePath, FileName = fileRealName }); + IsVisist = true, + DataType = ClinicalDataType.MedicalHistory, + UploadType = ClinicalUploadType.PDF, + SubjectId = sv.SubjectId, + TrialId = sv.TrialId, + ClinicalLevel = ClinicalLevel.Subject, + Path = relativePath, + FileName = fileRealName + }); return serverFilePath; }); await _repository.SaveChangesAsync(); @@ -397,11 +417,11 @@ namespace IRaCIS.Core.API.Controllers /// [HttpPost("ClinicalData/UploadClinicalTemplate")] [DisableRequestSizeLimit] - + public async Task>> UploadClinicalTemplate(Guid? trialId) { - if(trialId==null) - trialId=default(Guid); + if (trialId == null) + trialId = default(Guid); var filerelativePath = string.Empty; List fileDtos = new List(); @@ -434,7 +454,7 @@ namespace IRaCIS.Core.API.Controllers /// [HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{subjectId:guid}/{readingId:guid}")] [DisableRequestSizeLimit] - public async Task>> UploadReadClinicalData(Guid trialId,Guid subjectId,Guid readingId) + public async Task>> UploadReadClinicalData(Guid trialId, Guid subjectId, Guid readingId) { var filerelativePath = string.Empty; List fileDtos = new List(); @@ -457,7 +477,7 @@ namespace IRaCIS.Core.API.Controllers }); return ResponseOutput.Ok(fileDtos); - + } /// @@ -480,7 +500,7 @@ namespace IRaCIS.Core.API.Controllers return serverFilePath; }); - + return ResponseOutput.Ok(fileDto); } @@ -494,7 +514,7 @@ namespace IRaCIS.Core.API.Controllers [TypeFilter(typeof(TrialResourceFilter))] public async Task> UploadJudgeTaskImage(Guid trialId, Guid visitTaskId) { - + FileDto fileDto = new FileDto(); await FileUploadAsync(async (fileName) => { @@ -531,13 +551,13 @@ namespace IRaCIS.Core.API.Controllers await _repository.UpdatePartialFromQueryAsync(x => x.Id == taskMedicalReviewId, x => new TaskMedicalReview() { ImagePath = relativePath, - FileName=fileName, + FileName = fileName, }); path = relativePath; fileDto.Path = relativePath; fileDto.FileName = fileName; - return serverFilePath; + return serverFilePath; }); await _repository.SaveChangesAsync(); @@ -617,9 +637,9 @@ namespace IRaCIS.Core.API.Controllers [HttpPost("QCOperation/UploadVisitCheckExcel/{trialId:guid}")] [TypeFilter(typeof(TrialResourceFilter))] [Authorize(Policy = IRaCISPolicy.PM_APM)] - public async Task UploadVisitCheckExcel(Guid trialId ) + public async Task UploadVisitCheckExcel(Guid trialId) { - + var (serverFilePath, relativePath, fileName) = (string.Empty, string.Empty, string.Empty); await FileUploadAsync(async (realFileName) => { @@ -812,7 +832,7 @@ namespace IRaCIS.Core.API.Controllers { public IMapper _mapper { get; set; } public IUserInfo _userInfo { get; set; } - + 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; _hostEnvironment = hostEnvironment; - + _mapper = mapper; _userInfo = userInfo; } @@ -923,7 +943,7 @@ namespace IRaCIS.Core.API.Controllers [HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")] [TypeFilter(typeof(TrialResourceFilter))] [AllowAnonymous] - public async Task> DownloadResume( int language, Guid trialId, Guid[] doctorIdArray) + public async Task> DownloadResume(int language, Guid trialId, Guid[] doctorIdArray) { var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray); diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 5b7bd656b..1dbe638d2 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -249,6 +249,14 @@ + + + 上传Reading问题的图像 + + + + + 上传裁判任务的图像 diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index f529eb80c..86b80e22c 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1537,6 +1537,11 @@ 评估原因 + + + 是否显示详情 + + 当新答案为空的时候 是否是有原数据 @@ -1662,6 +1667,21 @@ 标准分页Id + + + 关联ID + + + + + 关联Value + + + + + 图片数量 + + 阅片人是否认同 @@ -2390,6 +2410,21 @@ 标准分页Id + + + 关联ID + + + + + 关联Value + + + + + 图片数量 + + Id @@ -2450,6 +2485,11 @@ 是否是裁判问题 + + + 图片数量 + + 系统标准Id @@ -2550,6 +2590,21 @@ 裁判类型 + + + 关联ID + + + + + 关联Value + + + + + 图片数量 + + 分组 @@ -2610,6 +2665,11 @@ 类型值 + + + 图片数量 + + Id @@ -2680,6 +2740,21 @@ 标准分页Id + + + 关联ID + + + + + 关联Value + + + + + 图片数量 + + 返回的对象 @@ -2740,6 +2815,11 @@ 修约小数点 + + + 排序 + + 是否是系统数据 @@ -4285,6 +4365,11 @@ 评估原因 + + + 是否显示详情 + + 评估结果 @@ -4295,6 +4380,11 @@ 评估原因 + + + 是否显示详情 + + 表单类型 diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index 504026bed..73b21e964 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -103,6 +103,10 @@ namespace IRaCIS.Core.Application.Contracts public int FileCount { get; set; } + public bool IsSuccess = true; + + public string Note = string.Empty; + } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 7a1fe03dd..f5d390e7d 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -180,7 +180,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc UploadTime = t.CreateTime, - + IsSuccess=t.IsSuccess, + Note=t.Note, IP = t.IP, FileCount = t.FileCount, FileSize = t.FileSize, diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs index cd4f014e9..eb86d318e 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs @@ -80,6 +80,11 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("CreateUserId")] public User Uploader { get; set; } + + public bool IsSuccess = true; + + public string Note = string.Empty; + } }