Compare commits
No commits in common. "e9e5075c1c810bf4b5b71414c1483fc35a2973b6" and "553ad4760cd7dbb833592db260d3edea26245f67" have entirely different histories.
e9e5075c1c
...
553ad4760c
|
|
@ -7,8 +7,8 @@
|
|||
}
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=101.132.253.119,1435;Database=irc_Prpd_bak;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=101.132.253.119,1435;Database=irc_Hangfire_bak;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||
"RemoteNew": "Server=47.117.164.182,1434;Database=Event_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=47.117.164.182,1434;Database=Event_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||
},
|
||||
"ObjectStoreService": {
|
||||
"ObjectStoreUse": "AliyunOSS",
|
||||
|
|
|
|||
|
|
@ -62,9 +62,9 @@ public class TrialGlobalLimitActionFilter(IFusionCache _fusionCache, IUserInfo _
|
|||
var index = context.HttpContext.Request.RouteValues.Keys.ToList().IndexOf("trialId");
|
||||
trialIdStr = context.HttpContext.Request.RouteValues.Values.ToList()[index] as string;
|
||||
}
|
||||
else if (context.HttpContext.Request.Headers["Referer"].ToString().Contains("trialId"))
|
||||
else if (context.HttpContext.Request.Headers["self-Referer"].ToString().Contains("trialId"))
|
||||
{
|
||||
var headerStr = context.HttpContext.Request.Headers["Referer"].ToString();
|
||||
var headerStr = context.HttpContext.Request.Headers["self-Referer"].ToString();
|
||||
|
||||
var trialIdIndex = headerStr.IndexOf("trialId");
|
||||
|
||||
|
|
|
|||
|
|
@ -71,9 +71,9 @@ public class TrialGlobalLimitEndpointFilter(IFusionCache _fusionCache, IUserInfo
|
|||
var index = context.HttpContext.Request.RouteValues.Keys.ToList().IndexOf("trialId");
|
||||
trialIdStr = context.HttpContext.Request.RouteValues.Values.ToList()[index] as string;
|
||||
}
|
||||
else if (context.HttpContext.Request.Headers["Referer"].ToString().Contains("trialId"))
|
||||
else if (context.HttpContext.Request.Headers["self-Referer"].ToString().Contains("trialId"))
|
||||
{
|
||||
var headerStr = context.HttpContext.Request.Headers["Referer"].ToString();
|
||||
var headerStr = context.HttpContext.Request.Headers["self-Referer"].ToString();
|
||||
|
||||
var trialIdIndex = headerStr.IndexOf("trialId");
|
||||
|
||||
|
|
|
|||
|
|
@ -15,20 +15,14 @@ public static class ImageHelper
|
|||
|
||||
fileStorePath = fileStorePath ?? filePath + ".preview.jpeg";
|
||||
|
||||
// 读取 DICOM 文件
|
||||
var dicomImage = new DicomImage(filePath);
|
||||
|
||||
// 渲染 DICOM 图像到 ImageSharp 格式
|
||||
using (var image = dicomImage.RenderImage().AsSharpImage())
|
||||
using (var image = SixLabors.ImageSharp.Image.Load(filePath))
|
||||
{
|
||||
// 生成缩略图(调整大小)
|
||||
|
||||
image.Mutate(x => x.Resize(500, 500));
|
||||
|
||||
// 保存缩略图为 JPEG
|
||||
image.Save(fileStorePath, new JpegEncoder());
|
||||
image.Save(fileStorePath);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -13888,16 +13888,6 @@
|
|||
<param name="_readingConsistentClinicalDataRepository"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.TestService.IQCBackToUpload(System.Guid[],IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialQCQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalData})">
|
||||
<summary>
|
||||
IQC 回退到影像上传
|
||||
</summary>
|
||||
<param name="subjectVisitIdList"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
<param name="_trialQCQuestionAnswerRepository"></param>
|
||||
<param name="_readingClinicalDataReposiotry"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.TestService.DealTialFileSie(IRaCIS.Core.Application.Helper.IOSSService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalDataPDF})">
|
||||
<summary>
|
||||
非dicom 临床数据
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using Aliyun.OSS;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using FellowOakDicom.Imaging;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.BusinessFilter;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
|
|
@ -8,7 +7,6 @@ using IRaCIS.Core.Application.Helper;
|
|||
using IRaCIS.Core.Application.Service.BusinessFilter;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
|
|
@ -28,13 +26,8 @@ using Microsoft.Extensions.Options;
|
|||
using MiniExcelLibs;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using NPOI.XWPF.UserModel;
|
||||
using SharpCompress.Common;
|
||||
using SixLabors.ImageSharp;
|
||||
using SixLabors.ImageSharp.Formats.Jpeg;
|
||||
using SixLabors.ImageSharp.Processing;
|
||||
using System.Globalization;
|
||||
using System.Linq.Dynamic.Core;
|
||||
using System.Reactive.Subjects;
|
||||
using System.Reflection.Metadata.Ecma335;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
|
@ -60,7 +53,6 @@ namespace IRaCIS.Core.Application.Service
|
|||
IRepository<DicomSeries> _dicomSeriesRepository,
|
||||
IRepository<UserRole> _userRoleRepository,
|
||||
IRepository<TrialBodyPart> _trialBodyPartRepository,
|
||||
IOSSService _IOSSService,
|
||||
IDistributedLockProvider _distributedLockProvider,
|
||||
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
||||
{
|
||||
|
|
@ -94,144 +86,6 @@ namespace IRaCIS.Core.Application.Service
|
|||
await _readingConsistentClinicalDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// IQC 回退到影像上传
|
||||
/// </summary>
|
||||
/// <param name="subjectVisitIdList"></param>
|
||||
/// <param name="_subjectVisitRepository"></param>
|
||||
/// <param name="_trialQCQuestionAnswerRepository"></param>
|
||||
/// <param name="_readingClinicalDataReposiotry"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> IQCBackToUpload(Guid[] subjectVisitIdList,
|
||||
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
||||
[FromServices] IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository,
|
||||
[FromServices] IRepository<ReadingClinicalData> _readingClinicalDataReposiotry)
|
||||
{
|
||||
|
||||
foreach (var subjectVisitId in subjectVisitIdList)
|
||||
{
|
||||
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
|
||||
|
||||
|
||||
//需要重新产生任务
|
||||
sv.IsVisitTaskGenerated = false;
|
||||
sv.IsPMBackOrReReading = true;
|
||||
|
||||
sv.AuditState = AuditStateEnum.None;
|
||||
sv.SubmitState = SubmitStateEnum.ToSubmit;
|
||||
sv.ReadingStatus = ReadingStatusEnum.ImageNotSubmit;
|
||||
|
||||
//回退后,回退状态恢复
|
||||
sv.RequestBackState = RequestBackStateEnum.NotRequest;
|
||||
sv.IsCheckBack = false;
|
||||
sv.CheckBackTime = null;
|
||||
sv.CheckState = CheckStateEnum.None;
|
||||
sv.CheckChallengeState = CheckChanllengeTypeEnum.None;
|
||||
|
||||
sv.SVENDTC = null;
|
||||
sv.SVSTDTC = null;
|
||||
|
||||
sv.PreliminaryAuditTime = null;
|
||||
sv.SubmitTime = null;
|
||||
sv.ReviewAuditTime = null;
|
||||
sv.CurrentActionUserExpireTime = null;
|
||||
|
||||
|
||||
sv.IsTake = false;
|
||||
sv.CurrentActionUserId = null;
|
||||
sv.PreliminaryAuditUserId = null;
|
||||
sv.ReviewAuditUserId = null;
|
||||
|
||||
|
||||
if (sv.IsBaseLine)
|
||||
{
|
||||
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && (t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit), c => new ReadingClinicalData() { IsSign = false, ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit, c => new ReadingClinicalData()
|
||||
{
|
||||
IsSign = false,
|
||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded,
|
||||
IsBlind = null,
|
||||
IsComplete = null
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
await _trialQCQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId);
|
||||
}
|
||||
|
||||
|
||||
|
||||
var success = await _subjectVisitRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 后端处理某个中心缩略图有问题 先下载,生成缩略图上传,然后更新数据库
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
public async Task<IResponseOutput> BackImageResize(Guid trialSiteId ,Guid subjectId/* , [FromServices] IRepository<>*/)
|
||||
{
|
||||
///${params.trialId}/ Image /${params.subjectId}/${params.subjectVisitId}/${ dicomInfo.studyUid}/${ v.seriesUid}.jpg
|
||||
|
||||
var dealSeriesList = await _dicomSeriesRepository.Where(t => t.DicomStudy.Subject.TrialSiteId == trialSiteId && t.SubjectId== subjectId).Select(t => new { t.Id, t.SubjectId, t.TrialId, t.SubjectVisitId, t.StudyInstanceUid, t.SeriesInstanceUid, t.ImageResizePath, t.UpdateUserId, FirstInstancePath = t.DicomInstanceList.First().Path }).ToListAsync();
|
||||
|
||||
//下载到本地
|
||||
string tempFolderPath = Path.Combine(Directory.GetCurrentDirectory(), $"DownloadTemp_{NewId.NextGuid()}");
|
||||
Directory.CreateDirectory(tempFolderPath);
|
||||
|
||||
foreach (var dealSeries in dealSeriesList)
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(dealSeries.FirstInstancePath);
|
||||
|
||||
var localFilePath = Path.Combine(tempFolderPath, fileName);
|
||||
|
||||
await _IOSSService.DownLoadFromOSSAsync(dealSeries.FirstInstancePath, localFilePath);
|
||||
|
||||
|
||||
var resizePath = localFilePath + "_New.jpg";
|
||||
|
||||
//生成缩略图
|
||||
|
||||
// 读取 DICOM 文件
|
||||
var dicomImage = new DicomImage(localFilePath);
|
||||
|
||||
|
||||
// 渲染 DICOM 图像到 ImageSharp 格式
|
||||
using (var image = dicomImage.RenderImage().AsSharpImage())
|
||||
{
|
||||
// 生成缩略图(调整大小)
|
||||
image.Mutate(x => x.Resize(500, 500));
|
||||
|
||||
// 保存缩略图为 JPEG
|
||||
image.Save(resizePath, new JpegEncoder());
|
||||
}
|
||||
|
||||
var ossFolder = $"{dealSeries.TrialId}/Image/{dealSeries.SubjectId}/{dealSeries.SubjectVisitId}/{dealSeries.StudyInstanceUid}";
|
||||
|
||||
var relativePath = await _IOSSService.UploadToOSSAsync(resizePath, ossFolder, false);
|
||||
|
||||
await _dicomSeriesRepository.BatchUpdateNoTrackingAsync(t => t.Id == dealSeries.Id, u => new DicomSeries() { ImageResizePath = relativePath, UpdateUserId = dealSeries.UpdateUserId });
|
||||
|
||||
}
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async Task<IResponseOutput> DeleteOSSDate(string rootFolder,
|
||||
[FromServices] IOSSService _oSSService, [FromServices] IWebHostEnvironment _hostEnvironment)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue