Skip to content

Commit 1ddf338

Browse files
authored
Issue 12293 Calculate Indirect Rate (#1317)
* New feature branch to update ogaSynch and remove old ETL * Update for ogasuynch for additional fields * Added Missing Table to billing xml * UPdate of Fee Rate fiels for Labfees Per Diem and Lease Fees * UPdate of Procedure Fees Rate Calc which is the last of the fee Calculations with the change * UPdate of Misc Fees Rate Calc which is the last of the fee Calculations with the change * UPdate of Misc Fees Rate Calc which is the last of the fee Calculations with the change * Update of Oga Synch woith new Table for Indirect Rate and added to Finance Menu * Update of Oga Synch woith new Table for Indirect Rate and added to Finance Menu * Changed Name of Indirect and Update Billing HTML Page * Dropped two sql Billing scripts no longer needed * Update of all Fee Related Items to use Indirect Rates * Update of Lab Fee Rates Fee Related Items to use Indirect Rates * Moved file from onprc_billing to oga fodler in queries per Marty's instructions
1 parent 0a2859f commit 1ddf338

15 files changed

Lines changed: 357 additions & 219 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
SELECT ZGMS_PRIM_ALL_V.ADFM_EMP_NUM,
2+
ZGMS_PRIM_ALL_V.ADFM_FULL_NAME,
3+
ZGMS_PRIM_ALL_V.ADFM_LAST_NAME,
4+
ZGMS_PRIM_ALL_V.ADFM_FIRST_NAME,
5+
ZGMS_PRIM_ALL_V.PI_EMP_NUM,
6+
ZGMS_PRIM_ALL_V.PI_FULL_NAME,
7+
ZGMS_PRIM_ALL_V.PI_LAST_NAME,
8+
ZGMS_PRIM_ALL_V.PI_FIRST_NAME,
9+
ZGMS_PRIM_ALL_V.PDFM_EMP_NUM,
10+
ZGMS_PRIM_ALL_V.PDFM_FULL_NAME,
11+
ZGMS_PRIM_ALL_V.PDFM_LAST_NAME,
12+
ZGMS_PRIM_ALL_V.PDFM_FIRST_NAME,
13+
ZGMS_PRIM_ALL_V.AGENCY_AWARD_NUMBER,
14+
ZGMS_PRIM_ALL_V.OGA_AWARD_NUMBER,
15+
ZGMS_PRIM_ALL_V.OGA_AWARD_TYPE,
16+
ZGMS_PRIM_ALL_V.OGA_PROJECT_NUMBER,
17+
ZGMS_PRIM_ALL_V.OGA_PROJECT_NAME,
18+
ZGMS_PRIM_ALL_V.ALIAS,
19+
ZGMS_PRIM_ALL_V.ALIAS_ENABLED_FLAG,
20+
ZGMS_PRIM_ALL_V.PROJECT_DESCRIPTION,
21+
ZGMS_PRIM_ALL_V.APPLICATION_TYPE,
22+
ZGMS_PRIM_ALL_V.APPLICATION_TYPE_DESCRIPTION,
23+
ZGMS_PRIM_ALL_V.ACTIVITY_TYPE,
24+
ZGMS_PRIM_ALL_V.ACTIVITY_TYPE_DESCRIPTION,
25+
ZGMS_PRIM_ALL_V.AWARD_NUMBER,
26+
ZGMS_PRIM_ALL_V.AWARD_SUFFIX,
27+
ZGMS_PRIM_ALL_V.ORG,
28+
ZGMS_PRIM_ALL_V.CURRENT_BUDGET_START_DATE,
29+
ZGMS_PRIM_ALL_V.CURRENT_BUDGET_END_DATE,
30+
ZGMS_PRIM_ALL_V.PROJECT_TITLE,
31+
ZGMS_PRIM_ALL_V.PPQ_CODE,
32+
ZGMS_PRIM_ALL_V.PPQ_DATE,
33+
ZGMS_PRIM_ALL_V.IACUC_NUMBER,
34+
ZGMS_PRIM_ALL_V.AWARD_STATUS,
35+
ZGMS_PRIM_ALL_V.PROJECT_STATUS,
36+
ZGMS_PRIM_ALL_V.AWARD_ID,
37+
ZGMS_PRIM_ALL_V.PROJECT_ID,
38+
ZGMS_PRIM_ALL_V.BURDEN_SCHEDULE,
39+
ZGMS_PRIM_ALL_V.BURDEN_RATE,
40+
Cast(ZGMS_PRIM_ALL_V.BURDEN_RATE as VARCHAR(20)) as faRate,
41+
ZGMS_PRIM_ALL_V.FUNDING_SOURCE_NUMBER,
42+
ZGMS_PRIM_ALL_V.FUNDING_SOURCE_NAME,
43+
ZGMS_PRIM_ALL_V.OGA_AWARD_START_DATE,
44+
ZGMS_PRIM_ALL_V.OGA_AWARD_END_DATE
45+
FROM ZGMS_PRIM_ALL_V

onprc_billing/resources/queries/onprc_billing/labworkFeeRates.sql

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@ SELECT
4040
WHEN (alias.aliasType.aliasType IS NULL) THEN null
4141

4242
--remove both subsidy and raise F&A if needed
43-
--WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) - alias.faRate)) ELSE 1 END))
44-
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN
43+
--WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) - alias.faRate)) ELSE 1 END))
44+
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN
4545
((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
4646

4747
--remove subsidy only
4848
WHEN (alias.aliasType.removeSubsidy = true AND alias.aliasType.canRaiseFA = false) THEN (cr.unitCost / (1 - COALESCE(cr.subsidy, 0)))
4949

5050
--raise F&A only
51-
--WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) - alias.faRate)) ELSE 1 END))
52-
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
51+
--WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) - alias.faRate)) ELSE 1 END))
52+
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
5353

5454
--the NIH rate
5555
ELSE cr.unitCost
@@ -74,7 +74,7 @@ SELECT
7474
WHEN (cr.unitCost IS NULL) THEN null --will be flagged for other reasons
7575
WHEN (alias.aliasType.aliasType IS NULL) THEN null --unknown alias type, will be flagged elsewhere
7676
WHEN (alias.aliasType.removeSubsidy = true AND COALESCE(cr.subsidy, 0) > 0) THEN 'Removed NIH Subsidy'
77-
WHEN (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true AND (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE))) THEN ('Reduced F&A: ' || CAST(alias.faRate as varchar(20)))
77+
WHEN (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true AND (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE))) THEN ('Reduced F&A: ' || CAST(alias.faRate as varchar(20)))
7878
ELSE null
7979
END as isNonStandardRate,
8080
CASE WHEN (alias.alias IS NOT NULL AND alias.aliasType.aliasType IS NULL) THEN ('Unknown Type: ' || alias.aliasType) ELSE null END as isUnknownAliasType,
@@ -161,6 +161,8 @@ LEFT JOIN onprc_billing_public.chargeUnitAccounts cu ON (
161161
cast(cu.startDate AS date) <= cast(p.date as date) AND
162162
cast(cu.endDate AS date) >= cast(p.date as date)
163163
)
164+
LEFT JOIN onprc_billing.ogaSynchIR ir
165+
on ir.alias = alias.alias
164166

165167
UNION ALL
166168

onprc_billing/resources/queries/onprc_billing/leaseFeeRates.sql

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -115,11 +115,11 @@ SELECT
115115
--if we dont know the aliasType, we also dont know what do to
116116
WHEN (alias.aliasType.aliasType IS NULL) THEN null
117117
--remove both subsidy and raise F&A if needed
118-
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
118+
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN ((1 + (CAST(ir.IndirectRate AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
119119
--remove subsidy only
120120
WHEN (alias.aliasType.removeSubsidy = true AND alias.aliasType.canRaiseFA = false) THEN (cr.unitCost / (1 - COALESCE(cr.subsidy, 0)))
121121
--raise F&A on ly
122-
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
122+
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN ((1 + (CAST(ir.indirectRate AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
123123
--the NIH rate
124124
ELSE cr.unitCost
125125
END AS DOUBLE) as unitCost1,
@@ -139,11 +139,11 @@ SELECT
139139
--if we dont know the aliasType, we also dont know what do to
140140
WHEN (alias.aliasType.aliasType IS NULL) THEN null
141141
--remove both subsidy and raise F&A if needed
142-
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr2.unitCost / (1 - COALESCE(cr2.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate))) ELSE 1 END))
142+
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr2.unitCost / (1 - COALESCE(cr2.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN (1 + (CAST(ir.indirectRate AS DOUBLE) / (1 + alias.faRate))) ELSE 1 END))
143143
--remove subsidy only
144144
WHEN (alias.aliasType.removeSubsidy = true AND alias.aliasType.canRaiseFA = false) THEN (cr2.unitCost / (1 - COALESCE(cr2.subsidy, 0)))
145145
--raise F&A only
146-
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr2.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate))) ELSE 1 END))
146+
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr2.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN (1 + (CAST(ir.IndirectRate AS DOUBLE) / (1 + alias.faRate))) ELSE 1 END))
147147
--the NIH rate
148148
ELSE cr2.unitCost
149149
END AS DOUBLE) as unitCost2,
@@ -163,11 +163,11 @@ SELECT
163163
--if we dont know the aliasType, we also dont know what do to
164164
WHEN (alias.aliasType.aliasType IS NULL) THEN null
165165
--remove both subsidy and raise F&A if needed
166-
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr3.unitCost / (1 - COALESCE(cr3.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / ( 1 + alias.faRate))) ELSE 1 END))
166+
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr3.unitCost / (1 - COALESCE(cr3.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN (1 + (CAST(ir.indirectRate AS DOUBLE) / ( 1 + alias.faRate))) ELSE 1 END))
167167
--remove subsidy only
168168
WHEN (alias.aliasType.removeSubsidy = true AND alias.aliasType.canRaiseFA = false) THEN (cr3.unitCost / (1 - COALESCE(cr3.subsidy, 0)))
169169
--raise F&A only
170-
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr3.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate))) ELSE 1 END))
170+
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr3.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.IndirectRate AS DOUBLE)) THEN (1 + (CAST(ir.IndirectRate AS DOUBLE) / (1 + alias.faRate))) ELSE 1 END))
171171
--the NIH rate
172172
ELSE cr3.unitCost
173173
END AS DOUBLE) as unitCost3,
@@ -189,7 +189,7 @@ SELECT
189189
WHEN (pm.multiplier IS NOT NULL) THEN null --also ignore project-level multipliers
190190
WHEN (alias.aliasType.aliasType IS NULL) THEN null --unknown alias type, will be flagged elsewhere
191191
WHEN (alias.aliasType.removeSubsidy = true AND COALESCE(cr.subsidy, 0) > 0) THEN 'Removed NIH Subsidy'
192-
WHEN (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true AND (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE))) THEN ('Reduced F&A: ' || CAST(alias.faRate as varchar(20)))
192+
WHEN (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true AND (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.IndirectRate AS DOUBLE))) THEN ('Reduced F&A: ' || CAST(alias.faRate as varchar(20)))
193193
ELSE null
194194
END as isNonStandardRate,
195195
CASE WHEN (alias.alias IS NOT NULL AND alias.aliasType.aliasType IS NULL) THEN ('Unknown Type: ' || alias.aliasType) ELSE null END as isUnknownAliasType,
@@ -300,6 +300,8 @@ LEFT JOIN onprc_billing_public.projectMultipliers pm ON (
300300
(CAST(p.date AS DATE) <= pm.enddateCoalesced OR pm.enddate IS NULL) AND
301301
alias.alias = pm.account
302302
)
303+
LEFT JOIN onprc_billing.ogaSynchIR ir
304+
on ir.alias = alias.alias
303305

304306
) t
305307
where t.id.demographics.species Not IN ('Rabbit','Guinea Pig')

onprc_billing/resources/queries/onprc_billing/miscChargesFees.sql

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ SELECT
2929
--for non-OGA aliases, we always use the NIH rate
3030
WHEN (alias.category IS NOT NULL AND alias.category != 'OGA') THEN cr.unitCost
3131
--if we dont know the aliasType, we also dont know what do to
32-
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND mc.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN
33-
((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
32+
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND mc.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.IndirectRate AS DOUBLE)) THEN
33+
((1 + (CAST(ir.indirectRate AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
3434

3535
--remove subsidy only
3636
WHEN (alias.aliasType.removeSubsidy = true AND alias.aliasType.canRaiseFA = false) THEN (cr.unitCost / (1 - COALESCE(cr.subsidy, 0)))
3737

3838
--raise F&A only
3939
--WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND mc.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN (1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) - alias.faRate)) ELSE 1 END))
40-
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND mc.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
40+
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND mc.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.IndirectRate AS DOUBLE)) THEN ((1 + (CAST(ir.inDirectRate AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
4141
--the NIH rate
4242
ELSE cr.unitCost
4343
END AS DOUBLE), 2) as unitCost,
@@ -88,4 +88,6 @@ LEFT JOIN onprc_billing_public.aliases alias ON (
8888
LEFT JOIN onprc_billing_public.projectMultipliers pm ON (
8989
CAST(mc.date AS DATE) >= CASt(pm.startDate AS DATE) AND
9090
(CAST(mc.date AS DATE) <= pm.enddateCoalesced OR pm.enddate IS NULL) AND
91-
alias.alias = pm.account)
91+
alias.alias = pm.account)
92+
LEFT JOIN onprc_billing.ogaSynchIR ir
93+
on ir.alias = alias.alias

onprc_billing/resources/queries/onprc_billing/miscChargesWithRates.sql

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ SELECT
3838
--if we dont know the aliasType, we also dont know what do to
3939
WHEN (alias.aliasType.aliasType IS NULL) THEN null
4040
--remove both subsidy and raise F&A if needed
41-
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
41+
WHEN (alias.aliasType.removeSubsidy = true AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN ((cr.unitCost / (1 - COALESCE(cr.subsidy, 0))) * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN ((1 + (CAST(ir.indirectRate AS DOUBLE) / (1 + alias.faRate)))) ELSE 1 END))
4242
--remove subsidy only
4343
WHEN (alias.aliasType.removeSubsidy = true AND alias.aliasType.canRaiseFA = false) THEN (cr.unitCost / (1 - COALESCE(cr.subsidy, 0)))
4444
--raise F&A on ly
45-
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)) THEN ((1 + (CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
45+
WHEN (alias.aliasType.removeSubsidy = false AND (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true)) THEN (cr.unitCost * (CASE WHEN (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE)) THEN ((1 + (CAST(ir.indirectRate AS DOUBLE)))/(1+ alias.faRate)) ELSE 1 END))
4646
--the NIH rate
4747
ELSE cr.unitCost
4848
END AS DOUBLE), 2) as unitCost,
@@ -77,7 +77,7 @@ SELECT
7777
WHEN (cr.unitCost IS NULL) THEN null --will be flagged for other reasons
7878
WHEN (alias.aliasType.aliasType IS NULL) THEN null --unknown alias type, will be flagged elsewhere
7979
WHEN (alias.aliasType.removeSubsidy = true AND COALESCE(cr.subsidy, 0) > 0) THEN 'Removed NIH Subsidy'
80-
WHEN (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true AND (alias.faRate IS NOT NULL AND alias.faRate < CAST(javaConstant('org.labkey.onprc_ehr.ONPRC_EHRManager.BASE_SUBSIDY') AS DOUBLE))) THEN ('Reduced F&A: ' || CAST(alias.faRate as varchar(20)))
80+
WHEN (alias.aliasType.canRaiseFA = true AND p.chargeId.canRaiseFA = true AND (alias.faRate IS NOT NULL AND alias.faRate < CAST(ir.indirectRate AS DOUBLE))) THEN ('Reduced F&A: ' || CAST(alias.faRate as varchar(20)))
8181
ELSE null
8282
END as isNonStandardRate,
8383
CASE WHEN (alias.alias IS NOT NULL AND alias.aliasType.aliasType IS NULL) THEN ('Unknown Type: ' || alias.aliasType) ELSE null END as isUnknownAliasType,
@@ -172,4 +172,6 @@ LEFT JOIN onprc_billing_public.chargeUnitAccounts cu ON (
172172
p.chargetype = cu.chargetype AND
173173
cast(cu.startDate AS date) <= cast(p.date as date) AND
174174
cast(cu.endDate AS date) >= cast(p.date as date)
175-
)
175+
)
176+
LEFT JOIN onprc_billing.ogaSynchIR ir
177+
on ir.alias = alias.alias

0 commit comments

Comments
 (0)