From 32cd6e0c74f9ac3dad4b94f9b76cf0b422803124 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 2 Jul 2025 13:44:46 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E9=85=8D=E7=BD=AE--=E6=97=A0=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=97=B6=E4=B8=8D=E4=BA=A7=E7=94=9F=E7=A8=BD=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/TrialSiteUser/TrialDicomAEService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs index 4e77f55b1..2e3f95c93 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs @@ -90,7 +90,7 @@ namespace IRaCIS.Core.Application.Service // IsVerify=addOrEditDicomAE.Id==null //}; - await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == addOrEditDicomAE.TrialId, u => new Trial() { IsPACSConnect = addOrEditDicomAE.IsPACSConnect }, true); + await _trialRepository.UpdatePartialFromEFAutoAsync(addOrEditDicomAE.TrialId, u => new Trial() { IsPACSConnect = addOrEditDicomAE.IsPACSConnect }, true); if (addOrEditDicomAE.IsPACSConnect) From bdb48f93bc36d32f91a502f736b72d416b3f6016 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 2 Jul 2025 14:24:30 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9pacs=20=20=E7=A8=BD?= =?UTF-8?q?=E6=9F=A5=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TrialSiteUser/TrialConfigService.cs | 5 +++- .../TrialSiteUser/TrialDicomAEService.cs | 1 + .../Common/AuditingData.cs | 28 +++++++++---------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 3cc926a75..6461ea27c 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -42,7 +42,7 @@ namespace IRaCIS.Core.Application IRepository _subjectVisitRepository, IRepository _enrollRepository, IRepository _trialStateChangeRepository, - IRepository _readingTableQuestionTrialRepository, + IRepository _readingTableQuestionTrialRepository, IRepository _dicomAERepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, ITrialConfigService { @@ -1150,6 +1150,9 @@ namespace IRaCIS.Core.Application trialInfo.IsPACSConnect = trialConfig.IsPACSConnect; trialInfo.IsTrialPACSConfirmed = trialConfig.IsTrialPACSConfirmed; trialInfo.UpdateTime = DateTime.Now; + + await _dicomAERepository.DeleteFromQueryAsync(t => t.TrialId == trialConfig.TrialId); + await _trialRepository.SaveChangesAsync(); return ResponseOutput.Ok(); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs index 2e3f95c93..07adc5752 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialDicomAEService.cs @@ -102,6 +102,7 @@ namespace IRaCIS.Core.Application.Service } else { + return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 7370349ed..f24b3f2b9 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -92,7 +92,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common /// 单位字典 /// 答案 /// - public string Translationunit(string answerType, ValueUnit? unit, string customUnit, List unitDataList,string? answer) + public string Translationunit(string answerType, ValueUnit? unit, string customUnit, List unitDataList, string? answer) { if (answerType == "upload") { @@ -104,7 +104,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common return answer + string.Empty + customUnit; } - return answer +string.Empty + unitDataList.Where(y => y.Unit == unit).Select(x => x.UnitName).FirstIsNullReturnEmpty(); + return answer + string.Empty + unitDataList.Where(y => y.Unit == unit).Select(x => x.UnitName).FirstIsNullReturnEmpty(); } public string GetEntityAuditOpt(EntityEntry entityEntry) { @@ -200,22 +200,21 @@ namespace IRaCIS.Core.Infra.EFCore.Common break; } - var trialDicomAE =await _dbContext.TrialDicomAE.Where(t => t.TrialId == entity.Id).FirstOrDefaultAsync(); + //var trialDicomAE = await _dbContext.TrialDicomAE.Where(t => t.TrialId == entity.Id).FirstOrDefaultAsync(); await InsertInspection(item.Entity as Trial, type, x => new InspectionConvertDTO() { TrialId = x.Id, - + ExtraIndentification = extraIdentification, }, new { //TrialDicList = string.Join(",", trialDics) - - CalledAE = trialDicomAE?.CalledAE, - IP = trialDicomAE?.IP, - Port = trialDicomAE?.Port, - IsTestOK = trialDicomAE?.IsTestOK, + //CalledAE = trialDicomAE?.CalledAE, + //IP = trialDicomAE?.IP, + //Port = trialDicomAE?.Port, + //IsTestOK = trialDicomAE?.IsTestOK, ImageFormatListStr = string.Join("|", entity.ImageFormatList), StudyNamesStr = string.Join("|", entity.StudyNameList.Where(x => x.IsChoose).Select(x => _userInfo.IsEn_Us ? x.EnName : x.Name)), @@ -384,6 +383,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common await InsertInspection(entity, type, x => new InspectionConvertDTO() { + IsDistinctionInterface = false }); } @@ -3139,7 +3139,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common (t, u) => new { - Answer = Translationunit(u.AnswerType, u.Unit,u.CustomUnit, unitDataList, t.Answer), + Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer), u.DictionaryCode, u.QuestionName, u.QuestionEnName, @@ -3247,12 +3247,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common string extraIdentification = string.Empty; - var readingQuestion = await _dbContext.ReadingQuestionTrial.Where(t => t.Id == entity.QuestionId).Include(x=>x.ReadingQuestionCriterionTrial).FirstNotNullAsync(); + var readingQuestion = await _dbContext.ReadingQuestionTrial.Where(t => t.Id == entity.QuestionId).Include(x => x.ReadingQuestionCriterionTrial).FirstNotNullAsync(); if (readingQuestion.ReadingQuestionCriterionTrial.CriterionGroup == CriterionGroup.Nontumorous) { extraIdentification = "/Nontumorous"; } - + await InsertInspection(entity, type, x => new InspectionConvertDTO() @@ -3676,9 +3676,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common } } - if(entity.TaskBlindName.Contains("Timepoint Ran")) + if (entity.TaskBlindName.Contains("Timepoint Ran")) { - if(_dbContext.VisitTask.Where(t => t.Id == entity.Id).Any(t => !t.TaskBlindName.Contains("Timepoint Ran"))) + if (_dbContext.VisitTask.Where(t => t.Id == entity.Id).Any(t => !t.TaskBlindName.Contains("Timepoint Ran"))) { isDistinctionInterface = false; extraIdentification = "/TriggerSystemBlindingName"; From f8e501fb0dd53fe6388ca4e62705d2b253cfdf23 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Wed, 2 Jul 2025 15:16:10 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=85=A5=E7=BB=84Pd?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Document/TrialEmailNoticeConfigService.cs | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 089231c78..ed3b19658 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -5,6 +5,7 @@ //-------------------------------------------------------------------- using Amazon.Runtime; +using IRaCIS.Application.Interfaces; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Helper; @@ -45,6 +46,7 @@ namespace IRaCIS.Core.Application.Service IRepository _readingTaskQuestionAnswerRepository, IRepository _readingQuestionCriterionTrialRepository, IOptionsMonitor _systemEmailSendConfig, + IDictionaryService _dictionaryService, IEmailSendService _emailSendService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IWebHostEnvironment _hostEnvironment) : BaseService, ITrialEmailNoticeConfigService { @@ -193,6 +195,9 @@ namespace IRaCIS.Core.Application.Service var isEn_us = _userInfo.IsEn_Us; EmailBusinessScenario businessScenarioEnum = EmailBusinessScenario.None; + var enrollReplace = ""; + var PdReplace = ""; + #region 任务关联的项目配置 标准信息及配置,subject 信息 var taskInfo = await _visitTaskRepository.Where(t => t.Id == visitTaskId).Select(t => new { @@ -319,8 +324,9 @@ namespace IRaCIS.Core.Application.Service //入组确认 根据每个标准配置的是否自动发送,发送邮件与否 if (businessScenarioEnum == EmailBusinessScenario.EnrollConfirmed) { + var findItem = (await _dictionaryService.GetBasicDataSelect("Trial_Enroll_Report")).Where(t => t.Code == ((int)taskInfo.CriterionType).ToString()).FirstOrDefault(); - + enrollReplace = _userInfo.IsEn_Us ? findItem.Value : findItem.ValueCN; //如果其他阅片人已经做了,说明发送了入组确认报告,第二个人做完就不发送了 @@ -345,7 +351,9 @@ namespace IRaCIS.Core.Application.Service } else if (businessScenarioEnum == EmailBusinessScenario.PDConfirmed) { + var findItem = (await _dictionaryService.GetBasicDataSelect("Trial_PD_Report")).Where(t => t.Code == ((int)taskInfo.CriterionType).ToString()).FirstOrDefault(); + PdReplace = _userInfo.IsEn_Us ? findItem.Value : findItem.ValueCN; //有序 @@ -614,6 +622,8 @@ namespace IRaCIS.Core.Application.Service var value = new Dictionary() { + ["Criterion_Enroll_Replace"]= enrollReplace, + ["Criterion_PD_Replace"]= PdReplace, ["SponsorName"] = taskInfo.SponsorName, ["ResearchProgramNo"] = taskInfo.ResearchProgramNo, ["TrialSiteCode"] = taskInfo.TrialSiteCode, @@ -651,10 +661,11 @@ namespace IRaCIS.Core.Application.Service { var wordStoreServerPath = Path.Combine(Path.GetDirectoryName(serverFilePath), Path.GetFileNameWithoutExtension(serverFilePath) + ".docx"); - //using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) - //{ - // wordMemoryStream.WriteTo(fileStream); - //} + //模板写入数据先放本地才能转换为pdf + using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) + { + wordMemoryStream.WriteTo(fileStream); + } FileConvertHelper.ConvertWordToPdf(wordStoreServerPath, Path.GetDirectoryName(serverFilePath)); @@ -695,10 +706,11 @@ namespace IRaCIS.Core.Application.Service { var wordStoreServerPath = Path.Combine(Path.GetDirectoryName(serverFilePath), Path.GetFileNameWithoutExtension(serverFilePath) + ".docx"); - //using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) - //{ - // wordMemoryStream.WriteTo(fileStream); - //} + //模板写入数据先放本地才能转换为pdf + using (FileStream fileStream = new FileStream(wordStoreServerPath, FileMode.Create, FileAccess.Write)) + { + wordMemoryStream.WriteTo(fileStream); + } FileConvertHelper.ConvertWordToPdf(wordStoreServerPath, Path.GetDirectoryName(serverFilePath)); File.Delete(wordStoreServerPath);