diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index 18184e843..97f8b3cd3 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -505,73 +505,77 @@ namespace IRaCIS.Core.Infra.EFCore.Common obj = new { R1 = r1.FullName, R2 = r2.FullName, SelectResult = entity.ArmEnum == r1.ArmEnum ? "R1" : "R2" }; } - //肿瘤学任务 - if (entity.ReadingTaskState == ReadingTaskState.HaveSigned && _userInfo.RequestUrl == "ReadingImageTask/SubmitOncologyReadingInfo") - { + #region 通过链接跳转 2022 12-19 + + ////肿瘤学任务 + //if (entity.ReadingTaskState == ReadingTaskState.HaveSigned && _userInfo.RequestUrl == "ReadingImageTask/SubmitOncologyReadingInfo") + //{ - var oncologyAnswerList = await _dbContext.ReadingOncologyTaskInfo.Where(t => t.OncologyTaskId == entity.Id).Select(t => new { t.VisitTask.TaskBlindName, t.VisitTask.TaskName, t.EvaluationReason, t.EvaluationResult, t.VisitTask.VisitTaskNum, VisitTaskId = t.VisitTask.Id }).ToListAsync(); + // var oncologyAnswerList = await _dbContext.ReadingOncologyTaskInfo.Where(t => t.OncologyTaskId == entity.Id).Select(t => new { t.VisitTask.TaskBlindName, t.VisitTask.TaskName, t.EvaluationReason, t.EvaluationResult, t.VisitTask.VisitTaskNum, VisitTaskId = t.VisitTask.Id }).ToListAsync(); - var golbalTaskInfo = await _dbContext.VisitTask.Where(t => t.SubjectId == entity.SubjectId && t.ReadingCategory == ReadingCategory.Global && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == entity.IsAnalysisCreate && t.VisitTaskNum == (entity.VisitTaskNum - ReadingCommon.TaskNumDic[ReadingCategory.Oncology] + ReadingCommon.TaskNumDic[ReadingCategory.Global])).Select(t => new { GlobalTaskId = t.Id }).FirstNotNullAsync(); + // var golbalTaskInfo = await _dbContext.VisitTask.Where(t => t.SubjectId == entity.SubjectId && t.ReadingCategory == ReadingCategory.Global && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == entity.IsAnalysisCreate && t.VisitTaskNum == (entity.VisitTaskNum - ReadingCommon.TaskNumDic[ReadingCategory.Oncology] + ReadingCommon.TaskNumDic[ReadingCategory.Global])).Select(t => new { GlobalTaskId = t.Id }).FirstNotNullAsync(); - var globalResultList = await _dbContext.ReadingGlobalTaskInfo.Where(t => t.GlobalTaskId == golbalTaskInfo.GlobalTaskId).ToListAsync(); + // var globalResultList = await _dbContext.ReadingGlobalTaskInfo.Where(t => t.GlobalTaskId == golbalTaskInfo.GlobalTaskId).ToListAsync(); - var modifyVisitList = globalResultList - .GroupBy(t => t.TaskId).Select(g => new - { - VisitTaskId = g.Key, - GlobalResult = g.Select(c => new { c.Answer, c.QuestionId }) - }).ToList(); + // var modifyVisitList = globalResultList + // .GroupBy(t => t.TaskId).Select(g => new + // { + // VisitTaskId = g.Key, + // GlobalResult = g.Select(c => new { c.Answer, c.QuestionId }) + // }).ToList(); - var query = from answer in oncologyAnswerList - join modifyVisit in modifyVisitList on answer.VisitTaskId equals modifyVisit.VisitTaskId into cc - from modifyVisit in cc.DefaultIfEmpty() - select new - { - answer.TaskBlindName, - answer.TaskName, - answer.EvaluationReason, - answer.EvaluationResult, - IsGlobalModify = modifyVisit != null, - Reason = modifyVisit != null ? modifyVisit.GlobalResult.Where(t => t.QuestionId == null).FirstOrDefault()?.Answer : String.Empty - }; + // var query = from answer in oncologyAnswerList + // join modifyVisit in modifyVisitList on answer.VisitTaskId equals modifyVisit.VisitTaskId into cc + // from modifyVisit in cc.DefaultIfEmpty() + // select new + // { + // answer.TaskBlindName, + // answer.TaskName, + // answer.EvaluationReason, + // answer.EvaluationResult, + // IsGlobalModify = modifyVisit != null, + // Reason = modifyVisit != null ? modifyVisit.GlobalResult.Where(t => t.QuestionId == null).FirstOrDefault()?.Answer : String.Empty + // }; - var result = query.ToList(); + // var result = query.ToList(); - obj = new { OncologyAnswerList = result }; - } + // obj = new { OncologyAnswerList = result }; + //} - //全局任务 - if (entity.ReadingTaskState == ReadingTaskState.HaveSigned && _userInfo.RequestUrl == "ReadingImageTask/SubmitGlobalReadingInfo") - { + ////全局任务 + //if (entity.ReadingTaskState == ReadingTaskState.HaveSigned && _userInfo.RequestUrl == "ReadingImageTask/SubmitGlobalReadingInfo") + //{ - var globalResultList = await _dbContext.ReadingGlobalTaskInfo.Where(t => t.GlobalTaskId == entity.Id).Select(t => new { VisitTaskId = t.TaskId, t.QuestionId, t.Answer, t.VisitTask.TaskBlindName, t.VisitTask.TaskName, t.TrialReadingQuestion.QuestionName }).ToListAsync(); + // var globalResultList = await _dbContext.ReadingGlobalTaskInfo.Where(t => t.GlobalTaskId == entity.Id).Select(t => new { VisitTaskId = t.TaskId, t.QuestionId, t.Answer, t.VisitTask.TaskBlindName, t.VisitTask.TaskName, t.TrialReadingQuestion.QuestionName }).ToListAsync(); - var visitTaskIdList = globalResultList.Select(t => t.VisitTaskId).ToList(); + // var visitTaskIdList = globalResultList.Select(t => t.VisitTaskId).ToList(); - var visitResultList = await _dbContext.ReadingTaskQuestionAnswer.Where(t => visitTaskIdList.Contains(t.VisitTaskId) && t.ReadingQuestionTrial.IsJudgeQuestion).Select(t => new { t.VisitTaskId, t.VisitTask.TaskBlindName, t.VisitTask.TaskName, t.VisitTask.VisitTaskNum, t.ReadingQuestionTrial.QuestionName, t.ReadingQuestionTrial.ShowOrder, t.Answer, t.ReadingQuestionTrialId }) - .OrderBy(t => t.VisitTaskNum).ToListAsync(); + // var visitResultList = await _dbContext.ReadingTaskQuestionAnswer.Where(t => visitTaskIdList.Contains(t.VisitTaskId) && t.ReadingQuestionTrial.IsJudgeQuestion).Select(t => new { t.VisitTaskId, t.VisitTask.TaskBlindName, t.VisitTask.TaskName, t.VisitTask.VisitTaskNum, t.ReadingQuestionTrial.QuestionName, t.ReadingQuestionTrial.ShowOrder, t.Answer, t.ReadingQuestionTrialId }) + // .OrderBy(t => t.VisitTaskNum).ToListAsync(); - var query = visitResultList.GroupBy(t => new { t.VisitTaskId, t.VisitTaskNum, t.TaskName, t.TaskBlindName }).Select(g => new - { - VisitTaskId = g.Key.VisitTaskId, - VisitTaskNum = g.Key.VisitTaskNum, - TaskName = g.Key.TaskName, - TaskBlindName = g.Key.TaskBlindName, + // var query = visitResultList.GroupBy(t => new { t.VisitTaskId, t.VisitTaskNum, t.TaskName, t.TaskBlindName }).Select(g => new + // { + // VisitTaskId = g.Key.VisitTaskId, + // VisitTaskNum = g.Key.VisitTaskNum, + // TaskName = g.Key.TaskName, + // TaskBlindName = g.Key.TaskBlindName, - VisitQuestionAnswerList = g.OrderBy(t => t.ShowOrder).Select(u => new { u.QuestionName, u.Answer }).ToList(), + // VisitQuestionAnswerList = g.OrderBy(t => t.ShowOrder).Select(u => new { u.QuestionName, u.Answer }).ToList(), - GlobalQuestionAnswerList = g.OrderBy(t => t.ShowOrder).Select(u => new { u.QuestionName, Answer = globalResultList.Where(t => t.VisitTaskId == g.Key.VisitTaskId && t.QuestionId == u.ReadingQuestionTrialId).FirstOrDefault()?.Answer ?? String.Empty }).ToList(), + // GlobalQuestionAnswerList = g.OrderBy(t => t.ShowOrder).Select(u => new { u.QuestionName, Answer = globalResultList.Where(t => t.VisitTaskId == g.Key.VisitTaskId && t.QuestionId == u.ReadingQuestionTrialId).FirstOrDefault()?.Answer ?? String.Empty }).ToList(), - Reason = globalResultList.Where(t => t.VisitTaskId == g.Key.VisitTaskId && t.QuestionId == null).FirstOrDefault()?.Answer ?? String.Empty - }); + // Reason = globalResultList.Where(t => t.VisitTaskId == g.Key.VisitTaskId && t.QuestionId == null).FirstOrDefault()?.Answer ?? String.Empty + // }); - var result = query.ToList(); + // var result = query.ToList(); - obj = new { GlobalAnswerList = result }; - } + // obj = new { GlobalAnswerList = result }; + //} + + #endregion #endregion @@ -601,8 +605,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common //保存影像质量 多条记录,只记录一条稽查 if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer))) { - //1 保存影像质量 2:修改整体肿瘤评估结果 - if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer" || _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality") + // 保存影像质量 、 修改整体肿瘤评估结果 、 非dicom 保存访视阅片结果 + if (_userInfo.RequestUrl == "ReadingImageTask/changeDicomReadingQuestionAnswer" + || _userInfo.RequestUrl == "ReadingImageTask/saveImageQuality" + || _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions") { var type = AuditOpt.Add; @@ -798,42 +804,88 @@ namespace IRaCIS.Core.Infra.EFCore.Common #endregion + //访视 阅片结果 + + //if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer))) + //{ + // var type = AuditOpt.Add; + // var list = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(t => t.Entity as ReadingTaskQuestionAnswer); + + + // //获取问题名称 组合成数组 + // var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => list.Select(k => k.ReadingQuestionTrialId).Contains(t.Id)).Select(t => new + // { + // t.QuestionName, + // QuestionId = t.Id, + // t.DictionaryCode, + // t.ShowOrder + // }).OrderBy(t => t.ShowOrder).ToListAsync(); + + + // var firstEntity = list.First(); + + // var cloneEntity = firstEntity.Clone(); + + // //保证Id 唯一 + // cloneEntity.Id = IdentifierHelper.CreateGuid(firstEntity.ReadingQuestionCriterionTrialId.ToString(), firstEntity.ReadingQuestionTrialId.ToString(), firstEntity.VisitTaskId.ToString()); + + // await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() + // { + // VisitTaskId = x.VisitTaskId, + + // ObjectRelationParentId = x.VisitTaskId, + + // TrialReadingCriterionId = x.ReadingQuestionCriterionTrialId, + + // }, new { QuestionAnswerList = list.Join(quesionList, t => t.ReadingQuestionTrialId, u => u.QuestionId, (t, u) => new { t.Answer, u.DictionaryCode, u.QuestionName, u.ShowOrder }).OrderBy(t => t.ShowOrder).ToList() }); + //} + + + + + // 全局 阅片结果 if (entitys.Any(x => x.Entity.GetType() == typeof(ReadingGlobalTaskInfo))) { - //var type = AuditOpt.Add; + var type = AuditOpt.Add; - //var list = entitys.Where(x => x.Entity.GetType() == typeof(ReadingGlobalTaskInfo)).Select(t => t.Entity as ReadingGlobalTaskInfo); + var list = entitys.Where(x => x.Entity.GetType() == typeof(ReadingGlobalTaskInfo)).Select(t => t.Entity as ReadingGlobalTaskInfo); - //foreach (var group in list.GroupBy(t => t.TaskId)) - //{ - // var questionAnswerList = group.Where(t => t.QuestionId != null).ToList(); - - // var reasonStr = group.Where(t => t.QuestionId == null).FirstOrDefault().Answer; - - // var questionIdList = questionAnswerList.Select(t => t.QuestionId).ToList(); - - // var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => questionIdList.Contains(t.Id)).Select(t => new { t.QuestionName, QuestionId = t.Id, t.ShowOrder }).OrderBy(t => t.ShowOrder).ToListAsync(); + foreach (var group in list.GroupBy(t => t.TaskId)) + { + var questionAnswerList = group.Where(t => t.QuestionId != null).ToList(); - // var firstEntity = questionAnswerList.First(); + var questionIdList = questionAnswerList.Select(t => t.QuestionId).ToList(); - // var cloneEntity = firstEntity.Clone(); + var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => questionIdList.Contains(t.Id)).Select(t => new { + + t.QuestionName, QuestionId = t.Id, + t.DictionaryCode, + t.ShowOrder }).OrderBy(t => t.ShowOrder).ToListAsync(); - // //保证Id 唯一 - // cloneEntity.Id = IdentifierHelper.CreateGuid(firstEntity.GlobalTaskId.ToString(), firstEntity.TaskId.ToString(), firstEntity.Id.ToString()); + var firstEntity = questionAnswerList.First(); + + var cloneEntity = firstEntity.Clone(); + + + //保证Id 唯一 + cloneEntity.Id = IdentifierHelper.CreateGuid(firstEntity.GlobalTaskId.ToString(), firstEntity.TaskId.ToString()); - // await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() - // { - // VisitTaskId = x.TaskId, + await InsertInspection(cloneEntity, type, x => new InspectionConvertDTO() + { + VisitTaskId = x.TaskId, - // ObjectRelationParentId = x.TaskId, + ObjectRelationParentId = x.TaskId, - // }, new { Reason = reasonStr, QuestionAnswerList = questionAnswerList.Join(quesionList, t => t.QuestionId, u => u.QuestionId, (t, u) => new { t.Answer, u.QuestionName, u.ShowOrder }).OrderBy(t => t.ShowOrder).ToList() }); - //} + }, new { Reason = group.Where(t => t.QuestionId == null && t.GlobalAnswerType == GlobalAnswerType.Reason).FirstOrDefault()?.Answer, + AgreeOrNot= group.Where(t => t.QuestionId == null && t.GlobalAnswerType == GlobalAnswerType.AgreeOrNot).FirstOrDefault()?.Answer, + UpdateType = group.Where(t => t.QuestionId == null && t.GlobalAnswerType == GlobalAnswerType.UpdateType).FirstOrDefault()?.Answer, + QuestionAnswerList = questionAnswerList.Join(quesionList, t => t.QuestionId, u => u.QuestionId, (t, u) => new { t.Answer, u.QuestionName, u.DictionaryCode, u.ShowOrder }).OrderBy(t => t.ShowOrder).ToList() }); + } }