diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs index 659710cd7..35d3d6146 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/PCWG3CalculateService.cs @@ -24,6 +24,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate private readonly IRepository _readingTableAnswerRowInfoRepository; private readonly IRepository _readingQuestionTrialRepository; private readonly IRepository _subjectVisitRepository; + private readonly IRepository _organInfoRepository; private readonly IRepository _dicomStudyRepository; private readonly IRepository _noneDicomStudyRepository; private readonly IRepository _tumorAssessmentRepository; @@ -38,8 +39,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IRepository readingTableAnswerRowInfoRepository, IRepository readingQuestionTrialRepository, IRepository subjectVisitRepository, - IRepository dicomStudyRepository, - IRepository noneDicomStudyRepository, + IRepository organInfoRepository, + IRepository dicomStudyRepository, + IRepository noneDicomStudyRepository, IRepository tumorAssessmentRepository, IGeneralCalculateService generalCalculateService, IRepository readingTaskQuestionAnswerRepository @@ -52,6 +54,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._subjectVisitRepository = subjectVisitRepository; + this._organInfoRepository = organInfoRepository; this._dicomStudyRepository = dicomStudyRepository; this._noneDicomStudyRepository = noneDicomStudyRepository; this._tumorAssessmentRepository = tumorAssessmentRepository; @@ -130,7 +133,16 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate .ToListAsync(); - + var alltableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + + var organIds = alltableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); + var organInfos = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); + + var needChangeType = new List() { + QuestionMark.Organ, + QuestionMark.Location, + QuestionMark.Part, + }; // 第一级 分组 @@ -249,13 +261,76 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { foreach (var task in taskInfoList) { - - tableQuestion.Answer.Add(new TaskQuestionAnswer() + var rowinfo = alltableAnsweRowInfos.Where(x => x.VisitTaskId == task.VisitTaskId && x.QuestionId == tableQuestion.QuestionId && x.RowIndex == tableQuestion.RowIndex).FirstOrDefault(); + var taskQuestionAnswer = new TaskQuestionAnswer() { Answer = tableAnswers.Where(x => x.VisitTaskId == task.VisitTaskId && x.QuestionId == tableQuestion.QuestionId && x.RowIndex == tableQuestion.RowIndex && x.TableQuestionId == tableQuestion.TableQuestionId).Select(x => x.Answer).FirstIsNullReturnEmpty(), TaskName = task.TaskName, VisitTaskId = task.VisitTaskId, - }); + }; + if (rowinfo != null && rowinfo.OrganInfoId != null) + { + var organInfo = organInfos.Where(x => x.Id == rowinfo.OrganInfoId).FirstOrDefault(); + + + if (organInfo != null && needChangeType.Contains(tableQuestion.QuestionMark)) + { + if (_userInfo.IsEn_Us) + { + switch (tableQuestion.QuestionMark) + { + case QuestionMark.Organ: + taskQuestionAnswer.Answer = organInfo.TULOCEN; + + break; + case QuestionMark.Location: + if (organInfo.IsCanEditPosition) + { + + } + else + { + taskQuestionAnswer.Answer = organInfo.TULATEN; + + } + break; + case QuestionMark.Part: + + taskQuestionAnswer.Answer = organInfo.PartEN; + + break; + + } + + } + else + { + switch (tableQuestion.QuestionMark) + { + case QuestionMark.Organ: + taskQuestionAnswer.Answer = organInfo.TULOC; + break; + case QuestionMark.Location: + if (organInfo.IsCanEditPosition) + { + + } + else + { + taskQuestionAnswer.Answer = organInfo.TULAT; + + } + break; + case QuestionMark.Part: + taskQuestionAnswer.Answer = organInfo.Part; + break; + + } + } + + } + } + tableQuestion.Answer.Add(taskQuestionAnswer); } } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs index 1c55daca4..55776ef4d 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/RECIST1Point1CalculateService.cs @@ -115,7 +115,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); var alltableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); - var organIds = alltableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); var organInfos = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); @@ -306,13 +305,6 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate } } - - - - - - - tableQuestion.Answer.Add(taskQuestionAnswer); } } diff --git a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs index 22ccc6f7f..a79218b11 100644 --- a/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs +++ b/IRaCIS.Core.Application/Service/ReadingCalculate/SelfDefineCalculateService.cs @@ -24,6 +24,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate private readonly IRepository _readingTableAnswerRowInfoRepository; private readonly IRepository _readingQuestionTrialRepository; private readonly IRepository _subjectVisitRepository; + private readonly IRepository _organInfoRepository; private readonly IRepository _dicomStudyRepository; private readonly IRepository _noneDicomStudyRepository; private readonly IRepository _tumorAssessmentRepository; @@ -38,8 +39,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate IRepository readingTableAnswerRowInfoRepository, IRepository readingQuestionTrialRepository, IRepository subjectVisitRepository, - IRepository dicomStudyRepository, - IRepository noneDicomStudyRepository, + IRepository organInfoRepository, + IRepository dicomStudyRepository, + IRepository noneDicomStudyRepository, IRepository tumorAssessmentRepository, IGeneralCalculateService generalCalculateService, IRepository readingTaskQuestionAnswerRepository @@ -52,6 +54,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate this._readingTableAnswerRowInfoRepository = readingTableAnswerRowInfoRepository; this._readingQuestionTrialRepository = readingQuestionTrialRepository; this._subjectVisitRepository = subjectVisitRepository; + this._organInfoRepository = organInfoRepository; this._dicomStudyRepository = dicomStudyRepository; this._noneDicomStudyRepository = noneDicomStudyRepository; this._tumorAssessmentRepository = tumorAssessmentRepository; @@ -109,6 +112,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var alltableAnsweRowInfos = await _readingTableAnswerRowInfoRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId)).ToListAsync(); + var organIds = alltableAnsweRowInfos.Where(x => x.OrganInfoId != null).Select(x => x.OrganInfoId).Distinct().ToList(); + var organInfos = await _organInfoRepository.Where(x => organIds.Contains(x.Id)).ToListAsync(); + + var needChangeType = new List() { + QuestionMark.Organ, + QuestionMark.Location, + QuestionMark.Part, + }; // 第一级 @@ -223,13 +235,76 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate { foreach (var task in taskInfoList) { - - tableQuestion.Answer.Add(new TaskQuestionAnswer() + var rowinfo = alltableAnsweRowInfos.Where(x => x.VisitTaskId == task.VisitTaskId && x.QuestionId == tableQuestion.QuestionId && x.RowIndex == tableQuestion.RowIndex).FirstOrDefault(); + var taskQuestionAnswer = new TaskQuestionAnswer() { Answer = tableAnswers.Where(x => x.VisitTaskId == task.VisitTaskId && x.QuestionId == tableQuestion.QuestionId && x.RowIndex == tableQuestion.RowIndex && x.TableQuestionId == tableQuestion.TableQuestionId).Select(x => x.Answer).FirstIsNullReturnEmpty(), TaskName = task.TaskName, VisitTaskId = task.VisitTaskId, - }); + }; + if (rowinfo != null && rowinfo.OrganInfoId != null) + { + var organInfo = organInfos.Where(x => x.Id == rowinfo.OrganInfoId).FirstOrDefault(); + + + if (organInfo != null && needChangeType.Contains(tableQuestion.QuestionMark)) + { + if (_userInfo.IsEn_Us) + { + switch (tableQuestion.QuestionMark) + { + case QuestionMark.Organ: + taskQuestionAnswer.Answer = organInfo.TULOCEN; + + break; + case QuestionMark.Location: + if (organInfo.IsCanEditPosition) + { + + } + else + { + taskQuestionAnswer.Answer = organInfo.TULATEN; + + } + break; + case QuestionMark.Part: + + taskQuestionAnswer.Answer = organInfo.PartEN; + + break; + + } + + } + else + { + switch (tableQuestion.QuestionMark) + { + case QuestionMark.Organ: + taskQuestionAnswer.Answer = organInfo.TULOC; + break; + case QuestionMark.Location: + if (organInfo.IsCanEditPosition) + { + + } + else + { + taskQuestionAnswer.Answer = organInfo.TULAT; + + } + break; + case QuestionMark.Part: + taskQuestionAnswer.Answer = organInfo.Part; + break; + + } + } + + } + } + tableQuestion.Answer.Add(taskQuestionAnswer); } }