diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs index 922129b92..6e483f49a 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingImageTaskViewModel.cs @@ -592,6 +592,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public List TableAnsweRowInfos { get; set; } = new List(); + public List OrganInfos { get; set; } = new List(); + public bool IsGetallQuestion { get; set; } = false; /// @@ -602,6 +604,11 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class ReadingTableQuestionAnswerInfo : ReadingTableQuestionAnswer { public int ShowOrder { get; set; } + + /// + /// 问题标识 + /// + public QuestionMark? QuestionMark { get; set; } } public class TrialReadTableQuestion diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index 9ea006e4b..a81a1ad75 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -39,6 +39,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _readingJudgeInfoRepository; private readonly IRepository _readModuleRepository; private readonly IRepository _dicomInstanceRepository; + private readonly IRepository _organInfoRepository; private readonly IRepository _readingCriterionDictionaryRepository; private readonly IRepository _tumorAssessmentRepository; private readonly IRepository _readingTableAnswerRowInfoRepository; @@ -73,6 +74,7 @@ namespace IRaCIS.Application.Services IRepository readingJudgeInfoRepository, IRepository readModuleRepository, IRepository dicomInstanceRepository, + IRepository organInfoRepository, IMemoryCache cache, IRepository readingCriterionDictionaryRepository, IRepository tumorAssessmentRepository, @@ -105,6 +107,7 @@ namespace IRaCIS.Application.Services this._readingJudgeInfoRepository = readingJudgeInfoRepository; this._readModuleRepository = readModuleRepository; this._dicomInstanceRepository = dicomInstanceRepository; + this._organInfoRepository = organInfoRepository; this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository; this._tumorAssessmentRepository = tumorAssessmentRepository; this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; @@ -527,6 +530,8 @@ namespace IRaCIS.Application.Services var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var organIds = tableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); + var organList = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); var questionPage = await GetReadingTableQuestion( new GetReadingTableQuestionOrAnswerInDto() { @@ -534,7 +539,8 @@ namespace IRaCIS.Application.Services TrialReadingCriterionId = taskinfo.TrialReadingCriterionId, TaskId = inDto.VisitTaskId, TableAnswers = tableAnswers, - TableAnsweRowInfos = tableAnsweRowInfos + TableAnsweRowInfos = tableAnsweRowInfos, + OrganInfos= organList, } @@ -572,6 +578,8 @@ namespace IRaCIS.Application.Services var tableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var organIds = tableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); + var organList = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); return (await this.GetReadingTableQuestion( new GetReadingTableQuestionOrAnswerInDto() @@ -580,7 +588,8 @@ namespace IRaCIS.Application.Services TaskId = taskInfo.Id, TableAnswers = tableAnswers, TableAnsweRowInfos = tableAnsweRowInfos, - IsGetallQuestion = true + IsGetallQuestion = true, + OrganInfos= organList } @@ -668,7 +677,7 @@ namespace IRaCIS.Application.Services var pageGroupList = newPageQusetionList.Where(x => x.Type == ReadingQestionType.Group || (x.ParentId == null && x.GroupName.IsNullOrEmpty())).ToList(); pageGroupList.ForEach(x => { - this.FindChildQuestion(x, newPageQusetionList, tableQuestionList, inDto.TableAnswers, inDto.TableAnsweRowInfos); + this.FindChildQuestion(x, newPageQusetionList, tableQuestionList, inDto.TableAnswers, inDto.TableAnsweRowInfos,inDto.OrganInfos); }); page.Childrens = pageGroupList.Where(x => !(x.Type == ReadingQestionType.Group && x.Childrens.Count() == 0)).ToList(); @@ -685,7 +694,7 @@ namespace IRaCIS.Application.Services groupList = qusetionList.Where(x => x.Type == ReadingQestionType.Group || (x.ParentId == null && x.GroupName.IsNullOrEmpty())).ToList(); groupList.ForEach(x => { - this.FindChildQuestion(x, qusetionList, tableQuestionList, inDto.TableAnswers, inDto.TableAnsweRowInfos); + this.FindChildQuestion(x, qusetionList, tableQuestionList, inDto.TableAnswers, inDto.TableAnsweRowInfos, inDto.OrganInfos); }); groupList = groupList.Where(x => !(x.Type == ReadingQestionType.Group && x.Childrens.Count() == 0)).ToList(); @@ -705,7 +714,7 @@ namespace IRaCIS.Application.Services /// /// /// - private void FindChildQuestion(TrialReadQuestionData item, List questionlists, List tableQuestionLists, List tableAnswers, List tableAnsweRowInfos) + private async void FindChildQuestion(TrialReadQuestionData item, List questionlists, List tableQuestionLists, List tableAnswers, List tableAnsweRowInfos,List organInfos) { item.Childrens = questionlists.Where(x => x.ParentId == item.Id || (item.Type == ReadingQestionType.Group && x.Type != ReadingQestionType.Group && x.ParentId == null && x.GroupName == item.GroupName)).ToList(); item.TableQuestions = new TrialReadTableQuestion(); @@ -744,14 +753,84 @@ namespace IRaCIS.Application.Services var thisAnswer = tableAnswers.Where(x => x.QuestionId == item.Id).ToList(); var orders = thisAnswer.Select(x => x.RowIndex).Distinct().OrderBy(x => x).ToList(); item.TableQuestions.Answers = new List>(); + + + var needChangeType = new List() { + QuestionMark.Organ, + QuestionMark.Location, + QuestionMark.Part, + }; + orders.ForEach(x => { Dictionary answers = new Dictionary(); var rowInfo = tableAnsweRowInfos.Where(y => y.RowIndex == x && y.QuestionId == item.Id).FirstOrDefault(); var rowAnswer = thisAnswer.Where(y => y.RowId == rowInfo.Id).OrderBy(y => y.ShowOrder).ToList(); + + var organInfo = organInfos.Where(x=>x.Id== rowInfo.OrganInfoId).FirstOrDefault(); + rowAnswer.ForEach(z => { - answers.Add(z.TableQuestionId.ToString(), z.Answer); + + if (organInfo != null && needChangeType.Contains(z.QuestionMark)) + { + if (_userInfo.IsEn_Us) + { + switch (z.QuestionMark) + { + case QuestionMark.Organ: + answers.Add(z.TableQuestionId.ToString(), organInfo.TULOCEN); + + break; + case QuestionMark.Location: + if (organInfo.IsCanEditPosition) + { + answers.Add(z.TableQuestionId.ToString(), z.Answer); + } + else + { + answers.Add(z.TableQuestionId.ToString(), organInfo.TULATEN); + + } + break; + case QuestionMark.Part: + answers.Add(z.TableQuestionId.ToString(), organInfo.PartEN); + break; + + } + + } + else + { + switch (z.QuestionMark) + { + case QuestionMark.Organ: + answers.Add(z.TableQuestionId.ToString(), organInfo.TULOC); + break; + case QuestionMark.Location: + if (organInfo.IsCanEditPosition) + { + answers.Add(z.TableQuestionId.ToString(), z.Answer); + } + else + { + answers.Add(z.TableQuestionId.ToString(), organInfo.TULAT); + + } + break; + case QuestionMark.Part: + answers.Add(z.TableQuestionId.ToString(), organInfo.Part); + break; + + } + } + + } + else + { + answers.Add(z.TableQuestionId.ToString(), z.Answer); + } + }); @@ -778,7 +857,7 @@ namespace IRaCIS.Application.Services { item.Childrens.ForEach(x => { - this.FindChildQuestion(x, questionlists, tableQuestionLists, tableAnswers, tableAnsweRowInfos); + this.FindChildQuestion(x, questionlists, tableQuestionLists, tableAnswers, tableAnsweRowInfos, organInfos); }); } } diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index fb6168056..71c7fe46c 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -105,7 +105,8 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName)); CreateMap() - .ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder)); + .ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder)) + .ForMember(d => d.QuestionMark, u => u.MapFrom(s => s.ReadingTableQuestionTrial.QuestionMark)); CreateMap() .ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName)) diff --git a/IRaCIS.Core.Domain/Reading/ReadingCriterion/OrganInfo.cs b/IRaCIS.Core.Domain/Reading/ReadingCriterion/OrganInfo.cs index 625f7faef..5072b012d 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingCriterion/OrganInfo.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingCriterion/OrganInfo.cs @@ -38,12 +38,12 @@ namespace IRaCIS.Core.Domain.Models public string PartEN { get; set; } = string.Empty; /// - /// TULOC + /// TULOC 器官 /// public string TULOC { get; set; } /// - /// TULOC 英文 + /// TULOC 器官 英文 /// public string TULOCEN { get; set; } = string.Empty;