[613] | 1 | IBAMTED1 ;ALB/AAS - MEANS TEST EVENT DRIVER - EXEMPTION PROCESSING ; 18-DEC-92
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**15,112,153**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | EN N IBAD,IBADDE,IBADD,IBDT,IBEXREA,IBAUTO,IBAX,IBAX1,IBOLDAUT,IBWHER,IBEXERR,IBJOB,IBON
|
---|
| 6 | N IBAFY,IBATYP,IBBDT,IBCANDT,IBCHRG,IBCODA,IBCODP,IBCRES,IBDEPEN,IBFAC,IBIL,IBL,IBAST,IBLDT,IBN,IBND,IBNN,IBNOW,IBPARNT,IBPARNT1,IBSEQNO,IBSITE,IBUNIT
|
---|
| 7 | N DA,DR,DIC,DIE,I,J,X,Y,X1
|
---|
| 8 | ;
|
---|
| 9 | S IBON=$$ON^IBARXEU0 I IBON<1 G ENQ
|
---|
| 10 | S IBJOB=12,IBWHER=13
|
---|
| 11 | ;
|
---|
| 12 | ; -- quit if nothing different (except completion date)
|
---|
| 13 | Q:'$D(DGMTA)!('$D(DGMTP))
|
---|
| 14 | I $P(DGMTA,"^",1,5)=$P(DGMTP,"^",1,5),$P(DGMTA,"^",10,20)=$P(DGMTP,"^",10,20) Q
|
---|
| 15 | I DGMTA]"",DGMTP]"",DGMTACT="DEL" Q ; IVM 'delete' transmission
|
---|
| 16 | ;
|
---|
| 17 | ; -- quit if invoked from ib=>mt=>ib
|
---|
| 18 | Q:$D(IBEVT)
|
---|
| 19 | ;
|
---|
| 20 | ; -- quit if before start date
|
---|
| 21 | I +DGMTA G ENQ:+$$PLUS^IBARXEU0(+DGMTA)<$$STDATE^IBARXEU
|
---|
| 22 | I +DGMTP G ENQ:+$$PLUS^IBARXEU0(+DGMTP)<$$STDATE^IBARXEU
|
---|
| 23 | ;
|
---|
| 24 | ;
|
---|
| 25 | I '$D(ZTQUEUED),$D(IBTALK) W !,"Determining Medication Co-Payment Exemption"
|
---|
| 26 | ;
|
---|
| 27 | ; -- if no patient add patient
|
---|
| 28 | I '+$G(^IBA(354,DFN,0)) D ADDP^IBAUTL6 I $G(IBEXERR) G ENQ
|
---|
| 29 | ;
|
---|
| 30 | D AUTO I IBAUTO'="" G ENQ
|
---|
| 31 | ;
|
---|
| 32 | ; -- not auto exempt any more see if is more current auto status
|
---|
| 33 | S X=$$LSTAC^IBARXEU0(DFN) I $L(+X)=2,$P(X,"^",2)>+DGMTA S IBOLDAUT=$P(X,"^",2)
|
---|
| 34 | ; -- if mean test is required or no longer required
|
---|
| 35 | ; or copay test is incomplete or no longer applicable
|
---|
| 36 | ; add exemption of no income data
|
---|
| 37 | S X=$P(DGMTA,"^",3) I X=1!(X=3)!(X=10)!(X=9)!($P(DGMTA,"^",14)) D AEX G ENQ
|
---|
| 38 | ;
|
---|
| 39 | I "^ADD^DEL^EDT^ADJ^STA^CAT^COM^UPL^DUP^"[DGMTACT D @DGMTACT
|
---|
| 40 | ;
|
---|
| 41 | ENQ ; -- exit copay exemption creation
|
---|
| 42 | I $G(IBEXERR) D ^IBAERR
|
---|
| 43 | I $D(IBADDE),$D(IBTALK) W !!,"Medication Copayment Exemption Status Updated: ",$P(^IBE(354.2,+IBADDE,0),"^")," ",$$DAT1^IBOUTL($P(IBADDE,"^",2))
|
---|
| 44 | Q
|
---|
| 45 | ;
|
---|
| 46 | ADD ; -- adding a new test
|
---|
| 47 | I DGMTACT="ADD" D AEX
|
---|
| 48 | ;
|
---|
| 49 | ADDQ Q
|
---|
| 50 | ;
|
---|
| 51 | AEX ; -- add exemption logic
|
---|
| 52 | ; DO NOT USER FOR AUTOMATICS
|
---|
| 53 | ;
|
---|
| 54 | S IBEXREA=""
|
---|
| 55 | ;
|
---|
| 56 | ; -- if means test required, no longer required,
|
---|
| 57 | ; or copay test incomplete or no longer applicable
|
---|
| 58 | ; set up no income data exemption if not automatic.
|
---|
| 59 | ;
|
---|
| 60 | S X=$P(DGMTA,"^",3) I X=1!(X=3)!(X=10)!(X=9)!($P(DGMTA,"^",14)) S IBEXREA=$O(^IBE(354.2,"ACODE",$S($P(DGMTA,"^",14):110,1:210),0))
|
---|
| 61 | ;
|
---|
| 62 | ;
|
---|
| 63 | I $$NETW^IBARXEU1,'IBEXREA S IBEXREA=+$$MTCOMP^IBARXEU5($$INCDT^IBARXEU1(DGMTA),DGMTA)
|
---|
| 64 | I '$$NETW^IBARXEU1,'IBEXREA S IBEXREA=+$P($$INCDT^IBARXEU1(DGMTA),"^",3)
|
---|
| 65 | ;
|
---|
| 66 | ; -- make sure more recent exemption than current test date is inactivetd
|
---|
| 67 | D MOSTR^IBARXEU5(+DGMTA,+IBEXREA)
|
---|
| 68 | D ADDEX^IBAUTL6(+IBEXREA,+DGMTA,1,1,$G(IBOLDAUT))
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | UPL ; -- uploading an IVM-verified means test
|
---|
| 72 | DUP ; -- deleting an IVM-verified means test
|
---|
| 73 | EDT ; -- editing an old means test
|
---|
| 74 | ; if data different attempt to add new test
|
---|
| 75 | I DGMTA=DGMTP G EDITQ
|
---|
| 76 | D AEX
|
---|
| 77 | EDITQ Q
|
---|
| 78 | ;
|
---|
| 79 | DEL ; -- means test deleted
|
---|
| 80 | ; find exemption for date and inactivate
|
---|
| 81 | ; update current exemption status
|
---|
| 82 | ;
|
---|
| 83 | N IBFORCE
|
---|
| 84 | Q:'$D(^IBA(354.1,"AIVDT",1,DFN,-DGMTP))
|
---|
| 85 | S IBFORCE=+DGMTP ; force inactivate entries for deleted date
|
---|
| 86 | ;
|
---|
| 87 | S IBEXREA=$$STATUS^IBARXEU1(DFN,+DGMTP),IBSTAT=$P($G(^IBE(354.2,+IBEXREA,0)),"^",4)
|
---|
| 88 | ;
|
---|
| 89 | ; -- cancel prior exemption with a no data exemption if last date older than 1 year
|
---|
| 90 | I $$PLUS^IBARXEU0($P(IBEXREA,"^",2))<DT D ADDEX^IBAUTL6(+$O(^IBE(354.2,"ACODE",210,0)),+DGMTP) G DELQ
|
---|
| 91 | ;
|
---|
| 92 | ; -- add correct exemption and update current status
|
---|
| 93 | D ADDEX^IBAUTL6(+IBEXREA,+$P(IBEXREA,"^",2))
|
---|
| 94 | DELQ Q
|
---|
| 95 | ;
|
---|
| 96 | COM ; -- complete a required means test
|
---|
| 97 | CAT ; -- category change
|
---|
| 98 | STA ; -- status change
|
---|
| 99 | ADJ ; -- means test adjudication
|
---|
| 100 | ;
|
---|
| 101 | S IBAX1=$$CODE(DGMTP),IBAX=$$CODE(DGMTA)
|
---|
| 102 | ;
|
---|
| 103 | I $$NETW^IBARXEU1,IBAX1="P",IBAX'="P" D G ADJQ ;treat as an adjudication
|
---|
| 104 | .I $P(DGMTA,"^",19)=1 S IBEXREA=$S(IBAX="C":140,IBAX="A":150,1:"") ; means test codes
|
---|
| 105 | .I $P(DGMTA,"^",19)=2 S IBEXREA=$S(IBAX="N":140,IBAX="E":150,1:"") ; copay exemption test
|
---|
| 106 | .S IBEXREA=$O(^IBE(354.2,"ACODE",+IBEXREA,0))
|
---|
| 107 | .Q:'$G(IBEXREA)
|
---|
| 108 | .D ADDEX^IBAUTL6(IBEXREA,+DGMTA,1,1)
|
---|
| 109 | .Q
|
---|
| 110 | ;
|
---|
| 111 | ;I $P(DGMTA,"^",19)=1,IBAX1="C",IBAX="A" D ADDEX^IBAUTL6($O(^IBE(354.2,"ACODE",2010,0)),+DGMTA) G ADJQ ;is a means test hardship
|
---|
| 112 | ;
|
---|
| 113 | I $P(DGMTA,"^",19)=2,IBAX1="N",IBAX="E" D ADDEX^IBAUTL6($O(^IBE(354.2,"ACODE",2010,0)),+DGMTA) G ADJQ ;is income test hardship
|
---|
| 114 | ;
|
---|
| 115 | D AEX
|
---|
| 116 | ;
|
---|
| 117 | ADJQ Q
|
---|
| 118 | ;
|
---|
| 119 | CODE(TEST) ; -- return means test status
|
---|
| 120 | I '$G(TEST) S TEST=""
|
---|
| 121 | Q $P($G(^DG(408.32,+$P(TEST,"^",3),0)),"^",2)
|
---|
| 122 | ;
|
---|
| 123 | AUTO ; -- if auto status patient
|
---|
| 124 | ; add auto exemption if needed
|
---|
| 125 | S IBDT=$S(+DGMTA:+DGMTA,+DGMTP:+DGMTP,1:"")
|
---|
| 126 | S IBAUTO=$$AUTOST^IBARXEU1(DFN,IBDT) I IBAUTO'="" D G AUTOQ
|
---|
| 127 | .S X=$$RXST^IBARXEU(DFN,IBDT)
|
---|
| 128 | .I X=""!($$PLUS^IBARXEU0($P(X,"^",5))<DT) S IBAD=1 D ADDEX^IBAUTL6(+IBAUTO,DT) Q ; add exemption if none or old
|
---|
| 129 | .I $P(X,"^",3)'=$P($G(^IBE(354.2,+IBAUTO,0)),"^",5) S IBAD=1 D ADDEX^IBAUTL6(+IBAUTO,IBDT) Q ; if computes different add new exemption
|
---|
| 130 | ;
|
---|
| 131 | AUTOQ Q
|
---|