/// <summary>
        /// Processes the region population strats.
        /// </summary>
        /// <param name="regionPopulationStrats">The region population strats.</param>
        /// <param name="errors">The errors.</param>
        private void ProcessRegionPopulationStrats(RegionPopulationStrats regionPopulationStrats, IList <ImportError> errors)
        {
            try
            {
                if (errors.Any())
                {
                    return;
                }

                HospitalRegistryService.Save(regionPopulationStrats);
            }
            catch (Exception exc)
            {
                errors.Add(ImportError.Create(typeof(RegionPopulationStrats).Name, regionPopulationStrats.RegionID.ToString(), (exc.InnerException ?? exc).Message));
            }
        }
        /// <summary>
        /// Processes the values.
        /// </summary>
        /// <param name="vals">The vals.</param>
        /// <param name="errors">The errors.</param>
        protected override void ProcessValues(string[] vals, IList <ImportError> errors)
        {
            vals.ToList().ForEach(TestForEmpty);
            int sex      = int.Parse(vals[1].Trim());
            int ageGroup = int.Parse(vals[2].Trim());
            int race     = int.Parse(vals[3].Trim());
            int catid    = 0;
            int catval   = 0;

            if (sex == 0 && ageGroup == 0 && race == 0)
            {
                catid  = 0;
                catval = 0;
            }
            else if (sex == 0 && ageGroup > 0 && race == 0)
            {
                catid  = 1;
                catval = ageGroup;
            }
            else if (sex > 0 && ageGroup == 0 && race == 0)
            {
                catid  = 2;
                catval = sex;
            }
            else if (sex == 0 && ageGroup == 0 && race > 0)
            {
                catid  = 4;
                catval = race;
            }
            else
            {
                errors.Add(new ImportError()
                {
                    EntityName = "RegionPopulationStrats", ErrorMessage = string.Format("unsupported combination Sex : {0} AgeGroup : {1} Race : {2}", sex, ageGroup, race)
                });
            }

            if (errors.Any())
            {
                return;
            }

            var regionPopulationStrats = new RegionPopulationStrats
            {
                RegionType = 0,
                RegionID   = int.Parse(vals[0].Trim()),
                CatID      = catid,
                CatVal     = catval,
                Year       = int.Parse(vals[4].Trim()),
                Population = int.Parse(vals[5].Trim())
            };


            if (_previousValues.Any(pop => pop.Item1 == regionPopulationStrats.Year && pop.Item2 == regionPopulationStrats.RegionID && pop.Item3 == regionPopulationStrats.CatID && pop.Item4 == regionPopulationStrats.CatVal))
            {
                errors.Add(new ImportError {
                    EntityName = "RegionPopulationStrats", ErrorMessage = string.Format("duplicate record for a given year ({0}) and Region ID ({1}): CatID : {2} CatVal : {3}", regionPopulationStrats.Year, regionPopulationStrats.RegionID, regionPopulationStrats.CatID, regionPopulationStrats.CatVal)
                });
            }

            ProcessRegionPopulationStrats(regionPopulationStrats, errors);

            if (errors == null || !errors.Any())
            {
                _previousValues.Add(new Tuple <int, int, int, int>(regionPopulationStrats.Year, regionPopulationStrats.RegionID, regionPopulationStrats.CatID, regionPopulationStrats.CatVal));
            }
        }