Ejemplo n.º 1
0
        private void CreateAllergy(AllergyDto dto, Patient patient, Provenance provenance)
        {
            var          allergyStatus        = _mappingHelper.MapLookupField <AllergyStatus> (dto.AllergyStatus);
            CodedConcept allergenCodedConcept = null;

            if (dto.AllergenCodedConcept != null)
            {
                allergenCodedConcept = new CodedConceptBuilder().WithCodedConceptDto(dto.AllergenCodedConcept);
            }
            var allergy = patient.AddAllergy(allergyStatus, allergenCodedConcept, provenance);


            var allergySeverityType = _mappingHelper.MapLookupField <AllergySeverityType> (dto.AllergySeverityType);
            var allergyType         = _mappingHelper.MapLookupField <AllergyType> (dto.AllergyType);

            allergy.ReviseAllergySeverityType(allergySeverityType);
            allergy.ReviseAllergyType(allergyType);
            allergy.ReviseOnsetDateRange(new DateRange(dto.OnsetStartDate, dto.OnsetEndDate));

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

            deletedReactions.ForEach(allergy.DeleteReaction);

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

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