Esempio n. 1
0
 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);
         }
     }
 }
Esempio n. 2
0
        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);
                }
            }
        }