添加PCWG临时答案
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
he 2025-09-15 16:17:35 +08:00
parent bab20666af
commit 359a6bf602
7 changed files with 19290 additions and 3 deletions

View File

@ -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.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()
{ {

View File

@ -353,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();
@ -1159,7 +1167,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
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();
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; isPDResult = true;
} }
@ -1167,6 +1175,26 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
} }
}
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;
} }

View File

@ -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;
} }

View File

@ -2922,6 +2922,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
TaskName = taskList.FirstOrDefault(k => k.Id == t.VisitTaskId)?.TaskName, TaskName = taskList.FirstOrDefault(k => k.Id == t.VisitTaskId)?.TaskName,
VisitTaskNum = taskList.FirstOrDefault(k => k.Id == t.VisitTaskId)?.VisitTaskNum, VisitTaskNum = taskList.FirstOrDefault(k => k.Id == t.VisitTaskId)?.VisitTaskNum,
Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer), Answer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.Answer),
PCWGInterimAnswer = Translationunit(u.AnswerType, u.Unit, u.CustomUnit, unitDataList, t.PCWGInterimAnswer),
u.DictionaryCode, u.DictionaryCode,
u.QuestionName, u.QuestionName,
u.QuestionEnName, u.QuestionEnName,

File diff suppressed because it is too large Load Diff

View File

@ -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");
}
}
}

View File

@ -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");