示例#1
0
            /// <summary>
            /// Gets the cost quality hospital detail.
            /// </summary>
            /// <param name="values">The values.</param>
            /// <param name="hospital">The hospital.</param>
            /// <param name="websiteMeasures">The website measures.</param>
            /// <returns></returns>
            public static List <CostQualityHospital> GetCostQualityHospitalDetail(List <Tuple <int, int, double> > values, CostQualityHospital hospital, List <WebsiteMeasure> websiteMeasures)
            {
                if (values == null)
                {
                    return(Enumerable.Empty <CostQualityHospital>().ToList());
                }

                return(websiteMeasures.Select(measure => new CostQualityHospital
                {
                    MeasureId = measure.OriginalMeasure != null ? measure.OriginalMeasure.Id : measure.OverrideMeasure != null ? measure.OverrideMeasure.Id : 0,
                    HospitalId = hospital.HospitalId,
                    CountyId = hospital.CountyId,
                    RegionId = hospital.RegionId,
                    ZipCode = hospital.ZipCode,
                    HospitalType = hospital.HospitalType,
                    //	Value = GetValue(values.FirstOrDefault(x => x.Item1 == hospital.HospitalId), measure),
                    Value = GetRate(null, measure.ReportMeasure, hospital.HospitalId),
                    Rate = GetRate(null, measure.ReportMeasure, hospital.HospitalId),
                }).ToList());
            }
示例#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);
        }