private async void BuildResultData()
        {
            PageDialog.ShowLoading("Loading");

            if (App.LatestSurveyResponse != null)
            {
                _response = App.LatestSurveyResponse;
            }
            else
            {
                try
                {
                    await RunSafe(GetSurveyResults());

                    _response = App.LatestSurveyResponse;
                }
                catch (Exception ex)
                {
                    MetricsManager.TrackException(ex.Message, ex);
                }
            }

            if (_response != null)
            {
                var chartData   = new List <ChartDataModel>();
                var answers     = _response.QuestionResponses;
                var statements  = new Dictionary <string, List <string> >();
                var isSuitable  = true;
                var lowestScore = 5;

                foreach (var stage in App.LatestSurvey.Stages)
                {
                    //Hardcoded skip of stage 1, this could be a parameter in the stage model instead?
                    if (stage.ID > 1)
                    {
                        try
                        {
                            //Add Stage to spidergraph
                            var score = answers.Where(a => a.StageID == stage.ID && a.QuestionResponse == true).Count();
                            chartData.Add(new ChartDataModel(stage.StageText, score));

                            if (score <= 2)
                            {
                                isSuitable = false;
                            }

                            if (score < lowestScore)
                            {
                                lowestScore = score;
                            }

                            //Add any statements from questions answered 'No'
                            if (answers.Where(a => a.StageID == stage.ID && a.QuestionResponse == false).Count() > 0)
                            {
                                var stageStatements = new List <string>();
                                foreach (var answer in answers.Where(a => a.StageID == stage.ID && a.QuestionResponse == false))
                                {
                                    stageStatements.Add(answer.QuestionStatement);
                                }
                                statements.Add(stage.StageText, stageStatements);
                            }
                        }
                        catch (Exception ex)
                        {
                            MetricsManager.TrackException("Failed to build summary data", ex);
                        }
                    }
                }

                RadarData  = new ObservableCollection <ChartDataModel>(chartData);
                Statements = new ObservableDictionary <string, List <string> >(statements);
                if (isSuitable)
                {
                    SuitabilityStatement = AppTextResource.SurveyResultSdctSuitable;
                }

                RadarColour    = ReturnHexValue(lowestScore);
                AssessmentDate = _response.SubmittedDate.ToShortDateString();
            }

            PageDialog.HideLoading();
        }