Merge branch 'Uat_IRC_Net10' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Uat_IRC_Net10

Uat_IRC_Net10
hang 2026-08-18 13:21:49 +08:00
commit 1f97243482
4 changed files with 43 additions and 16 deletions

View File

@ -1729,6 +1729,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public bool IsGetAll { get; set; } = false;
public bool IsGetJudge { get; set; } = false;
}

View File

@ -103,10 +103,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
public async Task<IResponseOutput> SetTrialQuestionVisitJudgeRule(SetTrialQuestionVisitJudgeRuleInDto inDto)
{
var questionIds = await _readingQuestionTrialRepository
.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && x.IsJudgeQuestion)
.Select(x => x.Id)
.ToListAsync();
var questionIds = inDto.QuestionList.Select(x => x.ReadingQuestionTrialId).ToList();
await _readingQuestionVisitJudgeRuleRepository.BatchDeleteNoTrackingAsync(x =>
x.VisitNum == inDto.VisitNum && questionIds.Contains(x.ReadingQuestionId));
@ -783,6 +780,7 @@ namespace IRaCIS.Core.Application.Service
if (inDto.TrialReadingCriterionId != null)
{
return await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId)
.WhereIf(inDto.IsGetJudge,x=>x.IsJudgeQuestion)
.WhereIf(!inDto.IsGetAll, x => x.DataSource == DataSources.Automatic && x.Type == "number")
.Select(x => new CalculateRelationDto()
{

View File

@ -26,6 +26,7 @@ namespace IRaCIS.Core.Application.Service
public partial class ReadingImageTaskService(
IRepository<NoneDicomStudy> _noneDicomStudyRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<VisitStage> _visitStageRepository,
IRepository<Trial> _trialRepository,
IRepository<TaskInstance> _taskInstanceRepository,
IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository,

View File

@ -14,6 +14,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using MimeKit;
using Newtonsoft.Json;
using System.Linq.Dynamic.Core;
namespace IRaCIS.Core.Application.Service
{
@ -270,19 +271,44 @@ namespace IRaCIS.Core.Application.Service
private async Task<List<ReadingQuestionTrial>> GetJudgeDisplayQuestions(Guid trialReadingCriterionId, decimal visitNum, JudgeRule judgeRule)
{
var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion)
.Where(x=>x.ShowQuestion== ShowQuestion.Show)
.OrderBy(x => x.ShowOrder).ToListAsync();
var questionIds = questionList.Select(x => x.Id).ToList();
var visitJudgeRules = judgeRule == JudgeRule.Difference
? await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && (x.VisitNum == visitNum || x.VisitNum == -1)).ToListAsync()
: new List<ReadingQuestionVisitJudgeRule>();
.WhereIf(visitNum == 0, x => x.LimitShow != LimitShow.FollowShow)
.WhereIf(visitNum != 0, x => x.LimitShow != LimitShow.BaseLineShow)
.Where(x=>x.LimitShow!=LimitShow.ExcludeSomeVisits||x.ExcludeShowVisitList.Contains(visitNum))
.ToListAsync();
return questionList.Where(x => !x.ExcludeShowVisitList.Contains(visitNum))
.Where(x => judgeRule == JudgeRule.Consistent
? x.JudgeType != JudgeTypeEnum.NotApplicable
: (visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == visitNum)
?? visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == -1))?.JudgeType != JudgeTypeEnum.NotApplicable)
.ToList();
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == trialReadingCriterionId).FirstNotNullAsync();
var questionIds = questionList.Select(x => x.Id).ToList();
var visitJudgeRules=new List<ReadingQuestionVisitJudgeRule>();
if (judgeRule == JudgeRule.Difference)
{
if (await _visitStageRepository.AnyAsync(x => x.TrialId == trialCriterion.TrialId && x.VisitNum == visitNum))
{
visitJudgeRules = await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && x.VisitNum == visitNum).ToListAsync();
}
else
{
visitJudgeRules = await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && x.VisitNum == -1).ToListAsync();
}
}
else
{
visitJudgeRules = questionList.Select(x => new ReadingQuestionVisitJudgeRule()
{
ReadingQuestionId = x.Id,
AnswerCombination = JsonConvert.DeserializeObject<List<AnswerCombinationDto>>(x.AnswerCombination.IsNullOrEmpty() ? "[]" : x.AnswerCombination),
AnswerGroup = JsonConvert.DeserializeObject<List<string>>(x.AnswerGroup.IsNullOrEmpty() ? "[]" : x.AnswerGroup),
JudgeDifferenceType = x.JudgeDifferenceType,
JudgeType = x.JudgeType,
JudgeDifferenceValue = x.JudgeDifferenceValue,
}).ToList();
}
return questionList
.Where(x => visitJudgeRules.FirstOrDefault(rule => rule.ReadingQuestionId == x.Id && rule.VisitNum == -1)?.JudgeType != JudgeTypeEnum.NotApplicable)
.ToList();
}
/// <summary>