diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
index 30201c674..0c637634c 100644
--- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
+++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs
@@ -9,6 +9,7 @@ using FellowOakDicom.Media;
using Hangfire.Storage;
using IRaCIS.Application.Contracts;
using IRaCIS.Application.Interfaces;
+using IRaCIS.Application.Services;
using IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson;
using IRaCIS.Core.Application.BusinessFilter;
using IRaCIS.Core.Application.Contracts;
@@ -18,6 +19,7 @@ using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.MassTransit.Command;
using IRaCIS.Core.Application.Service;
+using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore;
@@ -1283,7 +1285,26 @@ namespace IRaCIS.Core.API.Controllers
}
}
+ /////
+ ///// 下载阅片报告和图片
+ /////
+ /////
+ /////
+ /////
+ /////
+ /////
+ //[HttpPost("download/ReadingReportAndImage")]
+ //public async Task DownloadReadingReportAndImage([FromServices] IReadingImageTaskService _readingImageTaskService, [FromServices] IOSSService _oSSService,
+ // [FromServices] IHubContext _downLoadHub,
+ // [FromForm] GetReadingReportAndImageInDto inCommand)
+ //{
+ // Response.ContentType = "application/zip";
+ // Response.Headers["Content-Disposition"] = $"attachment; filename=Image_{ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId)}.zip";
+ // Response.Headers["Cache-Control"] = "no-store";
+ // var data = await _readingImageTaskService.GetReadingReportAndImage(inCommand);
+
+ //}
[HttpPost("download/PatientStudyBatchDownloadForm")]
public async Task DownloadPatientStudyBatchForm([FromServices] IPatientService _patientService, [FromServices] IOSSService _oSSService,
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
index b77c1814f..4b1c6c754 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingCalculateViewModel.cs
@@ -291,6 +291,23 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public List SheetNames { get; set; }
}
+ public class GetReadingReportAndImageInDto
+ {
+ public Guid TrialCriterionId { get; set; }
+
+ public List VisitTaskIdList { get; set; } = new List() { };
+ }
+
+ public class ReadingReportAndImage
+ {
+ public string SubjectCode { get; set; }
+
+ public string VisitName { get; set; }
+
+ public List ReportUrlList { get; set; } = new List();
+
+ public List ImageUrlList { get; set; } = new List();
+ }
public class ExportReportQuestion
diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs
index b7bb3a914..ec0e57256 100644
--- a/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Interface/IReadingImageTaskService.cs
@@ -12,6 +12,7 @@ namespace IRaCIS.Core.Application.Contracts
{
public interface IReadingImageTaskService
{
+ Task> GetReadingReportAndImage(GetReadingReportAndImageInDto inDto);
Task SubmitVisitTaskQuestions(SubmitVisitTaskQuestionsInDto inDto);
Task SubmitJudgeVisitTaskResult(SaveJudgeVisitTaskResult inDto);
@@ -42,5 +43,6 @@ namespace IRaCIS.Core.Application.Contracts
Task<(List, object)> GetRelatedVisitTask(GetRelatedVisitTaskInDto inDto);
+
}
}
\ No newline at end of file
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
index 506393028..302f1247a 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs
@@ -71,6 +71,74 @@ namespace IRaCIS.Core.Application.Service
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IReadingImageTaskService
{
+ ///
+ /// 获取阅片报告数据和图像
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task> GetReadingReportAndImage(GetReadingReportAndImageInDto inDto)
+ {
+ var taskList=new List { };
+
+ if (inDto.VisitTaskIdList.Count != 0)
+ {
+ if (await _visitTaskRepository.AnyAsync(x => inDto.VisitTaskIdList.Contains(x.Id) && (x.TaskState != TaskState.Effect || x.ReadingTaskState != ReadingTaskState.HaveSigned)))
+ {
+ throw new BusinessValidationFailedException(_localizer["ReadingImage_ReportDataInvalid"]);
+ }
+
+ taskList=await _visitTaskRepository.Where(x => inDto.VisitTaskIdList.Contains(x.Id)&&x.ReadingCategory==ReadingCategory.Visit).Include(x=>x.LesionList).Include(x=>x.Subject).Include(x=>x.SourceSubjectVisit).ToListAsync();
+ }
+ else
+ {
+ taskList = await _visitTaskRepository.Where(x => x.TrialReadingCriterionId==inDto.TrialCriterionId&&x.TaskState== TaskState.Effect && x.ReadingTaskState == ReadingTaskState.HaveSigned && x.ReadingCategory == ReadingCategory.Visit)
+ .Include(x => x.LesionList).Include(x => x.Subject).Include(x => x.SourceSubjectVisit).ToListAsync();
+ }
+
+ List< ReadingReportAndImage > result = new List() { };
+
+ foreach (var item in taskList)
+ {
+ ReadingReportAndImage data = new ReadingReportAndImage()
+ {
+ SubjectCode = item.Subject != null ? item.Subject.Code : string.Empty,
+ VisitName = item.SourceSubjectVisit != null ? item.SourceSubjectVisit.VisitName : string.Empty,
+ ImageUrlList = item.LesionList != null ? item.LesionList.Where(x => x.PicturePath != string.Empty).Select(x => x.PicturePath).ToList() : new List() { },
+ ReportUrlList = new List()
+ {
+ },
+ };
+
+ if (item.ReportExportUrl != string.Empty)
+ {
+ data.ReportUrlList.Add(item.ReportExportUrl);
+ }
+ else
+ {
+ data.ReportUrlList.Add(await _readingCalculateService.GetVisitReadReportUrl(new CaGetVisitReadReportUrl()
+ {
+ VisitTaskId = item.Id,
+ }));
+ }
+
+ if (item.TumorEvaluationUrl != string.Empty)
+ {
+ data.ReportUrlList.Add(item.TumorEvaluationUrl);
+ }
+ else
+ {
+ data.ReportUrlList.Add(await _readingCalculateService.GetTumorEvaluationReportUrl(new CaGetVisitReadReportUrl()
+ {
+ VisitTaskId = item.Id,
+ }));
+ }
+
+ result.Add(data);
+ }
+ return result;
+ }
+
///
/// 获取TNMValue
///