From 25263ec7093e77bed65fc9bd45db8363358c097a Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Sun, 15 Jan 2023 14:20:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 20220103后端提示语.xlsx | Bin 17161 -> 17415 bytes IRaCIS.Core.Application/Resources/en-US.json | 6 +- IRaCIS.Core.Application/Resources/zh-CN.json | 5 +- .../Service/Management/UserService.cs | 2 +- .../Reading/Dto/ReadingImageTaskViewModel.cs | 16 ++++- .../Reading/Dto/ReadingQuestionViewModel.cs | 15 ++++- .../SelfDefineCalculateService.cs | 56 +++++++++++------- .../ReadingQuestionTrial.cs | 5 ++ .../ReadingTableQuestionTrial.cs | 7 ++- 9 files changed, 84 insertions(+), 28 deletions(-) diff --git a/20220103后端提示语.xlsx b/20220103后端提示语.xlsx index 594b6bcf571908286ab0a5bcdaa108a99b45638b..6442fdec8d0607bf20ba4ef2bc90703229680a37 100644 GIT binary patch delta 8882 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 diff --git a/IRaCIS.Core.Application/Resources/en-US.json b/IRaCIS.Core.Application/Resources/en-US.json index 060025d88..d1fe2dff8 100644 --- a/IRaCIS.Core.Application/Resources/en-US.json +++ b/IRaCIS.Core.Application/Resources/en-US.json @@ -229,7 +229,11 @@ "MedicalReview_SaveQuestion": "Unable to perform the current operation, please save the medical review question first.", "MedicalReview_NeedSave": "Unable to perform the current operation, please save the medical review questions and conclusions first.", "MedicalReview_NotClosed": "The current operation cannot be performed, and the current medical inquiry conversation has not been closed.", - "MedicalReview_Finish": "The current medical review task has been completed" + "MedicalReview_Finish": "The current medical review task has been completed", + //UserService + "User_CheckNameOrPw": "Please check the username or password." + + diff --git a/IRaCIS.Core.Application/Resources/zh-CN.json b/IRaCIS.Core.Application/Resources/zh-CN.json index 1f107f73c..2bb34c908 100644 --- a/IRaCIS.Core.Application/Resources/zh-CN.json +++ b/IRaCIS.Core.Application/Resources/zh-CN.json @@ -230,7 +230,10 @@ "MedicalReview_SaveQuestion": "无法执行当前操作,请先保存医学审核问题。", "MedicalReview_NeedSave": "无法执行当前操作,请先保存医学审核问题和结论。", "MedicalReview_NotClosed": "无法执行当前操作,当前医学质询对话未关闭。", - "MedicalReview_Finish": "当前医学审核已做完。" + "MedicalReview_Finish": "当前医学审核已做完。", + //UserService + "User_CheckNameOrPw": "请检查用户名或者密码。" + diff --git a/IRaCIS.Core.Application/Service/Management/UserService.cs b/IRaCIS.Core.Application/Service/Management/UserService.cs index 73ee067cd..4db65f04c 100644 --- a/IRaCIS.Core.Application/Service/Management/UserService.cs +++ b/IRaCIS.Core.Application/Service/Management/UserService.cs @@ -608,7 +608,7 @@ namespace IRaCIS.Application.Services if (loginDoctor == null) { - return ResponseOutput.NotOk("请检查用户名或者密码。", new LoginReturnDTO()); + return ResponseOutput.NotOk(_localizer["User_CheckNameOrPw"], new LoginReturnDTO()); } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index d007518b5..eeb1047ff 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -75,7 +75,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string BlindName { get; set; } = string.Empty; - public Guid RowId { get; set; } + public Guid? RowId { get; set; } public string SplitOrMergeLesionName { get; set; } @@ -495,6 +495,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public QuestionMark? QuestionMark { get; set; } + public bool IsCopy { get; set; } + /// /// 问题Id @@ -585,6 +587,18 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto } + /// + /// 病灶Index + /// + public class lesionsIndexDto + { + + + public Guid QuestionId { get; set; } + + public List Rowindexs { get; set; } + } + public class TableAnsweRowInfo : ReadingTableAnswerRowInfo { public string SplitName { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs index f1f58385c..7b03369a6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs @@ -327,7 +327,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string QuestionName { get; set; } = string.Empty; public IsRequired IsRequired { get; set; } - + /// + /// 复制病灶的时候 是否复制这个问题 + /// + public bool IsCopy { get; set; } = false; public int ShowOrder { get; set; } public string TypeValue { get; set; } = string.Empty; @@ -765,6 +768,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public Guid ReadingQuestionCriterionTrialId { get; set; } + /// + /// 是否复制病灶 + /// + public bool IsCopyLesions { get; set; } = false; + public Guid TrialId { get; set; } /// @@ -1600,6 +1608,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } + /// + /// 是否复制病灶 + /// + public bool IsCopyLesions { get; set; } = false; + /// /// 全局阅片显示类型 /// diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs index a79218b11..1d008bc83 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs @@ -107,6 +107,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var criterionId = visitTaskInfo.TrialReadingCriterionId; var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == criterionId).ToListAsync(); var tableQuestionList = await _readingTableQuestionTrialRepository.Where(x => x.TrialCriterionId == criterionId).OrderBy(x => x.ShowOrder).ToListAsync(); + + var lesionsIndexs = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).GroupBy(x => new { x.QuestionId }).Select(x => new lesionsIndexDto() + { + QuestionId = x.Key.QuestionId, + Rowindexs = x.Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList() + + }).ToListAsync(); + var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == indto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); @@ -191,19 +199,28 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var rowlist = tableAnsweRowInfos.Where(x => x.QuestionId == question.QuestionId).OrderBy(x => x.RowIndex).ToList(); + question.Childrens = new List(); - question.Childrens = rowlist.Select(x => new ReadingReportDto() + var rowoindexs = lesionsIndexs.Where(x => x.QuestionId == question.QuestionId).Select(x => x.Rowindexs.OrderBy(y => y).ToList()).FirstOrDefault(); + + foreach (var rowoindex in rowoindexs) { - QuestionName = question.OrderMark + x.RowIndex.GetLesionMark(), - RowId=x.Id, - SplitOrMergeLesionName = x.MergeName.IsNullOrEmpty() ? x.SplitName : x.MergeName, - SplitOrMergeType = x.SplitOrMergeType, - LesionType = question.LesionType, - IsCanEditPosition = x.IsCanEditPosition, - RowIndex = x.RowIndex, - BlindName = x.BlindName, - ReportLayType = ReportLayType.Lesions, - }).ToList(); + var rowinfo = rowlist.Where(x => x.RowIndex == rowoindex).FirstOrDefault(); + question.Childrens.Add(new ReadingReportDto() + { + QuestionName = question.OrderMark + rowoindex.GetLesionMark(), + RowId = rowinfo?.Id, + SplitOrMergeLesionName = rowinfo!=null? (rowinfo.MergeName.IsNullOrEmpty() ? rowinfo.SplitName : rowinfo.MergeName):string.Empty, + SplitOrMergeType = rowinfo != null ? (rowinfo.SplitOrMergeType):null, + LesionType = question.LesionType, + IsCanEditPosition = rowinfo != null ? (rowinfo.IsCanEditPosition):false, + RowIndex = rowoindex, + BlindName = rowinfo != null ? rowinfo.BlindName : string.Empty, + ReportLayType = ReportLayType.Lesions, + }); + } + + foreach (var row in question.Childrens) @@ -336,7 +353,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate public async Task AddTaskLesionAnswerFromLastTask(AddTaskLesionAnswerFromLastTaskInDto inDto) { var visitTaskId = inDto.VisitTaskId; - var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); var baseLineVisitId = await _subjectVisitRepository.Where(x => x.SubjectId == taskinfo.SubjectId && x.IsBaseLine).Select(x => x.Id).FirstOrDefaultAsync(); @@ -358,7 +374,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate - var copyTableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == LastVisitTaskId).Select(x => new CopyTableAnswerDto() + var copyTableAnswers = await _readingTableQuestionAnswerRepository.Where(x => x.VisitTaskId == LastVisitTaskId&&x.ReadingQuestionTrial.IsCopyLesions).Select(x => new CopyTableAnswerDto() { Answer = x.Answer, QuestionId = x.QuestionId, @@ -366,10 +382,11 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate QuestionMark = x.ReadingTableQuestionTrial.QuestionMark, TableQuestionId = x.TableQuestionId, RowIndex = x.RowIndex, - TrialId = x.TrialId + IsCopy=x.ReadingTableQuestionTrial.IsCopy, + TrialId = x.TrialId, }).ToListAsync(); - var tableRowAnswers = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == LastVisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var tableRowAnswers = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == LastVisitTaskId&&x.ReadingQuestionTrial.IsCopyLesions).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); tableRowAnswers.ForEach(x => @@ -390,17 +407,12 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }); - List notNeedCopyMarks = new List() - { - QuestionMark.MajorAxis, - QuestionMark.ShortAxis, - QuestionMark.State, - }; + var tableAnswers = copyTableAnswers.Select(x => new ReadingTableQuestionAnswer { Id = NewId.NextGuid(), - Answer = notNeedCopyMarks.Contains(x.QuestionMark) ? string.Empty : x.Answer, + Answer = x.IsCopy ? x.Answer:string.Empty , QuestionId = x.QuestionId, RowIndex = x.RowIndex, RowId = tableRowAnswers.Where(y => y.OriginalId == x.RowId).Select(x => x.Id).FirstOrDefault(), diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs index e520fe454..729de9cdb 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingQuestionTrial.cs @@ -230,6 +230,11 @@ namespace IRaCIS.Core.Domain.Models /// public string GroupEnName { get; set; } = string.Empty; + /// + /// 是否复制病灶 + /// + public bool IsCopyLesions { get; set; } = false; + /// /// 分页标准 /// diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs index 135f03fb6..1507fc301 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterionQuestion/ReadingTableQuestionTrial.cs @@ -193,7 +193,12 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("ReadingQuestionId")] public ReadingQuestionTrial ReadingQuestionTrial { get; set; } - + /// + /// 复制病灶的时候 是否复制这个问题 + /// + public bool IsCopy { get; set; } = false; + + [NotMapped] public List ParentTriggerValueList {