Professional Documents
Culture Documents
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
@iConsignmentID BIGINT
,@iClientID INT
) AS
BEGIN
/*
*************************************************************************************
*******************
Changes : System defaults, review and changes to the insert for code 3
*/
/************************************************************************************
*********************
----Get the Minimum and Maximum Period of Care from settings table
*************************************************************************************
********************/
SELECT
[periodtypecd]
,[MinimumPeriodofCare]
,[MaximumPeriodofCare]
,@iClientID AS [ClientID]
INTO
#TEpsPeriodOfCare
FROM
SELECT
COALESCE([PC].[periodtypecd],[PD].[periodtypecd]) AS [periodtypecd]
,COALESCE([PC].[MinimumPeriodofCare],[PD].[MinimumPeriodofCare]) AS
[MinimumPeriodofCare]
,COALESCE([PC].[MaximumPeriodofCare],[PD].[MaximumPeriodofCare]) AS
[MaximumPeriodofCare]
FROM
ON [Pd].[periodtypecd] = COALESCE([PC].[periodtypecd],[PD].[periodtypecd])
) [PC]
SELECT
,[PEC].[MaximumPeriodofCare]
,@iClientID AS [ClientID]
,[ECC].[Code]
INTO
#TPeriodOfCare
FROM
[ETLMASTER_QA].[Codes].[EDICodes] [ECC]
INNER JOIN
#TEpsPeriodOfCare [PEC]
ON
[PEC].[PeriodTypeCD] = [ECC].[Code]
INNER JOIN
[ETLMASTER_QA].[Codes].[EDICategoryCodes] [EDC]
ON
[EDC].[CategoryID] = [ECC].[CategoryID]
AND
[EDC].[CategoryCode] = 'PeriodOfCare'
WHERE
[PEC].[ClientID] = @iClientID
INSERT INTO #TPeriodOfCare
SELECT
,999999999 [MaximumPeriodofCare]
,@iClientID AS [ClientID]
,3 [Code]
FROM
#TPeriodOfCare
/************************************************************************************
*********************
*************************************************************************************
********************/
SELECT
[DGM].[DiagnosisGroupID]
,[DGM].[DiagnosisID]
INTO
[#TDiagnosisGroup]
FROM
[ETLMASTER_QA].[Codes].[DiagnosisGroupMapping] [DGM]
INNER JOIN
[ETLMASTER_QA].[Codes].[DiagnosisGroup] [DGR]
ON
[DGR].[DiagnosisGroupID]=[DGM].[DiagnosisGroupID]
INNER JOIN
[ETLMASTER_QA].[Codes].[Diagnosis] [DIA]
ON
[DGM].[DiagnosisID] = [DIA].[DiagnosisID]
AND
[DGR].[Version]= [DIA].[Version]
/************************************************************************************
*********************
*************************************************************************************
********************/
SELECT
, [CHR].[CHAClaimID]
, @iConsignmentID [ConsignmentID]
, [CHR].[CHAMemberID]
, [CHR].[MaxDiagnosisCls]
, [CHR].[FirstDateOfService]
, [CHR].[LastDateOfService]
, [CHR].[BilledAmt]
, [CHR].[PaidAmt]
, @iClientID [ClientID]
INTO
#TClaimHeader
FROM
[CHA].[ClaimHeader] [CHR]
INNER JOIN
[TEMP].[ClaimList] [CHL]
ON
[CHR].[CHAClaimID] = [CHL].[CHAClaimID]
AND
[CHL].[ConsignmentID] = @iConsignmentID
WHERE
[CHR].[ClientID]=@iClientID
AND
[CHR].[MaxDiagnosisCls] IN (2,3)
ORDER BY
CHR.LastDateOfService,[CHR].[CHAClaimID]
/************************************************************************************
*********************
*************************************************************************************
********************/
SELECT
[TCH1].[CHAMemberID]
, [TCH1].[MaxDiagnosisCls]
, [TCH1].[FirstDateOfService]
, [TCH1].[LastDateOfService]
, [TCH1].[BilledAmt]
, [TCH1].[PaidAmt]
, ISNULL([TCH2].[LastDateOfService],[TCH1].[LastDateOfService])[LastDateOfService1]
, DATEDIFF(DAY,ISNULL([TCH2].[LastDateOfService]
, [TCH1].[LastDateOfService])
, [TCH1].[LastDateOfService]) [ClaimDiff]
, [TCH1].[RowNo]
, [TCH1].[CHAClaimID]
, [TCH1].[ConsignmentID]
, [TCH1].[ClientID]
, [TCH2].[CHAClaimID] [PrevCHAClaimID]
INTO
#TClaimHeaderDiff
FROM
#TClaimHeader [TCH1]
LEFT JOIN
#TClaimHeader [TCH2]
ON
[TCH1].[CHAMemberID] = [TCH2].[CHAMemberID]
AND
[TCH1].[RowNo] = [TCH2].[RowNo] + 1
SELECT
[CD].[CHAClaimID]
,[CD].[DiagnosisID]
,[DG].[DiagnosisGroupID]
INTO
[#TClaimDiagnosis]
FROM
[CHA].[ClaimDiagnosis] [CD]
JOIN
[ETLMASTER_QA].[Config].[ClientDiagnosisRanking] [CDR]
ON
[CD].[DiagnosisRank]=[CDR].[DiagnosisRank]
AND
JOIN
[#TDiagnosisGroup] [DG]
ON
[DG].[DiagnosisID]=[CD].[DiagnosisID]
WHERE
[CDR].[ClientID]=@iClientID
/************************************************************************************
*********************
----Get the Same group of diagnosis with second minimum and maximum period of care
*************************************************************************************
********************/
SELECT
[CD].[CHAClaimID]
,[DG].[DiagnosisGroupID]
,[DG].[DiagnosisID]
INTO
[#TEpisodeSameGroupExists]
FROM
(
SELECT
[CHD].[CHAClaimID]
,[CD].[DiagnosisID]
,[CD].[DiagnosisGroupID][PrevDiagnosisGroupID]
,[CHD].[ClientID]
,[CHD].[ClaimDiff]
,[CHD].[PrevCHAClaimID]
FROM
[#TClaimHeaderDiff] [CHD]
JOIN
[#TClaimDiagnosis] [CD]
ON
[CHD].[PrevCHAClaimID]=[CD].[CHAClaimID]
) CHD
JOIN
[#TClaimDiagnosis] [CD]
ON
[CHD].CHAClaimID=CD.CHAClaimID
JOIN
AND
JOIN
AND
[CHD].[PrevDiagnosisGroupID]=[DG].[DiagnosisGroupID]
/************************************************************************************
*********************
----Get the Claims data and get the pattern for the groups
*************************************************************************************
********************/
SELECT
[TCHD1].[RowNo]
, [TCHD1].[ConsignmentID]
, [TCHD1].[CHAMemberID]
, [TCHD1].[CHAClaimID]
, [TCHD1].[MaxDiagnosisCls]
, [TCHD1].[FirstDateOfService]
, [TCHD1].[LastDateOfService]
, [TCHD1].[BilledAmt]
, [TCHD1].[PaidAmt]
, [TCHD1].[ClaimDiff]
, [TCHD1].[ClientID]
, CASE
OR
THEN 1
ELSE 0 END [Episodes]
INTO
#TEpisode
FROM
#TClaimHeaderDiff [TCHD1]
LEFT JOIN
SELECT DISTINCT
[CHAClaimID]
FROM
#TEpisodeSameGroupExists
) [ESGP]
ON
[ESGP].CHAClaimID=[TCHD1].[CHAClaimID]
INNER JOIN
#TPeriodOfCare [PC1]
ON
AND
/************************************************************************************
*********************
----Get the Claims data and counts and make the pattern for insertion
*************************************************************************************
********************/
SELECT
TE1.ClaimGroup
, TE2.[RowNo]
, TE2.[ConsignmentID]
, TE2.[CHAMemberID]
, TE2.[CHAClaimID]
, TE2.[MaxDiagnosisCls]
, TE2.[FirstDateOfService]
, TE2.[LastDateOfService]
, TE2.[BilledAmt]
, TE2.[PaidAmt]
, TE2.[ClaimDiff]
, TE2.[ClientID]
, TE2.[Episodes]
INTO
#TEpisodeGroup
FROM
SELECT
[CHAClaimID]
,[Episodes]
,[RowNo]
,[CHAMemberID]
,[MaxDiagnosisCls]
,[FirstDateOfService]
,[LastDateOfService]
,[BilledAmt]
,[PaidAmt]
,[ClaimDiff]
,[ClaimGroup]
FROM
SELECT CHAClaimID
, Episodes
,RowNo
, TE.[CHAMemberID]
,[MaxDiagnosisCls]
,[FirstDateOfService]
,[LastDateOfService]
,[BilledAmt]
,[PaidAmt]
,ClaimDiff
AS ClaimGroup
FROM
#TEpisode TE
JOIN
SELECT
MAX(RowNo) MaxClaimCnt
,[CHAMemberID]
FROM #TEpisode
WHERE Episodes=0
)[TE1]
INNER JOIN
SELECT
[RowNo]
, [ConsignmentID]
, [CHAMemberID]
, [CHAClaimID]
, [MaxDiagnosisCls]
, [FirstDateOfService]
, [LastDateOfService]
, [BilledAmt]
, [PaidAmt]
, [ClaimDiff]
, [ClientID]
, [Episodes]
FROM
#TEpisode
) [TE2]
ON
[TE1].[CHAMemberID]=[TE2].[CHAMemberID]
AND
SELECT
,[CHAMemberID]
,[FirstDateOfService]
,[LastDateOfService]
,[BilledAmt]
,[PaidAmt]
,[ClaimGroup]
,[ClaimCnt]
,[MaxDiagnosisCls]
,[ConsignmentID]
INTO
#TEpisodes
FROM (
SELECT
TEGF.[CHAMemberID]
,TEGF.[FirstDateOfService]
,TEGF.[LastDateOfService]
,TEGF.[BilledAmt]
,TEGF.[PaidAmt]
,TEGF.[ClaimGroup]
,TEGF.[ClaimCnt]
,TEGF.[MaxDiagnosisCls]
,TEGF.[ConsignmentID]
FROM
SELECT
MAX([MaxDiagnosisCls])[MaxDiagnosisCls]
,MAX([ConsignmentID])[ConsignmentID]
,[CHAMemberID]
,MIN([FirstDateOfService])[FirstDateOfService]
,MAX([LastDateOfService]) [LastDateOfService]
,SUM([BilledAmt])[BilledAmt]
,SUM([PaidAmt])[PaidAmt]
,[ClaimGroup]
,COUNT(*) [ClaimCnt]
FROM
#TEpisodeGroup
GROUP BY [CHAMemberID],[ClaimGroup])TEGF
)a
/************************************************************************************
*********************
----Get the Claims data and insert the grouped data into Episodes
*************************************************************************************
********************/
[EpisodeID],
[ConsignmentID],
--[CHAMemberID],
[ClientID],
[FirstDateOfService],
[LastDateOfService],
[DiagnosisCls],
[BillAmt],
[PaidAmt],
[ClaimCount],
[CreatedDt],
[CreatedBy]
)
SELECT
[EpisodeID],
[ConsignmentID],
--[CHAMemberID],
@iClientID [ClientID],
[FirstDateOfService],
[LastDateOfService],
[MaxDiagnosisCls],
[BilledAmt],
[PaidAmt],
[ClaimCnt] ,
GETDATE(),
SYSTEM_USER
FROM
#TEpisodes
/************************************************************************************
*********************
*************************************************************************************
********************/
UPDATE
CHEX
SET
CHEX.[EpisodeID]=ES.[EpisodeID]
,CHEX.[UpdatedBy]=SYSTEM_USER
,CHEX.UpdatedDt =GETDATE()
FROM
CHA.[ClaimHeaderExtension] CHEX
JOIN
#TEpisodeGroup TCD
ON
CHEX.[CHAClaimID]=TCD.[CHAClaimID]
JOIN
#TEpisodes ES
ON
TCD.[CHAMemberID]=ES.[CHAMemberID]
AND
TCD.[ClaimGroup]=ES.[ClaimGroup]
AND
TCD.[FirstDateOfService]
BETWEEN
----JOIN
---- CHA.[Episodes] E
----ON
---- ES.FirstDateOfService=E.FirstDateOfService
----AND
---- ES.LastDateOfService=E.LastDateOfService
AND
ES.[ConsignmentID]=@iConsignmentID
--AND
-- ES.[ClientID]=@iClientID
/************************************************************************************
*********************
*************************************************************************************
********************/
[CHAClaimID],
[EpisodeID],
[CreatedDt],
[CreatedBy]
SELECT DISTINCT
TCD.[CHAClaimID],
ES.[EpisodeID],
GETDATE()[CreatedDt],
SYSTEM_USER [CreatedBy]
FROM
#TEpisodeGroup TCD
JOIN
#TEpisodes ES
ON
TCD.[CHAMemberID]=ES.[CHAMemberID]
AND
TCD.ClaimGroup=ES.ClaimGroup
AND
TCD.[FirstDateOfService]
BETWEEN
ES.[FirstDateOfService] AND ES.[LastDateOfService]
----JOIN
---- CHA.[Episodes] E
------ON TCD.[CHAMemberID]=E.[CHAMemberID]
----ON
---- ES.FirstDateOfService=E.FirstDateOfService
----AND
---- ES.LastDateOfService=E.LastDateOfService
AND
ES.[ConsignmentID]=@iConsignmentID
----AND
---- E.[ClientID]=@iClientID
LEFT JOIN
CHA.[ClaimHeaderExtension] CHE
ON
CHE.[CHAClaimID]=TCD.[CHAClaimID]
--AND CHE.[EpisodeID]=E.[EpisodeID]
WHERE
CHE.[CHAClaimID]
IS NULL
/************************************************************************************
*********************
------HouseKeeping
*************************************************************************************
********************/
/************************************************************************************
*********************
*************************************************************************************
********************/
select
ce.episodeid,
ce.CHAClaimID,
[CH].CHAMemberID,
[m].CHASubscriberID,
ch.firstdateofservice
from
cha.ClaimHeaderExtension ce
)a
Diff,
rownum1,
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService
from
[DataSet2].rownum1,
[DataSet2].EpisodeId,
[DataSet2].CHAClaimID,
[DataSet2].CHAMemberID,
[DataSet2].CHASubscriberID,
[DataSet2].FirstDateOfService
from
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService
from #TMEMCLAIMS
)[DataSet1]
right join
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService
on [DataSet1].rownum1+1 = [DataSet2].rownum1
and [DataSet1].CHASubscriberID=[DataSet2].CHASubscriberID
)
) [TempData]
WHERE diff = 1
)X
[diff],
rownum1,
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService
from
[DataSet2].rownum1,
[DataSet2].EpisodeId,
[DataSet2].CHAClaimID,
[DataSet2].CHAMemberID,
[DataSet2].CHASubscriberID,
[DataSet2].FirstDateOfService
from
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService
from #TMEMCLAIMS)[DataSet1]
right join
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService
on [DataSet1].rownum1+1 = [DataSet2].rownum1
and [DataSet1].CHASubscriberID=[DataSet2].CHASubscriberID
) [TempData]
WHERE diff = 0
)X
/*********Creation of group based on the firstdaterange and lastdaterange ***************/
[Dataset1].CHAClaimID as claimID_T1,
[Dataset2].CHAClaimID as claimID_t2,
[Dataset1].episodeid as episode_t1,
[Dataset1].CHASubscriberID as subscriberID_t1 ,
[Dataset2].episodeid as episode_t2
INTO #TGROUP
FROM
(select logic_order,
Diff,
rownum1,
EpisodeId,
CHAClaimID,
CHAMemberID,
CHASubscriberID,
FirstDateOfService,
CASE WHEN ISNULL(lead(rownum1) OVER (Order by logic_order),0) - 1 < rownum1 then @cnt
else ISNULL(lead(rownum1) OVER (Order by logic_order),0) - 1 END as last_range
UPDATE
[CHE]
SET
[CHE].[Episodeid] = [Temp].[episode_t1]
FROM
[CHA].[ClaimHeaderExtension] [CHE]
INNER JOIN
#TGROUP [Temp]
ON
[Temp].[claimid_t2] = [CHE].[CHAClaimID]
--/**********Updating the
PaidAmount,BillAmount,MaxDiagnosisCls********************************/
SELECT
[EpisodeID]
,[BilledAmt]
,[PaidAmt]
,[MaxDiagnosisCls]
,[LineNumberCount]
,[FirstDateOfService]
,[LastDateOfService]
INTO
#TMergeAmt
FROM
SELECT
[CE].[EpisodeID]
,SUM([CH].BilledAmt) AS [BilledAmt]
,SUM([CH].PaidAmt) AS [PaidAmt]
,MAX(ch.MaxDiagnosisCls) AS [MaxDiagnosisCls]
,SUM(Ch.LineNumberCount) AS [LineNumberCount]
,MIN(ch.FirstDateOfService) AS [FirstDateOfService]
,MAX(ch.LastDateOfService) AS [LastDateOfService]
FROM
[CHA].[ClaimHeader] [CH]
INNER JOIN
[CHA].[ClaimHeaderExtension] [CE]
ON
[CH].[CHAClaimID] =[CE].[CHAClaimID]
AND
[CH].[ClientID] = @iClientID
GROUP BY
[EpisodeID]
)[Temp]
UPDATE
[EPS]
SET
FROM
[CHA].[Episodes] [EPS]
LEFT JOIN
[#TMergeAmt] [TMP]
ON
[EPS].[EpisodeID] = [TMP].[EpisodeID]
AND
[EPS].[ClientID] = @iClientID
DELETE FROM
[CHA].[EPISODES]
WHERE
END