Merge branch 'Test_HIR_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_HIR_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
eb7db8478f
|
|
@ -4849,7 +4849,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.PCWG3CalculateService.ChangeLastTaskSiteVisitForTumorEvaluation(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.PCWG3CalculateService.ChangeLastTaskSiteVisitForTumorEvaluation(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
<summary>
|
<summary>
|
||||||
修改上一次访视结果
|
修改上一次访视结果 并且计算是不是PD
|
||||||
</summary>
|
</summary>
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
|
|
|
||||||
|
|
@ -1855,7 +1855,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
await _readingTaskQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.ReadingQuestionTrialId == item.QuestionId && x.VisitTaskId == item.VisitTaskId, x => new ReadingTaskQuestionAnswer()
|
await _readingTaskQuestionAnswerRepository.UpdatePartialFromQueryAsync(x => x.ReadingQuestionTrialId == item.QuestionId && x.VisitTaskId == item.VisitTaskId, x => new ReadingTaskQuestionAnswer()
|
||||||
{
|
{
|
||||||
Answer = item.Answer
|
PCWGInterimAnswer = item.Answer
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1863,7 +1863,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
await _readingTaskQuestionAnswerRepository.AddAsync(new ReadingTaskQuestionAnswer()
|
await _readingTaskQuestionAnswerRepository.AddAsync(new ReadingTaskQuestionAnswer()
|
||||||
{
|
{
|
||||||
VisitTaskId= item.VisitTaskId,
|
VisitTaskId= item.VisitTaskId,
|
||||||
Answer= item.Answer,
|
PCWGInterimAnswer = item.Answer,
|
||||||
ReadingQuestionTrialId= item.QuestionId,
|
ReadingQuestionTrialId= item.QuestionId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -3351,6 +3351,23 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task SubmitTaskChangeState(Guid visitTaskId)
|
private async Task SubmitTaskChangeState(Guid visitTaskId)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var taskInfo=await _visitTaskRepository.Where(x => x.Id == visitTaskId).Include(x=>x.TrialReadingCriterion).FirstNotNullAsync();
|
||||||
|
// 如果是PCGW标准 则把中间答案赋值给正式答案
|
||||||
|
if (taskInfo.TrialReadingCriterion.CriterionType == CriterionType.PCWG3)
|
||||||
|
{
|
||||||
|
var answerList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTask.TaskState==TaskState.Effect&& x.VisitTask.SubjectId == taskInfo.SubjectId && x.VisitTask.ArmEnum == taskInfo.ArmEnum && x.PCWGInterimAnswer != string.Empty).ToListAsync();
|
||||||
|
|
||||||
|
foreach (var item in answerList)
|
||||||
|
{
|
||||||
|
await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x=>x.Id==item.Id, x => new ReadingTaskQuestionAnswer()
|
||||||
|
{
|
||||||
|
Answer = item.PCWGInterimAnswer,
|
||||||
|
PCWGInterimAnswer = string.Empty,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
await VerifyTaskIsSign(visitTaskId);
|
await VerifyTaskIsSign(visitTaskId);
|
||||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
|
await _visitTaskRepository.UpdatePartialFromQueryAsync(visitTaskId, x => new VisitTask()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1372,6 +1372,15 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
TrialId = x.TrialId,
|
TrialId = x.TrialId,
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// 肛门淋巴结
|
||||||
|
var portalOrgan = await _organInfoRepository.Where(x => x.SystemCriterionId == trialReadingCriterion.ReadingQuestionCriterionSystemId &&
|
||||||
|
|
||||||
|
x.Part == "肝门淋巴结" &&
|
||||||
|
|
||||||
|
x.IsLymphNodes == IsLymph.Yes
|
||||||
|
).FirstOrDefaultAsync();
|
||||||
|
|
||||||
foreach (var item in recistTableAnswers)
|
foreach (var item in recistTableAnswers)
|
||||||
{
|
{
|
||||||
var rowinfo = tableRowAnswers.Where(y => y.OriginalId == item.RowId).FirstOrDefault();
|
var rowinfo = tableRowAnswers.Where(y => y.OriginalId == item.RowId).FirstOrDefault();
|
||||||
|
|
@ -1379,6 +1388,9 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
{
|
{
|
||||||
item.QuestionId = rowinfo.QuestionId;
|
item.QuestionId = rowinfo.QuestionId;
|
||||||
|
|
||||||
|
|
||||||
|
if (portalOrgan != null && rowinfo.OrganInfoId == portalOrgan.Id)
|
||||||
|
{
|
||||||
var IslymphNode = recistTableAnswers.Where(x => x.RowId == item.RowId && x.QuestionMark == QuestionMark.IsLymph).Select(x => x.Answer).FirstIsNullReturnEmpty().EqEnum(YesOrNoOrNa.Yes);
|
var IslymphNode = recistTableAnswers.Where(x => x.RowId == item.RowId && x.QuestionMark == QuestionMark.IsLymph).Select(x => x.Answer).FirstIsNullReturnEmpty().EqEnum(YesOrNoOrNa.Yes);
|
||||||
var minorAxis = recistTableAnswers.Where(x => x.RowId == item.RowId && x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstIsNullReturnEmpty().IsNullOrEmptyReturn0();
|
var minorAxis = recistTableAnswers.Where(x => x.RowId == item.RowId && x.QuestionMark == QuestionMark.ShortAxis).Select(x => x.Answer).FirstIsNullReturnEmpty().IsNullOrEmptyReturn0();
|
||||||
|
|
||||||
|
|
@ -1389,6 +1401,8 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
item.TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == item.QuestionId && x.QuestionMark == item.QuestionMark).Select(x => x.Id).FirstOrDefault();
|
item.TableQuestionId = tableQuestionList.Where(x => x.ReadingQuestionId == item.QuestionId && x.QuestionMark == item.QuestionMark).Select(x => x.Id).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
using IRaCIS.Core.Infra.EFCore.Common;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
|
using MassTransit.Initializers;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
|
@ -352,6 +353,14 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId))
|
var answers = await _readingTaskQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId))
|
||||||
.Where(x => x.ReadingQuestionTrialId != questionNewLesions.Id || x.VisitTaskId == visitTaskInfo.Id)
|
.Where(x => x.ReadingQuestionTrialId != questionNewLesions.Id || x.VisitTaskId == visitTaskInfo.Id)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
||||||
|
if (visitTaskInfo.ReadingTaskState != ReadingTaskState.HaveSigned)
|
||||||
|
{
|
||||||
|
foreach (var item in answers)
|
||||||
|
{
|
||||||
|
item.Answer=item.PCWGInterimAnswer==string.Empty? item.Answer: item.PCWGInterimAnswer;
|
||||||
|
}
|
||||||
|
}
|
||||||
var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId))
|
var tableAnswers = await _readingTableQuestionAnswerRepository.Where(x => visitTaskIds.Contains(x.VisitTaskId))
|
||||||
.Where(x => x.QuestionId != questionNewLesions.Id || x.VisitTaskId == visitTaskInfo.Id)
|
.Where(x => x.QuestionId != questionNewLesions.Id || x.VisitTaskId == visitTaskInfo.Id)
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
|
@ -1110,7 +1119,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 修改上一次访视结果
|
/// 修改上一次访视结果 并且计算是不是PD
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
@ -1125,75 +1134,68 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
||||||
|
|
||||||
var isPDResult = false;
|
var isPDResult = false;
|
||||||
|
|
||||||
|
// 先判断有没有上一个任务
|
||||||
if (lastTask != null)
|
if (lastTask != null)
|
||||||
{
|
{
|
||||||
|
// 查看历史有没有PD
|
||||||
|
var taskIdList = taskList.Select(x => x.VisitTaskId).ToList();
|
||||||
|
|
||||||
#region 1、基线后第一个访视:新病灶计数≥ 2个;2、基线后第二个访视(应满足访视间隔6周以上,否则顺延)新病灶≥ 2个;
|
var pdTaskList = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId!=inDto.VisitTaskId&& taskIdList.Contains(x.VisitTaskId) && x.ReadingQuestionTrial.QuestionType == QuestionType.SiteVisitForTumorEvaluation && x.Answer == VisitTumorEvaluation.PD.GetEnumInt()).OrderByDescending(x=>x.VisitTask.VisitTaskNum).ToListAsync();
|
||||||
//1、基线后第一个访视:新病灶计数≥ 2个;2、基线后第二个访视(应满足访视间隔6周以上,否则顺延)新病灶≥ 2个;
|
|
||||||
|
|
||||||
|
// 当前访视新病灶数量
|
||||||
var firstVisit = taskList.FirstOrDefault();
|
var thisNewLesionsCount = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault().IsNullOrEmptyReturn0();
|
||||||
if (baseLineTask != null && baseLineTask.StudyTime != null)
|
// 历史有PD
|
||||||
{
|
if (pdTaskList.Count() > 0&& thisNewLesionsCount >= 2)
|
||||||
//基线后第二个访视(应满足访视间隔6周以上,否则顺延)
|
|
||||||
var secondVisit = taskList.Where(x => x.VisitTaskNum >= 2 && x.StudyTime >= baseLineTask.StudyTime.Value.AddDays(42)).FirstOrDefault();
|
|
||||||
if (secondVisit != null)
|
|
||||||
{
|
|
||||||
|
|
||||||
var firstTaskNewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == firstVisit!.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
|
||||||
|
|
||||||
// 第二访视数量
|
|
||||||
var secondVisitLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
|
||||||
|
|
||||||
// 判断是否是当前访视 当前访视还未入库
|
|
||||||
if (secondVisit.VisitTaskId == inDto.VisitTaskId)
|
|
||||||
{
|
|
||||||
secondVisitLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (firstTaskNewLesionsCount >= 2 && secondVisitLesionsCount >= 2)
|
|
||||||
{
|
{
|
||||||
|
// 满足以下所有条件:1、前序访视已经确定为PD;2、当前访视,新病灶≥2个;
|
||||||
isPDResult = true;
|
isPDResult = true;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (lastTask.VisitTaskNum >= 2m)
|
|
||||||
{
|
{
|
||||||
|
// 满足以下所有条件:1、前序访视没有评估为PD,2、前一个访视:新病灶计数≥2个;3、当前访视:新病灶2个:4.前后2个访视间隔6周以上。
|
||||||
|
|
||||||
var lastTasknewLesionsCount = (await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync()).IsNullOrEmptyReturn0();
|
var lastStudyDate = taskList.Where(x=>x.VisitTaskId==lastTask.VisitTaskId).Select(x=>x.StudyTime).FirstOrDefault();
|
||||||
var thisVisitTaskNewLesionsCount = (inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.NewLesionsCount).Select(x => x.Answer).FirstOrDefault()).IsNullOrEmptyReturn0();
|
var thisStudyDate= taskList.Where(x => x.VisitTaskId == inDto.VisitTaskId).Select(x => x.StudyTime).FirstOrDefault();
|
||||||
|
|
||||||
var thisVisitTask = taskList.LastOrDefault();
|
var lastNewLesionsStr=await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == newLesionsCountQuestionId).Select(x => x.Answer).FirstOrDefaultAsync();
|
||||||
|
|
||||||
if (thisVisitTask != null && thisVisitTask.StudyTime != null && lastTask.StudyTime != null &&
|
var lastNewLesionsCount = lastNewLesionsStr.IsNullOrEmptyReturn0();
|
||||||
|
if (lastStudyDate != null && thisStudyDate != null)
|
||||||
|
|
||||||
lastTasknewLesionsCount >= 2 && thisVisitTaskNewLesionsCount >= 2 && lastTask.StudyTime.Value.AddDays(42) <= thisVisitTask.StudyTime)
|
|
||||||
{
|
{
|
||||||
isPDResult = true;
|
if (lastNewLesionsCount >= 2 && thisNewLesionsCount >= 2 && thisStudyDate.Value > lastStudyDate.Value.AddDays(42))
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (isPDResult)
|
|
||||||
{
|
{
|
||||||
var visitForTumorEvaluationQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.QuestionId).FirstOrDefault();
|
var visitForTumorEvaluationQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
|
||||||
if (lastTask != null)
|
|
||||||
{
|
|
||||||
await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == visitForTumorEvaluationQuestionId, x => new ReadingTaskQuestionAnswer
|
await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == visitForTumorEvaluationQuestionId, x => new ReadingTaskQuestionAnswer
|
||||||
{
|
{
|
||||||
Answer = VisitTumorEvaluation.PD.GetEnumInt(),
|
PCWGInterimAnswer = VisitTumorEvaluation.PD.GetEnumInt(),
|
||||||
|
});
|
||||||
|
isPDResult = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isPDResult)
|
||||||
|
{
|
||||||
|
if (lastTask != null)
|
||||||
|
{
|
||||||
|
// 如果不是PD 需要把上一次的PD改为NoPD
|
||||||
|
var visitForTumorEvaluationQuestionId = inDto.QuestionInfo.Where(x => x.QuestionType == QuestionType.SiteVisitForTumorEvaluation).Select(x => x.QuestionId).FirstOrDefault();
|
||||||
|
|
||||||
|
var lastAnswer = await _readingTaskQuestionAnswerRepository.Where(x => x.VisitTaskId == lastTask.VisitTaskId && x.ReadingQuestionTrialId == visitForTumorEvaluationQuestionId).FirstOrDefaultAsync();
|
||||||
|
if (lastAnswer != null)
|
||||||
|
{
|
||||||
|
await _readingTaskQuestionAnswerRepository.BatchUpdateNoTrackingAsync(x => x.Id == lastAnswer.Id, x => new ReadingTaskQuestionAnswer
|
||||||
|
{
|
||||||
|
PCWGInterimAnswer = string.Empty,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return isPDResult;
|
return isPDResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,4 +34,9 @@ public class ReadingTaskQuestionAnswer : BaseAddAuditEntity
|
||||||
public string GlobalChangeAnswer { get; set; } = string.Empty;
|
public string GlobalChangeAnswer { get; set; } = string.Empty;
|
||||||
[Comment("全局阅片是否修改")]
|
[Comment("全局阅片是否修改")]
|
||||||
public bool IsGlobalChange { get; set; } = false;
|
public bool IsGlobalChange { get; set; } = false;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PCWG 临时Answer
|
||||||
|
/// </summary>
|
||||||
|
public string PCWGInterimAnswer { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using IRaCIS.Core.Domain.Models;
|
using Hangfire.Storage.Monitoring;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
|
|
@ -2814,7 +2815,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
||||||
|| _userInfo.RequestUrl.Contains("SaveTaskQuestion")
|
|| _userInfo.RequestUrl.Contains("SaveTaskQuestion")
|
||||||
|| _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions"
|
|| _userInfo.RequestUrl == "ReadingImageTask/saveVisitTaskQuestions"
|
||||||
|| _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer"
|
|| _userInfo.RequestUrl == "ReadingImageTask/changeCalculationAnswer"
|
||||||
|| _userInfo.RequestUrl == "ReadingImageTask/submitTaskAdditionalQuestion")
|
|| _userInfo.RequestUrl == "ReadingImageTask/submitTaskAdditionalQuestion"
|
||||||
|
|| _userInfo.RequestUrl == "ReadingImageTask/changeReportAnswer")
|
||||||
{
|
{
|
||||||
var type = AuditOpt.Add;
|
var type = AuditOpt.Add;
|
||||||
|
|
||||||
|
|
@ -2829,12 +2831,17 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
||||||
//具体的答案
|
//具体的答案
|
||||||
var taskQuestionAnswerList = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(t => t.Entity as ReadingTaskQuestionAnswer).ToList();
|
var taskQuestionAnswerList = entitys.Where(x => x.Entity.GetType() == typeof(ReadingTaskQuestionAnswer)).Select(t => t.Entity as ReadingTaskQuestionAnswer).ToList();
|
||||||
|
|
||||||
|
var taskIds = taskQuestionAnswerList.Select(x => x.VisitTaskId).Distinct().ToList();
|
||||||
|
|
||||||
|
var taskList=await _dbContext.VisitTask.Where(t => taskIds.Contains(t.Id)).ToListAsync();
|
||||||
|
|
||||||
//获取问题名称 组合成数组
|
//获取问题名称 组合成数组
|
||||||
var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => taskQuestionAnswerList.Select(k => k.ReadingQuestionTrialId).Contains(t.Id)).IgnoreQueryFilters().Select(t => new
|
var quesionList = await _dbContext.ReadingQuestionTrial.Where(t => taskQuestionAnswerList.Select(k => k.ReadingQuestionTrialId).Contains(t.Id)).IgnoreQueryFilters().Select(t => new
|
||||||
{
|
{
|
||||||
QuestionName = t.QuestionName,
|
QuestionName = t.QuestionName,
|
||||||
t.QuestionEnName,
|
t.QuestionEnName,
|
||||||
QuestionId = t.Id,
|
QuestionId = t.Id,
|
||||||
|
t.QuestionType,
|
||||||
t.DictionaryCode,
|
t.DictionaryCode,
|
||||||
t.Unit,
|
t.Unit,
|
||||||
t.CustomUnit,
|
t.CustomUnit,
|
||||||
|
|
@ -2899,11 +2906,69 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var visitTaskId = taskList.OrderByDescending(x => x.VisitTaskNum).FirstOrDefault()?.Id;
|
||||||
|
|
||||||
|
var objList = new List<object>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var questionAnswerList = taskQuestionAnswerList.Join(quesionList,
|
||||||
|
t => t.ReadingQuestionTrialId,
|
||||||
|
u => u.QuestionId,
|
||||||
|
(t, u) =>
|
||||||
|
new QuestionAnswerDto()
|
||||||
|
{
|
||||||
|
TaskName = taskList.FirstOrDefault(k => k.Id == t.VisitTaskId)?.TaskName,
|
||||||
|
VisitTaskNum = taskList.FirstOrDefault(k => k.Id == t.VisitTaskId)?.VisitTaskNum,
|
||||||
|
Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer),
|
||||||
|
PCWGInterimAnswer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.PCWGInterimAnswer),
|
||||||
|
DictionaryCode= u.DictionaryCode,
|
||||||
|
ReadingQuestionTrialId= t.ReadingQuestionTrialId,
|
||||||
|
QuestionName= u.QuestionName,
|
||||||
|
QuestionEnName= u.QuestionEnName,
|
||||||
|
VisitTaskId= t.VisitTaskId,
|
||||||
|
ShowOrder= u.ShowOrder,
|
||||||
|
}).OrderBy(t => t.VisitTaskNum).ThenBy(t => t.ShowOrder).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
if (questionAnswerList.Any(x => x.PCWGInterimAnswer != string.Empty))
|
||||||
|
{
|
||||||
|
var daysBetween = quesionList.Where(x => x.QuestionType == QuestionType.DaysBetween).FirstOrDefault();
|
||||||
|
|
||||||
|
var baseLineTask = taskList.FirstOrDefault(x => x.VisitTaskNum == 0);
|
||||||
|
if (daysBetween != null && baseLineTask != null)
|
||||||
|
{
|
||||||
|
foreach (var item in questionAnswerList)
|
||||||
|
{
|
||||||
|
if (item.VisitTaskId == baseLineTask.Id && item.ReadingQuestionTrialId == daysBetween.QuestionId && item.PCWGInterimAnswer == "-1")
|
||||||
|
{
|
||||||
|
item.PCWGInterimAnswer = "NA";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var item in taskList.OrderBy(x => x.VisitTaskNum))
|
||||||
|
{
|
||||||
|
var obj = new
|
||||||
|
{
|
||||||
|
TaskBlindName = item.TaskBlindName,
|
||||||
|
VisitQuestionAnswerList = questionAnswerList.Where(y=>y.VisitTaskId==item.Id).ToList(),
|
||||||
|
};
|
||||||
|
objList.Add(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await InsertInspection<ReadingTaskQuestionAnswer>(cloneEntity, type, x => new InspectionConvertDTO()
|
await InsertInspection<ReadingTaskQuestionAnswer>(cloneEntity, type, x => new InspectionConvertDTO()
|
||||||
{
|
{
|
||||||
VisitTaskId = x.VisitTaskId,
|
VisitTaskId = visitTaskId,
|
||||||
|
|
||||||
ObjectRelationParentId = x.VisitTaskId,
|
ObjectRelationParentId = visitTaskId,
|
||||||
|
|
||||||
TrialReadingCriterionId = x.ReadingQuestionCriterionTrialId,
|
TrialReadingCriterionId = x.ReadingQuestionCriterionTrialId,
|
||||||
|
|
||||||
|
|
@ -2911,19 +2976,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
||||||
|
|
||||||
}, new
|
}, new
|
||||||
{
|
{
|
||||||
QuestionAnswerList = taskQuestionAnswerList.Join(quesionList,
|
GlobalAnswerList = objList,
|
||||||
t => t.ReadingQuestionTrialId,
|
QuestionAnswerList = questionAnswerList,
|
||||||
u => u.QuestionId,
|
|
||||||
(t, u) =>
|
|
||||||
new
|
|
||||||
{
|
|
||||||
Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer),
|
|
||||||
u.DictionaryCode,
|
|
||||||
u.QuestionName,
|
|
||||||
u.QuestionEnName,
|
|
||||||
u.ShowOrder
|
|
||||||
}).OrderBy(t => t.ShowOrder).ToList()
|
|
||||||
,
|
|
||||||
TableQuestionAndAnswerList = tableQuesionAndAnswerList
|
TableQuestionAndAnswerList = tableQuesionAndAnswerList
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,19 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
||||||
public string UnitName { get; set; }
|
public string UnitName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class QuestionAnswerDto
|
||||||
|
{
|
||||||
|
public string TaskName { get; set; }
|
||||||
|
public decimal? VisitTaskNum { get; set; }
|
||||||
|
public string Answer { get; set; }
|
||||||
|
public string PCWGInterimAnswer { get; set; }
|
||||||
|
public string DictionaryCode { get; set; }
|
||||||
|
public Guid ReadingQuestionTrialId { get; set; }
|
||||||
|
public string QuestionName { get; set; }
|
||||||
|
public string QuestionEnName { get; set; }
|
||||||
|
public Guid VisitTaskId { get; set; }
|
||||||
|
public int ShowOrder { get; set; }
|
||||||
|
}
|
||||||
public class VisitTaskAuditingDto
|
public class VisitTaskAuditingDto
|
||||||
{
|
{
|
||||||
public string UserRealName { get; set; }
|
public string UserRealName { get; set; }
|
||||||
|
|
|
||||||
19201
IRaCIS.Core.Infra.EFCore/Migrations/20250915081539_PCWGFinalAnswer.Designer.cs
generated
Normal file
19201
IRaCIS.Core.Infra.EFCore/Migrations/20250915081539_PCWGFinalAnswer.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,30 @@
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class PCWGFinalAnswer : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "PCWGInterimAnswer",
|
||||||
|
table: "ReadingTaskQuestionAnswer",
|
||||||
|
type: "nvarchar(400)",
|
||||||
|
maxLength: 400,
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "PCWGInterimAnswer",
|
||||||
|
table: "ReadingTaskQuestionAnswer");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -7378,6 +7378,11 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
.HasColumnType("bit")
|
.HasColumnType("bit")
|
||||||
.HasComment("全局阅片是否修改");
|
.HasComment("全局阅片是否修改");
|
||||||
|
|
||||||
|
b.Property<string>("PCWGInterimAnswer")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(400)
|
||||||
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
b.Property<Guid>("ReadingQuestionCriterionTrialId")
|
b.Property<Guid>("ReadingQuestionCriterionTrialId")
|
||||||
.HasColumnType("uniqueidentifier")
|
.HasColumnType("uniqueidentifier")
|
||||||
.HasComment("项目问题标准Id");
|
.HasComment("项目问题标准Id");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue