Files
linqpad/Evaluate QVI Bubble Chart.linq

55 lines
1.6 KiB
C#

<Query Kind="Statements">
<Connection>
<ID>bd4e97c5-84e7-4c61-80ca-8d53d7876af2</ID>
<Persist>true</Persist>
<Server>D0001-SQL-11.sdt.local</Server>
<Database>jazz dev master Prod</Database>
<ShowServer>true</ShowServer>
</Connection>
</Query>
var config = (from c in Configurations where c.FiscalYearID == 2020 select c).First();
var opps = (from OBJ in QVILineItemOpportunities
join qve in QualityVariationEvents on OBJ.QualityVariationEventID equals qve.QualityVariationEventID
where OBJ.ConfigurationGUID == config.ConfigurationGUID
&& !OBJ.IsHidden
select new
{
OBJ.OpportunityGUID,
OBJ.InitiativeGUID,
OBJ.Savings,
// OBJ.DateModified,
// OBJ.DateCreated,
// OBJ.ConfigurationGUID,
// OBJ.IsHidden,
OBJ.TotalCasesWithQVI,
OBJ.TotalPatientDaysWithQVI,
OBJ.TotalCostWithQVI,
OBJ.NetRevenueWithQVI,
OBJ.BreakdownName,
OBJ.BreakdownID,
OBJ.CommittedSavingsLevel,
OBJ.TotalCases,
OBJ.Note,
OBJ.QualityVariationEventID,
QualityVariationEventName = qve.Name,
QualityVariationEventCategory = qve.Category,
qve.QVILineItemID,
QVILineItemName = qve.Name,
QVIName = qve.Category,
qve.SortOrder,
qve.ClinicalIndicatorID
}).ToList();
opps
.GroupBy(p => p.QualityVariationEventCategory,
(category, qvi) => new
{
Name = category,
Savings = qvi.Sum(x => x.Savings),
Cases = qvi.Sum(x => x.TotalCasesWithQVI),
SavingsMaxPotential = qvi.WeightedAverage(x => x.Savings.DivideBy(x.TotalCasesWithQVI), w => w.TotalCasesWithQVI),
QVISubItems = qvi.ToList()
})
.OrderByDescending(p => p.Cases)
.ThenByDescending(p => p.Savings)
.Dump();