@@ -5375,3 +5375,354 @@ BEGIN
53755375END
53765376GO
53775377
5378+ IF OBJECT_ID (' [uspSSRSCapitationPayment]' , ' P' ) IS NOT NULL
5379+ DROP PROCEDURE [uspSSRSCapitationPayment]
5380+ GO
5381+ CREATE PROCEDURE [dbo].[uspSSRSCapitationPayment]
5382+ (
5383+ @RegionId INT = NULL ,
5384+ @DistrictId INT = NULL ,
5385+ @ProdId INT ,
5386+ @Year INT ,
5387+ @Month INT ,
5388+ @HFLevel xAttributeV READONLY
5389+ )
5390+ AS
5391+ BEGIN
5392+
5393+ DECLARE @Level1 CHAR (1 ) = NULL ,
5394+ @Sublevel1 CHAR (1 ) = NULL ,
5395+ @Level2 CHAR (1 ) = NULL ,
5396+ @Sublevel2 CHAR (1 ) = NULL ,
5397+ @Level3 CHAR (1 ) = NULL ,
5398+ @Sublevel3 CHAR (1 ) = NULL ,
5399+ @Level4 CHAR (1 ) = NULL ,
5400+ @Sublevel4 CHAR (1 ) = NULL ,
5401+ @ShareContribution DECIMAL (5 , 2 ),
5402+ @WeightPopulation DECIMAL (5 , 2 ),
5403+ @WeightNumberFamilies DECIMAL (5 , 2 ),
5404+ @WeightInsuredPopulation DECIMAL (5 , 2 ),
5405+ @WeightNumberInsuredFamilies DECIMAL (5 , 2 ),
5406+ @WeightNumberVisits DECIMAL (5 , 2 ),
5407+ @WeightAdjustedAmount DECIMAL (5 , 2 )
5408+
5409+
5410+ DECLARE @FirstDay DATE = CAST (@Year AS VARCHAR (4 )) + ' -' + CAST (@Month AS VARCHAR (2 )) + ' -01' ;
5411+ DECLARE @LastDay DATE = EOMONTH (CAST (@Year AS VARCHAR (4 )) + ' -' + CAST (@Month AS VARCHAR (2 )) + ' -01' , 0 )
5412+ DECLARE @DaysInMonth INT = DATEDIFF (DAY ,@FirstDay,DATEADD (MONTH ,1 ,@FirstDay));
5413+
5414+ set @DistrictId = CASE @DistrictId WHEN 0 THEN NULL ELSE @DistrictId END
5415+
5416+ DECLARE @Locations TABLE (
5417+ LocationId INT ,
5418+ LocationName VARCHAR (50 ),
5419+ LocationCode VARCHAR (8 ),
5420+ ParentLocationId INT
5421+ );
5422+
5423+ INSERT INTO @Locations
5424+ SELECT 0 LocationId, N ' National' LocationName, NULL ParentLocationId, 0 LocationCode
5425+
5426+ UNION ALL
5427+
5428+ SELECT LocationId,LocationName, LocationCode, ISNULL (ParentLocationId, 0 )
5429+ FROM tblLocations
5430+ WHERE (ValidityTo IS NULL )
5431+ AND (LocationId = ISNULL (@DistrictId, @RegionId) OR
5432+ (LocationType IN (' R' , ' D' ) AND ParentLocationId = ISNULL (@DistrictId, @RegionId)))
5433+
5434+
5435+ DECLARE @LocationTemp table (LocationId int , RegionId int , RegionCode [nvarchar](8 ) , RegionName [nvarchar](50 ), DistrictId int , DistrictCode [nvarchar](8 ),
5436+ DistrictName [nvarchar](50 ), ParentLocationId int )
5437+
5438+
5439+ INSERT INTO @LocationTemp(LocationId , RegionId , RegionCode , RegionName , DistrictId , DistrictCode ,
5440+ DistrictName , ParentLocationId)( SELECT ISNULL (d .LocationId ,r .LocationId ) LocationId , r .LocationId as RegionId , r .LocationCode as RegionCode , r .LocationName as RegionName , d .LocationId as DistrictId , d .LocationCode as DistrictCode ,
5441+ d .LocationName as DistrictName , ISNULL (d .ParentLocationId ,r .ParentLocationId ) ParentLocationId FROM @Locations d INNER JOIN @Locations r on d .ParentLocationId = r .LocationId
5442+ UNION ALL SELECT r .LocationId , r .LocationId as RegionId , r .LocationCode as RegionCode , r .LocationName as RegionName , NULL DistrictId , NULL DistrictCode ,
5443+ NULL DistrictName , ParentLocationId FROM @Locations r WHERE ParentLocationId = 0 )
5444+ ;
5445+ declare @listOfHF table (id int );
5446+
5447+ IF @RegionId IS NULL or @RegionId = 0
5448+ INSERT INTO @listOfHF(id) SELECT tblHF .HfID FROM tblHF WHERE tblHF .ValidityTo is NULL ;
5449+ ELSE IF @DistrictId is NULL or @DistrictId = 0
5450+ INSERT INTO @listOfHF(id) SELECT tblHF .HfID FROM tblHF JOIN tblLocations l on tblHF .LocationId = l .LocationId WHERE l .ParentLocationId = @RegionId ;
5451+ ELSE
5452+ INSERT INTO @listOfHF(id) SELECT tblHF .HfID FROM tblHF WHERE tblHF .LocationId = @DistrictId and tblHF .ValidityTo is NULL ;
5453+
5454+
5455+ SELECT @Level1 = Level1, @Sublevel1 = Sublevel1, @Level2 = Level2, @Sublevel2 = Sublevel2, @Level3 = Level3, @Sublevel3 = Sublevel3,
5456+ @Level4 = Level4, @Sublevel4 = Sublevel4, @ShareContribution = ISNULL (ShareContribution, 0 ), @WeightPopulation = ISNULL (WeightPopulation, 0 ),
5457+ @WeightNumberFamilies = ISNULL (WeightNumberFamilies, 0 ), @WeightInsuredPopulation = ISNULL (WeightInsuredPopulation, 0 ), @WeightNumberInsuredFamilies = ISNULL (WeightNumberInsuredFamilies, 0 ),
5458+ @WeightNumberVisits = ISNULL (WeightNumberVisits, 0 ), @WeightAdjustedAmount = ISNULL (WeightAdjustedAmount, 0 )
5459+ FROM tblProduct Prod
5460+ WHERE ProdId = @ProdId;
5461+
5462+
5463+ PRINT @ShareContribution
5464+ PRINT @WeightPopulation
5465+ PRINT @WeightNumberFamilies
5466+ PRINT @WeightInsuredPopulation
5467+ PRINT @WeightNumberInsuredFamilies
5468+ PRINT @WeightNumberVisits
5469+ PRINT @WeightAdjustedAmount
5470+
5471+
5472+ DECLARE @TotalPopFam TABLE (
5473+ HFID INT ,
5474+ TotalPopulation DECIMAL (18 , 6 ),
5475+ TotalFamilies DECIMAL (18 , 6 )
5476+ );
5477+
5478+ INSERT INTO @TotalPopFam
5479+
5480+ SELECT C .HFID HFID ,
5481+ CASE WHEN ISNULL (@DistrictId, @RegionId) IN (D .RegionId , D .DistrictId ) THEN 1 ELSE 0 END * SUM ((ISNULL (L .MalePopulation , 0 ) + ISNULL (L .FemalePopulation , 0 ) + ISNULL (L .OtherPopulation , 0 )) * (0 .01 * Catchment)) TotalPopulation,
5482+ CASE WHEN ISNULL (@DistrictId, @RegionId) IN (D .RegionId , D .DistrictId ) THEN 1 ELSE 0 END * SUM (ISNULL (((L .Families )* (0 .01 * Catchment)), 0 ))TotalFamilies
5483+ FROM tblHFCatchment C
5484+ LEFT JOIN tblLocations L ON L .LocationId = C .LocationId OR L .LegacyId = C .LocationId
5485+ INNER JOIN tblHF HF ON C .HFID = HF .HfID
5486+ INNER JOIN @LocationTemp D ON HF .LocationId = D .DistrictId
5487+ WHERE (C .ValidityTo IS NULL OR C .ValidityTo >= @FirstDay) AND C .ValidityFrom < @FirstDay
5488+ AND (L .ValidityTo IS NULL OR L .ValidityTo >= @FirstDay) AND L .ValidityFrom < @FirstDay
5489+ AND (HF .ValidityTo IS NULL )
5490+ AND C .HFID in (SELECT id FROM @listOfHF)
5491+ GROUP BY C .HFID , D .DistrictId , D .RegionId
5492+
5493+
5494+
5495+ DECLARE @InsuredInsuree TABLE (
5496+ HFID INT ,
5497+ ProdId INT ,
5498+ TotalInsuredInsuree DECIMAL (18 , 6 )
5499+ );
5500+
5501+ INSERT INTO @InsuredInsuree
5502+
5503+ SELECT HC .HFID , @ProdId ProdId, COUNT (DISTINCT IP .InsureeId )* (0 .01 * Catchment) TotalInsuredInsuree
5504+ FROM tblInsureePolicy IP
5505+ INNER JOIN tblInsuree I ON I .InsureeId = IP .InsureeId
5506+ INNER JOIN tblFamilies F ON F .FamilyId = I .FamilyId
5507+ INNER JOIN tblHFCatchment HC ON HC .LocationId = F .LocationId
5508+ INNER JOIN tblPolicy PL ON PL .PolicyID = IP .PolicyId
5509+ WHERE (HC .ValidityTo IS NULL OR HC .ValidityTo >= @FirstDay) AND HC .ValidityFrom < @FirstDay
5510+ AND I .ValidityTo IS NULL
5511+ AND IP .ValidityTo IS NULL
5512+ AND F .ValidityTo IS NULL
5513+ AND PL .ValidityTo IS NULL
5514+ AND IP .EffectiveDate <= @LastDay
5515+ AND IP .ExpiryDate > @LastDay
5516+ AND PL .ProdID = @ProdId
5517+ AND HC .HFID in (SELECT id FROM @listOfHF)
5518+ GROUP BY HC .HFID , Catchment-- , L.LocationId
5519+
5520+
5521+
5522+
5523+ DECLARE @InsuredFamilies TABLE (
5524+ HFID INT ,
5525+ TotalInsuredFamilies DECIMAL (18 , 6 )
5526+ );
5527+
5528+ INSERT INTO @InsuredFamilies
5529+ SELECT HC .HFID , COUNT (DISTINCT F .FamilyID )* (0 .01 * Catchment) TotalInsuredFamilies
5530+ FROM tblInsureePolicy IP
5531+ INNER JOIN tblInsuree I ON I .InsureeId = IP .InsureeId
5532+ INNER JOIN tblFamilies F ON F .InsureeID = I .InsureeID
5533+ INNER JOIN tblHFCatchment HC ON HC .LocationId = F .LocationId
5534+ INNER JOIN tblPolicy PL ON PL .PolicyID = IP .PolicyId
5535+ WHERE (HC .ValidityTo IS NULL OR HC .ValidityTo >= @FirstDay) AND HC .ValidityFrom < @FirstDay
5536+ AND I .ValidityTo IS NULL
5537+ AND IP .ValidityTo IS NULL
5538+ AND F .ValidityTo IS NULL
5539+ AND PL .ValidityTo IS NULL
5540+ AND IP .EffectiveDate <= @LastDay
5541+ AND IP .ExpiryDate > @LastDay
5542+ AND PL .ProdID = @ProdId
5543+ AND HC .HFID in (SELECT id FROM @listOfHF)
5544+ GROUP BY HC .HFID , Catchment-- , L.LocationId
5545+
5546+
5547+
5548+
5549+
5550+
5551+ DECLARE @Allocation TABLE (
5552+ ProdId INT ,
5553+ Allocated DECIMAL (18 , 6 )
5554+ );
5555+
5556+ INSERT INTO @Allocation
5557+ SELECT ProdId, CAST (SUM (ISNULL (Allocated, 0 )) AS DECIMAL (18 , 6 )) Allocated
5558+ FROM
5559+ (SELECT PL .ProdID ,
5560+ CASE
5561+ WHEN MONTH (DATEADD (D,- 1 ,PL .ExpiryDate )) = @Month AND YEAR (DATEADD (D,- 1 ,PL .ExpiryDate )) = @Year AND (DAY (PL .ExpiryDate )) > 1
5562+ THEN CASE WHEN DATEDIFF (D,CASE WHEN PR .PayDate < @FirstDay THEN @FirstDay ELSE PR .PayDate END ,PL .ExpiryDate ) = 0 THEN 1 ELSE DATEDIFF (D,CASE WHEN PR .PayDate < @FirstDay THEN @FirstDay ELSE PR .PayDate END ,PL .ExpiryDate ) END * ((SUM (PR .Amount ))/ (CASE WHEN (DATEDIFF (DAY ,CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ,PL .ExpiryDate )) <= 0 THEN 1 ELSE DATEDIFF (DAY ,CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ,PL .ExpiryDate ) END ))
5563+ WHEN MONTH (CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ) = @Month AND YEAR (CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ) = @Year
5564+ THEN ((@DaysInMonth + 1 - DAY (CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END )) * ((SUM (PR .Amount ))/ CASE WHEN DATEDIFF (DAY ,CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ,PL .ExpiryDate ) <= 0 THEN 1 ELSE DATEDIFF (DAY ,CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ,PL .ExpiryDate ) END ))
5565+ WHEN PL .EffectiveDate < @FirstDay AND PL .ExpiryDate > @LastDay AND PR .PayDate < @FirstDay
5566+ THEN @DaysInMonth * (SUM (PR .Amount )/ CASE WHEN (DATEDIFF (DAY ,CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ,DATEADD (D,- 1 ,PL .ExpiryDate ))) <= 0 THEN 1 ELSE DATEDIFF (DAY ,CASE WHEN PR .PayDate < PL .EffectiveDate THEN PL .EffectiveDate ELSE PR .PayDate END ,PL .ExpiryDate ) END )
5567+ END Allocated
5568+ FROM tblPremium PR
5569+ INNER JOIN tblPolicy PL ON PR .PolicyID = PL .PolicyID
5570+ INNER JOIN tblProduct Prod ON Prod .ProdId = PL .ProdID
5571+ INNER JOIN @Locations L ON ISNULL (Prod .LocationId , 0 ) = L .LocationId
5572+ WHERE PR .ValidityTo IS NULL
5573+ AND PL .ValidityTo IS NULL
5574+ AND PL .ProdID = @ProdId
5575+ AND PL .PolicyStatus <> 1
5576+ AND PR .PayDate <= PL .ExpiryDate
5577+ GROUP BY PL .ProdID , PL .ExpiryDate , PR .PayDate ,PL .EffectiveDate )Alc
5578+ GROUP BY ProdId;
5579+
5580+
5581+ DECLARE @ReportData TABLE (
5582+ RegionCode VARCHAR (MAX ),
5583+ RegionName VARCHAR (MAX ),
5584+ DistrictCode VARCHAR (MAX ),
5585+ DistrictName VARCHAR (MAX ),
5586+ HFCode VARCHAR (MAX ),
5587+ HFName VARCHAR (MAX ),
5588+ AccCode VARCHAR (MAX ),
5589+ HFLevel VARCHAR (MAX ),
5590+ HFSublevel VARCHAR (MAX ),
5591+ TotalPopulation DECIMAL (18 , 6 ),
5592+ TotalFamilies DECIMAL (18 , 6 ),
5593+ TotalInsuredInsuree DECIMAL (18 , 6 ),
5594+ TotalInsuredFamilies DECIMAL (18 , 6 ),
5595+ TotalClaims DECIMAL (18 , 6 ),
5596+ TotalAdjusted DECIMAL (18 , 6 ),
5597+
5598+ PaymentCathment DECIMAL (18 , 6 ),
5599+ AlcContriPopulation DECIMAL (18 , 6 ),
5600+ AlcContriNumFamilies DECIMAL (18 , 6 ),
5601+ AlcContriInsPopulation DECIMAL (18 , 6 ),
5602+ AlcContriInsFamilies DECIMAL (18 , 6 ),
5603+ AlcContriVisits DECIMAL (18 , 6 ),
5604+ AlcContriAdjustedAmount DECIMAL (18 , 6 ),
5605+ UPPopulation DECIMAL (18 , 6 ),
5606+ UPNumFamilies DECIMAL (18 , 6 ),
5607+ UPInsPopulation DECIMAL (18 , 6 ),
5608+ UPInsFamilies DECIMAL (18 , 6 ),
5609+ UPVisits DECIMAL (18 , 6 ),
5610+ UPAdjustedAmount DECIMAL (18 , 6 )
5611+
5612+
5613+ );
5614+
5615+ DECLARE @ClaimValues TABLE (
5616+ HFID INT ,
5617+ ProdId INT ,
5618+ TotalAdjusted DECIMAL (18 , 6 ),
5619+ TotalClaims DECIMAL (18 , 6 )
5620+ );
5621+
5622+ INSERT INTO @ClaimValues
5623+ SELECT HFID, @ProdId ProdId, SUM (TotalAdjusted)TotalAdjusted, COUNT (DISTINCT ClaimId)TotalClaims FROM
5624+ (
5625+ SELECT HFID, SUM (PriceValuated)TotalAdjusted, ClaimId
5626+ FROM
5627+ (SELECT HFID,c .ClaimId , PriceValuated FROM tblClaim C WITH (NOLOCK )
5628+ LEFT JOIN tblClaimItems ci ON c .ClaimID = ci .ClaimID and ProdId = @ProdId AND (@WeightAdjustedAmount > 0 .0 )
5629+ WHERE CI .ValidityTo IS NULL AND C .ValidityTo IS NULL
5630+ AND C .ClaimStatus > 4
5631+ AND YEAR (C .DateProcessed ) = @Year
5632+ AND MONTH (C .DateProcessed ) = @Month
5633+ AND C .HFID in (SELECT id FROM @listOfHF)and ci .ValidityTo IS NULL
5634+ UNION ALL
5635+ SELECT HFID, c .ClaimId , PriceValuated FROM tblClaim C WITH (NOLOCK )
5636+ LEFT JOIN tblClaimServices cs ON c .ClaimID = cs .ClaimID and ProdId = @ProdId AND (@WeightAdjustedAmount > 0 .0 )
5637+ WHERE cs .ValidityTo IS NULL AND C .ValidityTo IS NULL
5638+ AND C .ClaimStatus > 4
5639+ AND YEAR (C .DateProcessed ) = @Year
5640+ AND MONTH (C .DateProcessed ) = @Month
5641+ AND C .HFID in (SELECT id FROM @listOfHF) and CS .ValidityTo IS NULL
5642+ ) claimdetails GROUP BY HFID,ClaimId
5643+ )claims GROUP by HFID
5644+
5645+ INSERT INTO @ReportData
5646+ SELECT L .RegionCode , L .RegionName , L .DistrictCode , L .DistrictName , HF .HFCode , HF .HFName , Hf .AccCode ,
5647+ HL .Name HFLevel,
5648+ SL .HFSublevelDesc HFSublevel,
5649+ PF.[TotalPopulation] TotalPopulation, PF .TotalFamilies TotalFamilies, II .TotalInsuredInsuree , IFam .TotalInsuredFamilies , CV .TotalClaims , CV .TotalAdjusted
5650+ ,(
5651+ ISNULL (ISNULL (PF.[TotalPopulation], 0 ) * (A .Allocated * (0 .01 * @ShareContribution) * (0 .01 * @WeightPopulation)) / NULLIF (SUM (PF.[TotalPopulation])OVER (),0 ),0 )
5652+ + ISNULL (ISNULL (PF .TotalFamilies , 0 ) * (A .Allocated * (0 .01 * @ShareContribution) * (0 .01 * @WeightNumberFamilies)) / NULLIF (SUM (PF.[TotalFamilies])OVER (),0 ),0 )
5653+ + ISNULL (ISNULL (II .TotalInsuredInsuree , 0 ) * (A .Allocated * (0 .01 * @ShareContribution) * (0 .01 * @WeightInsuredPopulation)) / NULLIF (SUM (II .TotalInsuredInsuree )OVER (),0 ),0 )
5654+ + ISNULL (ISNULL (IFam .TotalInsuredFamilies , 0 ) * (A .Allocated * (0 .01 * @ShareContribution) * (0 .01 * @WeightNumberInsuredFamilies)) / NULLIF (SUM (IFam .TotalInsuredFamilies )OVER (),0 ),0 )
5655+ + ISNULL (ISNULL (CV .TotalClaims , 0 ) * (A .Allocated * (0 .01 * @ShareContribution) * (0 .01 * @WeightNumberVisits)) / NULLIF (SUM (CV .TotalClaims )OVER () ,0 ),0 )
5656+ + ISNULL (ISNULL (CV .TotalAdjusted , 0 ) * (A .Allocated * (0 .01 * @ShareContribution) * (0 .01 * @WeightAdjustedAmount)) / NULLIF (SUM (CV .TotalAdjusted )OVER (),0 ),0 )
5657+
5658+ ) PaymentCathment
5659+
5660+ , A .Allocated * (0 .01 * @WeightPopulation) * (0 .01 * @ShareContribution) AlcContriPopulation
5661+ , A .Allocated * (0 .01 * @WeightNumberFamilies) * (0 .01 * @ShareContribution) AlcContriNumFamilies
5662+ , A .Allocated * (0 .01 * @WeightInsuredPopulation) * (0 .01 * @ShareContribution) AlcContriInsPopulation
5663+ , A .Allocated * (0 .01 * @WeightNumberInsuredFamilies) * (0 .01 * @ShareContribution) AlcContriInsFamilies
5664+ , A .Allocated * (0 .01 * @WeightNumberVisits) * (0 .01 * @ShareContribution) AlcContriVisits
5665+ , A .Allocated * (0 .01 * @WeightAdjustedAmount) * (0 .01 * @ShareContribution) AlcContriAdjustedAmount
5666+
5667+ , ISNULL ((A .Allocated * (0 .01 * @WeightPopulation) * (0 .01 * @ShareContribution))/ NULLIF (SUM (PF.[TotalPopulation]) OVER (),0 ),0 ) UPPopulation
5668+ , ISNULL ((A .Allocated * (0 .01 * @WeightNumberFamilies) * (0 .01 * @ShareContribution))/ NULLIF (SUM (PF .TotalFamilies ) OVER (),0 ),0 ) UPNumFamilies
5669+ , ISNULL ((A .Allocated * (0 .01 * @WeightInsuredPopulation) * (0 .01 * @ShareContribution))/ NULLIF (SUM (II .TotalInsuredInsuree ) OVER (),0 ),0 ) UPInsPopulation
5670+ , ISNULL ((A .Allocated * (0 .01 * @WeightNumberInsuredFamilies) * (0 .01 * @ShareContribution))/ NULLIF (SUM (IFam .TotalInsuredFamilies ) OVER (),0 ),0 ) UPInsFamilies
5671+ , ISNULL ((A .Allocated * (0 .01 * @WeightNumberVisits) * (0 .01 * @ShareContribution)) / NULLIF (SUM (CV .TotalClaims ) OVER (),0 ),0 ) UPVisits
5672+ , ISNULL ((A .Allocated * (0 .01 * @WeightAdjustedAmount) * (0 .01 * @ShareContribution))/ NULLIF (SUM (CV .TotalAdjusted ) OVER (),0 ),0 ) UPAdjustedAmount
5673+
5674+ FROM tblHF HF
5675+ INNER JOIN @HFLevel HL ON HL .Code = HF .HFLevel
5676+ LEFT OUTER JOIN tblHFSublevel SL ON SL .HFSublevel = HF .HFSublevel
5677+ LEFT JOIN @LocationTemp L ON L .LocationId = HF .LocationId
5678+ LEFT OUTER JOIN @TotalPopFam PF ON PF .HFID = HF .HfID
5679+ LEFT OUTER JOIN @InsuredInsuree II ON II .HFID = HF .HfID
5680+ LEFT OUTER JOIN @InsuredFamilies IFam ON IFam .HFID = HF .HfID
5681+ -- LEFT OUTER JOIN @Claims C ON C.HFID = HF.HfID
5682+ LEFT OUTER JOIN @ClaimValues CV ON CV .HFID = HF .HfID
5683+ LEFT OUTER JOIN @Allocation A ON A .ProdID = @ProdId
5684+
5685+ WHERE HF .ValidityTo IS NULL
5686+ AND (((L .RegionId = @RegionId OR @RegionId IS NULL ) AND (L .DistrictId = @DistrictId OR @DistrictId IS NULL )) OR CV .ProdID IS NOT NULL OR II .ProdId IS NOT NULL )
5687+ AND (HF .HFLevel IN (@Level1, @Level2, @Level3, @Level4) OR (@Level1 IS NULL AND @Level2 IS NULL AND @Level3 IS NULL AND @Level4 IS NULL ))
5688+ AND (
5689+ ((HF .HFLevel = @Level1 OR @Level1 IS NULL ) AND (HF .HFSublevel = @Sublevel1 OR @Sublevel1 IS NULL ))
5690+ OR ((HF .HFLevel = @Level2 ) AND (HF .HFSublevel = @Sublevel2 OR @Sublevel2 IS NULL ))
5691+ OR ((HF .HFLevel = @Level3) AND (HF .HFSublevel = @Sublevel3 OR @Sublevel3 IS NULL ))
5692+ OR ((HF .HFLevel = @Level4) AND (HF .HFSublevel = @Sublevel4 OR @Sublevel4 IS NULL ))
5693+ );
5694+
5695+ SELECT MAX (RegionCode)RegionCode,
5696+ MAX (RegionName)RegionName,
5697+ MAX (DistrictCode)DistrictCode,
5698+ MAX (DistrictName)DistrictName,
5699+ HFCode,
5700+ MAX (HFName)HFName,
5701+ MAX (AccCode)AccCode,
5702+ MAX (HFLevel)HFLevel,
5703+ MAX (HFSublevel)HFSublevel,
5704+ ISNULL (SUM ([TotalPopulation]),0 )[Population],
5705+ ISNULL (SUM (TotalFamilies),0 )TotalFamilies,
5706+ ISNULL (SUM (TotalInsuredInsuree),0 )TotalInsuredInsuree,
5707+ ISNULL (SUM (TotalInsuredFamilies),0 )TotalInsuredFamilies,
5708+ ISNULL (MAX (TotalClaims), 0 )TotalClaims,
5709+ ISNULL (SUM (AlcContriPopulation),0 )AlcContriPopulation,
5710+ ISNULL (SUM (AlcContriNumFamilies),0 )AlcContriNumFamilies,
5711+ ISNULL (SUM (AlcContriInsPopulation),0 )AlcContriInsPopulation,
5712+ ISNULL (SUM (AlcContriInsFamilies),0 )AlcContriInsFamilies,
5713+ ISNULL (SUM (AlcContriVisits),0 )AlcContriVisits,
5714+ ISNULL (SUM (AlcContriAdjustedAmount),0 )AlcContriAdjustedAmount,
5715+ ISNULL (SUM (UPPopulation),0 )UPPopulation,
5716+ ISNULL (SUM (UPNumFamilies),0 )UPNumFamilies,
5717+ ISNULL (SUM (UPInsPopulation),0 )UPInsPopulation,
5718+ ISNULL (SUM (UPInsFamilies),0 )UPInsFamilies,
5719+ ISNULL (SUM (UPVisits),0 )UPVisits,
5720+ ISNULL (SUM (UPAdjustedAmount),0 )UPAdjustedAmount,
5721+ ISNULL (SUM (PaymentCathment),0 )PaymentCathment,
5722+ ISNULL (SUM (TotalAdjusted),0 )TotalAdjusted
5723+
5724+ FROM @ReportData
5725+
5726+ GROUP BY HFCode
5727+ END
5728+ GO
0 commit comments