修改末次访视

Test.EIImageViewer
hang 2023-03-07 11:27:28 +08:00
parent c706cc97cc
commit cad6ee8dfa
2 changed files with 34 additions and 53 deletions

View File

@ -8614,6 +8614,13 @@
处理 访视 末次评估 会影响Subject 状态
</summary>
</member>
<member name="M:IRaCIS.Core.Application.Triggers.SubjectVisitFinalVisitTrigger.DealGenerateReadModuleAndSubjectVisit(IRaCIS.Core.Domain.Models.SubjectVisit)">
<summary>
处理生成阅片期 以及后续访视状态
</summary>
<param name="subjectVisit"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Triggers.SubjectVisitTrigger">
<summary>
处理 访视 1、提交状态 2、执行状态 3、最早最晚 拍片日期

View File

@ -56,13 +56,9 @@ namespace IRaCIS.Core.Application.Triggers
{
await VerifyDealFinalVisitAsync(subjectVisit);
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OutOfVisit, FinalSubjectVisitId = subjectVisit.Id });
await DealGenerateReadModuleAndSubjectVisit(subjectVisit);
//末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
}
else
{
@ -73,18 +69,6 @@ namespace IRaCIS.Core.Application.Triggers
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
//var readingPeriodSet =await _readingPeriodSetRepository.Where(x => x.TrialId == subjectVisit.TrialId && x.IsGlobal).FirstOrDefaultAsync();
//if (readingPeriodSet != null)
//{
// await _readingPeriodPlanRepository.DeleteFromQueryAsync(x => x.ReadingPeriodSetId == readingPeriodSet.Id && x.SubjectVisitId == subjectVisit.Id);
// await _readModuleRepository.UpdatePartialFromQueryAsync(x => x.SubjectVisitId == subjectVisit.Id && x.ReadingPeriodSetId == readingPeriodSet.Id,x=> new ReadModule() {
// IsDeleted = true
// });
// await _readModuleRepository.SaveChangesAsync();
//}
}
}
@ -93,19 +77,29 @@ namespace IRaCIS.Core.Application.Triggers
else if (context.ChangeType == ChangeType.Added && subjectVisit.IsFinalVisit)
{
await VerifyDealFinalVisitAsync(subjectVisit);
await DealGenerateReadModuleAndSubjectVisit(subjectVisit);
}
}
private async Task VerifyDealFinalVisitAsync(SubjectVisit subjectVisit)
/// <summary>
/// 处理生成阅片期 以及后续访视状态
/// </summary>
/// <param name="subjectVisit"></param>
/// <returns></returns>
private async Task DealGenerateReadModuleAndSubjectVisit(SubjectVisit subjectVisit)
{
if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
(t.SubmitState == SubmitStateEnum.ToSubmit || t.SubmitState == SubmitStateEnum.Submitted)))
{
throw new BusinessValidationFailedException("该受试者已有后续访视已上传影像或已提交,当前访视不允许设置为末次访视。");
}
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OutOfVisit, FinalSubjectVisitId = subjectVisit.Id });
#region 末次访视生成阅片器和任务 更换位置 废弃
//末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
#region 末次访视生成阅片器和任务
var trialId = subjectVisit.TrialId;
@ -121,34 +115,6 @@ namespace IRaCIS.Core.Application.Triggers
var criterionList = await _repository.Where<ReadingQuestionCriterionTrial>(x => x.TrialId == trialId && x.ReadingInfoSignTime != null && x.IsConfirm && x.IsReadingPeriod && x.IsReadingTaskViewInOrder).ToListAsync();
foreach (var item in criterionList)
{
//ReadingPeriodSet? readingPeriodSet = await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == trialId && x.IsGlobal && x.TrialReadingCriterionId == item.Id);
//if (readingPeriodSet == null)
//{
// readingPeriodSet = new ReadingPeriodSet()
// {
// Id = NewId.NextGuid(),
// ReadingScope = ReadingScopeEnum.All,
// ReadingSetType = ReadingSetType.ImageReading,
// IsTakeEffect = ReadingPeriodStatus.TakeEffect,
// ReadingPeriodName = "Global",
// TrialId = trialId,
// EffectOfTime = DateTime.Now,
// IsGlobal = true,
// TrialReadingCriterionId = item.Id,
// };
// await _readingPeriodSetRepository.AddAsync(readingPeriodSet);
//}
//await _readingPeriodPlanRepository.AddAsync(new ReadingPeriodPlan()
//{
// SubjectVisitId = subjectVisitId,
// ReadingPeriodSetId = readingPeriodSet.Id,
//});
var readModule = await _readModuleRepository.Where(x => x.ReadingSetType == ReadingSetType.ImageReading && x.TrialReadingCriterionId == item.Id && x.SubjectVisitId == subjectVisitId).FirstOrDefaultAsync();
@ -207,7 +173,15 @@ namespace IRaCIS.Core.Application.Triggers
#endregion
}
private async Task VerifyDealFinalVisitAsync(SubjectVisit subjectVisit)
{
if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
(t.SubmitState == SubmitStateEnum.ToSubmit || t.SubmitState == SubmitStateEnum.Submitted)))
{
throw new BusinessValidationFailedException("该受试者已有后续访视已上传影像或已提交,当前访视不允许设置为末次访视。");
}
}
}