修改附加评估提交
parent
bd028771b6
commit
c28fbf0093
|
@ -441,6 +441,12 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.InfluenceAddtioncalEvaluationCritrionAsync(IRaCIS.Core.Domain.Models.VisitTask)">
|
||||||
|
<summary>
|
||||||
|
如果是基线退回 影响附加评估标准 是否参与评估
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetReReadingOrBackInfluenceTaskList(System.Guid,System.Boolean,System.Nullable{System.Guid})">
|
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.GetReReadingOrBackInfluenceTaskList(System.Guid,System.Boolean,System.Nullable{System.Guid})">
|
||||||
<summary>
|
<summary>
|
||||||
影响提示列表 重阅仅仅针对已完成的任务申请 退回针对的是未完成的(退回仅仅针对是访视类型的)
|
影响提示列表 重阅仅仅针对已完成的任务申请 退回针对的是未完成的(退回仅仅针对是访视类型的)
|
||||||
|
@ -2249,6 +2255,20 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.SubjectCriteriaEvaluationService.GetCriteriaVisitBackInfluenceTaskList(IRaCIS.Core.Application.ViewModel.CriteriaVisitBackCommand)">
|
||||||
|
<summary>
|
||||||
|
附加评估标准 PM 退回某一访视 影响任务列表
|
||||||
|
</summary>
|
||||||
|
<param name="command"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.SubjectCriteriaEvaluationService.ConfirmBackCriteriaVisitTask(IRaCIS.Core.Application.ViewModel.CriteriaVisitBackCommand)">
|
||||||
|
<summary>
|
||||||
|
退回任务
|
||||||
|
</summary>
|
||||||
|
<param name="command"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalDataTrialSetAddOrEdit.ClinicalDataSetName">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ClinicalDataTrialSetAddOrEdit.ClinicalDataSetName">
|
||||||
<summary>
|
<summary>
|
||||||
名称
|
名称
|
||||||
|
@ -10482,7 +10502,7 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.FindChildQuestion(IRaCIS.Core.Application.Service.Reading.Dto.TrialReadQuestionData,System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.TrialReadQuestionData},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.TableQuestionTrial},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionAnswerInfo},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.TableAnsweRowInfo},System.Collections.Generic.List{IRaCIS.Core.Domain.Models.OrganInfo},System.Collections.Generic.List{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer})">
|
<member name="M:IRaCIS.Application.Services.ReadingImageTaskService.FindChildQuestion(IRaCIS.Core.Application.Service.Reading.Dto.TrialReadQuestionData,System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.TrialReadQuestionData},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.TableQuestionTrial},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.ReadingTableQuestionAnswerInfo},System.Collections.Generic.List{IRaCIS.Core.Application.Service.Reading.Dto.TableAnsweRowInfo},System.Collections.Generic.List{IRaCIS.Core.Domain.Models.OrganInfo},System.Collections.Generic.List{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
获取子元素
|
获取子元素
|
||||||
</summary>
|
</summary>
|
||||||
|
|
|
@ -42,10 +42,13 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
private readonly IRepository<VisitTaskReReading> _visitTaskReReadingRepository;
|
private readonly IRepository<VisitTaskReReading> _visitTaskReReadingRepository;
|
||||||
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
|
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
|
||||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
|
||||||
|
|
||||||
private readonly IRepository<ReadingClinicalData> _readingClinicalDataReposiotry;
|
private readonly IRepository<ReadingClinicalData> _readingClinicalDataReposiotry;
|
||||||
|
private readonly IRepository<SubjectCriteriaEvaluation> _subjectCriteriaEvaluationRepository;
|
||||||
|
private readonly IRepository<SubjectCriteriaEvaluationVisitFilter> _subjectCriteriaEvaluationVisitFilterRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
||||||
|
private readonly IRepository<SubjectCriteriaEvaluationVisitStudyFilter> _subjectCriteriaEvaluationVisitStudyFilterRepository;
|
||||||
|
|
||||||
public VisitTaskService(IRepository<SubjectVisit> subjectVisitRepository, IRepository<VisitTask> visitTaskRepository, IRepository<Trial> trialRepository,
|
public VisitTaskService(IRepository<SubjectVisit> subjectVisitRepository, IRepository<VisitTask> visitTaskRepository, IRepository<Trial> trialRepository,
|
||||||
IRepository<Subject> subjectRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository,
|
IRepository<Subject> subjectRepository, IRepository<SubjectUser> subjectUserRepository, IRepository<TaskAllocationRule> taskAllocationRuleRepository,
|
||||||
|
@ -53,7 +56,10 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
IRepository<TaskMedicalReview> taskMedicalReviewRepository,
|
IRepository<TaskMedicalReview> taskMedicalReviewRepository,
|
||||||
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
|
IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository
|
||||||
, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository,
|
, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository,
|
||||||
IRepository<ReadingClinicalData> readingClinicalDataReposiotry
|
IRepository<ReadingClinicalData> readingClinicalDataReposiotry,
|
||||||
|
IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository,
|
||||||
|
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository,
|
||||||
|
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_readingClinicalDataReposiotry = readingClinicalDataReposiotry;
|
_readingClinicalDataReposiotry = readingClinicalDataReposiotry;
|
||||||
|
@ -69,6 +75,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
_readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
_readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
|
|
||||||
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
||||||
|
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
||||||
|
_subjectCriteriaEvaluationVisitFilterRepository = subjectCriteriaEvaluationVisitFilterRepository;
|
||||||
|
_subjectCriteriaEvaluationVisitStudyFilterRepository = subjectCriteriaEvaluationVisitStudyFilterRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -119,11 +128,16 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<(PageOutput<SubjectAssignStat>, object?)> GetSubjectAssignAndTaskStatList(SubjectAssignStatQuery querySubjectAssign)
|
public async Task<(PageOutput<SubjectAssignStat>, object?)> GetSubjectAssignAndTaskStatList(SubjectAssignStatQuery querySubjectAssign)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var isAddtinoarlCriterion = await _trialReadingCriterionRepository.AnyAsync(t => t.Id == querySubjectAssign.TrialReadingCriterionId && t.IsAutoCreate == false);
|
||||||
|
|
||||||
var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId && t.SubjectVisitTaskList.Any())
|
var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId && t.SubjectVisitTaskList.Any())
|
||||||
.WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId)
|
.WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId)
|
||||||
.WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId)
|
.WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId)
|
||||||
.WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId))
|
.WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId))
|
||||||
.WhereIf(!string.IsNullOrEmpty(querySubjectAssign.SubjectCode), t => t.Code.Contains(querySubjectAssign.SubjectCode))
|
.WhereIf(!string.IsNullOrEmpty(querySubjectAssign.SubjectCode), t => t.Code.Contains(querySubjectAssign.SubjectCode))
|
||||||
|
.WhereIf(isAddtinoarlCriterion, t => t.SubjectCriteriaEvaluationList.Where(t=>t.TrialReadingCriterionId==querySubjectAssign.TrialReadingCriterionId).Any(t=>t.IsJoinEvaluation))
|
||||||
|
|
||||||
|
|
||||||
.ProjectTo<SubjectAssignStat>(_mapper.ConfigurationProvider, new { trialReadingCriterionId = querySubjectAssign.TrialReadingCriterionId });
|
.ProjectTo<SubjectAssignStat>(_mapper.ConfigurationProvider, new { trialReadingCriterionId = querySubjectAssign.TrialReadingCriterionId });
|
||||||
|
|
||||||
|
@ -1468,6 +1482,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
{
|
{
|
||||||
//执行类似一致性核查回退流程
|
//执行类似一致性核查回退流程
|
||||||
await VisitBackAsync(origenalTask.SourceSubjectVisitId);
|
await VisitBackAsync(origenalTask.SourceSubjectVisitId);
|
||||||
|
|
||||||
|
await InfluenceAddtioncalEvaluationCritrionAsync(origenalTask);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1929,6 +1945,10 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1961,7 +1981,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
|
|
||||||
if (criterionConfig.IsAutoCreate == false)
|
if (criterionConfig.IsAutoCreate == false)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("手动生成任务的不允许影像退回");
|
return ResponseOutput.NotOk("手动生成任务的不允许在此入口影像退回");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (task.TaskState != TaskState.Effect || task.ReadingCategory != ReadingCategory.Visit || task.ReadingTaskState == ReadingTaskState.HaveSigned)
|
if (task.TaskState != TaskState.Effect || task.ReadingCategory != ReadingCategory.Visit || task.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||||
|
@ -2252,11 +2272,39 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
return ResponseOutput.NotOk("仅PM 可以进行回退操作");
|
return ResponseOutput.NotOk("仅PM 可以进行回退操作");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
await InfluenceAddtioncalEvaluationCritrionAsync(task);
|
||||||
|
|
||||||
|
|
||||||
await _visitTaskRepository.SaveChangesAsync();
|
await _visitTaskRepository.SaveChangesAsync();
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 如果是基线退回 影响附加评估标准 是否参与评估
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task InfluenceAddtioncalEvaluationCritrionAsync(VisitTask task)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (_subjectVisitRepository.Any(t => t.Id == task.SourceSubjectVisitId && t.IsBaseLine))
|
||||||
|
{
|
||||||
|
await _subjectCriteriaEvaluationRepository.UpdatePartialFromQueryAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectId == task.SubjectId, u => new SubjectCriteriaEvaluation()
|
||||||
|
{
|
||||||
|
IsJoinEvaluation = false
|
||||||
|
});
|
||||||
|
|
||||||
|
//删除筛选的访视数据
|
||||||
|
await _subjectCriteriaEvaluationVisitFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectId == task.SubjectId);
|
||||||
|
|
||||||
|
//删除筛选的序列数据
|
||||||
|
await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterion.IsAutoCreate == false && t.SubjectVisit.SubjectId == task.SubjectId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//包括临床数据签名状态
|
//包括临床数据签名状态
|
||||||
private async Task VisitBackAsync(Guid? subjectVisitId)
|
private async Task VisitBackAsync(Guid? subjectVisitId)
|
||||||
{
|
{
|
||||||
|
@ -2512,7 +2560,6 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
{
|
{
|
||||||
// 当前任务及其之后的所有访视任务 两个阅片人的
|
// 当前任务及其之后的所有访视任务 两个阅片人的
|
||||||
|
|
||||||
// 1.后续访视不处理
|
|
||||||
//2.当前任务未完成,不会产生全局任务。后续任务均为访视任务,且均为待阅片,取消分配;
|
//2.当前任务未完成,不会产生全局任务。后续任务均为访视任务,且均为待阅片,取消分配;
|
||||||
filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum);
|
filterExpression = filterExpression.And(t => t.VisitTaskNum >= filterObj.VisitTaskNum);
|
||||||
|
|
||||||
|
@ -2686,6 +2733,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取已影响的列表
|
/// 获取已影响的列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public List<EvaluationInfo> FinalEvaluationList { get; set; }=new List<EvaluationInfo>();
|
public List<EvaluationInfo> FinalEvaluationList { get; set; }=new List<EvaluationInfo>();
|
||||||
|
|
||||||
|
|
||||||
public List<EvaluationInfo> ReadingEvaluationList { get; set; }
|
public List<EvaluationInfo> ReadingEvaluationList { get; set; }=new List<EvaluationInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,11 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public DateTime? UpdateTime { get; set; }
|
public DateTime? UpdateTime { get; set; }
|
||||||
|
|
||||||
public Guid? Id { get; set; }
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
public string SubjectCode { get; set; }
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
public Guid SubjectVisitId { get; set; }
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
|
||||||
|
@ -78,6 +82,22 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
public List<Guid> SubjectVisitIdList { get; set; }=new List<Guid>();
|
public List<Guid> SubjectVisitIdList { get; set; }=new List<Guid>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class CriteriaVisitBackCommand
|
||||||
|
{
|
||||||
|
[NotDefault]
|
||||||
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
[NotDefault]
|
||||||
|
public Guid SubjectVisitId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public class VisitStudyAndSeriesQuery
|
public class VisitStudyAndSeriesQuery
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
|
|
|
@ -18,6 +18,7 @@ using Panda.DynamicWebApi.Attributes;
|
||||||
using IRaCIS.Core.Domain.Share.Reading;
|
using IRaCIS.Core.Domain.Share.Reading;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using DocumentFormat.OpenXml.Bibliography;
|
using DocumentFormat.OpenXml.Bibliography;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
@ -38,12 +39,15 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
|
private readonly IRepository<ReadingQuestionTrial> _trialReadingQuestionRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
||||||
|
|
||||||
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
private readonly IVisitTaskHelpeService _IVisitTaskHelpeService;
|
||||||
|
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
|
||||||
|
|
||||||
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
|
public SubjectCriteriaEvaluationService(IRepository<SubjectCriteriaEvaluation> subjectCriteriaEvaluationRepository, IRepository<Subject> subjectRepository,
|
||||||
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
|
IRepository<SubjectCriteriaEvaluationVisitFilter> subjectCriteriaEvaluationVisitFilterRepository, IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
|
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository)
|
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IVisitTaskHelpeService IVisitTaskHelpeService, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository, IRepository<VisitTask> visitTaskRepository, IRepository<TaskMedicalReview> taskMedicalReviewRepository)
|
||||||
{
|
{
|
||||||
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
_subjectCriteriaEvaluationRepository = subjectCriteriaEvaluationRepository;
|
||||||
_subjectRepository = subjectRepository;
|
_subjectRepository = subjectRepository;
|
||||||
|
@ -55,7 +59,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
_IVisitTaskHelpeService = IVisitTaskHelpeService;
|
_IVisitTaskHelpeService = IVisitTaskHelpeService;
|
||||||
|
|
||||||
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||||
|
_visitTaskRepository = visitTaskRepository;
|
||||||
|
_taskMedicalReviewRepository = taskMedicalReviewRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,13 +137,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
FinalTranslateDictionaryCode = u.ReadingQuestionTrial.DictionaryCode
|
FinalTranslateDictionaryCode = u.ReadingQuestionTrial.DictionaryCode
|
||||||
}).ToList()
|
}).ToList()
|
||||||
|
|
||||||
//EvaluationList=subject
|
|
||||||
//.SubjectAdditionalEvaluationResult
|
|
||||||
//.Where(t=>t.IsFinalResult && t.TrialReadingCriterionId==resultTrialReadingCriterionId)
|
|
||||||
//.Select(u=>new EvaluationInfo()
|
|
||||||
//{ Answer=u.Answer,FinalTranslateDictionaryCode=u.FinalTranslateDictionaryCode,QuestioName=u.TrialReadingQuestion .QuestionName,QuestioNameEn=u.TrialReadingQuestion.QuestionEnName}).ToList()
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
var pageList = await subjectCriteriaEvaluationQueryable.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField == string.Empty ? nameof(SubjectCriteriaEvaluationView.SubjectCode) : inQuery.SortField, inQuery.Asc);
|
||||||
|
@ -157,14 +155,20 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
|
if (item.ReadingEvaluationList.All(t => t.Answer == 1.ToString()))
|
||||||
{
|
{
|
||||||
item.FinalEvaluationList.Add(new EvaluationInfo() { QuestionId=item.ReadingEvaluationList.First().QuestionId, Answer = ((int)BrainMetastasisResult.Yes).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
item.FinalEvaluationList.Add(new EvaluationInfo()
|
||||||
|
{
|
||||||
|
QuestionId = item.ReadingEvaluationList.First().QuestionId,
|
||||||
|
Answer = ((int)BrainMetastasisResult.Yes).ToString(),
|
||||||
|
FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
|
else if (item.ReadingEvaluationList.All(t => t.Answer == 0.ToString()))
|
||||||
{
|
{
|
||||||
item.FinalEvaluationList.Add(new EvaluationInfo() {
|
item.FinalEvaluationList.Add(new EvaluationInfo()
|
||||||
|
{
|
||||||
QuestionId = item.ReadingEvaluationList.First().QuestionId,
|
QuestionId = item.ReadingEvaluationList.First().QuestionId,
|
||||||
Answer = ((int)BrainMetastasisResult.No).ToString(), FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
Answer = ((int)BrainMetastasisResult.No).ToString(),
|
||||||
|
FinalTranslateDictionaryCode = nameof(BrainMetastasisResult)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer)
|
else if (item.ReadingEvaluationList.First().Answer != item.ReadingEvaluationList.Last().Answer)
|
||||||
|
@ -421,7 +425,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
VisitName = subjectVisit.VisitName,
|
VisitName = subjectVisit.VisitName,
|
||||||
VisitNum = subjectVisit.VisitNum,
|
VisitNum = subjectVisit.VisitNum,
|
||||||
SubjectVisitId = subjectVisit.Id,
|
SubjectVisitId = subjectVisit.Id,
|
||||||
|
TrialId = subjectVisit.TrialId,
|
||||||
SubjectId = subjectVisit.SubjectId,
|
SubjectId = subjectVisit.SubjectId,
|
||||||
|
SubjectCode= subjectVisit.Subject.Code,
|
||||||
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
|
TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
|
||||||
LatestScanDate = subjectVisit.LatestScanDate,
|
LatestScanDate = subjectVisit.LatestScanDate,
|
||||||
EarliestScanDate = subjectVisit.LatestScanDate,
|
EarliestScanDate = subjectVisit.LatestScanDate,
|
||||||
|
@ -467,28 +473,20 @@ namespace IRaCIS.Core.Application.Service
|
||||||
&& t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId
|
&& t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId
|
||||||
&& batchGenerateTaskCommand.SubjectVisitIdList.Contains(t.SubjectVisitId), u => new SubjectCriteriaEvaluationVisitFilter { IsGeneratedTask = true });
|
&& batchGenerateTaskCommand.SubjectVisitIdList.Contains(t.SubjectVisitId), u => new SubjectCriteriaEvaluationVisitFilter { IsGeneratedTask = true });
|
||||||
|
|
||||||
await _IVisitTaskHelpeService.BaseCritrionGenerateVisitTask(batchGenerateTaskCommand.TrialId, batchGenerateTaskCommand.TrialReadingCriterionId, true, batchGenerateTaskCommand.SubjectVisitIdList);
|
//自动生成任务
|
||||||
|
|
||||||
|
var idList = batchGenerateTaskCommand.SubjectVisitIdList.Select(t => (Guid?)t).ToList();
|
||||||
|
|
||||||
|
//存在任务的访视
|
||||||
|
var haveGenerateVisitIdList = await _repository.Where<VisitTask>(t => idList.Contains(t.SourceSubjectVisitId) && t.TrialReadingCriterionId == batchGenerateTaskCommand.TrialReadingCriterionId && t.TaskState == TaskState.Effect)
|
||||||
|
.Select(t => t.SourceSubjectVisitId).ToListAsync();
|
||||||
|
|
||||||
|
var generateVisitIdList = idList.Except(haveGenerateVisitIdList);
|
||||||
|
|
||||||
|
await _IVisitTaskHelpeService.BaseCritrionGenerateVisitTask(batchGenerateTaskCommand.TrialId, batchGenerateTaskCommand.TrialReadingCriterionId, true, generateVisitIdList.Select(t => (Guid)t).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///// <summary>
|
|
||||||
///// 评估访视 判断结果 影像筛选状态 手动添加/编辑接口
|
|
||||||
///// </summary>
|
|
||||||
///// <param name="addOrEditSubjectCriteriaEvaluationVisitFilter"></param>
|
|
||||||
///// <returns></returns>
|
|
||||||
//public async Task<IResponseOutput> AddOrUpdateSubjectCriteriaEvaluationVisitFilter(SubjectCriteriaEvaluationVisitFilterAddOrEdit addOrEditSubjectCriteriaEvaluationVisitFilter)
|
|
||||||
//{
|
|
||||||
|
|
||||||
// var entity = await _subjectCriteriaEvaluationVisitFilterRepository.InsertOrUpdateAsync(addOrEditSubjectCriteriaEvaluationVisitFilter, true);
|
|
||||||
|
|
||||||
// return ResponseOutput.Ok(entity.Id.ToString());
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取dicom 访视检查列表 (序列的 Id CreateTime 是否为空 代表了记录是否创建、IsConfirmed 代表 保存 确认)
|
/// 获取dicom 访视检查列表 (序列的 Id CreateTime 是否为空 代表了记录是否创建、IsConfirmed 代表 保存 确认)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -576,13 +574,122 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//[HttpDelete("{subjectCriteriaEvaluationId:guid}")]
|
/// <summary>
|
||||||
// public async Task<IResponseOutput> DeleteSubjectCriteriaEvaluation(Guid subjectCriteriaEvaluationId)
|
/// 附加评估标准 PM 退回某一访视 影响任务列表
|
||||||
//{
|
/// </summary>
|
||||||
// var success = await _subjectCriteriaEvaluationRepository.DeleteFromQueryAsync(t => t.Id == subjectCriteriaEvaluationId,true);
|
/// <param name="command"></param>
|
||||||
// return ResponseOutput.Ok();
|
/// <returns></returns>
|
||||||
//}
|
[HttpPost]
|
||||||
|
|
||||||
|
public async Task<List<InfluenceTaskInfo>> GetCriteriaVisitBackInfluenceTaskList(CriteriaVisitBackCommand command)
|
||||||
|
{
|
||||||
|
var filterExpression = await GetTaskExpressionAsync(command);
|
||||||
|
|
||||||
|
var list = await _visitTaskRepository.Where(filterExpression)
|
||||||
|
|
||||||
|
.OrderBy(t => t.VisitTaskNum).ProjectTo<InfluenceTaskInfo>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<Expression<Func<VisitTask, bool>>> GetTaskExpressionAsync(CriteriaVisitBackCommand command)
|
||||||
|
{
|
||||||
|
var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == command.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder }).FirstOrDefaultAsync()).IfNullThrowException();
|
||||||
|
|
||||||
|
var subjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == command.SubjectVisitId);
|
||||||
|
|
||||||
|
//仅仅影响该标准自己的任务
|
||||||
|
Expression<Func<VisitTask, bool>> filterExpression = t => t.TrialId == command.TrialId && t.SubjectId == command.SubjectId && t.TaskState == TaskState.Effect && t.TaskAllocationState == TaskAllocationState.Allocated
|
||||||
|
&& t.TrialReadingCriterionId == command.TrialReadingCriterionId;
|
||||||
|
|
||||||
|
//有序
|
||||||
|
if (criterionConfig.IsReadingTaskViewInOrder)
|
||||||
|
{
|
||||||
|
filterExpression = filterExpression.And(t => t.VisitTaskNum >= subjectVisit.VisitNum);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
filterExpression = filterExpression.And(t => t.VisitTaskNum == subjectVisit.VisitNum);
|
||||||
|
}
|
||||||
|
|
||||||
|
return filterExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 退回任务
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public async Task ConfirmBackCriteriaVisitTask(CriteriaVisitBackCommand command)
|
||||||
|
{
|
||||||
|
var filterExpression = await GetTaskExpressionAsync(command);
|
||||||
|
|
||||||
|
var influenceTaskList = await _visitTaskRepository.Where(filterExpression, true).ToListAsync();
|
||||||
|
|
||||||
|
var subjectVisit = await _subjectVisitRepository.FindAsync(command.SubjectVisitId);
|
||||||
|
|
||||||
|
foreach (var influenceTask in influenceTaskList)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
//申请的访视 要不是重阅重置,要不就是失效 不会存在取消分配
|
||||||
|
if (influenceTask.ReadingCategory == ReadingCategory.Visit && influenceTask.VisitTaskNum != subjectVisit.VisitNum)
|
||||||
|
{
|
||||||
|
//后续访视处理访视
|
||||||
|
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||||
|
{
|
||||||
|
influenceTask.TaskState = TaskState.HaveReturned;
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (influenceTask.ReadingTaskState == ReadingTaskState.Reading)
|
||||||
|
{
|
||||||
|
influenceTask.TaskState = TaskState.Adbandon;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
influenceTask.DoctorUserId = null;
|
||||||
|
influenceTask.AllocateTime = null;
|
||||||
|
influenceTask.SuggesteFinishedTime = null;
|
||||||
|
influenceTask.TaskAllocationState = TaskAllocationState.NotAllocate;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//申请的访视 全局肿瘤学
|
||||||
|
|
||||||
|
if (influenceTask.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||||
|
{
|
||||||
|
influenceTask.TaskState = TaskState.HaveReturned;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
influenceTask.TaskState = TaskState.Adbandon;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var taskIdList = influenceTaskList.Select(t => t.Id).ToList();
|
||||||
|
var subjectVisitIdLsit = influenceTaskList.Where(t => t.SourceSubjectVisitId != null).Select(t => t.SourceSubjectVisitId).ToList();
|
||||||
|
|
||||||
|
//医学审核任务失效
|
||||||
|
await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(t => taskIdList.Contains(t.VisitTaskId) && t.AuditState != MedicalReviewAuditState.HaveSigned, u => new TaskMedicalReview() { IsInvalid = true });
|
||||||
|
|
||||||
|
//将筛选的访视 序列状态重置
|
||||||
|
|
||||||
|
//重置访视数据
|
||||||
|
await _subjectCriteriaEvaluationVisitFilterRepository.BatchUpdateNoTrackingAsync(t => t.TrialReadingCriterionId== command.TrialReadingCriterionId && t.SubjectId == command.SubjectId && subjectVisitIdLsit.Contains(t.SubjectVisitId) ,
|
||||||
|
t=>new SubjectCriteriaEvaluationVisitFilter()
|
||||||
|
{
|
||||||
|
ImageFilterState=ImageFilterState.None,
|
||||||
|
ImageDeterminationResultState=ImageDeterminationResultState.None
|
||||||
|
});
|
||||||
|
|
||||||
|
//删除序列数据
|
||||||
|
await _subjectCriteriaEvaluationVisitStudyFilterRepository.BatchDeleteNoTrackingAsync(t => t.TrialReadingCriterionId == command.TrialReadingCriterionId && subjectVisitIdLsit.Contains(t.SubjectVisitId));
|
||||||
|
|
||||||
|
await _visitTaskRepository.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -30,6 +30,9 @@ namespace IRaCIS.Core.Application.Services
|
||||||
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
private readonly IRepository<ReadingPeriodPlan> _readingPeriodPlanRepository;
|
||||||
private readonly IRepository<Subject> _subjectRepository;
|
private readonly IRepository<Subject> _subjectRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository;
|
||||||
|
private readonly IRepository<SubjectCriteriaEvaluationVisitStudyFilter> _subjectCriteriaEvaluationVisitStudyFilterRepository;
|
||||||
|
|
||||||
public SubjectVisitService(IRepository<SubjectVisit> subjectVisitRepository,
|
public SubjectVisitService(IRepository<SubjectVisit> subjectVisitRepository,
|
||||||
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
|
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
|
||||||
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
IRepository<ReadingClinicalData> readingClinicalDataRepository,
|
||||||
|
@ -42,7 +45,11 @@ namespace IRaCIS.Core.Application.Services
|
||||||
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
IRepository<ReadingTableAnswerRowInfo> readingTableAnswerRowInfoRepository,
|
||||||
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
|
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository,
|
||||||
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
IRepository<ReadingPeriodPlan> readingPeriodPlanRepository,
|
||||||
IRepository<Subject> subjectRepository)
|
IRepository<Subject> subjectRepository,
|
||||||
|
IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository,
|
||||||
|
IRepository<SubjectCriteriaEvaluationVisitStudyFilter> subjectCriteriaEvaluationVisitStudyFilterRepository
|
||||||
|
|
||||||
|
)
|
||||||
{
|
{
|
||||||
_subjectVisitRepository = subjectVisitRepository;
|
_subjectVisitRepository = subjectVisitRepository;
|
||||||
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
|
||||||
|
@ -57,6 +64,10 @@ namespace IRaCIS.Core.Application.Services
|
||||||
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
|
this._noneDicomStudyFileRepository = noneDicomStudyFileRepository;
|
||||||
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
this._readingPeriodPlanRepository = readingPeriodPlanRepository;
|
||||||
_subjectRepository = subjectRepository;
|
_subjectRepository = subjectRepository;
|
||||||
|
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
||||||
|
_subjectCriteriaEvaluationVisitStudyFilterRepository = subjectCriteriaEvaluationVisitStudyFilterRepository;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
@ -411,7 +422,13 @@ namespace IRaCIS.Core.Application.Services
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId).Select(k => new VisitStudyDTO()
|
//如果是手动生成的标准,需要过滤检查和序列数据
|
||||||
|
|
||||||
|
var isManualGenerate = await _trialReadingCriterionRepository.AnyAsync(t => t.Id == taskInfo.TrialReadingCriterionId && t.IsAutoCreate == false);
|
||||||
|
|
||||||
|
var studyList = await _repository.Where<DicomStudy>(t => t.TrialId == indto.TrialId && t.SubjectVisitId == indto.SujectVisitId)
|
||||||
|
.WhereIf(isManualGenerate,t=>t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t=>t.TrialReadingCriterionId==taskInfo.TrialReadingCriterionId && t.IsConfirmed &&t.IsReading ))
|
||||||
|
.Select(k => new VisitStudyDTO()
|
||||||
{
|
{
|
||||||
InstanceCount = k.InstanceCount,
|
InstanceCount = k.InstanceCount,
|
||||||
Modalities = k.Modalities,
|
Modalities = k.Modalities,
|
||||||
|
@ -427,7 +444,10 @@ namespace IRaCIS.Core.Application.Services
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => studyIds.Contains(s.StudyId) && s.IsReading).OrderBy(s => s.SeriesNumber).
|
List<DicomSeriesDTO> seriesLists = await _repository.Where<DicomSeries>(s => studyIds.Contains(s.StudyId) /*&& s.IsReading*/)
|
||||||
|
.WhereIf(isManualGenerate==false, t => t.IsReading)
|
||||||
|
.WhereIf(isManualGenerate, t => t.SubjectCriteriaEvaluationVisitStudyFilterList.Any(t => t.TrialReadingCriterionId == taskInfo.TrialReadingCriterionId && t.IsConfirmed && t.IsReading))
|
||||||
|
.OrderBy(s => s.SeriesNumber).
|
||||||
ThenBy(s => s.SeriesTime)
|
ThenBy(s => s.SeriesTime)
|
||||||
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<DicomSeriesDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
foreach (var t in studyList)
|
foreach (var t in studyList)
|
||||||
|
@ -533,7 +553,6 @@ namespace IRaCIS.Core.Application.Services
|
||||||
result = result.Where(x => x.SeriesCount > 0).ToList();
|
result = result.Where(x => x.SeriesCount > 0).ToList();
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
//return ResponseOutput.Ok(studyList.Where(t => t.SeriesList.Count > 0).ToList());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,9 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<DicomInstance> DicomInstanceList { get; set; }
|
public List<DicomInstance> DicomInstanceList { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilterList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
public Guid SeqId { get; set; }
|
public Guid SeqId { get; set; }
|
||||||
|
|
|
@ -19,6 +19,9 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Site Site { get; set; }
|
public Site Site { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilterList { get; set; }
|
||||||
|
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
public Guid SeqId { get; set; }
|
public Guid SeqId { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,10 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public Subject subject { get; set; }
|
public Subject subject { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialReadingCriterionId")]
|
||||||
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SubjectId
|
/// SubjectId
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -16,9 +16,15 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public class SubjectCriteriaEvaluationVisitFilter : Entity, IAuditUpdate, IAuditAdd
|
public class SubjectCriteriaEvaluationVisitFilter : Entity, IAuditUpdate, IAuditAdd
|
||||||
{
|
{
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialReadingCriterionId")]
|
||||||
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
|
[JsonIgnore]
|
||||||
public SubjectCriteriaEvaluation SubjectCriteriaEvaluation { get; set; }
|
public SubjectCriteriaEvaluation SubjectCriteriaEvaluation { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
|
||||||
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
public Guid SubjectId { get; set; }
|
public Guid SubjectId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,9 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[Table("SubjectCriteriaEvaluationVisitStudyFilter")]
|
[Table("SubjectCriteriaEvaluationVisitStudyFilter")]
|
||||||
public class SubjectCriteriaEvaluationVisitStudyFilter : Entity, IAuditUpdate, IAuditAdd
|
public class SubjectCriteriaEvaluationVisitStudyFilter : Entity, IAuditUpdate, IAuditAdd
|
||||||
{
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialReadingCriterionId")]
|
||||||
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public SubjectVisit SubjectVisit { get; set; }
|
public SubjectVisit SubjectVisit { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue