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