private void AddSideEffectsToAllergyIntolerances(PatientAllergicIntoleranceItem[] allergicIntolerances) { for (var cursor = 0; cursor < Request.Form["Allergies.index"].ToList().Count; cursor++) { string stringIndex = Request.Form["Allergies.index"][cursor]; string sideEffectsIds = Request.Form["Allergies[" + stringIndex + "].SideEffects"]; var sideEffects = _context.SideEffects.Where(se => sideEffectsIds.Contains(se.ID.ToString())); foreach (var sideEffect in sideEffects) { PatientAllergicIntoleranceItemSideEffect drugSideEffect = new PatientAllergicIntoleranceItemSideEffect(); drugSideEffect.PatientAllergicIntoleranceItem = allergicIntolerances[cursor]; drugSideEffect.SideEffect = sideEffect; allergicIntolerances[cursor].SideEffects.Add(drugSideEffect); } } }
internal void UpdatePatientAllergiesIntolerances(PatientAllergicIntoleranceItem[] allergies, Patient patientToUpdate, HttpRequest request) { for (var cursor = 0; cursor < allergies.Length; cursor++) { var allergy = allergies[cursor]; if (allergy.ID == 0) { allergy.PatientId = patientToUpdate.ID; string[] sideEffectsIDs = request.Form["Allergies[" + cursor + "].SideEffects"]; var sideEffectsItems = _context.SideEffects.Where(se => sideEffectsIDs.Contains(se.ID.ToString())); foreach (var sideEffectItem in sideEffectsItems) { PatientAllergicIntoleranceItemSideEffect sideEffect = new PatientAllergicIntoleranceItemSideEffect(); sideEffect.PatientAllergicIntoleranceItem = allergies[cursor]; sideEffect.SideEffect = sideEffectItem; if (allergies[cursor].SideEffects == null) { allergies[cursor].SideEffects = new List <PatientAllergicIntoleranceItemSideEffect>(); } allergies[cursor].SideEffects.Add(sideEffect); } _context.Update(allergy); } else { var allergyIntoleranceToUpdate = _context.PatientAllergicIntoleranceItems .Include(p => p.SideEffects) .SingleOrDefault(s => s.ID == allergy.ID); string[] sideEffectsIDs = request.Form["Allergies[" + cursor + "].SideEffects"]; var sideEffectsItems = _context.SideEffects.Where(se => sideEffectsIDs.Contains(se.ID.ToString())); var uiSelectedIds = sideEffectsIDs.Select(int.Parse).ToList(); var toDeleteEffectIds = allergyIntoleranceToUpdate.SelectedEffectsIds.Except(uiSelectedIds); var toInsertEffectIds = uiSelectedIds.Except(allergyIntoleranceToUpdate.SelectedEffectsIds); if (toDeleteEffectIds.Count() > 0) { _context.PatientAllergicIntoleranceItemSideEffects. RemoveRange(_context.PatientAllergicIntoleranceItemSideEffects. Where(pdse => toDeleteEffectIds.Contains(pdse.SideEffectId) && pdse.PatientAllergicIntoleranceItemId == allergyIntoleranceToUpdate.ID)); } if (toInsertEffectIds.Count() > 0) { var sideEffectsNewItems = _context.SideEffects.Where(se => toInsertEffectIds.Contains(se.ID)); foreach (var sideEffect in sideEffectsNewItems) { PatientAllergicIntoleranceItemSideEffect allergySideEffect = new PatientAllergicIntoleranceItemSideEffect(); allergySideEffect.PatientAllergicIntoleranceItem = allergies[cursor]; allergySideEffect.SideEffect = sideEffect; if (allergyIntoleranceToUpdate.SideEffects == null) { allergyIntoleranceToUpdate.SideEffects = new List <PatientAllergicIntoleranceItemSideEffect>(); } allergyIntoleranceToUpdate.SideEffects.Add(allergySideEffect); } } allergyIntoleranceToUpdate.AllergyIntoleranceItemType = allergy.AllergyIntoleranceItemType; allergyIntoleranceToUpdate.Note = allergy.Note; allergyIntoleranceToUpdate.IntoleranceType = allergy.IntoleranceType; allergyIntoleranceToUpdate.AllergyIntoleranceItemId = allergy.AllergyIntoleranceItemId; allergyIntoleranceToUpdate.Severity = allergy.Severity; _context.Update(allergyIntoleranceToUpdate); } } }