diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index bda824039..fca4c2296 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -441,7 +441,7 @@
-
+
如果是基线退回 影响附加评估标准 是否参与评估
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
index 105f717c7..bb77a3871 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskHelpeService.cs
@@ -349,15 +349,17 @@ namespace IRaCIS.Core.Application.Service
bool isCanEditUrgentState = taskUrgentType == TaskUrgentType.EnrollmentConfirm || taskUrgentType == TaskUrgentType.PDProgress ? false : true;
+ //为防止脏数据 这里也多判断一次
+ var existCurrentVisitTaskList = _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId
+ && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.TaskState == TaskState.Effect
+ && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.SourceSubjectVisitId == subjectVisit.Id).ToList();
+
if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Double)
{
- //未防止脏数据 这里也多判断一次
- var existCurrentVisitTaskList = _visitTaskRepository.Where(t => t.TrialId == trialId && t.SubjectId == subjectVisit.SubjectId
- && t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.TaskState == TaskState.Effect
- && t.TaskAllocationState == TaskAllocationState.NotAllocate && t.DoctorUserId == null && t.SourceSubjectVisitId == subjectVisit.Id).ToList();
+
- VisitTask? task1 = null;
- VisitTask? task2 = null;
+ VisitTask? task1 = existCurrentVisitTaskList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm1);
+ VisitTask? task2 = existCurrentVisitTaskList.FirstOrDefault(t => t.ArmEnum == Arm.DoubleReadingArm2);
if (!existCurrentVisitTaskList.Any(t => t.ArmEnum == Arm.DoubleReadingArm1))
{
@@ -449,29 +451,37 @@ namespace IRaCIS.Core.Application.Service
else if (trialReadingCriterionConfig.ReadingType == ReadingMethod.Single)
{
- var singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
+ VisitTask? singleTask = existCurrentVisitTaskList.FirstOrDefault(t => t.ArmEnum == Arm.SingleReadingArm);
+
+ if (!existCurrentVisitTaskList.Any(t => t.ArmEnum == Arm.SingleReadingArm))
{
- TrialId = trialId,
- SubjectId = subjectVisit.SubjectId,
- IsUrgent = subjectVisit.IsUrgent,
- TaskBlindName = blindTaskName,
- TaskName = subjectVisit.VisitName,
- VisitTaskNum = subjectVisit.VisitNum,
- TaskUrgentType = taskUrgentType,
- IsCanEditUrgentState = isCanEditUrgentState,
- //CheckPassedTime = subjectVisit.CheckPassedTime,
- ArmEnum = Arm.SingleReadingArm, //特殊
- Code = currentMaxCodeInt + 1,
- SourceSubjectVisitId = subjectVisit.Id,
- TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
- ReadingCategory = ReadingCategory.Visit,
- TrialReadingCriterionId = trialReadingCriterionConfig.TrialReadingCriterionId,
- IsNeedClinicalDataSign = isNeedClinicalDataSign,
- IsClinicalDataSign = isClinicalDataSign
- });
+ currentMaxCodeInt = currentMaxCodeInt + 1;
+
+ singleTask = await _visitTaskRepository.AddAsync(new VisitTask()
+ {
+ TrialId = trialId,
+ SubjectId = subjectVisit.SubjectId,
+ IsUrgent = subjectVisit.IsUrgent,
+ TaskBlindName = blindTaskName,
+ TaskName = subjectVisit.VisitName,
+ VisitTaskNum = subjectVisit.VisitNum,
+ TaskUrgentType = taskUrgentType,
+ IsCanEditUrgentState = isCanEditUrgentState,
+ //CheckPassedTime = subjectVisit.CheckPassedTime,
+ ArmEnum = Arm.SingleReadingArm, //特殊
+ Code = currentMaxCodeInt + 1,
+ SourceSubjectVisitId = subjectVisit.Id,
+ TaskCode = AppSettings.GetCodeStr(currentMaxCodeInt + 1, nameof(VisitTask)),
+ ReadingCategory = ReadingCategory.Visit,
+ TrialReadingCriterionId = trialReadingCriterionConfig.TrialReadingCriterionId,
+ IsNeedClinicalDataSign = isNeedClinicalDataSign,
+ IsClinicalDataSign = isClinicalDataSign
+ });
+ }
+
+
- currentMaxCodeInt = currentMaxCodeInt + 1;
_provider.Set($"{trialId}_{StaticData.CacheKey.TaskMaxCode}", currentMaxCodeInt, TimeSpan.FromMinutes(30));
@@ -726,9 +736,9 @@ namespace IRaCIS.Core.Application.Service
foreach (var trialReadingCriterionConfig in trialReadingCriterionConfigList)
{
- var subjectCriteriaEvaluation = _subjectCriteriaEvaluationRepository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.IsJoinEvaluation && t.SubjectId == subjectVisit.SubjectId).FirstOrDefault();
+ //var subjectCriteriaEvaluation = _subjectCriteriaEvaluationRepository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionConfig.TrialReadingCriterionId && t.IsJoinEvaluation && t.SubjectId == subjectVisit.SubjectId).FirstOrDefault();
- if (trialReadingCriterionConfig.IsAutoCreate == true || (trialReadingCriterionConfig.IsAutoCreate == false && subjectCriteriaEvaluation != null && subjectCriteriaEvaluation?.IsJoinEvaluation == true))
+ if (trialReadingCriterionConfig.IsAutoCreate == true /*|| (trialReadingCriterionConfig.IsAutoCreate == false && subjectCriteriaEvaluation != null && subjectCriteriaEvaluation?.IsJoinEvaluation == true)*/)
{
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index dbd5048bd..f575d78d0 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -1064,11 +1064,19 @@ namespace IRaCIS.Core.Application.Service.Allocation
//Expression> visitTaskLambda = x => x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId;
+ var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
+
var visitGroupQuery = _visitTaskRepository.Where(x => x.TrialId == inDto.TrialId && x.DoctorUserId == _userInfo.Id
&& x.TaskState == TaskState.Effect /*&& x.TrialReadingCriterionId== inDto.TrialReadingCriterionId*/)
+ .WhereIf(critrion.IsAutoCreate==false, t=>t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.ImageFilterState != ImageFilterState.Finished) ?
+ t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Min(t => t.SubjectVisit.VisitNum) : true)
- //.Where(t => t.VisitTaskNum < t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) )
- .Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum < t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true)
+ .Where(t => t.TrialReadingCriterion.IsAutoCreate == false && t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(t => t.ImageFilterState != ImageFilterState.Finished) ?
+ t.VisitTaskNum <= t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Min(t => t.SubjectVisit.VisitNum) : true)
+
+
+
+ .Where(t => t.Subject.SubjectVisitList.Any(t => t.CheckState != CheckStateEnum.CVPassed) ? t.VisitTaskNum <=t.Subject.SubjectVisitList.Where(t => t.CheckState != CheckStateEnum.CVPassed).Min(t => t.VisitNum) : true)
//满足前序访视不存在 需要签署但是未签署 sql 相当复杂 同时想查询所有未读的统计数字 就无法统计 byzhouhang
//但是加字段 IsFrontTaskNeedSignButNotSign 那么签名临床数据的时候,要对该subject 该标准的有效的任务 这个字段需要在签名的时候维护 采取这种方式 统计数字灵活
//.Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum))
@@ -1541,7 +1549,6 @@ namespace IRaCIS.Core.Application.Service.Allocation
//执行类似一致性核查回退流程
await VisitBackAsync(origenalTask.SourceSubjectVisitId);
- await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask);
}
else
{
@@ -1579,6 +1586,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
// influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
//});
+ await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask, influenceTaskList.Where(t => t.Id != origenalTask.Id).Where(t => t.SourceSubjectVisitId != null).Select(t => (Guid)t.SourceSubjectVisitId).Distinct().ToList());
+
await SetReReadingOrBackInfluenceAnalysisAsync(origenalTask.SubjectId);
await SetMedicalReviewInvalidAsync(influenceTaskList);
@@ -1785,7 +1794,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
await SetMedicalReviewInvalidAsync(influenceTaskList, false);
- await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask);
+ await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask ,influenceTaskList.Where(t => t.Id != origenalTask.Id).Where(t => t.SourceSubjectVisitId != null).Select(t => (Guid)t.SourceSubjectVisitId).Distinct().ToList());
trakingOrigenalTask?.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = influenceTask.Id, OptType = ReReadingOrBackOptType.Return });
}
@@ -2213,6 +2222,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
// influenceTask.TaskInfluenceList.Add(new TaskInfluence() { InfluenceTaskId = t.Id });
//});
+ await InfluenceAddtioncalEvaluationCritrionAsync(task, influenceTaskList.Where(t => t.Id != task.Id).Where(t => t.SourceSubjectVisitId != null).Select(t => (Guid)t.SourceSubjectVisitId).Distinct().ToList());
+
await SetReReadingOrBackInfluenceAnalysisAsync(influenceTask.SubjectId);
await SetMedicalReviewInvalidAsync(influenceTaskList);
@@ -2339,7 +2350,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
- await InfluenceAddtioncalEvaluationCritrionAsync(task);
+
await _visitTaskRepository.SaveChangesAsync();
@@ -2352,7 +2363,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
/// 如果是基线退回 影响附加评估标准 是否参与评估
///
///
- private async Task InfluenceAddtioncalEvaluationCritrionAsync(VisitTask task)
+ private async Task InfluenceAddtioncalEvaluationCritrionAsync(VisitTask task,List otherVisitIdList)
{
if (_subjectVisitRepository.Any(t => t.Id == task.SourceSubjectVisitId && t.IsBaseLine))
@@ -2368,6 +2379,32 @@ namespace IRaCIS.Core.Application.Service.Allocation
//删除筛选的序列数据
await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectVisit.SubjectId == task.SubjectId);
}
+ else
+ {
+ //当前访视筛选状态重置,任务生成状态重置
+ if(task.SourceSubjectVisitId != null)
+ {
+ await _subjectCriteriaEvaluationVisitFilterRepository.UpdatePartialFromQueryAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectVisit.SubjectId == task.SubjectId && t.SubjectVisitId == task.SourceSubjectVisitId,
+ t => new SubjectCriteriaEvaluationVisitFilter()
+ {
+ ImageFilterState = ImageFilterState.None,
+ ImageDeterminationResultState = ImageDeterminationResultState.None,
+ IsGeneratedTask = false
+ });
+
+ //删除序列数据
+ await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectVisit.SubjectId == task.SubjectId && t.SubjectVisitId == task.SourceSubjectVisitId);
+ }
+
+
+ //BM后续访视 ,筛选状态不变,任务生成状态重置(实际该访视任务状态 可能是重阅重置了或者失效了,需要后续生成,或者取消分配了,需要后续重新分配)
+ await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectVisit.SubjectId == task.SubjectId && otherVisitIdList.Contains(t.SubjectVisitId),
+ t => new SubjectCriteriaEvaluationVisitFilter()
+ {
+ IsGeneratedTask = false
+ });
+ }
+
}
//包括临床数据签名状态
diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs
index fa9b9cfc7..81b24a7be 100644
--- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs
@@ -135,7 +135,7 @@ namespace IRaCIS.Core.Application.Service
{
QuestionId = u.ReadingQuestionTrialId,
Answer = u.Answer,
- ArmEnum=u.VisitTask.ArmEnum,
+ ArmEnum = u.VisitTask.ArmEnum,
FinalTranslateDictionaryCode = u.ReadingQuestionTrial.DictionaryCode
}).ToList()
@@ -376,18 +376,14 @@ namespace IRaCIS.Core.Application.Service
foreach (var item in list)
{
- await _subjectCriteriaEvaluationVisitStudyFilterRepository.AddAsync(new SubjectCriteriaEvaluationVisitStudyFilter { SubjectVisitId = subjectVisitId, SeriesId = item.SeriesId, TrialReadingCriterionId = trialReadingCriterionId, StudyId = item.StudyId, IsConfirmed = true,IsReading=true });
+ await _subjectCriteriaEvaluationVisitStudyFilterRepository.AddAsync(new SubjectCriteriaEvaluationVisitStudyFilter { SubjectVisitId = subjectVisitId, SeriesId = item.SeriesId, TrialReadingCriterionId = trialReadingCriterionId, StudyId = item.StudyId, IsConfirmed = true, IsReading = true });
}
//自动生成任务
- if (!await _repository.AnyAsync(t => t.SourceSubjectVisitId == subjectVisitId && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect))
- {
- var trialId = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.TrialId).FirstOrDefault();
-
- await _IVisitTaskHelpeService.BaseCritrionGenerateVisitTask(trialId, trialReadingCriterionId, true, new List() { subjectVisitId });
- }
+ var trialId = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.TrialId).FirstOrDefault();
+ await _IVisitTaskHelpeService.BaseCritrionGenerateVisitTask(trialId, trialReadingCriterionId, true, new List() { subjectVisitId });
}
}
@@ -430,7 +426,7 @@ namespace IRaCIS.Core.Application.Service
TrialId = subjectVisit.TrialId,
SubjectId = subjectVisit.SubjectId,
SubjectCode = subjectVisit.Subject.Code,
- SiteId=subjectVisit.SiteId,
+ SiteId = subjectVisit.SiteId,
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
LatestScanDate = subjectVisit.LatestScanDate,
EarliestScanDate = subjectVisit.LatestScanDate,
@@ -647,7 +643,7 @@ namespace IRaCIS.Core.Application.Service
influenceTask.OptType = influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned ? ReReadingOrBackOptType.Return : ReReadingOrBackOptType.Abandon;
}
}
-
+
return (list, new { IsIRAppyTaskInfluenced = isIRAppyTaskInfluenced });
}
@@ -752,17 +748,32 @@ namespace IRaCIS.Core.Application.Service
//将筛选的访视 序列状态重置
- //重置访视数据
- await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId),
+
+ //当前申请影像回退的访视 筛选状态重置,任务生成状态重置
+
+
+ var otherVisitIdList = subjectVisitIdLsit.Where(t => t != command.SubjectVisitId).ToList();
+
+ await _subjectCriteriaEvaluationVisitFilterRepository.UpdatePartialFromQueryAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && t.SubjectVisitId == command.SubjectVisitId,
t => new SubjectCriteriaEvaluationVisitFilter()
{
ImageFilterState = ImageFilterState.None,
ImageDeterminationResultState = ImageDeterminationResultState.None,
- IsGeneratedTask=false
+ IsGeneratedTask = false
});
//删除序列数据
- await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId));
+ await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.SubjectVisitId == command.SubjectVisitId);
+
+ //BM后续访视 ,筛选状态不变,任务生成状态重置(实际该访视任务状态 可能是重阅重置了或者失效了,需要后续生成,或者取消分配了,需要后续重新分配)
+ await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && otherVisitIdList.Contains(t.SubjectVisitId),
+ t => new SubjectCriteriaEvaluationVisitFilter()
+ {
+ IsGeneratedTask = false
+ });
+
+
+
await _visitTaskRepository.SaveChangesAsync();
}
diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs
index 7e341827a..7155d8ed6 100644
--- a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs
+++ b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs
@@ -25,15 +25,20 @@ namespace IRaCIS.Core.Application.Triggers
private readonly IRepository _SubjectCriteriaEvaluationVisitFilterRepository;
+
+
private readonly ISubjectCriteriaEvaluationService _subjectCriteriaEvaluationService;
+ private readonly IRepository _subjectCriteriaEvaluationRepository;
+
public SubjectVisitCheckPassedTrigger(IRepository subjectRepository,
IRepository clinicalDataTrialSetRepository,
IRepository readingClinicalDataRepository,
IVisitTaskHelpeService visitTaskHelpeService, IRepository trialReadingCriterionRepository,
- IRepository subjectCriteriaEvaluationVisitFilterRepository, ISubjectCriteriaEvaluationService subjectCriteriaEvaluationService)
+ IRepository subjectCriteriaEvaluationVisitFilterRepository, ISubjectCriteriaEvaluationService subjectCriteriaEvaluationService
+ , IRepository subjectCriteriaEvaluationRepository)
{
-
+ _subjectCriteriaEvaluationRepository= subjectCriteriaEvaluationRepository;
_subjectRepository = subjectRepository;
_clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
_readingClinicalDataRepository = readingClinicalDataRepository;
@@ -66,7 +71,7 @@ namespace IRaCIS.Core.Application.Triggers
context.Entity.IsPMBackOrReReading = false;
//找到手动生成任务的标准
- var criterionList = await _trialReadingCriterionRepository.Where(t => t.IsAutoCreate == false && t.IsSigned == true).Select(t => new { t.Id, t.TrialId }).ToListAsync();
+ var criterionList = await _trialReadingCriterionRepository.Where(t => t.IsAutoCreate == false && t.IsSigned == true).Select(t => new { t.Id, t.TrialId,t.IsReadingTaskViewInOrder }).ToListAsync();
foreach (var criterion in criterionList)
{
@@ -75,7 +80,16 @@ namespace IRaCIS.Core.Application.Triggers
// await _SubjectCriteriaEvaluationVisitFilterRepository.AddAsync(new SubjectCriteriaEvaluationVisitFilter() { SubjectId = subjectVisit.SubjectId, SubjectVisitId = subjectVisit.Id, TrialReadingCriterionId = criterion.Id });
//}
- await _subjectCriteriaEvaluationService.AutoSubjectCriteriaEvaluationVisitFilter(subjectVisit.SubjectId, subjectVisit.Id, criterion.Id);
+ //如果参与评估,那么久对当前访视进行自动筛选
+ if( await _subjectCriteriaEvaluationRepository.AnyAsync(t=>t.SubjectId==subjectVisit.SubjectId && t.TrialReadingCriterionId==criterion.Id && t.IsJoinEvaluation))
+ {
+ await _subjectCriteriaEvaluationService.AutoSubjectCriteriaEvaluationVisitFilter(subjectVisit.SubjectId, subjectVisit.Id, criterion.Id);
+
+ }
+
+
+
+
}
await _visitTaskHelpeService.GenerateVisitTaskAsync(subjectVisit.TrialId, new List() { subjectVisit.Id }, true);
diff --git a/IRaCIS.Core.Domain/Allocation/VisitTask.cs b/IRaCIS.Core.Domain/Allocation/VisitTask.cs
index fb0fc11e9..728211e5e 100644
--- a/IRaCIS.Core.Domain/Allocation/VisitTask.cs
+++ b/IRaCIS.Core.Domain/Allocation/VisitTask.cs
@@ -120,6 +120,9 @@ namespace IRaCIS.Core.Domain.Models
public Subject Subject { get; set; }
+ [JsonIgnore]
+
+ public SubjectCriteriaEvaluationVisitFilter SubjectCriteriaEvaluationVisitFilter { get; set;}
[JsonIgnore]
public List TaskMedicalReviewList { get; set; }
diff --git a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs
index e5ec08770..baeef00f4 100644
--- a/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs
+++ b/IRaCIS.Core.Domain/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationVisitFilter.cs
@@ -7,6 +7,8 @@ using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
+using System.Collections.Generic;
+
namespace IRaCIS.Core.Domain.Models
{
///
@@ -17,6 +19,9 @@ namespace IRaCIS.Core.Domain.Models
{
[JsonIgnore]
+
+ public List SubjectCriterionTaskList { get; set; }
+ [JsonIgnore]
[ForeignKey("TrialReadingCriterionId")]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
[JsonIgnore]
diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs
index 2a901ed65..66a00fed3 100644
--- a/IRaCIS.Core.Domain/Visit/Subject.cs
+++ b/IRaCIS.Core.Domain/Visit/Subject.cs
@@ -29,6 +29,10 @@ namespace IRaCIS.Core.Domain.Models
[JsonIgnore]
public List SubjectCriteriaEvaluationList { get; set; }
+
+ [JsonIgnore]
+ public List SubjectCriteriaEvaluationVisitFilterList { get; set; }
+
[JsonIgnore]
public List SubjectAdditionalEvaluationResult { get; set; }
diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs
index 54171066f..2bfb1dbca 100644
--- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs
+++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs
@@ -35,4 +35,19 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
}
}
+
+ public class SubjectCriteriaEvaluationVisitFilterConfigration : IEntityTypeConfiguration
+ {
+
+
+ public void Configure(EntityTypeBuilder builder)
+ {
+ builder
+ .HasMany(s => s.SubjectCriterionTaskList)
+ .WithOne(c => c.SubjectCriteriaEvaluationVisitFilter)
+ .HasForeignKey(s => new { s.SubjectId, s.TrialReadingCriterionId })
+ .HasPrincipalKey(c => new { c.SubjectId, c.TrialReadingCriterionId });
+
+ }
+ }
}