Escolar Documentos
Profissional Documentos
Cultura Documentos
GO
/****** Object: StoredProcedure [dbo].[ETL_MPPRImpactAnalysis] Script Date: 6/1/2015 2:38:57 AM
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[ETL_MPPRImpactAnalysis]
(
@FacilityList varchar(MAX) -- = '3, 124, 126, 128, 130, 132, 134, 135, 136, 138, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 161, 184, 230, 289, 290, 291, 292, 293, 294, 306'
,@FromDate datetime -- = '04/01/2013'
,@ThruDate datetime -- = '04/30/2013'
,@PayerTypeList varchar(MAX) = '2'
,@RevenueType Varchar(12) = 'CTB Revenue'
,@MPPRReductionPct Int = 50
)
AS
BEGIN
PRINT 'Step 9a:'
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
-- Calculate MPPR Adjustment Factor to pass into fn_FeeScheduleRateForTxMinute() function
DECLARE @MPPRAdjustmentFactor Numeric(9,2)
SET @MPPRAdjustmentFactor = (100.00 - @MPPRReductionPct) / 100.00
DECLARE @PayerTypeTable TABLE (PayerType_ID Int, PayerType Varchar(50))
INSERT @PayerTypeTable
SELECT
PayerType_ID,
Descrip AS PayerType
FROM
[ROX_INF].dbo.PayerType
WHERE
(@PayerTypeList IS NULL OR PayerType_ID IN (SELECT [Value] FROM
dbo.fn_ParseDelimited(@PayerTypeList, ',')));
IF @FacilityList IS NULL
SELECT @FacilityList = STUFF((
SELECT ',' + CAST(Facility_ID AS Varchar(10))
FROM
[ROX_INF].dbo.Facility
ORDER BY
Facility_ID
FOR XML PATH ('')
), 1, 1, '');
1 /9
2 /9
3 /9
ServiceCode Varchar(10),
TotalUnits Int,
Multiplier Decimal(8,6),
Full_Units Int,
MPPR_Units Int,
Full_Rate Decimal(18,4),
MPPR_Rate Decimal(18,4),
Amount
Decimal(18,4),
IsFeeSchedule Bit,
MPPR_Rank Int
);
-- Store raw data to be used for Aggregation
INSERT #ResultTable
SELECT
txminute.txminute_id,
Resident.Facility_ID,
Stay.Resident_ID,
payer.PayerTypeDescrip,
payer.PayerName,
TxSession.SessionDate,
svc.ServiceCode,
TxMinute.Units,
CASE WHEN @RevenueType = @CTB THEN bt.Multiplier ELSE 1.0000 END AS Multiplier,
0 AS Full_Units,
0 AS MPPR_Units,
ISNULL(fs.Rate,0) as Full_Rate,
ISNULL(fs.MPPR_Rate,0) AS MPPR_Rate,
0 AS Amount,
-- Check for exclusions from the MPPR calculation
CASE WHEN bt.BillType = 'B' OR @RevenueType = @MPFS THEN 1 ELSE 0 END AS IsFeeSchedule,
CASE WHEN payer.MPPRAdjusted = 1 AND TxMinute.Units > 0 AND svc.TherapyUsage =
'Always'
THEN ROW_NUMBER()
OVER (PARTITION BY stay.Resident_ID, TxSession.SessionDate
ORDER BY CASE WHEN payer.MPPRAdjusted = 1 AND
TxMinute.Units > 0 AND svc.TherapyUsage = 'Always' THEN 0 ELSE 1 END,
fs.TransitionedNonFacilityPE_RVU DESC,
CASE TxTrack.Discipline
WHEN 'PT' THEN 1
WHEN 'OT' THEN 2
WHEN 'ST' THEN 3
END,
svc.ServiceCode, TxMinute.TxMinute_ID)
ELSE NULL END as MPPR_Rank
FROM
[ROX_INF].dbo.TxMinute
INNER JOIN [ROX_INF].dbo.[Service] svc ON svc.Service_ID = TxMinute.Service_ID
INNER JOIN [ROX_INF].dbo.TxSession ON TxSession.TxSession_ID = TxMinute.TxSession_ID
INNER JOIN [ROX_INF].dbo.TxTrack ON TxTrack.TxTrack_ID = TxSession.TxTrack_ID
INNER JOIN [ROX_INF].dbo.PatientCase ON PatientCase.PatientCase_ID = TxTrack.PatientCase_ID
4 /9
5 /9
IF @RevenueType = @CTB
INSERT #ResultTable
SELECT
0 AS txminute_ID,
Facility_ID,
0 AS Resident_ID,
PayerType,
PayerPlan,
'1/1/1900' AS SessionDate,
'' AS ServiceCode,
0 AS TotalUnits,
0 AS Multiplier,
0 AS Full_Units,
0 AS MPPR_Units,
0.00 AS Full_Rate,
0.00 AS MPPR_Rate,
0.00 AS Amount,
0 AS IsFeeSchedule,
0 AS MPPR_Rank
FROM
#ResultTable
WHERE
IsFeeSchedule = 0
GROUP BY
Facility_ID,
PayerType,
PayerPlan;
PRINT 'Step 9e:'
IF OBJECT_ID('tempdb..#ReturnTable') IS NOT NULL
DROP TABLE #ReturnTable
CREATE TABLE #ReturnTable (
RecNo Int Identity(1,1),
Activity_Date DateTime,
Facility Varchar(50),
Facility_ID Varchar(10),
ExportKey Varchar(20),
PatientName Varchar(50),
PayerType Varchar(50),
PayerPlan Varchar(50),
ServiceCode Varchar(10),
TotalUnits Int,
Full_Revenue Decimal(18,2),
Full_Units Int,
MPPR_Units Int,
Full_Rate Decimal(18,6),
MPPR_Rate Decimal(18,6),
MPPR_Adjusted_Full_Revenue Decimal(18,2),
MPPR_Adjusted_MPPR_Revenue Decimal(18,2),
MPPR_Revenue Decimal(18,2),
RevenueDecrease Decimal(18,2),
6 /9
IsFeeSchedule Bit,
IsLastPatientRow Bit,
PayerTypeChoices Varchar(MAX)
);
-- Store Results
INSERT #ReturnTable (
Activity_Date,
Facility,
Facility_ID,
ExportKey,
PatientName,
PayerType,
PayerPlan,
ServiceCode,
TotalUnits,
Full_Revenue,
Full_Units,
MPPR_Units,
Full_Rate,
MPPR_Rate,
MPPR_Adjusted_Full_Revenue,
MPPR_Adjusted_MPPR_Revenue,
MPPR_Revenue,
RevenueDecrease,
IsFeeSchedule
)
SELECT
rt.SessionDate AS [Activity_Date],
Facility.[Name] AS Facility,
Facility.[Facility_ID] AS [Facility_ID],
Facility.[ExportKey] AS [ExportKey],
ResidentInfo.LastName + CASE WHEN ISNULL(ResidentInfo.FirstName, '') = ''
THEN '' ELSE ', ' + ResidentInfo.FirstName
END AS PatientName,
rt.PayerType,
rt.PayerPlan,
rt.ServiceCode,
SUM(rt.TotalUnits) AS TotalUnits,
CAST(SUM(TotalUnits * Full_Rate * Multiplier) AS Decimal(18,2)) AS Full_Revenue,
SUM(Full_Units) AS Full_Units,
SUM(MPPR_Units) AS MPPR_Units,
MAX(Full_Rate) AS Full_Rate,
MAX(MPPR_Rate) AS MPPR_Rate,
CAST(SUM((Full_Units * Full_Rate) * Multiplier) AS Decimal(18,2)) AS
MPPR_Adjusted_Full_Revenue,
CAST(SUM((MPPR_Units * MPPR_Rate) * Multiplier) AS Decimal(18,2)) AS
MPPR_Adjusted_MPPR_Revenue,
CAST(SUM(((Full_Units * Full_Rate) + (MPPR_Units * MPPR_Rate))) * Multiplier AS
Decimal(18,2)) AS MPPR_Revenue,
CAST(SUM((TotalUnits * Full_Rate * Multiplier) -
7 /9
8 /9
Facility_ID,
Cast(RTRIM(ExportKey) as int),
Facility,
PatientName,
PayerType,
PayerPlan,
ServiceCode,
TotalUnits,
Full_Revenue,
Full_Units,
MPPR_Units,
Full_Rate,
MPPR_Rate,
MPPR_Adjusted_Full_Revenue,
MPPR_Adjusted_MPPR_Revenue,
MPPR_Revenue,
RevenueDecrease,
IsFeeSchedule
FROM
#ReturnTable
WHERE
IsFeeSchedule = 1 OR
(IsFeeSchedule = 0 AND ServiceCode = '');
---- Drop temporary tables
DROP TABLE #ResultTable;
DROP TABLE #ReturnTable;
DROP TABLE #FeeSched
DROP TABLE #FacilityTable
END
9 /9