/// <summary>
        /// Joins and generates the data for the full report page.
        /// </summary>
        /// <param name="Debug"></param>
        /// <param name="Severities"></param>
        /// <param name="License"></param>
        /// <returns></returns>
        private IQueryable <RawReportFull> GetDebugData(IQueryable <CalculationDebugDataEntity> Debug, IEnumerable <SeverityEntity> Severities, LicenseMode License)
        {
            var organs = new LinqMetaData().Organ;

            var fu = Debug.ToArray()
                     .Where(x => x.IsFiltered)
                     .Join(Debug.ToArray()
                           .Where(y => !y.IsFiltered), x => x.FingerSector, y => y.FingerSector,
                           (x, y) => new FilteredUnfiltered
            {
                OrganComponent = x.OrganComponent,
                FingerSector   = x.FingerSector,

                FilteredLRRank          = x.LRRank,
                FilteredLRScaledScore   = (int)Math.Round(x.LRScaledScore),
                FilteredEPICRank        = x.EPICRank,
                FilteredEPICScaledScore = (int)Math.Round(x.EPICScaledScore),

                // fill in report score below

                FilteredEPICBaseScore  = x.EPICBaseScore,
                FilteredEPICBonusScore = x.EPICBonusScore,
                FilteredEPICScore      = x.EPICScore,

                UnfilteredLRRank          = y.LRRank,
                UnfilteredLRScaledScore   = (int)Math.Round(y.LRScaledScore),
                UnfilteredEPICRank        = y.EPICRank,
                UnfilteredEPICScaledScore = (int)Math.Round(y.EPICScaledScore),

                // fill in report score below

                UnfilteredEPICBaseScore  = y.EPICBaseScore,
                UnfilteredEPICBonusScore = y.EPICBonusScore,
                UnfilteredEPICScore      = y.EPICScore,
            });

            var joined = organs
                         .LeftOuterJoin(fu.Where(y => y.FingerSector.Contains("L")),
                                        x => x.LComp,
                                        y => y.FingerSector,
                                        (y, x) => new RawReportFull
            {
                LComp            = x != null ? x.FingerSector : "",
                RComp            = y.RComp,
                OrganId          = y.OrganId,
                Organ            = y.Description.Replace(" - Left", "").Replace(" - Right", ""),
                OrganSystemOrgan = y.OrganSystemOrgans.First(z => z.LicenseOrganSystem.LicenseMode == License),

                FingerSector = (x != null ? x.FingerSector : ""),

                LFilteredLRRank          = x != null ? x.FilteredLRRank.ToString(CultureInfo.InvariantCulture) : "",
                LFilteredLRScaledScore   = x != null ? x.FilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : "",
                LFilteredEPICRank        = x != null ? x.FilteredEPICRank.ToString(CultureInfo.InvariantCulture) : "",
                LFilteredEPICScaledScore = x != null ? x.FilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : "",

                // fill in report score below

                LFilteredEPICBaseScore  = x != null ? x.FilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : "",
                LFilteredEPICBonusScore = x != null ? x.FilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : "",
                LFilteredEPICScore      = x != null ? x.FilteredEPICScore.ToString(CultureInfo.InvariantCulture) : "",

                LUnfilteredLRRank          = x != null ? x.UnfilteredLRRank.ToString(CultureInfo.InvariantCulture) : "",
                LUnfilteredLRScaledScore   = x != null ? x.UnfilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : "",
                LUnfilteredEPICRank        = x != null ? x.UnfilteredEPICRank.ToString(CultureInfo.InvariantCulture) : "",
                LUnfilteredEPICScaledScore = x != null ? x.UnfilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : "",

                // fill in report score below

                LUnfilteredEPICBaseScore  = x != null ? x.UnfilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : "",
                LUnfilteredEPICBonusScore = x != null ? x.UnfilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : "",
                LUnfilteredEPICScore      = x != null ? x.UnfilteredEPICScore.ToString(CultureInfo.InvariantCulture) : "",
            })
                         // join right sides
                         .LeftOuterJoin(fu.Where(y => y.FingerSector.Contains("R")),
                                        x => x.RComp,
                                        y => y.FingerSector,
                                        (y, x) =>
            {
                y.FingerSector = y.FingerSector + (!String.IsNullOrEmpty(y.FingerSector) && x != null ? "/" : "") + (x != null ? x.FingerSector : "");

                y.RFilteredLRRank          = x != null ? x.FilteredLRRank.ToString(CultureInfo.InvariantCulture) : "";
                y.RFilteredLRScaledScore   = x != null ? x.FilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : "";
                y.RFilteredEPICRank        = x != null ? x.FilteredEPICRank.ToString(CultureInfo.InvariantCulture) : "";
                y.RFilteredEPICScaledScore = x != null ? x.FilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : "";

                // fill in report score below

                y.RFilteredEPICBaseScore  = x != null ? x.FilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : "";
                y.RFilteredEPICBonusScore = x != null ? x.FilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : "";
                y.RFilteredEPICScore      = x != null ? x.FilteredEPICScore.ToString(CultureInfo.InvariantCulture) : "";

                y.RUnfilteredLRRank          = x != null ? x.UnfilteredLRRank.ToString(CultureInfo.InvariantCulture) : "";
                y.RUnfilteredLRScaledScore   = x != null ? x.UnfilteredLRScaledScore.ToString(CultureInfo.InvariantCulture) : "";
                y.RUnfilteredEPICRank        = x != null ? x.UnfilteredEPICRank.ToString(CultureInfo.InvariantCulture) : "";
                y.RUnfilteredEPICScaledScore = x != null ? x.UnfilteredEPICScaledScore.ToString(CultureInfo.InvariantCulture) : "";

                // fill in report score below

                y.RUnfilteredEPICBaseScore  = x != null ? x.UnfilteredEPICBaseScore.ToString(CultureInfo.InvariantCulture) : "";
                y.RUnfilteredEPICBonusScore = x != null ? x.UnfilteredEPICBonusScore.ToString(CultureInfo.InvariantCulture) : "";
                y.RUnfilteredEPICScore      = x != null ? x.UnfilteredEPICScore.ToString(CultureInfo.InvariantCulture) : "";

                return(y);
            });

            var report = joined
                         .Join(Severities, x => x.OrganId, y => y.OrganId,
                               (x, y) =>
            {
                x.PhysicalLeft  = y != null && y.PhysicalLeft.HasValue ? y.PhysicalLeft.Value.ToString(CultureInfo.InvariantCulture) : "";
                x.PhysicalRight = y != null && y.PhysicalRight.HasValue ? y.PhysicalRight.Value.ToString(CultureInfo.InvariantCulture) : "";

                x.MentalLeft  = y != null && y.MentalLeft.HasValue ? y.MentalLeft.Value.ToString(CultureInfo.InvariantCulture) : "";
                x.MentalRight = y != null && y.MentalRight.HasValue ? y.MentalRight.Value.ToString(CultureInfo.InvariantCulture) : "";

                return(x);
            });

            return(report.AsQueryable());
        }