| [613] | 1 | EASECCAL ;ALB/LBD - Calculate LTC copayment ;27 AUG 2001
 | 
|---|
 | 2 |  ;;1.0;ENROLLMENT APPLICATION SYSTEM;**5,7,19,34,39,40**;Mar 15, 2001
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ; Input --   DFN    Patient IEN
 | 
|---|
 | 5 |  ;            MNTH   Last day of month for the LTC copay calculation
 | 
|---|
 | 6 |  ;                    in FM format (e.g. 3020131)
 | 
|---|
 | 7 |  ;            LOS    (Length of stay) The number of days in the patient's
 | 
|---|
 | 8 |  ;                    LTC episode
 | 
|---|
 | 9 |  ; Output --  COPAY  String containing copayment calculation
 | 
|---|
 | 10 |  ;                    = 0: no completed LTC copay test on file
 | 
|---|
 | 11 |  ;                    piece 1: LTC copay test status
 | 
|---|
 | 12 |  ;                               (1=Exempt; 2=Non-Exempt)
 | 
|---|
 | 13 |  ;                          2: If Exempt, Reason for Exemption
 | 
|---|
 | 14 |  ;                               (IEN to file #714.1)
 | 
|---|
 | 15 |  ;                          3: Calculated LTC copayment for IP 
 | 
|---|
 | 16 |  ;                               (1-180 days)
 | 
|---|
 | 17 |  ;                          4: Calculated LTC copayment for IP
 | 
|---|
 | 18 |  ;                               (181+ days)
 | 
|---|
 | 19 |  ;                          5: Calculated LTC copayment for OP
 | 
|---|
 | 20 |  ;
 | 
|---|
 | 21 | COPAY(DFN,MNTH,LOS) ;
 | 
|---|
 | 22 |  N COPAY,DAYS,MX,IPDR,OPDR,IPMAX,OPMAX,LST,DGMT,DGMTI,DGMTDT,DGSTA,DGEXR
 | 
|---|
 | 23 |  N ERR,X1,X2,INC,EXP,AST,ALLOW,DGSP,SRIC
 | 
|---|
 | 24 |  S COPAY=0
 | 
|---|
 | 25 |  I 'DFN!('MNTH) G Q
 | 
|---|
 | 26 |  S LOS=+$G(LOS),DAYS=$E(MNTH,6,7)
 | 
|---|
 | 27 |  ; Get maximum daily rate for LTC copayments
 | 
|---|
 | 28 |  ; DBIA #3717
 | 
|---|
 | 29 |  S MX=$$MAXRATE^IBAECU(MNTH),OPDR=$P(MX,U),IPDR=$P(MX,U,2) I 'OPDR!('IPDR) G Q
 | 
|---|
 | 30 |  ; Calculate maximum copayment for the month
 | 
|---|
 | 31 |  S OPMAX=DAYS*OPDR,IPMAX=DAYS*IPDR
 | 
|---|
 | 32 |  ; Get last completed LTC copay test
 | 
|---|
 | 33 |  S LST=$$LST^EASECU(DFN,MNTH,3) I +LST=0 G Q
 | 
|---|
 | 34 |  S DGMTI=$P(LST,U),DGMT(0)=$G(^DGMT(408.31,DGMTI,0)) I 'DGMT(0) G Q
 | 
|---|
 | 35 |  S DGMTDT=+DGMT(0),DGSTA=$P($G(^DG(408.32,+$P(DGMT(0),U,3),0)),U,1)
 | 
|---|
 | 36 |  S DGEXR=$P($G(^DGMT(408.31,DGMTI,2)),U,7)
 | 
|---|
 | 37 |  ; If LTC copay test status is neither NON-EXEMPT nor EXEMPT, quit
 | 
|---|
 | 38 |  I DGSTA'="NON-EXEMPT",DGSTA'="EXEMPT" G Q
 | 
|---|
 | 39 |  ; If LTC copay test is more than a year old and the veteran does
 | 
|---|
 | 40 |  ; not have an exemption for eligibility (Compensable SC) or LTC
 | 
|---|
 | 41 |  ; before 11/30/99, quit  (Added for LTC Phase III - EAS*1*34)
 | 
|---|
 | 42 |  ;S X1=MNTH,X2=DGMTDT D ^%DTC I X>365,"^1^4^"'[(U_DGEXR_U) G Q
 | 
|---|
 | 43 |  S COPAY=$S(DGSTA="EXEMPT":1,1:2)_U
 | 
|---|
 | 44 |  ; If test status = 'EXEMPT', get Reason for Exemption
 | 
|---|
 | 45 |  I DGSTA="EXEMPT" S COPAY=COPAY_DGEXR
 | 
|---|
 | 46 |  ; If veteran declined to give financial info, copay = max monthly copay
 | 
|---|
 | 47 |  I $P(DGMT(0),U,14) S COPAY=COPAY_U_IPMAX_U_IPMAX_U_OPMAX G Q
 | 
|---|
 | 48 |  ; Get total income, assets and expenses for veteran (and spouse)
 | 
|---|
 | 49 |  D FINTOT I $G(ERR) D  G Q
 | 
|---|
 | 50 |  .I +COPAY=1 Q
 | 
|---|
 | 51 |  .;no financial data but veteran agreed to pay copayments, copay = max
 | 
|---|
 | 52 |  .I $P(DGMT(0),U,11) S COPAY=COPAY_U_IPMAX_U_IPMAX_U_OPMAX Q
 | 
|---|
 | 53 |  .S COPAY=0
 | 
|---|
 | 54 |  ; Calculate copayments
 | 
|---|
 | 55 |  D CALC
 | 
|---|
 | 56 | Q ; Quit and return COPAY
 | 
|---|
 | 57 |  Q COPAY
 | 
|---|
 | 58 |  ;
 | 
|---|
 | 59 | FINTOT ; Get total income, assets and expenses for veteran (and spouse)
 | 
|---|
 | 60 |  N DGDC,DGDEP,DGDET,DGERR,DGIN0,DGIN1,DGIN2,DGINI,DGINT,DGINTF,DGIRI
 | 
|---|
 | 61 |  N DGNC,DGND,DGNWT,DGNWTF,DGPRI,DGVINI,DGVIR0,DGVIRI
 | 
|---|
 | 62 |  S ERR=0
 | 
|---|
 | 63 |  S DGPRI=$O(^DGPR(408.12,"C",DFN_";DPT(",0)) I 'DGPRI S ERR=1 Q
 | 
|---|
 | 64 |  D GETIENS^EASECU2(DFN,DGPRI,DGMTDT) I '$G(DGIRI),'$G(DGINI) S ERR=1 Q
 | 
|---|
 | 65 |  S DGVIRI=DGIRI,DGVINI=DGINI
 | 
|---|
 | 66 |  D DEP^EASECSU3
 | 
|---|
 | 67 |  D INC^EASECSU3
 | 
|---|
 | 68 |  I DGINT=0,DGDET=0,DGNWT=0 S ERR=1 Q
 | 
|---|
 | 69 |  ; Does spouse reside in community?
 | 
|---|
 | 70 |  S SRIC=$P(DGVIR0,U,16)
 | 
|---|
 | 71 |  ; Divide income and expense totals by 12 to get monthly amounts
 | 
|---|
 | 72 |  S INC=DGINT/12,EXP=DGDET/12,AST=DGNWT
 | 
|---|
 | 73 |  ; Calculate total monthly allowance:
 | 
|---|
 | 74 |  ; 20*number of days in month*(veteran+spouse(if married and spouse
 | 
|---|
 | 75 |  ;   resides in the community))
 | 
|---|
 | 76 |  S ALLOW=20*DAYS*(1+SRIC)
 | 
|---|
 | 77 |  Q
 | 
|---|
 | 78 |  ;
 | 
|---|
 | 79 | CALC ; Calculate copayments
 | 
|---|
 | 80 |  N CCPY,OPCPY,IPCPY1,IPCPY2,TINC,TEXP,TAST,OVR180,IPRPT,CPYFLG,EASADM
 | 
|---|
 | 81 |  ; Calculation for IP services up to 180 days and OP services:
 | 
|---|
 | 82 |  ;   Income-Allowance-Expenses
 | 
|---|
 | 83 |  S CCPY=INC-ALLOW-EXP
 | 
|---|
 | 84 |  S (OPCPY,IPCPY1)=$S(CCPY>0:(CCPY+.5)\1,1:0)
 | 
|---|
 | 85 |  ; Calculation for IP services 181+ days, add in assets
 | 
|---|
 | 86 |  S IPCPY2=0 I LOS>180 D
 | 
|---|
 | 87 |  . S TEXP=0 I DGSP,SRIC S TEXP=TEXP+EXP
 | 
|---|
 | 88 |  . S TINC=INC,TAST=AST,(OVR180,IPRPT)=1,CPYFLG=0
 | 
|---|
 | 89 |  . S EASADM=$$FMADD^XLFDT(MNTH,-LOS)
 | 
|---|
 | 90 |  . ; Get value of assets after spenddown is applied
 | 
|---|
 | 91 |  . S TAST=$$ASSET^EASECPC1
 | 
|---|
 | 92 |  . S CCPY=CCPY+TAST
 | 
|---|
 | 93 |  . ;If veteran is single or spouse does not reside in the community,
 | 
|---|
 | 94 |  . ;add expenses back in
 | 
|---|
 | 95 |  . I 'DGSP!('SRIC) S CCPY=CCPY+EXP
 | 
|---|
 | 96 |  . S IPCPY2=(CCPY+.5)\1 I IPCPY2<0 S IPCPY2=0
 | 
|---|
 | 97 |  S COPAY=COPAY_U_IPCPY1_U_IPCPY2_U_OPCPY
 | 
|---|
 | 98 |  Q
 | 
|---|