diff --git a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs index 8b88121f..e7bb0555 100644 --- a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs @@ -50,13 +50,7 @@ namespace IRaCIS.Core.Application.Triggers - var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == subject.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm) - - .Select(x =>new { - x.Id, - x.ClinicalDataLevel, - } ).ToListAsync(); - List readingClinicals = new List(); + svList.ForEach(t => { t.Subject = subject; @@ -65,23 +59,9 @@ namespace IRaCIS.Core.Application.Triggers t.SiteId = subject.SiteId; t.IsEnrollmentConfirm = t.IsBaseLine ? IsEnrollementQualificationConfirm : false; t.Id = NewId.NextGuid(); - readingClinicals.AddRange( - - cRCClinicalDatas.WhereIf(!t.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData() - { - ClinicalDataTrialSetId = x.Id, - IsVisit = true, - SubjectId = subject.Id, - ReadingId = t.Id, - TrialId = subject.TrialId - - }).ToList() - - ); + }); - await _readingClinicalDataRepository.AddRangeAsync(readingClinicals); - await _subjectVisitRepository.AddRangeAsync(svList); diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs index 07449491..8cc48fb5 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs @@ -15,20 +15,25 @@ namespace IRaCIS.Core.Application.Triggers { private readonly IVisitTaskHelpeService _visitTaskHelpeService; - + private readonly IRepository _subjectRepository; - + private readonly IRepository _clinicalDataTrialSetRepository; + private readonly IRepository _readingClinicalDataRepository; public SubjectVisitCheckPassedTrigger(IRepository subjectRepository, - + IRepository clinicalDataTrialSetRepository, + IRepository readingClinicalDataRepository, IVisitTaskHelpeService visitTaskHelpeService) { _subjectRepository = subjectRepository; + _clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; + _readingClinicalDataRepository = readingClinicalDataRepository; + this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository; _visitTaskHelpeService = visitTaskHelpeService; } - + public async Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { @@ -53,6 +58,39 @@ namespace IRaCIS.Core.Application.Triggers } } + // 触发临床数据 + if (context.ChangeType == ChangeType.Added) + { + var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm) + + .Select(x => new + { + x.Id, + x.ClinicalDataLevel, + }).ToListAsync(); + + List readingClinicals = new List(); + readingClinicals.AddRange( + + cRCClinicalDatas.WhereIf(context.Entity.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData() + { + ClinicalDataTrialSetId = x.Id, + IsVisit = true, + SubjectId = context.Entity.SubjectId, + ReadingId = context.Entity.Id, + TrialId = context.Entity.TrialId + + }).ToList() + + ); + + + await _readingClinicalDataRepository.AddRangeAsync(readingClinicals); + await _readingClinicalDataRepository.SaveChangesAsync(); + + } + + } } } \ No newline at end of file