claim details tables that could be updated only with the changes
if not exists (select * from sysobjects where name='rptClaimDetails' and xtype='U')
CREATE TABLE rptClaimDetails(
ID integer NOT NULL IDENTITY(1,1)
,ItemServiceType varchar(255)
, ServiceItemCode nvarchar(16)
, ServiceItemName varchar(255)
,Gender varchar(16)
,DoBYear int
,INSUREE_ID varchar(32)
,IsHead varchar(16)
,ClaimServiceItemStatus varchar(16)
,QtyProvided int
,QtyApproved int
,PriceAsked DECIMAL (18, 2),
PriceAdjusted DECIMAL (18, 2)
,PriceValuated DECIMAL (18, 2)
,PriceApproved DECIMAL (18, 2)
,ServiceItemRejectionReason varchar(255)
,DeductableAmount DECIMAL (18, 2)
,RemuneratedAmount DECIMAL (18, 2)
,ExceedCeilingAmount DECIMAL (18, 2)
,PriceOrigin char(1)
,ExceedCeilingAmountCategory varchar(16)
,LimitationValue int
,Limitation varchar(50)
,ClaimCode varchar(16)
,ClaimStatus varchar(16)
,Valuated DECIMAL (18, 2)
,Approved DECIMAL (18, 2)
,Claimed DECIMAL (18, 2)
,Reinsured DECIMAL (18, 2)
,DateProcessed date
,DateClaimed date
,ClaimRejectionReason varchar(255)
,ApprovalStatus varchar(16)
,ReviewStatus varchar(16)
,FeedbackStatus varchar(16)
,RunID integer
,SubmitStamp date
,ProcessStamp date
,Remunerated DECIMAL (18, 2)
,VisitType varchar(16)
,GuaranteeId varchar(20)
,ClaimCategory char(1)
,ProductCode varchar(16)
,ProductName varchar(255)
,LocationCode varchar(16)
,HFName varchar(255)
,HFLevel varchar(50)
,HFCareType varchar(50)
,LegalForm varchar(50)
,HFCode varchar(50)
, mainICDCode varchar(16)
, mainICDName varchar(255)
, ICD1Code varchar(16)
, ICD1Name varchar(255)
, ICD2Code varchar(16)
, ICD2Name varchar(255)
, ICD3Code varchar(16)
,ICD3Name varchar(255)
,ICD4Code varchar(16)
,ICD4Name varchar(255)
,VillageName varchar(255)
,VillageCode varchar(16)
,WardName varchar(255)
,WardCode varchar(16)
,DistrictName varchar(255)
,DistrictCode varchar(16)
,RegionName varchar(255)
,RegionCode varchar(16)
,lastUpdate datetime
PRIMARY KEY (ID)
);
go
DECLARE @lastUpdate date = (case (SELECT count(lastUpdate) FROM rptClaimDetails) when 0 then CONVERT(date, '2000-01-01',102) ELSE (SELECT TOP 1 lastUpdate FROM rptClaimDetails ORDER BY lastUpdate DESC) END );
DECLARE @stopDate date = CONVERT(date, '2021-01-01',102);
WITH Locations as (
SELECT * FROM uvwLocations
WHERE WardCode IS NULL AND VillageCode IS NULL AND DistrictCode IS NOT NULL
AND DistrictCode IS NOT NULL
)MERGE INTO rptClaimDetails AS c
using (SELECT
'Item' AS ItemServiceType
,tblItems.ItemCode AS ServiceItemCode
,tblItems.ItemName AS ServiceItemName
,tblInsuree.Gender
,DATEPART(yyyy,tblInsuree.DOB) AS DoBYear
, CONVERT(VARCHAR(32), HashBytes('MD5',CONCAT(tblInsuree.CHFID,'SSRSCHF')),2) AS INSUREE_ID
,tblInsuree.IsHead
,tblClaimItems.ClaimItemStatus AS [ClaimServiceItemStatus]
,tblClaimItems.QtyProvided
,tblClaimItems.QtyApproved
,tblClaimItems.PriceAsked
,tblClaimItems.PriceAdjusted
,tblClaimItems.PriceValuated
,tblClaimItems.PriceApproved
,tblClaimItems.RejectionReason AS [ServiceItemRejectionReason]
,tblClaimItems.DeductableAmount
,tblClaimItems.RemuneratedAmount
,tblClaimItems.ExceedCeilingAmount
,tblClaimItems.PriceOrigin
,tblClaimItems.ExceedCeilingAmountCategory
,tblClaimItems.LimitationValue
,tblClaimItems.Limitation
,tblClaim.ClaimCode
,tblClaim.ClaimStatus
,tblClaim.Valuated
,tblClaim.Approved
,tblClaim.Claimed
,tblClaim.Reinsured
,tblClaim.DateProcessed
,tblClaim.DateClaimed
,tblClaim.RejectionReason AS [ClaimRejectionReason]
,tblClaim.ApprovalStatus
,tblClaim.ReviewStatus
,tblClaim.FeedbackStatus
,tblClaim.RunID
,tblClaim.SubmitStamp
,tblClaim.ProcessStamp
,tblClaim.Remunerated
,tblClaim.ICDID1
,tblClaim.ICDID2
,tblClaim.ICDID3
,tblClaim.ICDID4
,tblClaim.VisitType
,tblClaim.GuaranteeId
,tblClaim.ClaimCategory
,tblProduct.ProductCode
,tblProduct.ProductName
,tblLocations.LocationCode
,tblHF.HFName
,tblHF.HFLevel
,tblHF.HFCareType
,tblHF.LegalForm
,tblHF.HFCode
,mainICD.ICDCode as mainICDCode
,mainICD.ICDName as mainICDName
,ICD1.ICDCode as ICD1Code
,ICD1.ICDName as ICD1Name
,ICD2.ICDCode as ICD2Code
,ICD2.ICDName as ICD2Name
,ICD3.ICDCode as ICD3Code
,ICD3.ICDName as ICD3Name
,ICD4.ICDCode as ICD4Code
,ICD4.ICDName as ICD4Name
,l.DistrictName
,l.DistrictCode
,l.RegionName
,l.RegionCode
,GETDATE() as lastUpdate
FROM
tblClaim
RIGHT OUTER JOIN tblClaimItems
ON tblClaimItems.ClaimID = tblClaim.ClaimID
INNER JOIN tblInsuree
ON tblClaim.InsureeID = tblInsuree.InsureeID
INNER JOIN tblItems
ON tblClaimItems.ItemID = tblItems.ItemID
INNER JOIN tblProduct
ON tblClaimItems.ProdID = tblProduct.ProdID
INNER JOIN tblHF
ON tblClaim.HFID = tblHF.HFID
INNER JOIN tblLocations
ON tblHF.LocationId = tblLocations.LocationId
INNER JOIN Locations l
ON tblLocations.LocationCode = l.DistrictCode
INNER JOIN tblICDCodes as mainICD
ON tblClaim.ICDID = mainICD.ICDID
LEFT JOIN tblICDCodes as ICD1
ON tblClaim.ICDID1 = ICD1.ICDID
LEFT JOIN tblICDCodes as ICD2
ON tblClaim.ICDID2 = ICD2.ICDID
LEFT JOIN tblICDCodes as ICD3
ON tblClaim.ICDID3 = ICD3.ICDID
LEFT JOIN tblICDCodes as ICD4
ON tblClaim.ICDID4 = ICD4.ICDID
WHERE
tblClaim.ValidityTo IS NULL and tblClaimItems.ValidityTo IS NULL
and tblClaim.[ValidityFrom] BETWEEN @lastUpdate AND @stopDate
UNION
SELECT
'Service' AS ItemServiceType
, tblServices.ServCode AS ServiceItemCode
,tblServices.ServName AS ServiceItemName
,tblInsuree.Gender
,DATEPART(yyyy,tblInsuree.DOB) AS DoBYear
, CONVERT(VARCHAR(32), HashBytes('MD5',CONCAT(tblInsuree.CHFID,'SSRSCHF')),2) AS INSUREE_ID
,tblInsuree.IsHead
,tblClaimServices.ClaimServiceStatus AS [ClaimServiceItemStatus]
,tblClaimServices.QtyProvided
,tblClaimServices.QtyApproved
,tblClaimServices.PriceAsked
,tblClaimServices.PriceAdjusted
,tblClaimServices.PriceValuated
,tblClaimServices.PriceApproved
,tblClaimServices.RejectionReason AS [ServiceItemRejectionReason]
,tblClaimServices.DeductableAmount
,tblClaimServices.RemuneratedAmount
,tblClaimServices.ExceedCeilingAmount
,tblClaimServices.PriceOrigin
,tblClaimServices.ExceedCeilingAmountCategory
,tblClaimServices.LimitationValue
,tblClaimServices.Limitation
,tblClaim.ClaimCode
,tblClaim.ClaimStatus
,tblClaim.Valuated
,tblClaim.Approved
,tblClaim.Claimed
,tblClaim.Reinsured
,tblClaim.DateProcessed
,tblClaim.DateClaimed
,tblClaim.RejectionReason AS [ClaimRejectionReason]
,tblClaim.ApprovalStatus
,tblClaim.ReviewStatus
,tblClaim.FeedbackStatus
,tblClaim.RunID
,tblClaim.SubmitStamp
,tblClaim.ProcessStamp
,tblClaim.Remunerated
,tblClaim.ICDID1
,tblClaim.ICDID2
,tblClaim.ICDID3
,tblClaim.ICDID4
,tblClaim.VisitType
,tblClaim.GuaranteeId
,tblClaim.ClaimCategory
,tblProduct.ProductCode
,tblProduct.ProductName
,tblLocations.LocationCode
,tblHF.HFName
,tblHF.HFLevel
,tblHF.HFCareType
,tblHF.LegalForm
,tblHF.HFCode
,mainICD.ICDCode as mainICDCode
,mainICD.ICDName as mainICDName
,ICD1.ICDCode as ICD1Code
,ICD1.ICDName as ICD1Name
,ICD2.ICDCode as ICD2Code
,ICD2.ICDName as ICD2Name
,ICD3.ICDCode as ICD3Code
,ICD3.ICDName as ICD3Name
,ICD4.ICDCode as ICD4Code
,ICD4.ICDName as ICD4Name
,l.DistrictName
,l.DistrictCode
,l.RegionName
,l.RegionCode
,GETDATE() as lastUpdate
FROM
tblClaim
RIGHT OUTER JOIN tblClaimServices
ON tblClaimServices.ClaimID = tblClaim.ClaimID
INNER JOIN tblInsuree
ON tblClaim.InsureeID = tblInsuree.InsureeID
INNER JOIN tblServices
ON tblClaimServices.ServiceID = tblServices.ServiceID
INNER JOIN tblProduct
ON tblClaimServices.ProdID = tblProduct.ProdID
INNER JOIN tblHF
ON tblClaim.HFID = tblHF.HFID
INNER JOIN tblLocations
ON tblHF.LocationId = tblLocations.LocationId
INNER JOIN Locations l
ON tblLocations.LocationCode = l.DistrictCode
INNER JOIN tblICDCodes as mainICD
ON tblClaim.ICDID = mainICD.ICDID
LEFT JOIN tblICDCodes as ICD1
ON tblClaim.ICDID1 = ICD1.ICDID
LEFT JOIN tblICDCodes as ICD2
ON tblClaim.ICDID2 = ICD2.ICDID
LEFT JOIN tblICDCodes as ICD3
ON tblClaim.ICDID3 = ICD3.ICDID
LEFT JOIN tblICDCodes as ICD4
ON tblClaim.ICDID4 = ICD4.ICDID
WHERE
tblClaim.ValidityTo IS NULL and tblClaimServices.ValidityTo IS NULL
AND tblClaim.[ValidityFrom] BETWEEN @lastUpdate AND @stopDate) as u
ON (u.HFCode = c.HFCode and u.ClaimCode = c.ClaimCode AND u.ServiceItemCode = c.ServiceItemCode)
when MATCHED THEN
update SET
c.ItemServiceType = u.ItemServiceType
,c.ServiceItemCode = u.ServiceItemCode
,c.ServiceItemName = u.ServiceItemName
,c.Gender = u.Gender
,c.DoBYear = u.DoBYear
,c.INSUREE_ID = u.INSUREE_ID
,c.IsHead = u.IsHead
,c.ClaimServiceItemStatus = u.ClaimServiceItemStatus
,c.QtyProvided = u.QtyProvided
,c.QtyApproved = u.QtyApproved
,c.PriceAsked = u.PriceAsked
,c.PriceAdjusted = u.PriceAdjusted
,c.PriceValuated = u.PriceValuated
,c.PriceApproved = u.PriceApproved
,c.ServiceItemRejectionReason = u.ServiceItemRejectionReason
,c.DeductableAmount = u.DeductableAmount
,c.RemuneratedAmount = u.RemuneratedAmount
,c.ExceedCeilingAmount = u.ExceedCeilingAmount
,c.PriceOrigin = u.PriceOrigin
,c.ExceedCeilingAmountCategory = u.ExceedCeilingAmountCategory
,c.LimitationValue = u.LimitationValue
,c.Limitation = u.Limitation
,c.ClaimCode = u.ClaimCode
,c.ClaimStatus = u.ClaimStatus
,c.Valuated = u.Valuated
,c.Approved = u.Approved
,c.Claimed = u.Claimed
,c.Reinsured = u.Reinsured
,c.DateProcessed = u.DateProcessed
,c.DateClaimed = u.DateClaimed
,c.ClaimRejectionReason = u.ClaimRejectionReason
,c.ApprovalStatus = u.ApprovalStatus
,c.ReviewStatus = u.ReviewStatus
,c.FeedbackStatus = u.FeedbackStatus
,c.RunID = u.RunID
,c.SubmitStamp = u.SubmitStamp
,c.ProcessStamp = u.ProcessStamp
,c.Remunerated = u.Remunerated
,c.VisitType = u.VisitType
,c.GuaranteeId = u.GuaranteeId
,c.ClaimCategory = u.ClaimCategory
,c.ProductCode = u.ProductCode
,c.ProductName = u.ProductName
,c.LocationCode = u.LocationCode
,c.HFName = u.HFName
,c.HFLevel = u.HFLevel
,c.HFCareType = u.HFCareType
,c.LegalForm = u.LegalForm
,c.HFCode = u.HFCode
,c.mainICDCode = u.mainICDCode
,c.mainICDName = u.mainICDName
,c.ICD1Code = u.ICD1Code
,c.ICD1Name = u.ICD1Name
,c.ICD2Code = u.ICD2Code
,c.ICD2Name = u.ICD2Name
,c.ICD3Code = u.ICD3Code
,c.ICD3Name = u.ICD3Name
,c.ICD4Code = u.ICD4Code
,c.ICD4Name = u.ICD4Name
,c.DistrictName = u.DistrictName
,c.DistrictCode = u.DistrictCode
,c.RegionName = u.RegionName
,c.RegionCode = u.RegionCode
,c.lastUpdate = u.lastUpdate
WHEN NOT matchED BY TARGET THEN
INSERT ( ItemServiceType
, ServiceItemCode
, ServiceItemName
,Gender
,DoBYear
,INSUREE_ID
,IsHead
,ClaimServiceItemStatus
,QtyProvided
,QtyApproved
,PriceAsked
,PriceAdjusted
,PriceValuated
,PriceApproved
,ServiceItemRejectionReason
,DeductableAmount
,RemuneratedAmount
,ExceedCeilingAmount
,PriceOrigin
,ExceedCeilingAmountCategory
,LimitationValue
,Limitation
,ClaimCode
,ClaimStatus
,Valuated
,Approved
,Claimed
,Reinsured
,DateProcessed
,DateClaimed
,ClaimRejectionReason
,ApprovalStatus
,ReviewStatus
,FeedbackStatus
,RunID
,SubmitStamp
,ProcessStamp
,Remunerated
,VisitType
,GuaranteeId
,ClaimCategory
,ProductCode
,ProductName
,LocationCode
,HFName
,HFLevel
,HFCareType
,LegalForm
,HFCode
, mainICDCode
, mainICDName
, ICD1Code
, ICD1Name
, ICD2Code
, ICD2Name
, ICD3Code
,ICD3Name
,ICD4Code
,ICD4Name
,DistrictName
,DistrictCode
,RegionName
,RegionCode
,lastUpdate )
VALUES (ItemServiceType
,u.ServiceItemCode
,u.ServiceItemName
,u.Gender
,u.DoBYear
,u.INSUREE_ID
,u.IsHead
,u.ClaimServiceItemStatus
,u.QtyProvided
,u.QtyApproved ,u.PriceAsked ,
,u.PriceAdjusted
,u.PriceValuated
,u.PriceApproved
,u.ServiceItemRejectionReason
,u.DeductableAmount
,u.RemuneratedAmount
,u.ExceedCeilingAmount
,u.PriceOrigin
,u.ExceedCeilingAmountCategory
,u.LimitationValue
,u.Limitation
,u.ClaimCode
,u.ClaimStatus
,u.Valuated
,u.Approved
,u.Claimed
,u.Reinsured
,u.DateProcessed
,u.DateClaimed
,u.ClaimRejectionReason
,u.ApprovalStatus
,u.ReviewStatus
,u.FeedbackStatus
,u.RunID
,u.SubmitStamp
,u.ProcessStamp
,u.Remunerated
,u.VisitType
,u.GuaranteeId
,u.ClaimCategory
,u.ProductCode
,u.ProductName
,u.LocationCode
,u.HFName
,u.HFLevel
,u.HFCareType
,u.LegalForm
,u.HFCode
,u.mainICDCode
,u.mainICDName
,u.ICD1Code
,u.ICD1Name
,u.ICD2Code
,u.ICD2Name
,u.ICD3Code
,u.ICD3Name
,u.ICD4Code
,u.ICD4Name
,u.DistrictName
,u.DistrictCode
,u.RegionName
,u.RegionCode
,u.lastUpdate);
Did you encounter a problem or do you have a suggestion?
Please contact our Service Desk
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. https://creativecommons.org/licenses/by-sa/4.0/