private async Task SaveSetting(CreateSetting command, Data.Outbreak outbreak, OutbreakSettings setting) { //if new setting is primary; set all others to not primary if (command.IsPrimary) { foreach (var s in outbreak.OutbreakSettings) { s.InPrimary = false; } } setting.IdOutbreak = command.OutbreakId; setting.CdSetting = command.SettingType; setting.InPrimary = command.IsPrimary; setting.DsSettingOther = command.OtherType; setting.IdResourceSetting = command.SettingFacilityId; setting.DsAddress = command.Address.AddressLine1 ?? ""; setting.DsAddress2 = command.Address.AddressLine2 ?? ""; setting.DsCity = command.Address.City ?? ""; setting.DsZip = command.Address.Zip ?? ""; setting.CdState = command.Address.State ?? ""; setting.CdCountry = command.Address.Country ?? ""; setting.CdCounty = command.Address.County ?? ""; setting.DsContactPhn = command.SettingContactPhone ?? ""; setting.NmContact = command.SettingContact ?? ""; if (command.SettingFacilityId.HasValue) { var facility = await writeContext.ResourceSetting .FindAsync(command.SettingFacilityId); setting.NmFacility = facility.NmSetting; setting.DsAddress = facility.DsAddr1Name; setting.DsAddress2 = facility.DsAddr2; setting.DsCity = facility.DsCity; setting.DsZip = facility.DsZip; setting.CdCounty = facility.CdCounty; setting.CdCountry = facility.CdCountry; } //generate email alert on setting save var alerts = await writeContext.EpiUserAlerts .Where(alert => alert.CdAlert == AlertType.Outbreak) .Where(alert => alert.CdCounty == outbreak.CdCountyInitiating) .Select(alert => new EmailQueue { IdUserRecipient = alert.IdUser, CdAlert = alert.CdAlert, CdCounty = alert.CdCounty, CdEntity = AlertType.Outbreak, CdProcessed = AlertStatus.NotSent, IdEntity = outbreak.IdOutbreak.ToString() }) .ToListAsync(); await emailService.DispatchAlerts(alerts); }
private async Task ReplaceEvents( Data.Outbreak outbreak, string outbreakEventType, IEnumerable <string> eventData, DateTime eventDate, params string[] codeType ) { outbreak.OutbreakEvents .Where(e => e.CdEventType == outbreakEventType) .ToList() .ForEach(e => writeContext.OutbreakEvents.Remove(e)); if (eventData == null) { return; } var tasks = eventData .Select(async e => new OutbreakEvents { IdOutbreak = outbreak.IdOutbreak, CdEventType = outbreakEventType, CdSubType = e, DsDesc = await codeRepository.GetDescription(e, codeType), DtEvent = eventDate, IdEvent = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId), }) .ToArray(); await Task.WhenAll(tasks); foreach (var task in tasks) { outbreak.OutbreakEvents.Add(task.Result); } }
private async Task EnsureOutbreakSurvey(Data.Outbreak outbreak) { //see if we need to create a survey //if ICD9 is not blank if (!string.IsNullOrWhiteSpace(outbreak.CdIcd9)) { //see if a survey row for this outbreak/ICD9 exists bool surveyExists = await writeContext.Survey .Where(survey => survey.DtEffective <= DateTime.Now) .AnyAsync(survey => survey.CdIcd9 == outbreak.CdIcd9 && survey.IdOutbreak == outbreak.IdOutbreak && survey.CdSurveyType == SurveyType.OutbreakLevel); //if the survey does not exist, see if a template exists if (!surveyExists) { var template = await writeContext.Survey .Where(survey => survey.DtEffective <= DateTime.Now) .OrderByDescending(survey => survey.DtEffective) .FirstOrDefaultAsync(survey => survey.CdIcd9 == outbreak.CdIcd9 && survey.CdSurveyType == SurveyType.OutbreakTemplate); //if template exists, create the survey if (template != null) { await surveyService.Execute(new CreateSurveyFromTemplate { OutbreakId = outbreak.IdOutbreak, SurveyIdToClone = template.IdSurvey, SurveyType = SurveyType.OutbreakLevel, SurveyName = $"{outbreak.IdOutbreak} - {outbreak.NmOutbreak}", EffectiveDate = outbreak.DtOutbreakEvent.Value }); } } } }
private void ReplaceSymptoms( Data.Outbreak outbreak, IEnumerable <string> symptoms, string otherSymptom) { outbreak.OutbreakSymptoms.Clear(); var symptomsToAdd = symptoms .Select(symptom => new OutbreakSymptoms { CdSymptoms = symptom, IdOutbreak = outbreak.IdOutbreak }); foreach (var symptom in symptomsToAdd) { if (symptom.CdSymptoms == SymptomType.Other) { symptom.DsOther = otherSymptom; } outbreak.OutbreakSymptoms.Add(symptom); } }
private async Task CreateEvent(Data.Outbreak outbreak, string outbreakEventType, string type, DateTime eventDate, string subType = "") { var Id = (int)await sequenceGenerator.GetNextAsync(SequenceType.OutbreakEventId); for (int i = 0; i < type.Length; i += 1000) { var obEvent = new OutbreakEvents { IdOutbreak = outbreak.IdOutbreak, CdEventType = outbreakEventType, CdSubType = subType, DsDesc = type.Substring(i, Math.Min(type.Length - i, 1000)), DtEvent = eventDate, IdSequence = i / 1000, IdEvent = Id }; outbreak.OutbreakEvents.Add(obEvent); } }