public void TestAllCountyUAsInDeprivationDecile() { Grouping grouping = new Grouping { AgeId = AgeIds.Under75, SexId = SexIds.Persons, IndicatorId = IndicatorIds.OverallPrematureDeaths, GroupId = GroupIds.LongerLives, ComparatorId = ComparatorIds.Subnational, ComparatorMethodId = ComparatorMethodId.SingleOverlappingCIs, AreaTypeId = AreaTypeIds.CountyAndUnitaryAuthority, YearRange = 3, DataPointYear = 2010 }; ChildAreaValuesBuilder builder = new ChildAreaValuesBuilder( new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }, ReaderFactory.GetGroupDataReader(), ReaderFactory.GetAreasReader(), ReaderFactory.GetProfileReader()) { AreaTypeId = grouping.AreaTypeId, DataPointOffset = 0, ParentAreaCode = CategoryArea.CreateAreaCode( CategoryTypeIds.DeprivationDecileCountyAndUA2010, 1), ComparatorId = grouping.ComparatorId }; BuildAndVerifyData(builder, grouping); }
public void TestAllCountyAndUAsForEngland() { var grouping = GroupingForEngland(); ChildAreaValuesBuilder builder = new ChildAreaValuesBuilder( new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }, ReaderFactory.GetGroupDataReader(), ReaderFactory.GetAreasReader(), ReaderFactory.GetProfileReader()) { AreaTypeId = grouping.AreaTypeId, DataPointOffset = 0, ParentAreaCode = AreaCodes.England, ComparatorId = grouping.ComparatorId }; BuildAndVerifyData(builder, grouping); }
private void InitBuilder(int childAreaTypeId) { builder = new GroupRootNationalValuesBuilder(); var indicatorComparer = new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }; var listBuilder = new ChildAreaValuesBuilder(indicatorComparer, ReaderFactory.GetGroupDataReader(), ReaderFactory.GetAreasReader(), ReaderFactory.GetProfileReader()) { ParentAreaCode = AreaCodes.England, AreaTypeId = childAreaTypeId }; builder.ChildAreaValuesBuilder = listBuilder; }
public IList<CoreDataSet> GetValues() { var profileId = GetProfileId(); var grouping = GetGrouping(profileId); var indicatorComparerFactory = new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }; ChildAreaValuesBuilder builder = new ChildAreaValuesBuilder(indicatorComparerFactory, groupDataReader, ReaderFactory.GetAreasReader(), profileReader) { AreaTypeId = _parameters.AreaTypeId, ParentAreaCode = _parameters.ParentAreaCode, DataPointOffset = _parameters.DataPointOffset, ComparatorId = _parameters.ComparatorId, RestrictToProfileId = GetProfileId() }; return builder.Build(grouping); }
public void TestAllCountyUAsWithQuintilesComparison() { Grouping grouping = new Grouping { AgeId = AgeIds.Under75, SexId = SexIds.Persons, IndicatorId = IndicatorIds.OverallPrematureDeaths, GroupId = GroupIds.LongerLives, ComparatorId = ComparatorIds.Subnational, ComparatorMethodId = ComparatorMethodId.Quintiles, AreaTypeId = AreaTypeIds.CountyAndUnitaryAuthority, YearRange = 3, DataPointYear = 2010 }; ChildAreaValuesBuilder builder = new ChildAreaValuesBuilder( new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }, ReaderFactory.GetGroupDataReader(), ReaderFactory.GetAreasReader(), ReaderFactory.GetProfileReader()) { AreaTypeId = grouping.AreaTypeId, DataPointOffset = 0, ParentAreaCode = AreaCodes.Gor_EastMidlands, ComparatorId = grouping.ComparatorId }; var list = builder.Build(grouping); Assert.IsTrue(list.Any()); var categoriesFound = new [] {false,false,false,false,false}; foreach (var coreDataSet in list) { var sig = coreDataSet.Significance[grouping.ComparatorId]; categoriesFound[sig - 1] = true; Assert.AreNotEqual(Significance.None,sig); } // Check at least one of each category was found foreach (var b in categoriesFound) { Assert.IsTrue(b); } }
private static void BuildAndVerifyData(ChildAreaValuesBuilder builder, Grouping grouping) { var list = builder.Build(grouping); Assert.IsTrue(list.Any()); // Significance is calculated Assert.AreNotEqual(Significance.None, list.First().Significance[grouping.ComparatorId]); }
public void TestTargetComparisonIsMade() { Grouping grouping = new Grouping { AgeId = AgeIds.Plus15, SexId = SexIds.Persons, IndicatorId = IndicatorIds.HIVLateDiagnosis, // an indicator with a target GroupId = GroupIds.SexualAndReproductiveHealth, ComparatorId = ComparatorIds.England, ComparatorMethodId = ComparatorMethodId.SingleOverlappingCIs, AreaTypeId = AreaTypeIds.DistrictAndUnitaryAuthority, YearRange = 3, DataPointYear = 2011 }; ChildAreaValuesBuilder builder = new ChildAreaValuesBuilder( new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }, ReaderFactory.GetGroupDataReader(), ReaderFactory.GetAreasReader(), ReaderFactory.GetProfileReader()) { AreaTypeId = grouping.AreaTypeId, DataPointOffset = 0, ParentAreaCode = AreaCodes.England, ComparatorId = grouping.ComparatorId }; var list = builder.Build(grouping); // Target significance is calculated Assert.AreNotEqual(Significance.None, list.First().Significance[ComparatorIds.Target]); }
public void TestEmptyListReturnedWhenNoData() { var grouping = GroupingForEngland(); grouping.DataPointYear = 1900; ChildAreaValuesBuilder builder = new ChildAreaValuesBuilder( new IndicatorComparerFactory { PholioReader = ReaderFactory.GetPholioReader() }, ReaderFactory.GetGroupDataReader(), ReaderFactory.GetAreasReader(), ReaderFactory.GetProfileReader()) { AreaTypeId = grouping.AreaTypeId, DataPointOffset = 0, ParentAreaCode = AreaCodes.England, ComparatorId = grouping.ComparatorId }; var list = builder.Build(grouping); Assert.IsFalse(list.Any()); }
public Dictionary<string, IList<SimpleAreaData>> Build() { IndicatorMetadataRepository indicatorMetadataRepository = IndicatorMetadataRepository.Instance; IList<Grouping> groupings = groupDataReader.GetGroupingsByGroupIdAndAreaTypeIdOrderedBySequence(GroupId, AreaTypeId); GroupRootBuilder rootBuilder = new GroupRootBuilder(); IList<GroupRoot> roots = rootBuilder.BuildGroupRoots(groupings); CoreDataSetProviderFactory coreDataSetProviderFactory = new CoreDataSetProviderFactory(); Dictionary<string, IList<SimpleAreaData>> responseObjects = new Dictionary<string, IList<SimpleAreaData>>(); foreach (IArea area in Areas) { List<SimpleAreaData> dataObjects = new List<SimpleAreaData>(); responseObjects.Add(area.Code, dataObjects); var isAreaCcg = area.IsCcg; bool isAreaAggregate = isAreaCcg || area.IsGpDeprivationDecile || area.IsShape; CoreDataSetProvider coreDataSetProvider = coreDataSetProviderFactory.New(area); var indicatorComparerFactory = new IndicatorComparerFactory { PholioReader = pholioReader }; foreach (GroupRoot root in roots) { Grouping grouping = root.FirstGrouping; IndicatorComparer comparer = indicatorComparerFactory.New(grouping); IndicatorMetadata metadata = indicatorMetadataRepository.GetIndicatorMetadata(grouping.IndicatorId); var formatter = NumericFormatterFactory.New(metadata, groupDataReader); var dataProcessor = new ValueWithCIsDataProcessor(formatter); List<ValueData> dataList = new List<ValueData>(); ITimePeriodTextListBuilder timePeriodTextListBuilder = TimePeriodTextListBuilderFactory.New(IncludeTimePeriods, metadata); Dictionary<string, List<int?>> significanceHash = null; if (isAreaAggregate == false || isAreaCcg) { significanceHash = GetSignificanceHash(ComparatorAreaCodes); } var timePeriods = GetTimePeriods(grouping, metadata.YearType); foreach (TimePeriod timePeriod in timePeriods) { timePeriodTextListBuilder.Add(timePeriod); CoreDataSet areaData = coreDataSetProvider.GetData(grouping, timePeriod, metadata); if (areaData != null) { ValueWithCIsData data = areaData.GetValueWithCIsData(); dataProcessor.FormatAndTruncate(data); if (isAreaAggregate && isAreaCcg == false) { dataList.Add(data.GetValueData()); } else { dataList.Add(data); foreach (var comparatorAreaCode in ComparatorAreaCodes) { CoreDataSet comparatorData = groupDataReader.GetCoreData(grouping, timePeriod, comparatorAreaCode) .FirstOrDefault(); try { int significance; if (comparer is ICategoryComparer) { var d = new ChildAreaValuesBuilder(indicatorComparerFactory, groupDataReader, areasReader, profileReader) { ParentAreaCode = comparatorAreaCode, AreaTypeId = AreaTypeId, ComparatorId = grouping.ComparatorId }.Build(grouping); var coreData = d.First(x => x.AreaCode.Equals(area.Code)); significance = coreData.Significance.Values.First(); } else { significance = (int)comparer.Compare(areaData, comparatorData, metadata); } var significanceList = significanceHash[comparatorAreaCode]; significanceList.Add(significance); } catch (Exception ex) { ExceptionLog.LogException(ex, string.Empty); } } } } else { // Placeholders for missing data dataList.Add(null); if (significanceHash != null) { foreach (var comparatorAreaCode in ComparatorAreaCodes) { significanceHash[comparatorAreaCode].Add(null); } } } } SimpleAreaData dataObject; if (IncludeTimePeriods) { // Only attach metadata when requested (hybrid of GroupRoot & CoreDataSet) //TODO this is difficult to keep aligned with Grouping class dataObject = new FullAreaData { IndicatorId = grouping.IndicatorId, Significances = significanceHash, Data = dataList, StateSex = root.StateSex, Sex = grouping.Sex, Age = grouping.Age, ComparatorConfidence = grouping.ComparatorConfidence, ComparatorMethodId = grouping.ComparatorMethodId, Periods = timePeriodTextListBuilder.GetTimePeriodStrings() }; } else { dataObject = new SimpleAreaData { IndicatorId = grouping.IndicatorId, Significances = significanceHash, Data = dataList }; } dataObjects.Add(dataObject); } } return responseObjects; }