From 3603e7c3abb4b7aae61e214c9b0b87c8a75576ba Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 3 Jul 2025 16:02:13 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=A8=BD=E6=9F=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 2 +- .../Reading/Dto/ReadingImageTaskViewModel.cs | 2 +- .../ReadingImageTaskService.cs | 20 ++++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 14b1b310a..74965fa7a 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1531,7 +1531,7 @@ TrialEmailNoticeConfigService - + TrialEmailNoticeConfigService diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index a462dbfd6..0af8e743f 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -1215,7 +1215,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 问题Id /// - public Guid QuestionId { get; set; } + public Guid? QuestionId { get; set; } /// /// InstanceId diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 9549eae8d..c1ad12ded 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1898,6 +1898,24 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task SaveTaskQuestion(ChangeDicomReadingQuestionAnswerInDto inDto, string param) { + // 当 param == -10 时,为自定义标准 需要区分 绑定 更改 标记 + //if (param == "-10") + //{ + // var questionMarkList = inDto.QuestionMarkInfoList.Select(x => x.QuestionId ).ToList(); + // if (!(await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionMarkList.Contains(x.QuestionId))) && inDto.QuestionMarkInfoList.Count() > 0) + // { + // _userInfo.AuditIdentification = "AddMark"; + // } + // else if (await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionMarkList.Contains(x.QuestionId))) + // { + // _userInfo.AuditIdentification = "UpdateMark"; + // } + // else + // { + // _userInfo.AuditIdentification = "DeleteMark"; + // } + //} + var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); try { @@ -1994,7 +2012,7 @@ namespace IRaCIS.Core.Application.Service }).ToList(); await _readingTaskQuestionAnswerRepository.AddRangeAsync(needAddAnswer); - + if (inDto.UpdateMark) { var questionMarkList = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).Select(x => new From e898f17873002f86c2900106476b58bf4488d10f Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Thu, 3 Jul 2025 16:17:32 +0800 Subject: [PATCH 2/4] =?UTF-8?q?PCWG=20=E5=85=A8=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Document/TrialEmailNoticeConfigService.cs | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 46bae4d87..69d9280d6 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -19,6 +19,7 @@ using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infrastructure; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Spire.Doc; using System.Linq.Dynamic.Core; @@ -1283,9 +1284,24 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi break; case CriterionType.PCWG3: - var questionAnsewer = await _readingGlobalTaskInfoRepository.Where(t => t.TaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstNotNullAsync(); + var questionAnsewer = await _readingGlobalTaskInfoRepository.Where(t => t.TaskId == visitTaskId && t.TrialReadingQuestion.QuestionType == QuestionType.SiteVisitForTumorEvaluation).FirstOrDefaultAsync(); + if (questionAnsewer != null&& questionAnsewer.Answer.IsNotNullOrEmpty()) + { + answer = questionAnsewer.Answer; + } + else + { + var visittaskList=await _visitTaskRepository.Where(t => t.Id == visitTaskId ).Select(x=>x.RelatedVisitTaskIdList).FirstOrDefaultAsync(); - answer = questionAnsewer.Answer; + var task = await _visitTaskRepository.Where(x => visittaskList.Contains(x.Id) && x.ReadingCategory == ReadingCategory.Visit).OrderByDescending(x => x.VisitTaskNum).FirstOrDefaultAsync(); + if (task != null) + { + answer= await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == task.Id && t.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation) + .Select(t => t.Answer).FirstOrDefaultAsync(); + } + } + + break; From e0fef9f4ca9651a713159c5f2740558fa1aae41e Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Fri, 4 Jul 2025 10:45:55 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=A8=BD=E6=9F=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReadingImageTaskService.cs | 32 +++++++++---------- .../Common/AuditingData.cs | 19 ++++++++++- 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index c1ad12ded..ee14737c0 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -1899,22 +1899,22 @@ namespace IRaCIS.Core.Application.Service public async Task SaveTaskQuestion(ChangeDicomReadingQuestionAnswerInDto inDto, string param) { // 当 param == -10 时,为自定义标准 需要区分 绑定 更改 标记 - //if (param == "-10") - //{ - // var questionMarkList = inDto.QuestionMarkInfoList.Select(x => x.QuestionId ).ToList(); - // if (!(await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionMarkList.Contains(x.QuestionId))) && inDto.QuestionMarkInfoList.Count() > 0) - // { - // _userInfo.AuditIdentification = "AddMark"; - // } - // else if (await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionMarkList.Contains(x.QuestionId))) - // { - // _userInfo.AuditIdentification = "UpdateMark"; - // } - // else - // { - // _userInfo.AuditIdentification = "DeleteMark"; - // } - //} + if (param == "-10") + { + var questionMarkList = inDto.QuestionMarkInfoList.Select(x => x.QuestionId).ToList(); + if (!(await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionMarkList.Contains(x.QuestionId))) && inDto.QuestionMarkInfoList.Count() > 0) + { + _userInfo.AuditIdentification = "AddMark"; + } + else if (await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId && questionMarkList.Contains(x.QuestionId))) + { + _userInfo.AuditIdentification = "UpdateMark"; + } + else + { + _userInfo.AuditIdentification = "DeleteMark"; + } + } var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); try diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index be0dbccb4..f33f5ff93 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -6,6 +6,7 @@ using MassTransit; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking.Internal; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace IRaCIS.Core.Infra.EFCore.Common @@ -3134,6 +3135,19 @@ namespace IRaCIS.Core.Infra.EFCore.Common } + var mark = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionMark)).Select(x=>x.Entity as ReadingTaskQuestionMark).FirstOrDefault(); + + var markName=string.Empty; + if (mark != null && mark.MeasureData.IsNotNullOrEmpty()) + { + // 解析 JSON 字符串 + JObject jsonObject = JObject.Parse(mark.MeasureData); + + // 提取 label 的值 + markName = jsonObject["data"]["label"].ToString(); + } + + await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() { VisitTaskId = x.VisitTaskId, @@ -3146,6 +3160,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common }, new { + + MarkName= markName, + PicturePath= mark!=null?mark.PicturePath:string.Empty, QuestionAnswerList = taskQuestionAnswerList.Join(quesionList, t => t.ReadingQuestionTrialId, u => u.QuestionId, @@ -3160,7 +3177,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common }).OrderBy(t => t.ShowOrder).ToList() , TableQuestionAndAnswerList = tableQuesionAndAnswerList - } + }, _userInfo.AuditIdentification ); From 5aae3b7fc49a44bd08b534623e4bfb7db7b0b5e7 Mon Sep 17 00:00:00 2001 From: he <109787524@qq.com> Date: Fri, 4 Jul 2025 10:52:30 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index f33f5ff93..755a8a700 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -3094,7 +3094,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common //自定义特有标识 if (await _dbContext.ReadingQuestionCriterionTrial.AnyAsync(t => t.Id == firstEntity.ReadingQuestionCriterionTrialId && t.CriterionType == CriterionType.SelfDefine)) { - extraIdentification = "/Self"; + //extraIdentification = "/Self"; //还会把病灶问题答案更新