private bool MapAllergyProperties(AllergyDto allergyDto, Allergy allergy)
        {
            var allergySeverityType = _mappingHelper.MapLookupField <AllergySeverityType> (allergyDto.AllergySeverityType);
            var allergyType         = _mappingHelper.MapLookupField <AllergyType> (allergyDto.AllergyType);
            var allergyStatus       = _mappingHelper.MapLookupField <AllergyStatus> (allergyDto.AllergyStatus);

            CodedConcept allergen = null;

            if (allergyDto.AllergenCodedConcept != null)
            {
                allergen = new CodedConceptBuilder().WithCodedConceptDto(allergyDto.AllergenCodedConcept);
            }

            allergy.ReviseAllergySeverityType(allergySeverityType);
            allergy.ReviseAllergyType(allergyType);
            allergy.ReviseOnsetDateRange(new DateRange(allergyDto.OnsetStartDate, allergyDto.OnsetEndDate));
            allergy.ReviseAllergyStatus(allergyStatus);
            allergy.ReviseCodedConcept(allergen);

            // Map reactions
            var deletedReactions = allergy.AllergyReactions.Where(
                a => !allergyDto.AllergyReactions.Any(ad => ad.Key == a.Reaction.Key)).ToList();

            deletedReactions.ForEach(allergy.DeleteReaction);

            var addedReactions = allergyDto.AllergyReactions.Where(
                a => !allergy.AllergyReactions.Any(ad => ad.Reaction.Key == a.Key)).ToList();

            addedReactions.ForEach(r => allergy.AddReaction(_mappingHelper.MapLookupField <Reaction> (r)));

            return(true);
        }
        private void AddAllergy(AllergyDto allergyDto)
        {
            var patient       = Session.Get <Patient> (_patientKey);
            var allergyStatus = _mappingHelper.MapLookupField <AllergyStatus> (allergyDto.AllergyStatus);

            CodedConcept allergen = null;

            if (allergyDto.AllergenCodedConcept != null)
            {
                allergen = new CodedConceptBuilder().WithCodedConceptDto(allergyDto.AllergenCodedConcept);
            }

            var allergy = _allergyFactory.CreateAllergy(patient, allergyStatus, allergen);

            var mapResult = MapAllergyProperties(allergyDto, allergy);

            _mappingResult &= mapResult;
        }
 private void RemoveAllergy(AllergyDto allergyDto, Allergy allergy)
 {
     _allergyFactory.DestroyAllergy(allergy);
 }
        private void ChangeAllergy(AllergyDto allergyDto, Allergy allergy)
        {
            var mapResult = MapAllergyProperties(allergyDto, allergy);

            _mappingResult &= mapResult;
        }