末次访视添加Global

Uat_Study
hang 2022-06-09 10:54:22 +08:00
parent 9230aed1ec
commit d16ac8a5ca
2 changed files with 73 additions and 64 deletions

View File

@ -110,64 +110,6 @@ namespace IRaCIS.Core.Application.Services
} }
} }
// 是否全局阅片
var isGlobalReading = await _trialRepository.Where(x => x.Id == dbBeforeEntity.TrialId).Select(x => x.IsGlobalReading).FirstOrDefaultAsync();
if (isGlobalReading)
{
// 末次访视添加全局阅片
if (dbBeforeEntity.IsFinalVisit == false && svCommand.IsFinalVisit == true)
{
ReadingPeriodSet? readingPeriodSet = await _readingPeriodSetRepository.FirstOrDefaultNoTrackingAsync(x => x.TrialId == dbBeforeEntity.TrialId && x.IsGlobal);
if (readingPeriodSet == null)
{
readingPeriodSet = new ReadingPeriodSet()
{
Id = NewId.NextGuid(),
ReadingScope = ReadingScopeEnum.All,
ReadingSetType = ReadingSetType.ImageReading,
IsTakeEffect = ReadingPeriodStatus.TakeEffect,
ReadingPeriodName = "Global",
TrialId = dbBeforeEntity.TrialId,
EffectOfTime = DateTime.Now,
IsGlobal = true,
};
await _readingPeriodSetRepository.AddAsync(readingPeriodSet);
}
await _readingPeriodPlanRepository.AddAsync(new ReadingPeriodPlan()
{
SubjectVisitId = dbBeforeEntity.Id,
ReadingPeriodSetId = readingPeriodSet.Id,
});
//var trialid = await _subjectVisitRepository.Where(x => x.Id == svCommand.Id).Select(x => x.TrialId).FirstOrDefaultAsync();
// 当前访视没有阅片期才添加
if (!await _readModuleRepository.AnyAsync(x => x.SubjectVisitId == svCommand.Id && x.ReadingSetType == ReadingSetType.ImageReading))
{
await _readModuleRepository.AddAsync(new ReadModule()
{
ReadingPeriodSetId = readingPeriodSet.Id,
IsUrgent = dbBeforeEntity.IsUrgent,
SubjectVisitId = svCommand.Id.Value,
Status = ReadModuleEnum.TaskAllocation,
SubjectId = dbBeforeEntity.SubjectId,
ModuleName = "Global",// 全局阅片
ReadingSetType = ReadingSetType.ImageReading,
ModuleType = ModuleTypeEnum.Global,
TrialId= dbBeforeEntity.TrialId,
VisitNum= dbBeforeEntity.VisitNum,
});
}
}
}
} }

View File

@ -1,6 +1,8 @@
using EntityFrameworkCore.Triggered; using EntityFrameworkCore.Triggered;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.Reading;
using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure;
using MassTransit;
namespace IRaCIS.Core.Application.Triggers namespace IRaCIS.Core.Application.Triggers
{ {
@ -11,11 +13,13 @@ namespace IRaCIS.Core.Application.Triggers
{ {
private readonly IRepository<SubjectVisit> _subjectVisitRepository; private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<Subject> _subjectRepository; private readonly IRepository<Subject> _subjectRepository;
private readonly IRepository _repository;
public SubjectVisitFinalVisitTrigger(IRepository<SubjectVisit> subjectVisitRepository, IRepository<Subject> subjectRepository) public SubjectVisitFinalVisitTrigger(IRepository<SubjectVisit> subjectVisitRepository, IRepository<Subject> subjectRepository, IRepository repository)
{ {
_subjectVisitRepository = subjectVisitRepository; _subjectVisitRepository = subjectVisitRepository;
_subjectRepository = subjectRepository; _subjectRepository = subjectRepository;
_repository = repository;
} }
public async Task AfterSave(ITriggerContext<SubjectVisit> context, CancellationToken cancellationToken) public async Task AfterSave(ITriggerContext<SubjectVisit> context, CancellationToken cancellationToken)
@ -39,14 +43,14 @@ namespace IRaCIS.Core.Application.Triggers
//回退 //回退
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId, await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OnVisit, FinalSubjectVisitId =null }); u => new Subject() { Status = SubjectStatus.OnVisit, FinalSubjectVisitId = null });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
} }
} }
} }
else if(context.ChangeType == ChangeType.Added && subjectVisit.IsFinalVisit) else if (context.ChangeType == ChangeType.Added && subjectVisit.IsFinalVisit)
{ {
await VerifyDealFinalVisitAsync(subjectVisit); await VerifyDealFinalVisitAsync(subjectVisit);
} }
@ -56,7 +60,7 @@ namespace IRaCIS.Core.Application.Triggers
} }
private async Task VerifyDealFinalVisitAsync(SubjectVisit subjectVisit) private async Task VerifyDealFinalVisitAsync(SubjectVisit subjectVisit)
{ {
if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && if (await _subjectVisitRepository.AnyAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
(t.SubmitState == SubmitStateEnum.ToSubmit || t.SubmitState == SubmitStateEnum.Submitted))) (t.SubmitState == SubmitStateEnum.ToSubmit || t.SubmitState == SubmitStateEnum.Submitted)))
@ -71,8 +75,71 @@ namespace IRaCIS.Core.Application.Triggers
//末次访视后的 访视设置为不可用 //末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum && await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum &&
t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); t.VisitExecuted == VisitExecutedEnum.UnExecuted, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
var trialId = subjectVisit.TrialId;
var subjectVisitId= subjectVisit.Id;
// 是否全局阅片
var isGlobalReading = await _repository.Where<Trial>(x => x.Id == trialId).Select(x => x.IsGlobalReading).FirstOrDefaultAsync();
if (isGlobalReading)
{
if (!await _repository.AnyAsync<ReadingPeriodSet>(x => x.TrialId == trialId && x.IsGlobal))
{
var readingPeriodSet = new ReadingPeriodSet()
{
Id = NewId.NextGuid(),
ReadingScope = ReadingScopeEnum.All,
ReadingSetType = ReadingSetType.ImageReading,
IsTakeEffect = ReadingPeriodStatus.TakeEffect,
ReadingPeriodName = "Global",
TrialId = trialId,
EffectOfTime = DateTime.Now,
IsGlobal = true,
};
readingPeriodSet.ReadingPeriodPlanList.Add(new ReadingPeriodPlan()
{
SubjectVisitId = subjectVisitId,
ReadingPeriodSetId = readingPeriodSet.Id,
});
// 当前访视没有阅片期才添加
if (!await _repository.AnyAsync<ReadModule>(x => x.SubjectVisitId == subjectVisitId && x.ReadingSetType == ReadingSetType.ImageReading))
{
await _repository.AddAsync(new ReadModule()
{
ReadingPeriodSetId = readingPeriodSet.Id,
IsUrgent = subjectVisit.IsUrgent,
SubjectVisitId = subjectVisitId,
Status = ReadModuleEnum.TaskAllocation,
SubjectId = subjectVisit.SubjectId,
ModuleName = "Global",// 全局阅片
ReadingSetType = ReadingSetType.ImageReading,
ModuleType = ModuleTypeEnum.Global,
TrialId = subjectVisit.TrialId,
VisitNum = subjectVisit.VisitNum,
});
}
await _repository.AddAsync(readingPeriodSet);
}
}
} }
} }
}
} }