Merge branch 'Uat_IRC_Net10' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Uat_IRC_Net10
commit
1f97243482
|
|
@ -1729,6 +1729,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
|
||||
public bool IsGetAll { get; set; } = false;
|
||||
|
||||
public bool IsGetJudge { get; set; } = false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue