Test.EIImageViewer
he 2023-02-08 18:11:04 +08:00
parent c930df4153
commit f45cb3db86
2 changed files with 58 additions and 3 deletions

View File

@ -17,6 +17,8 @@ namespace IRaCIS.Core.Application.Services
public class SubjectVisitService : BaseService, ISubjectVisitService public class SubjectVisitService : BaseService, ISubjectVisitService
{ {
private readonly IRepository<SubjectVisit> _subjectVisitRepository; private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
private readonly IRepository<ReadingClinicalData> _readingClinicalDataRepository;
private readonly IRepository<ReadModule> _readModuleRepository; private readonly IRepository<ReadModule> _readModuleRepository;
private readonly IRepository<Trial> _trialRepository; private readonly IRepository<Trial> _trialRepository;
private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository; private readonly IRepository<ReadingPeriodSet> _readingPeriodSetRepository;
@ -29,6 +31,8 @@ namespace IRaCIS.Core.Application.Services
private readonly IRepository<Subject> _subjectRepository; private readonly IRepository<Subject> _subjectRepository;
public SubjectVisitService(IRepository<SubjectVisit> subjectVisitRepository, public SubjectVisitService(IRepository<SubjectVisit> subjectVisitRepository,
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
IRepository<ReadingClinicalData> readingClinicalDataRepository,
IRepository<ReadModule> readModuleRepository, IRepository<ReadModule> readModuleRepository,
IRepository<Trial> trialRepository, IRepository<Trial> trialRepository,
IRepository<ReadingPeriodSet> readingPeriodSetRepository, IRepository<ReadingPeriodSet> readingPeriodSetRepository,
@ -41,6 +45,8 @@ namespace IRaCIS.Core.Application.Services
IRepository<Subject> subjectRepository) IRepository<Subject> subjectRepository)
{ {
_subjectVisitRepository = subjectVisitRepository; _subjectVisitRepository = subjectVisitRepository;
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
this._readingClinicalDataRepository = readingClinicalDataRepository;
this._readModuleRepository = readModuleRepository; this._readModuleRepository = readModuleRepository;
this._trialRepository = trialRepository; this._trialRepository = trialRepository;
this._readingPeriodSetRepository = readingPeriodSetRepository; this._readingPeriodSetRepository = readingPeriodSetRepository;
@ -107,6 +113,23 @@ namespace IRaCIS.Core.Application.Services
} }
dbBeforeEntity = await _subjectVisitRepository.InsertFromDTOAsync(svCommand, false, verifyExp1, verifyExp2, verifyExp3); dbBeforeEntity = await _subjectVisitRepository.InsertFromDTOAsync(svCommand, false, verifyExp1, verifyExp2, verifyExp3);
var cRCClinicalDataIds = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == svCommand.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit)
.Select(x => x.Id).ToListAsync();
List<ReadingClinicalData> readingClinicals = cRCClinicalDataIds.Select(x => new ReadingClinicalData()
{
ClinicalDataTrialSetId = x,
IsVisit = true,
SubjectId = svCommand.SubjectId,
ReadingId = dbBeforeEntity.Id,
TrialId = svCommand.TrialId
}).ToList();
await _readingClinicalDataRepository.AddRangeAsync(readingClinicals);
} }
else else

View File

@ -11,14 +11,20 @@ namespace IRaCIS.Core.Application.Triggers
public class AddSubjectTrigger : IBeforeSaveTrigger<Subject> public class AddSubjectTrigger : IBeforeSaveTrigger<Subject>
{ {
private readonly IRepository<SubjectVisit> _subjectVisitRepository; private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository;
private readonly IRepository<ReadingClinicalData> _readingClinicalDataRepository;
private readonly IRepository<VisitStage> _visitStageRepository; private readonly IRepository<VisitStage> _visitStageRepository;
private readonly IRepository<Trial> _trialRepository; private readonly IRepository<Trial> _trialRepository;
private readonly IMapper _mapper; private readonly IMapper _mapper;
public AddSubjectTrigger(IRepository<SubjectVisit> subjectVisitRepository, IMapper mapper, IRepository<VisitStage> visitStageRepository, IRepository<Trial> trialRepository) public AddSubjectTrigger(IRepository<SubjectVisit> subjectVisitRepository,
IRepository<ClinicalDataTrialSet> clinicalDataTrialSetRepository,
IRepository<ReadingClinicalData> readingClinicalDataRepository,
IMapper mapper, IRepository<VisitStage> visitStageRepository, IRepository<Trial> trialRepository)
{ {
_subjectVisitRepository = subjectVisitRepository; _subjectVisitRepository = subjectVisitRepository;
this._clinicalDataTrialSetRepository = clinicalDataTrialSetRepository;
this._readingClinicalDataRepository = readingClinicalDataRepository;
_trialRepository = trialRepository; _trialRepository = trialRepository;
_visitStageRepository = visitStageRepository; _visitStageRepository = visitStageRepository;
@ -41,6 +47,16 @@ namespace IRaCIS.Core.Application.Triggers
var IsEnrollementQualificationConfirm = await _trialRepository.Where(t => t.Id == subject.TrialId).Select(u => u.IsEnrollementQualificationConfirm).FirstOrDefaultAsync(); var IsEnrollementQualificationConfirm = await _trialRepository.Where(t => t.Id == subject.TrialId).Select(u => u.IsEnrollementQualificationConfirm).FirstOrDefaultAsync();
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<ReadingClinicalData> readingClinicals = new List<ReadingClinicalData>();
svList.ForEach(t => svList.ForEach(t =>
{ {
t.Subject = subject; t.Subject = subject;
@ -48,8 +64,24 @@ namespace IRaCIS.Core.Application.Triggers
t.TrialId = subject.TrialId; t.TrialId = subject.TrialId;
t.SiteId = subject.SiteId; t.SiteId = subject.SiteId;
t.IsEnrollmentConfirm = t.IsBaseLine ? IsEnrollementQualificationConfirm : false; t.IsEnrollmentConfirm = t.IsBaseLine ? IsEnrollementQualificationConfirm : false;
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); await _subjectVisitRepository.AddRangeAsync(svList);