public override Task ProcessInScope(IServiceProvider serviceProvider) { using (IServiceScope scope = _serviceProvider.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService <AspergillosisContext>(); var externalContext = scope.ServiceProvider.GetRequiredService <ExternalImportDbContext>(); var allPatients = context.Patients .Include(p => p.PatientRadiologyNotes); foreach (var radiology in context.RadiologyTypes) { foreach (var patient in allPatients) { var results = externalContext.RadiologyReports .Where(r => r.OrderItemCode.Equals(radiology.Name) && r.RM2Number == "RM2" + patient.RM2Number); if (!results.Any()) { continue; } var existingDates = patient.PatientRadiologyNotes .Where(pi => pi.RadiologyTypeId == radiology.ID) .Select(pi => pi.DateTaken.Date) .ToList(); foreach (var result in results) { if (existingDates.FindAll(d => d.Date == result.DatePerformed.Date).ToList().Count == 0) { var patientRadiologyNote = new PatientRadiologyNote(); patientRadiologyNote.PatientId = patient.ID; patientRadiologyNote.DateTaken = result.DatePerformed; patientRadiologyNote.RadiologyTypeId = radiology.ID; patientRadiologyNote.SourceSystemGUID = result.OrderGUID; patientRadiologyNote.Note = result.Report; patientRadiologyNote.CreatedDate = DateTime.Now; context.PatientRadiologyNotes.Add(patientRadiologyNote); } } } } context.SaveChanges(); return(Task.CompletedTask); } }
public async Task <IActionResult> Radiology() { var allPatients = _context.Patients .Include(p => p.PatientRadiologyNotes); foreach (var radiology in _context.RadiologyTypes) { foreach (var patient in allPatients) { var results = _externalImportDbContext.RadiologyReports .Where(r => r.OrderItemCode.Equals(radiology.Name) && r.RM2Number == "RM2" + patient.RM2Number); if (!results.Any()) { continue; } var existingDates = patient.PatientRadiologyNotes .Where(pi => pi.RadiologyTypeId == radiology.ID) .Select(pi => pi.DateTaken.Date) .ToList(); foreach (var result in results) { if (existingDates.FindAll(d => d.Date == result.DatePerformed.Date).ToList().Count == 0) { var patientRadiologyNote = new PatientRadiologyNote(); patientRadiologyNote.PatientId = patient.ID; patientRadiologyNote.DateTaken = result.DatePerformed; patientRadiologyNote.RadiologyTypeId = radiology.ID; patientRadiologyNote.SourceSystemGUID = result.OrderGUID; patientRadiologyNote.Note = result.Report; patientRadiologyNote.CreatedDate = DateTime.Now; await _context.PatientRadiologyNotes.AddAsync(patientRadiologyNote); } } } } await _context.SaveChangesAsync(); return(Ok()); }