| [613] | 1 | EASECMT ;ALB/LBD - Means Test for LTC Co-Pay exemption ; 27 DEC 2001 | 
|---|
|  | 2 | ;;1.0;ENROLLMENT APPLICATION SYSTEM;**7,16,18**;Mar 15, 2001 | 
|---|
|  | 3 | ; | 
|---|
|  | 4 | EN ; This is the entry point for the routine that will find the | 
|---|
|  | 5 | ; financial test for a veteran that can be used to check if | 
|---|
|  | 6 | ; veteran's income is below the threshold and exempt from LTC | 
|---|
|  | 7 | ; co-payments.  If a financial test is not on file for the veteran | 
|---|
|  | 8 | ; it can be added through this process. | 
|---|
|  | 9 | ;  Input --      DFN = Patient IEN | 
|---|
|  | 10 | ;  Output --     DGEXMPT = 1 (exempt from LTC co-payments) | 
|---|
|  | 11 | ;                        = 0 or "" (not exempt from LTC co-payments) | 
|---|
|  | 12 | ;                DGOUT = 1 (user wants to exit from the process) | 
|---|
|  | 13 | N DGMTI,DGMTDT,DGMTYPT,DGMTACT,DGL,DGCS,DGMSGF,DGREQF,DGDOM,DGDOM1,Y | 
|---|
|  | 14 | ; Does veteran have current LTC co-pay exemption test (type 4)? | 
|---|
|  | 15 | S Y=$$GETLTC4(DFN) I Y S DGEXMPT=$S($P(Y,U,3)="EXEMPT":1,1:0) Q | 
|---|
|  | 16 | ; Does veteran have current means test? | 
|---|
|  | 17 | S DGL=$$LST^DGMTU(DFN),DGMTI=+DGL,DGMTDT=$P(DGL,U,2),DGCS=$P(DGL,U,4) | 
|---|
|  | 18 | ; If last means test has status of Cat C or Pend. Adj. and vet agreed | 
|---|
|  | 19 | ; to pay MT copay, new means test is not required | 
|---|
|  | 20 | I ((DGCS="C")!(DGCS="P")),$P($G(^DGMT(408.31,DGMTI,0)),U,11)=1,DGMTDT>2991005 S DGEXMPT=0 D LTC4(DGMTI,DGEXMPT) Q | 
|---|
|  | 21 | ; If means test is required or more than a year old, do new means test | 
|---|
|  | 22 | I (DGCS="R")!($$OLD^DGMTU4(DGMTDT)) D  Q:$G(DGOUT)!(DGMTYPT=4) | 
|---|
|  | 23 | .S (DGADDF,DGMSGF)=1 D ^DGMTR S DGMTYPT=$S(DGREQF:1,1:4) | 
|---|
|  | 24 | .I '$$ASK(DGMTYPT) S DGOUT=1 Q | 
|---|
|  | 25 | .S DGMTACT="ADD" I DGMTYPT=1,$E(DGMTDT,1,3)=$E(DT,1,3) S DGMTACT="EDT" | 
|---|
|  | 26 | .I '$$MT(DFN,DGMTYPT,DGMTACT,.DGMTI) S DGOUT=1 Q | 
|---|
|  | 27 | .I DGMTYPT=4 D | 
|---|
|  | 28 | ..D DOM^DGMTR I '$G(DGDOM1) D COPYRX^DGMTR1(DFN,DGMTI) | 
|---|
|  | 29 | ..S Y=$$GETCODE^DGMTH($P($G(^DGMT(408.31,DGMTI,0)),U,3)),DGEXMPT=$S(Y=0:1,1:0) | 
|---|
|  | 30 | ; If no means test or means test is no longer required, check if | 
|---|
|  | 31 | ; there is an RX co-pay test, otherwise do new LTC co-pay exemption test | 
|---|
|  | 32 | I DGCS=""!(DGCS="N") D  Q:$G(DGOUT)!($G(DGMTYPT)=4) | 
|---|
|  | 33 | .S DGL=$$LST^DGMTU(DFN,DT,2),DGMTI=+DGL,DGMTDT=$P(DGL,U,2),DGCS=$P(DGL,U,4) | 
|---|
|  | 34 | .I DGMTI,'$$OLD^DGMTU4(DGMTDT),("^I^L^")'[("^"_DGCS_"^") Q | 
|---|
|  | 35 | .S DGMTYPT=4 | 
|---|
|  | 36 | .I '$$ASK(DGMTYPT) S DGOUT=1 Q | 
|---|
|  | 37 | .I '$$MT(DFN,DGMTYPT,"ADD",.DGMTI) S DGOUT=1 Q | 
|---|
|  | 38 | .D DOM^DGMTR I '$G(DGDOM1) D COPYRX^DGMTR1(DFN,DGMTI) | 
|---|
|  | 39 | .S Y=$$GETCODE^DGMTH($P($G(^DGMT(408.31,DGMTI,0)),U,3)) | 
|---|
|  | 40 | .S DGEXMPT=$S(Y=0:1,1:0) | 
|---|
|  | 41 | ; Check if veteran's income is below the pension threshold | 
|---|
|  | 42 | S DGEXMPT=$$THRES(DFN,DGMTDT) | 
|---|
|  | 43 | I DGEXMPT<0 W !!,"The income threshold check could not be completed due to an error." S DGOUT=1 Q | 
|---|
|  | 44 | ; Create LTC co-pay exemption test (type 4) by copying MT | 
|---|
|  | 45 | D LTC4(DGMTI,DGEXMPT) | 
|---|
|  | 46 | Q | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | THRES(DFN,DGMTDT) ; Is veteran's income below the pension threshold | 
|---|
|  | 49 | ; Input   -  DFN = Patient IEN | 
|---|
|  | 50 | ;            DGMTDT = Test date | 
|---|
|  | 51 | ; Output  -   = 1 (Below the threshold) | 
|---|
|  | 52 | ;             = 0 (Above the threshold) | 
|---|
|  | 53 | ;             = -1(Error) | 
|---|
|  | 54 | N DGDC,DGDEP,DGDET,DGERR,DGIN0,DGIN1,DGIN2,DGINI,DGINT,DGINTF,DGIRI | 
|---|
|  | 55 | N DGNC,DGND,DGNWT,DGNWTF,DGPRI,DGSP,DGVINI,DGVIR0,DGVIRI,DGTHRES | 
|---|
|  | 56 | N DGLY,DGMTPAR | 
|---|
|  | 57 | ; Get current single veteran pension threshold amount | 
|---|
|  | 58 | S DGTHRES=$$THRES^IBARXEU1(DGMTDT,1,0) I '+DGTHRES Q -1 | 
|---|
|  | 59 | ; Calculate veteran's income level and check against the threshold | 
|---|
|  | 60 | S DGPRI=$O(^DGPR(408.12,"C",DFN_";DPT(",0)) I 'DGPRI Q -1 | 
|---|
|  | 61 | D GETIENS^DGMTU2(DFN,DGPRI,DGMTDT) I '$G(DGIRI),'$G(DGINI) Q -1 | 
|---|
|  | 62 | S DGVIRI=DGIRI,DGVINI=DGINI | 
|---|
|  | 63 | S DGLY=$$LYR^DGMTSCU1(DGMTDT) D PAR^DGMTSCU | 
|---|
|  | 64 | D DEP^DGMTSCU2,INC^DGMTSCU3 I '$D(DGINT) Q -1 | 
|---|
|  | 65 | ; If vet declined to provide financial info, return 0 (above threshold) | 
|---|
|  | 66 | I $P($G(^DGMT(408.31,+$G(DGMTI),0)),U,14) Q 0 | 
|---|
|  | 67 | I (DGINT-DGDET)'>+DGTHRES Q 1 | 
|---|
|  | 68 | Q 0 | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | MT(DFN,TYPE,ACT,DGMTI) ; Complete a means test or LTC co-pay exemption test | 
|---|
|  | 71 | ; Input    -  DFN = Patient IEN | 
|---|
|  | 72 | ;             DGMTYPT = Type of test (1=MT; 4=LTC4) | 
|---|
|  | 73 | ;             ACT = Type of action (ADD or EDT) | 
|---|
|  | 74 | ;             DGMTI = If EDT action, IEN of test to be edited | 
|---|
|  | 75 | ; Output   -  EASECMT = 1 (MT completed) | 
|---|
|  | 76 | ;                     = 0 (MT not completed) | 
|---|
|  | 77 | ;             DGMTI = IEN of new test | 
|---|
|  | 78 | N DGMTYPT,DGMTACT,DGMTROU,DGMT0,DGSTA,EASECMT | 
|---|
|  | 79 | S EASECMT=0 | 
|---|
|  | 80 | I $$LOCK^DGMTUTL(DFN) E  Q EASECMT | 
|---|
|  | 81 | S DGMTYPT=TYPE,DGMTACT=ACT | 
|---|
|  | 82 | S DGMTDT=$S(DGMTACT="EDT":+$G(^DGMT(408.31,DGMTI,0)),1:DT) G MT1:'DGMTDT | 
|---|
|  | 83 | I DGMTACT="ADD" D ADD^DGMTA G MT1:'$G(DGMTI) | 
|---|
|  | 84 | S DGMTROU="MT1^EASECMT" | 
|---|
|  | 85 | G EN^DGMTSC | 
|---|
|  | 86 | MT1 I $G(DGMTI) D | 
|---|
|  | 87 | .S DGMT0=$G(^DGMT(408.31,DGMTI,0)),DGSTA=$$GETCODE^DGMTH($P(DGMT0,U,3)) | 
|---|
|  | 88 | .I DGSTA'="","ACP01"[DGSTA,$P(DGMT0,U,7)]"" S EASECMT=1 | 
|---|
|  | 89 | .I 'EASECMT,TYPE=4 D DEL  ;Delete incomplete LTC copay exemption test | 
|---|
|  | 90 | D UNLOCK^DGMTUTL(DFN) | 
|---|
|  | 91 | Q +$G(EASECMT) | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | LTC4(DGMT,DGEXMPT) ; Create or update LTC copay exemption test (type 4) by copying | 
|---|
|  | 94 | ; means test | 
|---|
|  | 95 | ; Input   -   DGMT = Annual Means Test IEN of test to be copied | 
|---|
|  | 96 | ;         -   DGEXMPT = LTC copayments exemption status (optional) | 
|---|
|  | 97 | Q:'DGMT | 
|---|
|  | 98 | N DGMT0,DGMT2,DA,DIC,DIK,DLAYGO,X,DFN,DGMTI | 
|---|
|  | 99 | N DGMTA,DGMTP,DGMTACT,DGMTINF,DGMTYPT | 
|---|
|  | 100 | ; Quit if this is a LTC copay exemption test (type 4) | 
|---|
|  | 101 | S DGMT0=$G(^DGMT(408.31,DGMT,0)) I $P(DGMT0,U,19)=4 Q | 
|---|
|  | 102 | S DGMT2=$G(^DGMT(408.31,DGMT,2)) | 
|---|
|  | 103 | ; Add a new LTC 4 test or edit an existing LTC 4 test? | 
|---|
|  | 104 | S DGMTI=$O(^DGMT(408.31,"AT",DGMT,0)) | 
|---|
|  | 105 | S DGMTACT=$S(DGMTI:"EDT",1:"ADD") | 
|---|
|  | 106 | S DGMTP="" I DGMTACT="EDT" S DGMTP=$G(^DGMT(408.31,DGMTI,0)) | 
|---|
|  | 107 | ; Add new entry to Annual Means Test file (#408.31) for LTC 4 test | 
|---|
|  | 108 | I DGMTACT="ADD" D  Q:DGMTI'>0 | 
|---|
|  | 109 | .S X=+DGMT0,(DIC,DIK)="^DGMT(408.31,",DIC(0)="L",DLAYGO=408.31 | 
|---|
|  | 110 | .D FILE^DICN S DGMTI=+Y | 
|---|
|  | 111 | S DFN=$P(DGMT0,U,2) | 
|---|
|  | 112 | F I=.01,.02,.04,.05,.06,.11,.14,.15,.18,.23 S DATA(I)=$P(DGMT0,U,(I/.01)) | 
|---|
|  | 113 | I '$D(DGEXMPT) S DGEXMPT=$$THRES(DFN,$P(DGMT0,U,1)) | 
|---|
|  | 114 | S DATA(.03)=$S(DGEXMPT:15,1:14),DATA(.07)=DT | 
|---|
|  | 115 | S DATA(.019)=4,DATA(2.02)=$P(DGMT2,U,2),DATA(2.08)=DGMT | 
|---|
|  | 116 | S DATA(2.05)=$P(DGMT2,U,5) | 
|---|
|  | 117 | I $$UPD^DGENDBS(408.31,DGMTI,.DATA,.ERROR) | 
|---|
|  | 118 | K DATA,ERROR | 
|---|
|  | 119 | ; Update the LTC copay test (type 3), if status changed | 
|---|
|  | 120 | I DGMTACT="EDT" D UPLTC3(DGMTI) | 
|---|
|  | 121 | ; Update Audit file and IVM Patient file | 
|---|
|  | 122 | S DGMTYPT=4,DGMTINF=1 D AFTER^DGMTEVT | 
|---|
|  | 123 | D EN^DGMTAUD | 
|---|
|  | 124 | D EN^IVMPMTE | 
|---|
|  | 125 | Q | 
|---|
|  | 126 | ; | 
|---|
|  | 127 | ASK(TYPE) ; Does user want to perform MT/LTC4 test now? | 
|---|
|  | 128 | ; Input   -   TYPE = Type of test, 1: MT; 4: LTC Copay Exemption | 
|---|
|  | 129 | ; Output  -   Y = 1 (YES) | 
|---|
|  | 130 | ;               = 0 (NO) | 
|---|
|  | 131 | N DIR,TST | 
|---|
|  | 132 | S TST=$S(TYPE=1:"Means Test",1:"LTC Copay Exemption Test") | 
|---|
|  | 133 | W !!,"The previous year's financial information is not on file for this veteran.",!,"A ",TST," is required." | 
|---|
|  | 134 | S DIR("A")="Do you wish to complete the "_TST_" at this time" | 
|---|
|  | 135 | S DIR("B")="NO",DIR(0)="Y" | 
|---|
|  | 136 | W ! D ^DIR | 
|---|
|  | 137 | Q +(Y) | 
|---|
|  | 138 | ; | 
|---|
|  | 139 | GETLTC4(DFN,DGMTDT) ; Return last LTC co-pay exemption test (type 4), | 
|---|
|  | 140 | ; if less than a year old | 
|---|
|  | 141 | ; Input   -   DFN = Patient IEN | 
|---|
|  | 142 | ;             DGMTDT (optional) = Date of test | 
|---|
|  | 143 | ; Output  -   Y = Annual Means Test IEN^Date of Test^Status Name^ | 
|---|
|  | 144 | ;                    Status Code^Source of Test | 
|---|
|  | 145 | ;               = "" (no current LTC co-pay exemption test) | 
|---|
|  | 146 | N Y | 
|---|
|  | 147 | S Y="" Q:'$G(DFN) Y I '$G(DGMTDT) S DGMTDT=DT | 
|---|
|  | 148 | S Y=$$LST^DGMTU(DFN,DGMTDT,4) I '(+Y) Q Y | 
|---|
|  | 149 | I $$OLD^DGMTU4($P(Y,U,2)) S Y="" | 
|---|
|  | 150 | Q Y | 
|---|
|  | 151 | ; | 
|---|
|  | 152 | DEL ;Delete incomplete LTC Copay Exemption test (type 4) | 
|---|
|  | 153 | ; Input   -- DGMTI  LTC Copay Exemption test IEN | 
|---|
|  | 154 | N DA,DIK,DIE,DR,V | 
|---|
|  | 155 | Q:'$G(DGMTI)  Q:$P($G(^DGMT(408.31,DGMTI,0)),U,19)'=4 | 
|---|
|  | 156 | ; Delete pointer in Income Relation file (#408.22) | 
|---|
|  | 157 | I $D(^DGMT(408.22,"AMT",DGMTI)) D | 
|---|
|  | 158 | .S DIE="^DGMT(408.22,",DR="31///@" | 
|---|
|  | 159 | .S V=$O(^DGMT(408.22,"AMT",DGMTI,0)) Q:'V | 
|---|
|  | 160 | .S IR=0 F  S IR=$O(^DGMT(408.22,"AMT",DGMTI,V,IR)) Q:'IR  S DA=$O(^(IR,0)) I DA D ^DIE | 
|---|
|  | 161 | ; Delete LTC Copay Exemption test from Annual Means Test file (#408.31) | 
|---|
|  | 162 | S DA=DGMTI,DIK="^DGMT(408.31," | 
|---|
|  | 163 | D ^DIK | 
|---|
|  | 164 | Q | 
|---|
|  | 165 | ; | 
|---|
|  | 166 | UPLTC3(DGMT4) ;If the status of a LTC Copay Exemption test (type 4) changes, | 
|---|
|  | 167 | ;update the status of the LTC Copay test (type 3), if necessary | 
|---|
|  | 168 | ;  Input   -- DGMT4  LTC Copay Exemption test IEN | 
|---|
|  | 169 | N DGMT3,DGMTS4,DGMTS3,DGS,DATA,ERROR | 
|---|
|  | 170 | Q:'DGMT4 | 
|---|
|  | 171 | S DGMT3=$O(^DGMT(408.31,"AT",DGMT4,0)) Q:$G(^DGMT(408.31,+DGMT3,0))="" | 
|---|
|  | 172 | ; Get test status | 
|---|
|  | 173 | S DGMTS4=$$GETNAME^DGMTH($P(^DGMT(408.31,DGMT4,0),U,3)) | 
|---|
|  | 174 | S DGMTS3=$$GETNAME^DGMTH($P(^DGMT(408.31,DGMT3,0),U,3)) | 
|---|
|  | 175 | ; If test status is the same quit | 
|---|
|  | 176 | I DGMTS4=DGMTS3 Q | 
|---|
|  | 177 | ; If LTC copay test (type 3) is Exempt and the Reason for Exemption is | 
|---|
|  | 178 | ; anything other than 2 (Income Last Year Below Threshold), quit | 
|---|
|  | 179 | I DGMTS3="EXEMPT",$P($G(^DGMT(408.31,DGMT3,2)),U,7)'=2 Q | 
|---|
|  | 180 | ; Get IEN of Means Test Status and update LTC copay test | 
|---|
|  | 181 | S DGS="" F  S DGS=$O(^DG(408.32,"B",DGMTS4,DGS)) Q:'DGS  I $P(^DG(408.32,DGS,0),U,19)=3 Q | 
|---|
|  | 182 | S DATA(.03)=DGS,DATA(2.07)=$S(DGMTS4="EXEMPT":2,1:"@") | 
|---|
|  | 183 | I $$UPD^DGENDBS(408.31,DGMT3,.DATA,.ERROR) | 
|---|
|  | 184 | Q | 
|---|