Exemple #1
0
            /// <summary>
            /// Generatets the cost quality measure description.
            /// </summary>
            /// <param name="measure">The measure.</param>
            /// <param name="hasAllAudiences">if set to <c>true</c> [has all audiences].</param>
            /// <returns></returns>
            public static CostQualityMeasureDescription GeneratetCostQualityMeasureDescription(Measure measure, bool hasAllAudiences = true)
            {
                var cqmd = new CostQualityMeasureDescription()
                {
                    MeasureId          = measure.Id,
                    MeasuresName       = measure.MeasureCode,
                    MeasureSource      = measure.Source,
                    SelectedTitle      = measure.MeasureTitle.Selected == SelectedMeasuretitleEnum.Plain ? measure.MeasureTitle.Plain : measure.MeasureTitle.Clinical,
                    PlainTitle         = measure.MeasureTitle.Plain,
                    ClinicalTitle      = measure.MeasureTitle.Clinical,
                    MeasureDescription = measure.Description,
                    MoreInformation    = measure.MoreInformation,
                    URL                        = measure.Url,
                    URLTitle                   = measure.UrlTitle,
                    DataSourceURL              = "http://www.qualityindicators.ahrq.gov",
                    DataSourceURLTitle         = "AHRQ Quality Indicator",
                    SelectedTitleConsumer      = measure.ConsumerPlainTitle,
                    PlainTitleConsumer         = measure.ConsumerPlainTitle,
                    MeasureDescriptionConsumer = measure.ConsumerDescription,
                    Heading                    = GetCqdHeading(measure),
                    PeerRates                  = GetCqdPeerRate(measure)
                };

                return(cqmd);
            }
Exemple #2
0
        /// <summary>
        /// Outputs the report data files.
        /// </summary>
        /// <returns></returns>
        protected override bool OutputDataFiles()
        {
            try
            {
                _costQualityDataDir = Path.Combine(CurrentWebsite.OutPutDirectory, "Data", "Base", "CostQualityMeasures");
                CreateDir(_costQualityDataDir);

                _costQualityHospitalDataDir = Path.Combine(CurrentWebsite.OutPutDirectory, "Data", "CostQualityRatings", "Hospital");
                CreateDir(_costQualityHospitalDataDir);


                //	Calculate Data in WinQI.
                try
                {
                    if (TestWinQISettings())
                    {
                        CostQualityCalculator =
                            new CostQualityCalculator(
                                ConfigurationService.WinQiConnectionSettings.ConnectionString,
                                ConfigurationService.ConnectionSettings.ConnectionString,
                                CurrentWebsite);
                        CostQualityCalculator.Calculate();

                        LogMessage("Finished cost quality calculations");
                    }
                }
                catch (Exception ex)
                {
                    Logger.Write(ex);

                    LogMessage(
                        "A error occurred while preforming cost calculation. Skipping the rest of cost quality calculation.",
                        PubishMessageTypeEnum.Error);
                    return(false);
                }

                //	Determine which measures to report on.
                //	- Currently we have to family of measures where each family contains 3 Measures each:
                //		- IQI 12, IQI 12_QNTY, IQI 12_COST &
                //		- IQI 14, IQI 14_QNTY, IQI 14_COST
                //	- If the ENTIRE family isn't selected then none in the family should be reported on.
                var cqrMeasures = CurrentWebsite.Measures
                                  .Where(wm =>
                {
                    return
                    (wm.IsSelected &&
                     wm.ReportMeasure.Name.EqualsAny(
                         "IQI 12", "IQI 12_QNTY", "IQI 12_COST",
                         "IQI 14", "IQI 14_QNTY", "IQI 14_COST"));
                }).Select(wm => wm.ReportMeasure).ToList();
                var cqrMeasureGroups = cqrMeasures.GroupBy(m => m.Name.Substring(0, 6));
                cqrMeasureGroups.ForEach(group =>
                {
                    if (group.Count() != 3)
                    {
                        group.ForEach(gm => cqrMeasures.Remove(gm));
                    }
                });

                //	Get data.
                var costQualityMeasureDescriptions = CostQualityMeasureDescription.GetCostQualityMeasureDescriptions(this, CurrentWebsite.HasAllAudiences, cqrMeasures);
                var hospitalIds          = CurrentWebsite.Hospitals.Select(x => x.Hospital.Id).ToList();
                var costQualityhospitals = CostQualityHospital.GetCostQualityHospitals(this, string.Join(",", hospitalIds), string.Join(",", costQualityMeasureDescriptions.Select(m => m.MeasureId)));
                var costqualityTopics    = new List <CostQualityTopic>();
                CostQualityTopic.FindAddCostQualityTopic(costqualityTopics, DataServiceProvider, "Health Care Cost and Quality", "Hip replacement surgery", cqrMeasures);
                CostQualityTopic.FindAddCostQualityTopic(costqualityTopics, DataServiceProvider, "Health Care Cost and Quality", "Heart Surgeries and Procedures", cqrMeasures);

                CostQualityTopic.FindAddCostQualityTopic(costqualityTopics, DataServiceProvider, "Hip or knee replacement surgery", "Results of care", cqrMeasures);
                CostQualityTopic.FindAddCostQualityTopic(costqualityTopics, DataServiceProvider, "Heart surgeries and procedures", "Results of Care", cqrMeasures); //"Results of Care – Deaths


                var ipDatasets = CurrentWebsite.Datasets.Where(d => d.Dataset.ContentType.Name.EqualsIgnoreCase("Inpatient Discharge")).ToList();

                WebsiteDataset datasetToUse;
                if (ipDatasets.Count == 1)
                {
                    datasetToUse = ipDatasets.First();
                }
                else
                {
                    datasetToUse = ipDatasets.FirstOrDefault(d => d.Dataset.ReportingYear == CurrentWebsite.ReportedYear) ??
                                   ipDatasets.First();
                }

                var values = GetCostAndQuantityValues(datasetToUse, CurrentWebsite.Id);

                GenerateJsonFile(costqualityTopics.OrderBy(x => x.Name), Path.Combine(_costQualityDataDir, "CostQualityTopic.js"), JSON_TOPIC_DOMAIN);
                costQualityhospitals.GroupBy(cqh => cqh.HospitalId).ForEach(cqhs =>
                                                                            //	costQualityhospitals.ForEach(h =>
                {
                    var hospitalDetail = CostQualityHospital.GetCostQualityHospitalDetail(values, cqhs.ToList()[0],
                                                                                          CurrentWebsite.Measures.Where(m =>
                                                                                                                        (m.OriginalMeasure != null && m.OriginalMeasure.Source == "Calculated") ||
                                                                                                                        (m.OverrideMeasure != null && m.OverrideMeasure.Source == "Calculated")).ToList());

                    hospitalDetail.AddRange(cqhs.ToList());
                    GenerateJsonFile(hospitalDetail, Path.Combine(_costQualityHospitalDataDir, String.Format("Hospital_{0}.js", cqhs.Key)), JSON_HOSPITAL_DOMAIN + cqhs.Key + "=");
                });

                costQualityMeasureDescriptions.ForEach(measureDesc => GenerateJsonFile(new List <CostQualityMeasureDescription>()
                {
                    measureDesc
                }, Path.Combine(_costQualityDataDir, String.Format("Measure_{0}.js", measureDesc.MeasureId)), JSON_MEASURE_DOMAIN + measureDesc.MeasureId + "="));
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                return(false);
            }

            return(true);
        }