You are on page 1of 30

USE [CHA000QA]

GO

/****** Object: StoredProcedure [UDP].[EpisodeInsert] Script Date: 8/24/2018 8:39:30 AM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROC [UDP].[EpisodeInsert]

@iConsignmentID BIGINT

,@iClientID INT

) AS

BEGIN

/*

*************************************************************************************
*******************

Purpose : Create Episode,Update Episode ,Episode Claim Mapping, Merge Epsiodes

Created By : Satheesh Kumar.S

Created Date : 06-08-2018

Updated By : Nindya Kotwal

Updated Date : 08-08-2018

Changes : System defaults, review and changes to the insert for code 3

Updated By : Ankita Burman

Created Date : 08-03-2018

Changes : Added the Merge part of the episodes


*************************************************************************************
*******************

*/

DECLARE @MaxCnt INT

/************************************************************************************
*********************

----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

(SELECT periodtypecd,minimumperiodofcare,maximumperiodofcare FROM


[ETLMASTER_QA].[Config].[EpisodePeriodCare] WHERE clientID IS NULL and Active = 1)[PD]

Full Outer JOIN


(SELECT periodtypecd,minimumperiodofcare,maximumperiodofcare FROM
[ETLMASTER_QA].[Config].[EpisodePeriodCare] WHERE clientID = @iClientID and Active = 1)[PC]

ON [Pd].[periodtypecd] = COALESCE([PC].[periodtypecd],[PD].[periodtypecd])

) [PC]

SELECT

CASE WHEN [PEC].[MinimumPeriodofCare]=1 THEN 0 ELSE [PEC].[MinimumPeriodofCare] END


[MinimumPeriodofCare]

,[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

ISNULL(MAX ([MaximumPeriodofCare]),1) AS [MinimumPeriodofCare]

,999999999 [MaximumPeriodofCare]

,@iClientID AS [ClientID]

,3 [Code]

FROM

#TPeriodOfCare

/************************************************************************************
*********************

----Get the Diagnosis code to group mapping

*************************************************************************************
********************/

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]

/************************************************************************************
*********************

----Get the Claims data

*************************************************************************************
********************/

SELECT

ROW_NUMBER() OVER (PARTITION BY [CHR].[CHAMemberID] ORDER BY


[CHR].[LastDateOfService]) [RowNo]

, [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]

/************************************************************************************
*********************

----Get the Claims data

*************************************************************************************
********************/

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

[CDR].[Active]=1 and [CD].[DiagnosisCls] in (3,2)

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

[#TPeriodOfCare] [PC] ON [PC].[ClientID]=[CHD].[ClientID] AND [PC].[Code]=2

AND

[CHD].[ClaimDiff] BETWEEN [PC].[MinimumPeriodOfCare] AND [PC].[MaximumPeriodOfCare]

JOIN

[#TDiagnosisGroup] [DG] ON [DG].[DiagnosisID]=[CD].[DiagnosisID]

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

WHEN (([PC1].[Code]=1 AND [TCHD1].[ClaimDiff] BETWEEN

CASE WHEN [PC1].[MinimumPeriodofCare]=0 THEN 1 END AND


[PC1].[MaximumPeriodofCare]

OR

([PC1].[Code]=2 AND ISNULL([ESGP].[CHAClaimID],0)<>0)) OR ([TCHD1].[RowNo]<>1 AND


[TCHD1].[ClaimDiff]=0)

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

[PC1].[ClientID] = [TCHD1] .[ClientID]

AND

[TCHD1].[ClaimDiff] BETWEEN [PC1].[MinimumPeriodofCare] AND


[PC1].[MaximumPeriodofCare]

/************************************************************************************
*********************

----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

, CASE WHEN ISNULL(LEAD(RowNo) OVER (Partition BY TE.[CHAMemberID] Order by Episodes),0)-1 <


RowNo

THEN MXC.MaxClaimCnt ELSE ISNULL(LEAD(RowNo) OVER (Partition BY TE.[CHAMemberID] Order by


Episodes),0)-1 END

AS ClaimGroup

FROM

#TEpisode TE

JOIN

SELECT

MAX(RowNo) MaxClaimCnt

,[CHAMemberID]

FROM #TEpisode

GROUP BY [CHAMemberID]) MXC ON TE.CHAMemberID=MXC.CHAMemberID WHERE Episodes=0)a

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

([TE2].[RowNo] BETWEEN [TE1].[RowNo] AND ([TE1].[ClaimGroup]))

SELECT

@iClientID * 100 + ROW_NUMBER() Over (order by @iClientID) AS [EpisodeID]

,[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

*************************************************************************************
********************/

INSERT INTO [CHA].[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 the episode details against the existing claim

*************************************************************************************
********************/

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

ES.[FirstDateOfService] AND ES.[LastDateOfService]

--JOIN CHA.[Episodes] E ON TCD.[CHAMemberID]=E.[CHAMemberID] AND


ES.FirstDateOfService=E.FirstDateOfService

----JOIN

---- CHA.[Episodes] E

----ON

---- ES.FirstDateOfService=E.FirstDateOfService

----AND

---- ES.LastDateOfService=E.LastDateOfService

AND

ES.[ConsignmentID]=@iConsignmentID

--AND

-- ES.[ClientID]=@iClientID
/************************************************************************************
*********************

----Map the claim details with episode

*************************************************************************************
********************/

INSERT INTO CHA.[ClaimHeaderExtension](

[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

*************************************************************************************
********************/

IF OBJECT_ID('Tempdb..#TEpsPeriodOfCare') IS NOT NULL DROP TABLE


#TEpsPeriodOfCare
IF OBJECT_ID('Tempdb..#TPeriodOfCare') IS NOT NULL DROP TABLE #TPeriodOfCare

IF OBJECT_ID('Tempdb..#TClaimHeader') IS NOT NULL DROP TABLE #TClaimHeader

IF OBJECT_ID('Tempdb..#TClaimHeaderDiff') IS NOT NULL DROP TABLE


#TClaimHeaderDiff

IF OBJECT_ID('Tempdb..#TEpisode') IS NOT NULL DROP TABLE #TEpisode

IF OBJECT_ID('Tempdb..#TEpisodeGroup') IS NOT NULL DROP TABLE #TEpisodeGroup

IF OBJECT_ID('Tempdb..#TEpisodes') IS NOT NULL DROP TABLE #TEpisodes

IF OBJECT_ID('Tempdb..#TDiagnosisGroup') IS NOT NULL DROP TABLE #TDiagnosisGroup

IF OBJECT_ID('Tempdb..#TEpisodeSameGroupExists') IS NOT NULL DROP TABLE


#TEpisodeSameGroupExists

IF OBJECT_ID('Tempdb..#TClaimDiagnosis') IS NOT NULL DROP TABLE #TClaimDiagnosis

/************************************************************************************
*********************

------Merging the Episodes

*************************************************************************************
********************/

DECLARE @CNT INT

/*******Get claims data and members


data******************************************************************/

select * into #TMEMCLAIMS from

select

ce.episodeid,

ce.CHAClaimID,

[CH].CHAMemberID,
[m].CHASubscriberID,

ch.firstdateofservice

from

cha.ClaimHeaderExtension ce

inner join cha.ClaimHeader [CH] ON ce.CHAClaimID = [CH].CHAClaimID AND ch.clientid =


@iClientID

Inner Join cha.Members [M] ON m.CHAMemberID = ch.CHAMemberID

)a

/*********Determining the first date*******************************/

select * into #TSTARTSEQ from

select Row_number() Over(Partition by diff ORDER BY Firstdateofservice) as logic_order,

Diff,

rownum1,

EpisodeId,

CHAClaimID,

CHAMemberID,

CHASubscriberID,

FirstDateOfService

from

select CASE when


DATEDIFF(day,[DataSet1].Firstdateofservice,[DataSet2].Firstdateofservice) <= 1 then 0

when DATEDIFF(day,[DataSet1].Firstdateofservice,[DataSet2].Firstdateofservice) <> 1


then 1

when DATEDIFF(day,[DataSet1].Firstdateofservice,[DataSet2].Firstdateofservice) is null


then 1 end AS [diff],

[DataSet2].rownum1,
[DataSet2].EpisodeId,

[DataSet2].CHAClaimID,

[DataSet2].CHAMemberID,

[DataSet2].CHASubscriberID,

[DataSet2].FirstDateOfService

from

select ROW_NUMBER()OVER( partition by CHASubscriberID


ORDER By Firstdateofservice) as rownum1,

EpisodeId,

CHAClaimID,

CHAMemberID,

CHASubscriberID,

FirstDateOfService

from #TMEMCLAIMS

)[DataSet1]

right join

(select ROW_NUMBER()OVER( partition by CHASubscriberID


ORDER By Firstdateofservice) as rownum1,

EpisodeId,

CHAClaimID,

CHAMemberID,

CHASubscriberID,

FirstDateOfService

from #TMEMCLAIMS) [DataSet2]

on [DataSet1].rownum1+1 = [DataSet2].rownum1

and [DataSet1].CHASubscriberID=[DataSet2].CHASubscriberID

)
) [TempData]

WHERE diff = 1

)X

/**************Determining the last date *********************/

select * into #TSUBSEQ from

select Row_number() Over(Partition by diff ORDER BY Firstdateofservice) as logic_order,

[diff],

rownum1,

EpisodeId,

CHAClaimID,

CHAMemberID,

CHASubscriberID,

FirstDateOfService

from

select CASE when


DATEDIFF(day,[DataSet1].Firstdateofservice,[DataSet2].Firstdateofservice) <= 1 then 0

when DATEDIFF(day,[DataSet1].Firstdateofservice,[DataSet2].Firstdateofservice) <> 1


then 1

when DATEDIFF(day,[DataSet1].Firstdateofservice,[DataSet2].Firstdateofservice) is null


then 1 end AS [diff],

[DataSet2].rownum1,

[DataSet2].EpisodeId,

[DataSet2].CHAClaimID,

[DataSet2].CHAMemberID,
[DataSet2].CHASubscriberID,

[DataSet2].FirstDateOfService

from

(select ROW_NUMBER()OVER( partition by CHASubscriberID


ORDER By Firstdateofservice) as rownum1,

EpisodeId,

CHAClaimID,

CHAMemberID,

CHASubscriberID,

FirstDateOfService

from #TMEMCLAIMS)[DataSet1]

right join

(select ROW_NUMBER()OVER( partition by CHASubscriberID


ORDER By Firstdateofservice) as rownum1,

EpisodeId,

CHAClaimID,

CHAMemberID,

CHASubscriberID,

FirstDateOfService

from #TMEMCLAIMS) [DataSet2]

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 ***************/

select @cnt= count(*) from #TMEMCLAIMS

SELECT [Dataset1].CHAMemberID as memberId_T1 ,

[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

from #TSTARTSEQ) [Dataset1]

Inner Join #TSUBSEQ [Dataset2] on

[Dataset2].rownum1 between [Dataset1].rownum1 and [Dataset1].last_range


and [Dataset1].chasubscriberID = [Dataset2].chasubscriberID

/*********Merging the episodes based on group********************************************/

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 the Epsiodes table after Merging the data*************************/

UPDATE

[EPS]
SET

[BillAmt] = CASE WHEN [TMP].[EpisodeID] IS NULL THEN 0


ELSE [TMP].[BilledAmt] END

,[PaidAmt] = CASE WHEN [TMP].[EpisodeID] IS NULL THEN 0


ELSE [TMP].[PaidAmt] END

,[DiagnosisCls] = CASE WHEN [TMP].[EpisodeID] IS NULL THEN 0


ELSE [TMP].[MaxDiagnosisCls] END

,[FirstDateOfService] = CASE WHEN [TMP].[EpisodeID] IS NULL THEN NULL ELSE


[TMP].[FirstDateOfService] END

,[LastDateOfService] = CASE WHEN [TMP].[EpisodeID] IS NULL THEN NULL ELSE


[TMP].[LastDateOfService] END

,[ClaimCount] = CASE WHEN [TMP].[EpisodeID] IS NULL THEN 0


ELSE [TMP].[LineNumberCount] END

FROM

[CHA].[Episodes] [EPS]

LEFT JOIN

[#TMergeAmt] [TMP]

ON

[EPS].[EpisodeID] = [TMP].[EpisodeID]

AND

[EPS].[ClientID] = @iClientID

/******Delete the Merged


Episodes*****************************************************************/

DELETE FROM

[CHA].[EPISODES]

WHERE

[EpisodeID] IN (SELECT [EpisodeID] FROM #TSUBSEQ)


/******HouseKeeping******************************************************************
************/

IF OBJECT_ID('Tempdb..#TMEMCLAIMS') IS NOT NULL DROP TABLE #TMEMCLAIMS

IF OBJECT_ID('Tempdb..#TSTARTSEQ') IS NOT NULL DROP TABLE #TSTARTSEQ

IF OBJECT_ID('Tempdb..#TSUBSEQ') IS NOT NULL DROP TABLE #TSUBSEQ

IF OBJECT_ID('Tempdb..#TGROUP') IS NOT NULL DROP TABLE #TGROUP

IF OBJECT_ID('Tempdb..#TMergeAmt') IS NOT NULL DROP TABLE #TMergeAmt

END

You might also like