/// <summary>
        /// Processes the single aggregate.
        /// </summary>
        /// <param name="dto">The dto to process.</param>
        /// <param name="entity">The entity.</param>
        /// <returns>A <see cref="System.Boolean"/></returns>
        protected override bool ProcessSingleAggregate(MedicationDto dto, Medication entity)
        {
            CodedConcept medicationCode = null;

            if (dto.MedicationCodeCodedConcept != null)
            {
                medicationCode = new CodedConceptBuilder().WithCodedConceptDto(dto.MedicationCodeCodedConcept);
            }

            CodedConcept rootMedicationCode = null;

            if (dto.RootMedicationCodedConcept != null)
            {
                rootMedicationCode = new CodedConceptBuilder().WithCodedConceptDto(dto.RootMedicationCodedConcept);
            }

            var discontinuedReason = _mappingHelper.MapLookupField <DiscontinuedReason> (dto.DiscontinuedReason);
            var medicationStatus   = _mappingHelper.MapLookupField <MedicationStatus> (dto.MedicationStatus);

            entity.ReviseOverTheCounterIndicator(dto.OverTheCounterIndicator);
            entity.RevisePrescribingPhysicianName(dto.PrescribingPhysicianName);
            entity.ReviseUsageDateRange(new DateRange(dto.StartDate, dto.EndDate));
            entity.ReviseDiscontinuedByPhysicianName(dto.DiscontinuedByPhysicianName);
            entity.ReviseDiscontinuedReason(discontinuedReason);
            entity.ReviseDiscontinuedReasonOtherDescription(dto.DiscontinuedReasonOtherDescription);
            entity.ReviseFrequencyDescription(dto.FrequencyDescription);
            entity.ReviseInstructionsNote(dto.InstructionsNote);
            entity.ReviseMedicationStatus(medicationStatus);
            entity.ReviseMedicationCodeCodedConcept(medicationCode);
            entity.ReviseRootMedicationCodedConcept(rootMedicationCode);

            return(true);
        }