diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs index f518f5b56..a547462b9 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs @@ -89,13 +89,39 @@ namespace IRaCIS.Core.Application.Service } - public async Task AddIsPDChangeTask(Guid taskId) + /// + /// 添加转变任务 + /// + /// + /// + public async Task AddConvertedTask(Guid taskId) { var taskInfo = await _visitTaskRepository.Where(x => x.Id == taskId).IgnoreAutoIncludes().AsNoTracking().FirstNotNullAsync(); taskInfo.ReadingTaskState = ReadingTaskState.WaitReading; taskInfo.IsConvertedTask = true; - + taskInfo.Id = NewId.NextGuid(); + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => + x.IsAnalysisCreate == taskInfo.IsAnalysisCreate + && x.IsSelfAnalysis == taskInfo.IsSelfAnalysis + && x.VisitTaskNum > taskInfo.VisitTaskNum + && x.DoctorUserId == taskInfo.DoctorUserId + && x.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId + && x.SubjectId == taskInfo.SubjectId + && x.ArmEnum == taskInfo.ArmEnum && + x.TaskState == TaskState.Effect, x => new VisitTask() + { + IsConvertedTask = true + }); + + await _visitTaskRepository.AddAsync(taskInfo); + + await _visitTaskRepository.BatchUpdateNoTrackingAsync(x=>x.Id==taskId, x => new VisitTask() + { + TaskState = TaskState.Freeze + }); + + await _visitTaskRepository.SaveChangesAsync(); } //基于标准签名 产生任务 (或者手动选择某些访视生成该标准的任务) diff --git a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs index 1c72b5ed9..8604f20dd 100644 --- a/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs +++ b/IRaCIS.Core.Application/Service/Common/DTO/DictionaryModel.cs @@ -141,7 +141,9 @@ namespace IRaCIS.Application.Contracts public DicDataTypeEnum DataTypeEnum { get; set; } - public bool IsEnumInt => System.Text.RegularExpressions.Regex.IsMatch(Code, @"^[-+]?\d*$") && DataTypeEnum== DicDataTypeEnum.Enum; + public CrterionDictionaryGroup CrterionDictionaryGroup { get; set; } = IRaCIS.Core.Domain.Share.CrterionDictionaryGroup.General; + + public bool IsEnumInt => System.Text.RegularExpressions.Regex.IsMatch(Code, @"^[-+]?\d*$") && DataTypeEnum== DicDataTypeEnum.Enum; } diff --git a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs index 0ebb9b0d9..bd02d6989 100644 --- a/IRaCIS.Core.Application/Service/Common/DictionaryService.cs +++ b/IRaCIS.Core.Application/Service/Common/DictionaryService.cs @@ -359,6 +359,7 @@ namespace IRaCIS.Application.Services ParentChildCodeEnum = x.Dictionary.Parent.ChildCodeEnum, ShowOrder = x.Dictionary.ShowOrder, ParentCode = x.ParentCode, + CrterionDictionaryGroup=x.CrterionDictionaryGroup, Id = x.DictionaryId, ParentId = x.Dictionary.ParentId, Value = x.Dictionary.Value, @@ -430,6 +431,7 @@ namespace IRaCIS.Application.Services ShowOrder = x.Dictionary.ShowOrder, ParentCode = x.ParentCode, Id = x.DictionaryId, + CrterionDictionaryGroup=x.CrterionDictionaryGroup, ParentId = x.Dictionary.ParentId, Value = x.Dictionary.Value, ValueCN = x.Dictionary.ValueCN diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index bf1ad0c21..e7f70131e 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -165,6 +165,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public string GlobalChangeAnswer { get; set; } = string.Empty; + public List CrterionDictionaryGroup { get; set; } + } @@ -271,6 +273,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public decimal VisitTaskNum { get; set; } public bool IsCurrentTask { get; set; } + + public List CrterionDictionaryGroup { get; set; } } public class MergeLesionInDto @@ -383,6 +387,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto { public string Answer { get; set; } + public List CrterionDictionaryGroup { get; set; } + public List Childrens = new List(); } @@ -624,6 +630,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class TrialReadQuestionData : ReadingQuestionTrial { + public List CrterionDictionaryGroup { get; set; } + public bool IsPage { get; set; } = false; public string Answer { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 7e8824cb8..c641d427b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -633,7 +633,21 @@ namespace IRaCIS.Application.Services if (visitTaskId != null) { - answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); ; + answers = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == visitTaskId).ToListAsync(); + + var taskinfo = await _visitTaskRepository.Where(x => x.Id == visitTaskId).FirstNotNullAsync(); + questions.ForEach(x => + { + x.CrterionDictionaryGroup = taskinfo.CrterionDictionaryGroup; + }); + } + else + { + var crterionDictionaryGroup= new List() { CrterionDictionaryGroup.General, CrterionDictionaryGroup.BeforeConvert }; + questions.ForEach(x => + { + x.CrterionDictionaryGroup = crterionDictionaryGroup; + }); } @@ -823,9 +837,27 @@ namespace IRaCIS.Application.Services }).OrderBy(x => x.ShowOrder).ToListAsync(); - - //是否是预览 - if (inDto.IsGetPreview == false) + if (inDto.TaskId != null) + { + var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.TaskId).FirstNotNullAsync(); + + qusetionList.ForEach(x => + { + + x.CrterionDictionaryGroup = taskInfo.CrterionDictionaryGroup; + }); + } + else + { + qusetionList.ForEach(x => + { + + x.CrterionDictionaryGroup = new List() { CrterionDictionaryGroup.General, CrterionDictionaryGroup.BeforeConvert }; + }); + } + + //是否是预览 + if (inDto.IsGetPreview == false) { // 是否获取所有问题 if (inDto.IsGetallQuestion) diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs index b79089363..733d2435a 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/GeneralCalculateService.cs @@ -175,7 +175,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate BlindName = x.TaskBlindName, IsBaseLine = x.SourceSubjectVisit.IsBaseLine, VisitTaskId = x.Id, - + CrterionDictionaryGroup= x.CrterionDictionaryGroup, TaskName = x.TaskName, LatestScanDate= x.SourceSubjectVisit!=null?x.SourceSubjectVisit.LatestScanDate : null, VisitTaskNum = x.VisitTaskNum, diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs index 3085837da..8dc3260da 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/General/ReadingCalculateService.cs @@ -200,7 +200,29 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate }); } - return await service.GetReadingReportEvaluation(inDto); + var result = await service.GetReadingReportEvaluation(inDto); + + + // 这里统一处理字典 + + var dictionaryGroup = result.VisitTaskList.ToDictionary(x => x.VisitTaskId, x => x.CrterionDictionaryGroup); + + result.TaskQuestions.ForEach(y => + { + + y.Answer.ForEach(z => + { + try + { + z.CrterionDictionaryGroup = dictionaryGroup[z.VisitTaskId]; + } + catch (Exception) + { + + + } + }); + }); } else { diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs index 7cc8f1e40..8ffc4efce 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs @@ -294,7 +294,31 @@ namespace IRaCIS.Core.Domain.Models /// public bool IsConvertedTask { get; set; } = false; + [NotMapped] + public List CrterionDictionaryGroup + { + get + { + try + { + if (this.IsConvertedTask) + { + return new List() { Share.CrterionDictionaryGroup.General, Share.CrterionDictionaryGroup.Converted }; + } + else + { + return new List() { Share.CrterionDictionaryGroup.General, Share.CrterionDictionaryGroup.BeforeConvert }; + } + } + catch (Exception) + { + + return new List(); + } + + } + }