/// <summary>
        /// Gets the infograhic topics.
        /// </summary>
        /// <returns></returns>
        private IList <InfographicTopic> GetInfograhicTopics()
        {
            IList <InfographicTopic> topics = new List <InfographicTopic>();

            NHibernate.IQuery query = null;
            var activeSections      = GetActiveSections(ActiveReport, CurrentWebsite.Datasets);

            //	Retrieve CMS Zone data from DB.
            using (var session = DataProvider.SessionFactory.OpenSession())
            {
                var infectionTopicCategoryId =
                    session.Query <TopicCategory>().SingleOrDefault(tc => tc.Name.Contains("Infections")).Id;

                query = session
                        .CreateSQLQuery(sqlGetData)
                        .SetResultTransformer(Transformers.AliasToBean(typeof(InfographicTopicDTO)));

                var topicDTOs = query.List <InfographicTopicDTO>();

                foreach (var topicDTO in topicDTOs)
                {
                    var topic = topics.FirstOrDefault(t => t.TopicCategory == topicDTO.TopicCategory);
                    if (topic == null)
                    {
                        topic = new InfographicTopic()
                        {
                            RegionName     = CurrentWebsite.GeographicDescription,
                            SiteName       = CurrentWebsite.HeaderTitle,
                            SiteUrl        = CurrentWebsite.HeaderTitle,
                            ActiveSections = activeSections,
                            TopicCategory  = topicDTO.TopicCategory,
                        };
                        topics.Add(topic);
                    }

                    if (topic.Measures.Count >= 2)
                    {
                        continue;
                    }

                    if (topicDTO.TopicCategory == infectionTopicCategoryId)
                    {
                        var num = topicDTO.MeasureValue.AsNullableDouble();
                        if (num != null && num.HasValue)
                        {
                            topicDTO.MeasureValue = num.Value.ToString("F1");
                        }
                    }

                    topic.Measures.Add(new InfographicMeasure()
                    {
                        Name   = topicDTO.MeasureName,
                        Values = new List <String>()
                        {
                            String.Format("{0}", QualityReportPostProcessLogic.FormatMeasureValue(topicDTO.MeasureName, topicDTO.MeasureValue.ToString()))
                        },
                        //	Values = new List<String>() { String.Format("{0}",topicDTO.MeasureValue.ToString()) }
                    });
                }
            }

            return(topics);
        }
示例#2
0
        /// <summary>
        /// Initializes the report data.
        /// </summary>
        private void InitializeReportData()
        {
            try
            {
                // Make sure the base directories are created.
                CreateBaseDirectories();

#if DEBUG
                LogMessage("Initializing report data");
#endif
                #region Get base information about the website - hospitals, measures, datasets, etc.

                _reportID = Guid.NewGuid().ToString();

                _measures = new DataTable();
                _measures.Columns.Add("ID", typeof(int));
                foreach (WebsiteMeasure measure in CurrentWebsite.Measures.Where(m => m.IsSelected).ToList())
                {
                    //if (measure.IsSelected)
                    //{
                    _measures.Rows.Add(measure.ReportMeasure.Id);
                    //}
                }

                //// Get the needed DataSets
                _hospitalCompareDatasetIDs = new DataTable();
                _hospitalCompareDatasetIDs.Columns.Add("ID", typeof(int));
                _qIDatasetIDs = new DataTable();
                _qIDatasetIDs.Columns.Add("ID", typeof(int));
                foreach (WebsiteDataset dataSet in CurrentWebsite.Datasets)
                {
                    switch (dataSet.Dataset.ContentType.Name)
                    {
                    case "Hospital Compare Data":
                        // Add a new Hospital Compare dataset
                        _hospitalCompareDatasetIDs.Rows.Add(dataSet.Dataset.Id);
                        break;

                    case "AHRQ-QI Area Data":
                    case "AHRQ-QI Composite Data":
                    case "AHRQ-QI Provider Data":
                        // Add a new AHRQ QI dataset
                        _qIDatasetIDs.Rows.Add(dataSet.Dataset.Id);
                        break;
                    }
                }

                var hcParams = new[]
                {
                    new KeyValuePair <string, object>("@ReportID", _reportID),
                    new KeyValuePair <string, object>("@HospitalCompareDataset", _hospitalCompareDatasetIDs),
                    new KeyValuePair <string, object>("@Hospitals", HospitalIds),
                    new KeyValuePair <string, object>("@Measures", _measures),
                    new KeyValuePair <string, object>("@RegionType", CurrentWebsite.RegionTypeContext)
                };

                //Clean Temp_Quality Table
                ExecuteNonQuery("IF (OBJECT_ID(N'Temp_Quality')) IS NOT NULL TRUNCATE Table Temp_Quality");

                RunSproc("spQualityInitializeHCBinary", "", hcParams);
                RunSproc("spQualityInitializeHCCategorical", "", hcParams);
                RunSproc("spQualityInitializeHCOutcome", "", hcParams);
                RunSproc("spQualityInitializeHCProcess", "", hcParams);
                RunSproc("spQualityInitializeHCRatio", "", hcParams);
                RunSproc("spQualityInitializeHCScale", "", hcParams);
                RunSproc("spQualityInitializeHCStructural", "", hcParams);
                RunSproc("spQualityInitializeHCYNM", "", hcParams);

                var qiParams = new[]
                {
                    new KeyValuePair <string, object>("@ReportID", _reportID),
                    new KeyValuePair <string, object>("@QIDataset", _qIDatasetIDs),
                    new KeyValuePair <string, object>("@Hospitals", HospitalIds),
                    new KeyValuePair <string, object>("@Measures", _measures),
                    new KeyValuePair <string, object>("@RegionType", CurrentWebsite.RegionTypeContext)
                };

                RunSproc("spQualityInitializeQIComposite", "", qiParams);
                RunSproc("spQualityInitializeQIProvider", "", qiParams);
                RunSproc("spQualityInitializeQIProviderMCMC", "", qiParams);
                RunSproc("spQualityInitializeQIVolume", "", qiParams);

                QualityReportPostProcessLogic.PostProcessQualityReport(_reportID, CurrentWebsite, DataserviceProvider);

                #endregion
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
        }