public void TestFilterCoreDataSet() { var codes = new[] { "a", "b" }; var filteredData = new CoreDataSetFilter(TestData()).RemoveWithAreaCode(codes); Assert.AreEqual(1, filteredData.Count()); Assert.AreEqual("c", filteredData.First().AreaCode); }
private static IEnumerable<CkanCoreDataSet> FilterAndConvert(IList<string> areaCodesToIgnore, IList<CoreDataSet> dataList, string periodString) { dataList = new CoreDataSetFilter(dataList) .RemoveWithAreaCode(areaCodesToIgnore).ToList(); var ckanDataList = dataList .Select(x => new CkanCoreDataSet(x, periodString)); return ckanDataList; }
public Limits GetLimits(IList<CoreDataSet> dataList) { if (dataList == null || dataList.Any() == false) { return null; } var values = new CoreDataSetFilter(dataList).SelectValidValues().ToList(); if (values.Any() == false) { return null; } return GetLimitsFromMinAndMax(values.Min(), values.Max()); }
public void TestFilterCoreDataSetCaseInsensitive() { // WRT ignored codes var filteredData = new CoreDataSetFilter(TestData()).RemoveWithAreaCode(new[] { "A", "B" }); Assert.AreEqual(1, filteredData.Count()); Assert.AreEqual("c", filteredData.First().AreaCode); // WRT coredataset area codes var data = TestData(); foreach (var coreDataSet in data) { coreDataSet.AreaCode = coreDataSet.AreaCode.ToUpper(); } filteredData = new CoreDataSetFilter(data).RemoveWithAreaCode(new[] { "a", "b" }); Assert.AreEqual(1, filteredData.Count()); Assert.AreEqual("C", filteredData.First().AreaCode); }
public CcgAverageCalculator(IList<CoreDataSet> dataList, CcgPopulation ccgPopulation, IndicatorMetadata indicatorMetadata) { Unit unit = indicatorMetadata.Unit; if (indicatorMetadata.ValueTypeId == ValueTypeId.Ratio) { return; } if (dataList.Any(x => x.IsCountValid && x.IsDenominatorValid)) { var validData = new CoreDataSetFilter(dataList).SelectWhereCountAndDenominatorAreValid().ToList(); if (RuleAreEnoughPracticeValuesByPopulation.Validates(validData, ccgPopulation)) { Average = WeightedAverageCalculator.CalculateAverage(validData, unit); Average.AreaCode = ccgPopulation.AreaCode; } } else if (dataList.Any(x => x.IsValueValid)) { var practiceCodeToPopulationMap = ccgPopulation.PracticeCodeToPopulation; // Keep only data where population is available var dataWithPopulation = dataList.Where(x => practiceCodeToPopulationMap.ContainsKey(x.AreaCode)).ToList(); if (RuleAreEnoughPracticeValuesByPopulation.Validates(dataWithPopulation, ccgPopulation)) { Average = CoreDataSet.GetNullObject(ccgPopulation.AreaCode); // Population weighted average Average.Value = dataWithPopulation.Sum(data => (data.Value * practiceCodeToPopulationMap[data.AreaCode])) / ccgPopulation.TotalPopulation; } } }
private IList<CoreDataSet> GetChildAreaDataList(IArea parentArea, GroupRoot groupRoot, Grouping grouping, TimePeriod timePeriod) { IList<CoreDataSet> dataList; if (parentArea.IsCountry) { if (area.IsGpPractice) { // No need to calculate rank of practice in whole country throw new FingertipsException("Do not use for GP Practices"); } else { // All data in country dataList = new CoreDataSetListProvider(groupDataReader).GetChildAreaData(grouping, parentArea, timePeriod); dataList = new CoreDataSetFilter(dataList).RemoveWithAreaCode(ignoredAreaCodes).ToList(); } } else { // Use subnational data dataList = groupRoot.Data; } return dataList; }
private int GetSignificance(string areaCode, GroupRoot groupRoot, Grouping grouping, IList<CoreDataSet> childAreaDataList) { CoreDataSet areaData = AreaHelper.GetDataForAreaFromDataList(areaCode, groupRoot.Data); if (areaData == null) { return (int)Significance.None; } var comparer = indicatorComparerFactory.New(grouping); if (comparer is ICategoryComparer) { ICategoryComparer categoryComparer = comparer as ICategoryComparer; var values = new CoreDataSetFilter(childAreaDataList).SelectValidValues().ToList(); categoryComparer.SetDataForCategories(values); return categoryComparer.GetCategory(areaData); } return areaData.Significance[grouping.ComparatorId]; }
public void TestSelectDistinctAgeIds() { var data = new[] { new CoreDataSet{AgeId = 2}, new CoreDataSet{AgeId = 2} }; var ids = new CoreDataSetFilter(data).SelectDistinctAgeIds(); // Check IDs Assert.AreEqual(1, ids.Count()); Assert.AreEqual(2, ids.First()); }
public void TestRemoveWithAreaCode_NullListInConstructor() { var filteredData = new CoreDataSetFilter(null).RemoveWithAreaCode(new List<string>()); Assert.AreEqual(0, filteredData.Count()); }
public void TestSelectWhereCountAndDenominatorAreValid() { var data = new[] { new CoreDataSet{Count = 1,Denominator = 2}, new CoreDataSet{Count = 1,Denominator = 2} }; var filteredData = new CoreDataSetFilter(data).SelectWhereCountAndDenominatorAreValid(); Assert.AreEqual(2, filteredData.Count()); }
private IList<Sex> GetSexesFromDataList(IList<CoreDataSet> dataList) { List<int> sexIds = new CoreDataSetFilter(dataList).SelectDistinctSexIds().ToList(); IList<Sex> sexes = _pholioReader.GetSexesByIds(sexIds); return sexes; }
private CoreDataSet GetFormattedValueData(TimePeriod period, IList<CoreDataSet> coreDataSetList, Grouping grouping, IEnumerable<string> childAreaCodes) { CoreDataSet benchmarkData = GetDataAtSpecificTimePeriod(coreDataSetList, period); var parentArea = new Area { Code = coreDataSetList.Select(x => x.AreaCode).FirstOrDefault() }; if (benchmarkData == null && grouping != null) { //Get child area data only when necessary var childAreaData = new CoreDataSetListProvider(groupDataReader).GetChildAreaData(grouping, parentArea, period); var filteredChildAreaData = new CoreDataSetFilter(childAreaData).SelectWithAreaCode(childAreaCodes); benchmarkData = AverageCalculatorFactory.New(filteredChildAreaData, IndicatorMetadata).Average; } if (benchmarkData == null) { benchmarkData = CoreDataSet.GetNullObject(parentArea.Code); } dataProcessor.FormatAndTruncate(benchmarkData); return benchmarkData; }
private ICategoryComparer GetCategoryComparerWithValues(Dictionary<TimePeriod, ICategoryComparer> periodToComparer, CoreDataSetListProvider provider, Grouping grouping, TimePeriod period, string areaCode) { if (periodToComparer.ContainsKey(period) == false) { Area area = areasReader.GetAreaFromCode(areaCode); var childDataList = provider.GetChildAreaData(grouping, area, period); var comparatorValues = new CoreDataSetFilter(childDataList).SelectValidValues().ToList(); // Get comparer var categoryComparer = (ICategoryComparer)NewIndicatorComparer(); categoryComparer.SetDataForCategories(comparatorValues); periodToComparer[period] = categoryComparer; // Truncate last dataProcessor.FormatAndTruncateList(childDataList); } return periodToComparer[period]; }
public void TestSelectWithAreaCode() { var codes = new[] { "a", "b" }; var filteredData = new CoreDataSetFilter(TestData()).SelectWithAreaCode(codes); Assert.AreEqual(2, filteredData.Count()); Assert.IsNotNull(filteredData.First(x => x.AreaCode == "a")); Assert.IsNotNull(filteredData.First(x => x.AreaCode == "b")); }
public void TestSelectWhereValueIsValid_InvalidValueRemoved() { var validValue = 1; var data = new[] { new CoreDataSet{Value = validValue}, new CoreDataSet{Value = ValueData.NullValue} }; var filteredData = new CoreDataSetFilter(data).SelectWhereValueIsValid(); Assert.AreEqual(1, filteredData.Count()); Assert.AreEqual(validValue, filteredData.First().Value); }
public void TestSelectWhereValueIsValid() { var data = new[] { new CoreDataSet{Value = 1}, new CoreDataSet{Value = 1} }; var filteredData = new CoreDataSetFilter(data).SelectWhereValueIsValid(); Assert.AreEqual(2, filteredData.Count()); }
public void TestSelectWhereCountIsValid_InvalidCountRemoved() { var data = new[] { new CoreDataSet{Count = null}, new CoreDataSet{Count = -1}, new CoreDataSet{Count = 1} }; var filteredData = new CoreDataSetFilter(data).SelectWhereCountIsValid(); Assert.AreEqual(1, filteredData.Count()); Assert.AreEqual(1, filteredData.First().Count); }
public void TestSelectWhereCountAndDenominatorAreValid_InvalidDenominatorRemoved() { var data = new[] { new CoreDataSet{Count = 1,Denominator = -1}, new CoreDataSet{Count = 1, Denominator = 2}, }; var filteredData = new CoreDataSetFilter(data).SelectWhereCountAndDenominatorAreValid(); Assert.AreEqual(1, filteredData.Count()); Assert.AreEqual(2, filteredData.First().Denominator); }
private IList<Age> GetAgesFromDataList(IList<CoreDataSet> dataList) { var ageIds = new CoreDataSetFilter(dataList).SelectDistinctAgeIds().ToList(); var ages = _pholioReader.GetAgesByIds(ageIds); ages = new AgeSorter().SortByAge(ages); return ages; }
public CountAverageCalculator(CoreDataSetFilter coreDataSetFilter) { this.coreDataSetFilter = coreDataSetFilter; }
public void TestRemoveWithAreaCodeIgnoresEmptyListOfAreaCodes() { var filteredData = new CoreDataSetFilter(TestData()).RemoveWithAreaCode(new string[] { }); Assert.AreEqual(3, filteredData.Count()); }
public WeightedAverageCalculator(CoreDataSetFilter coreDataSetFilter, Unit unit) { this.coreDataSetFilter = coreDataSetFilter; this.unit = unit; }
public void TestRemoveWithAreaCodeIgnoresNullListOfAreaCodes() { var filteredData = new CoreDataSetFilter(TestData()).RemoveWithAreaCode(null); Assert.AreEqual(3, filteredData.Count()); }
private IEnumerable<double> GetValuesForStats(Grouping grouping, TimePeriod timePeriod) { IList<CoreDataSet> data = null; IList<double> values; if (parentArea.IsCountry) { // Optimisation for large number of areas values = groupDataReader.GetOrderedCoreDataValidValuesForAllAreasOfType(grouping, timePeriod, areaCodesToIgnore); } else { data = new CoreDataSetListProvider(groupDataReader).GetChildAreaData(grouping, parentArea, timePeriod); data = new CoreDataSetFilter(data).RemoveWithAreaCode(areaCodesToIgnore).ToList(); data = data.OrderBy(x => x.Value).ToList(); values = new ValueListBuilder(data).ValidValues; } // Apply rules int areaTypeId = grouping.AreaTypeId; if (areaTypeId != AreaTypeIds.GpPractice) { doEnoughAreasHaveValues = IsRequiredNumberOfAreaValues(values) || ShouldSpineChartAlwaysBeAvailable(grouping.IndicatorId); if (doEnoughAreasHaveValues == false) { values = null; } } else if (parentArea.IsCcg) { // CCG average of GP practices if (RuleShouldCcgAverageBeCalculated.Validates(grouping, data, ccgPopulation) == false) { values = null; } } return values; }
private void PerformComparisons(IList<CoreDataSet> dataList) { IndicatorComparer comparer = indicatorComparerFactory.New(Grouping); TargetComparer targetComparer = TargetComparerFactory.New(IndicatorMetadata.TargetConfig); new TargetComparerHelper(groupDataReader, parentArea) .AssignExtraDataIfRequired(parentArea, targetComparer, Grouping, IndicatorMetadata); CoreDataSet benchmarkData = null; ICategoryComparer categoryComparer = null; var averageCalculator = AverageCalculatorFactory.New(dataList, IndicatorMetadata); if (comparer is ICategoryComparer) { categoryComparer = comparer as ICategoryComparer; var values = new CoreDataSetFilter(dataList).SelectValidValues().ToList(); categoryComparer.SetDataForCategories(values); } else { benchmarkData = new BenchmarkDataProvider(groupDataReader) .GetBenchmarkData(Grouping, Period, averageCalculator, parentArea); } foreach (CoreDataSet coreData in dataList) { // NHibernate may have provided a cached data object for which significance // has already been added if (coreData.Significance.ContainsKey(ComparatorId) == false) { int significance = categoryComparer == null ? (int)comparer.Compare(coreData, benchmarkData, IndicatorMetadata) : categoryComparer.GetCategory(coreData); coreData.Significance.Add(ComparatorId, significance); } // NHibernate may have provided a cached data object for which significance // has already been added if (coreData.Significance.ContainsKey(ComparatorIds.Target) == false) { TargetComparer.AddTargetSignificance(coreData, targetComparer); } } }