diff --git a/IRaCIS.Core.API/appsettings.Event_IRC.json b/IRaCIS.Core.API/appsettings.Event_IRC.json index a5e5925ca..67ccf7b7b 100644 --- a/IRaCIS.Core.API/appsettings.Event_IRC.json +++ b/IRaCIS.Core.API/appsettings.Event_IRC.json @@ -7,8 +7,8 @@ } }, "ConnectionStrings": { - "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" + "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" }, "ObjectStoreService": { "ObjectStoreUse": "AliyunOSS", diff --git a/IRaCIS.Core.Application/BusinessFilter/LegacyController/TrialGlobalLimitActionFilter.cs b/IRaCIS.Core.Application/BusinessFilter/LegacyController/TrialGlobalLimitActionFilter.cs index e845a10c4..8d24d2591 100644 --- a/IRaCIS.Core.Application/BusinessFilter/LegacyController/TrialGlobalLimitActionFilter.cs +++ b/IRaCIS.Core.Application/BusinessFilter/LegacyController/TrialGlobalLimitActionFilter.cs @@ -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["self-Referer"].ToString().Contains("trialId")) + else if (context.HttpContext.Request.Headers["Referer"].ToString().Contains("trialId")) { - var headerStr = context.HttpContext.Request.Headers["self-Referer"].ToString(); + var headerStr = context.HttpContext.Request.Headers["Referer"].ToString(); var trialIdIndex = headerStr.IndexOf("trialId"); diff --git a/IRaCIS.Core.Application/BusinessFilter/MinimalAPI/TrialGlobalLimitEndpointFilter.cs b/IRaCIS.Core.Application/BusinessFilter/MinimalAPI/TrialGlobalLimitEndpointFilter.cs index bb1974ff0..6648db25e 100644 --- a/IRaCIS.Core.Application/BusinessFilter/MinimalAPI/TrialGlobalLimitEndpointFilter.cs +++ b/IRaCIS.Core.Application/BusinessFilter/MinimalAPI/TrialGlobalLimitEndpointFilter.cs @@ -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["self-Referer"].ToString().Contains("trialId")) + else if (context.HttpContext.Request.Headers["Referer"].ToString().Contains("trialId")) { - var headerStr = context.HttpContext.Request.Headers["self-Referer"].ToString(); + var headerStr = context.HttpContext.Request.Headers["Referer"].ToString(); var trialIdIndex = headerStr.IndexOf("trialId"); diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index ed2820f80..87ea8de6a 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -13888,6 +13888,16 @@ + + + IQC 回退到影像上传 + + + + + + + 非dicom 临床数据 diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 29327555a..2b916b3d0 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -7,6 +7,7 @@ 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; @@ -86,6 +87,87 @@ namespace IRaCIS.Core.Application.Service await _readingConsistentClinicalDataRepository.SaveChangesAsync(); return ResponseOutput.Ok(); } + + + /// + /// IQC 回退到影像上传 + /// + /// + /// + /// + /// + /// + [AllowAnonymous] + [HttpPost] + public async Task IQCBackToUpload(Guid[] subjectVisitIdList, + [FromServices] IRepository _subjectVisitRepository, + [FromServices] IRepository _trialQCQuestionAnswerRepository, + [FromServices] IRepository _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(); + + } + public async Task DeleteOSSDate(string rootFolder, [FromServices] IOSSService _oSSService, [FromServices] IWebHostEnvironment _hostEnvironment) {