/// <summary> /// Creates the specified measure. /// </summary> /// <param name="measure">The measure.</param> /// <returns></returns> public static DynamicMeasureDto Create(Measure measure) { var dto = new DynamicMeasureDto(); dto.MeasureID = measure.Id; dto.MeasuresName = measure.Name; dto.MeasureSource = measure.Source; dto.MeasureType = measure.MeasureType; dto.HigherScoresAreBetter = measure.HigherScoresAreBetter; dto.HigherScoresAreBetterDescription = string.Empty; dto.TopicsID = string.Join(",", measure.Topics.Select(t => t.Id).ToArray()); dto.NatLabel = string.Empty; dto.NatRateAndCI = string.Empty; dto.NatTop10Label = string.Empty; dto.NatTop10 = string.Empty; dto.PeerLabel = string.Empty; dto.PeerRateAndCI = string.Empty; dto.PeerTop10Label = string.Empty; dto.PeerTop10 = string.Empty; dto.Footnote = measure.Footnotes; dto.BarHeader = string.Empty; dto.BarFooter = string.Empty; dto.ColDesc1 = string.Empty; dto.ColDesc2 = string.Empty; dto.ColDesc3 = string.Empty; dto.ColDesc4 = string.Empty; dto.ColDesc5 = string.Empty; dto.ColDesc6 = string.Empty; dto.ColDesc7 = string.Empty; dto.ColDesc8 = string.Empty; dto.ColDesc9 = string.Empty; dto.ColDesc10 = string.Empty; dto.NatCol1 = string.Empty; dto.NatCol2 = string.Empty; dto.NatCol3 = string.Empty; dto.NatCol4 = string.Empty; dto.NatCol5 = string.Empty; dto.NatCol6 = string.Empty; dto.NatCol7 = string.Empty; dto.NatCol8 = string.Empty; dto.NatCol9 = string.Empty; dto.NatCol10 = string.Empty; dto.PeerCol1 = string.Empty; dto.PeerCol2 = string.Empty; dto.PeerCol3 = string.Empty; dto.PeerCol4 = string.Empty; dto.PeerCol5 = string.Empty; dto.PeerCol6 = string.Empty; dto.PeerCol7 = string.Empty; dto.PeerCol8 = string.Empty; dto.PeerCol9 = string.Empty; dto.PeerCol10 = string.Empty; dto.SelectedTitle = measure.MeasureTitle.Selected == SelectedMeasuretitleEnum.Plain ? measure.MeasureTitle.Plain : measure.MeasureTitle.Clinical; dto.PlainTitle = measure.MeasureTitle.Plain; dto.ClinicalTitle = measure.MeasureTitle.Clinical; dto.MeasureDescription = measure.Description; dto.Bullets = string.Empty; dto.StatisticsAvailable = string.Empty; dto.MoreInformation = measure.MoreInformation; dto.URL = measure.Url; dto.URLTitle = measure.UrlTitle; dto.DataSourceURL = measure.Owner.PublisherWebsite; dto.DataSourceURLTitle = measure.Owner.Publisher; return(dto); }
/// <summary> /// Outputs the report data files. /// </summary> /// <returns></returns> protected override bool OutputDataFiles() { try{ if (ActiveReport != null) { var dataset = CurrentWebsite.Datasets.FirstOrDefault(wd => wd.Dataset.ContentType.IsCustom && wd.Dataset.ContentType.Name.In(ActiveReport.Datasets)); //var report = CurrentWebsite.Reports.FirstOrDefault(wr => wr.Report.ReportType.EqualsIgnoreCase(ActiveReport.ReportType)); if (dataset == null) { return(true); } var reportQuery = ParseTokens(ActiveReport.ReportOutputSql, dataset.Dataset); // parse tokens in ReportOutputSql statement var results = RunSqlReturnDataTable(reportQuery, null); // Execute query and return results // Format Json/JavaScript namespace for report output var jsonNamespace = !string.IsNullOrEmpty(ActiveReport.OutputJsNamespace) ? ActiveReport.OutputJsNamespace.ToLower().Trim() : string.Format("$.monahrq.Flutters.{0}.Report.Data=", dataset.Dataset.ContentType.Name.Replace(" ", null)).ToLower(); if (!jsonNamespace.StartsWith("$.")) { jsonNamespace = string.Format("$.{0}", jsonNamespace); } if (!jsonNamespace.EndsWith("=")) { jsonNamespace = string.Format("{0}=", jsonNamespace); } var jsonNamespaceMapping = CreateNameSpaceMapping(jsonNamespace); // Format Json/JavaScript file name for report output var reportFileName = !string.IsNullOrEmpty(ActiveReport.OutputFileName) ? ActiveReport.OutputFileName.ToLower().Trim() : "report-data.js"; if (!reportFileName.EndsWith(".js")) { reportFileName = string.Format("{0}.js", reportFileName); } // Create Wing Output Directory var wingsDirectory = Path.Combine(BaseDataDirectoryPath, "Wings"); var fileDirectoryPath = Path.Combine(wingsDirectory, dataset.Dataset.ContentType.Name.ToLower().Replace(" ", null)); if (!Directory.Exists(fileDirectoryPath)) // If doesn't exist then create it. { Directory.CreateDirectory(fileDirectoryPath); } // Create/Generate File GenerateJsonFile(results, Path.Combine(fileDirectoryPath, reportFileName), jsonNamespace, true, jsonNamespaceMapping); // Generating Measures var measuresToUse = CurrentWebsite.Measures.Where(wm => wm.ReportMeasure.Owner != null && wm.ReportMeasure.Owner.Name.EqualsIgnoreCase(dataset.Dataset.ContentType.Name)) .Select(wm => wm.ReportMeasure) .ToList(); if (measuresToUse.Any()) { var measuresDirectory = Path.Combine(wingsDirectory, "Measures"); if (!Directory.Exists(measuresDirectory)) // If doesn't exist then create it. { Directory.CreateDirectory(measuresDirectory); } foreach (var measure in measuresToUse) { var measureJsonNamespace = string.Format("$.monahrq.wing.measuredescription_{0}=", measure.Id); var measureFileName = string.Format("Measure_{0}.js", measure.Id); var measureDto = DynamicMeasureDto.Create(measure); GenerateJsonFile(measureDto, Path.Combine(measuresDirectory, measureFileName), measureJsonNamespace, true); } } } return(true); } catch (Exception ex) { Logger.Write(ex, "Error writing data files for dynamic report {0}", this.ActiveReport?.Name); return(false); } }