[613] | 1 | IBARXEU5 ;AAS/ALB - RX EXEMPTION UTILITY ROUTINE (CONT.) ; 2-NOV-92
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**20,112,153**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | DIFF ; -- supported call for mas
|
---|
| 6 | ; -- compare current exemption reason and date with what currently
|
---|
| 7 | ; computes from the patient record. Automatically update if needed.
|
---|
| 8 | ; input: dfn = patient to update
|
---|
| 9 | ; Ibdt = date of change (optional, default is dt)
|
---|
| 10 | ; output: none
|
---|
| 11 | ;
|
---|
| 12 | N I,J,X,Y,IBADDE,IBEXDA,IBMESS,IBDT,IBX,IBEXREAN,IBEXREAO,IBFORCE,IBOLDAUT,IBJOB,IBWHER
|
---|
| 13 | S IBJOB=16,IBWHER=14
|
---|
| 14 | G:'$G(DFN) DIFFQ
|
---|
| 15 | I $G(IBDT)'?7N S IBDT=DT
|
---|
| 16 | ;
|
---|
| 17 | ; -- if not already in file, wait until an rx is issued
|
---|
| 18 | I '$G(^IBA(354,DFN,0)) G DIFFQ
|
---|
| 19 | ;
|
---|
| 20 | ; -- compute old exemption reason, exemption date
|
---|
| 21 | S IBX=$G(^IBA(354,DFN,0)),IBEXREAO=$P(IBX,"^",5)_"^"_$P(IBX,"^",3)
|
---|
| 22 | I $P($G(^IBE(354.2,+IBEXREAO,0)),"^",5)=2010 G DIFFQ ; is hardship don't update
|
---|
| 23 | ; -- compute new exemption reason
|
---|
| 24 | S IBEXREAN=$$STATUS^IBARXEU1(DFN,IBDT)
|
---|
| 25 | ;
|
---|
| 26 | ; -- quit if not current exemption
|
---|
| 27 | I $$PLUS^IBARXEU0($P(IBEXREAN,"^",2))<DT G DIFFQ
|
---|
| 28 | ;
|
---|
| 29 | ; -- quit if same exemption reason
|
---|
| 30 | I +IBEXREAN=+IBEXREAO G DIFFQ
|
---|
| 31 | ;
|
---|
| 32 | ; -- not same so update
|
---|
| 33 | D UP1^IBARXEPV
|
---|
| 34 | ;I $L($P($G(^IBE(354.2,+IBEXREAN,0)),"^",5))>2 D OLDAUT^IBARXEX1(IBEXREAN)
|
---|
| 35 | ;S IBFORCE=$P(IBEXREAN,"^",2)
|
---|
| 36 | ;D MOSTR($P(IBEXREAN,"^",2),+IBEXREAN)
|
---|
| 37 | ;D ADDEX^IBAUTL6(+IBEXREAN,$P(IBEXREAN,"^",2),1,1,IBOLDAUT)
|
---|
| 38 | ;
|
---|
| 39 | DIFFQ Q
|
---|
| 40 | ;
|
---|
| 41 | MTCOMP(STATUS,IBDATA) ; -- compare income determination with current mt status
|
---|
| 42 | ;
|
---|
| 43 | I '$$NETW^IBARXEU1 G MTCOMP ; don't use net worth in computation
|
---|
| 44 | ;
|
---|
| 45 | N IBEXREA,CODE S IBEXREA=""
|
---|
| 46 | ;
|
---|
| 47 | ; -- incomplete and required tests are no data
|
---|
| 48 | ;I CODE="I"!(CODE="R") S IBEXREA=210 G MTDONE
|
---|
| 49 | S X=$P(IBDATA,"^",3) I X=1!(X=3)!(X=9)!(X=10)!($P(IBDATA,"^",14)) S IBEXREA=$S($P(IBDATA,"^",14):110,1:210) G MTDONE
|
---|
| 50 | ;
|
---|
| 51 | ; -- quit if not pending adjuducation
|
---|
| 52 | I +STATUS'=3 G MTCOMPQ
|
---|
| 53 | ;
|
---|
| 54 | S CODE=$$CODE^IBAMTED1(IBDATA)
|
---|
| 55 | ;
|
---|
| 56 | ; -- see if mt or income test was adjudicated
|
---|
| 57 | ; if not sent to ajudication is non-exempt
|
---|
| 58 | ; if made exempt or cat a is hardship
|
---|
| 59 | I $P(IBDATA,"^",10)="",$P(IBDATA,"^",19)=1 S IBEXREA=$S(CODE="P":130,CODE="C":110,CODE="A":2010,1:"") ; means test logic
|
---|
| 60 | ;
|
---|
| 61 | I $P(IBDATA,"^",10)="",$P(IBDATA,"^",19)=2 S IBEXREA=$S(CODE="P":130,CODE="N":110,CODE="E":2010,1:"") ; income test logic
|
---|
| 62 | ;
|
---|
| 63 | ; -- if adjudicated cat a set to exempt if means test set to non-exempt
|
---|
| 64 | I 'IBEXREA,$P(IBDATA,"^",19)=1 S IBEXREA=$S($$CODE^IBAMTED1(IBDATA)="A":150,$$CODE^IBAMTED1(IBDATA)="C":140,1:"") ; means test logic
|
---|
| 65 | ;
|
---|
| 66 | I 'IBEXREA,$P(IBDATA,"^",19)=2 S IBEXREA=$S($$CODE^IBAMTED1(IBDATA)="E":150,$$CODE^IBAMTED1(IBDATA)="N":140,1:"") ; income test logic
|
---|
| 67 | ;
|
---|
| 68 | MTDONE I IBEXREA S $P(STATUS,"^",3)=$O(^IBE(354.2,"ACODE",+IBEXREA,0))
|
---|
| 69 | ;
|
---|
| 70 | MTCOMPQ Q $P(STATUS,"^",3)_"^"_$P(STATUS,"^",2)
|
---|
| 71 | ;
|
---|
| 72 | MOSTR(X1,IBEXREA) ; -- if status date is most recent but last exemption date
|
---|
| 73 | ; is later, inactivate last exemption
|
---|
| 74 | ;
|
---|
| 75 | ; -- input X1 = date of most recent status (+dgmta from event driver)
|
---|
| 76 | ; IBEXREA= point to 354.2 for new exemption
|
---|
| 77 | ;
|
---|
| 78 | ; -- will define IBOLDAUT if not already defined
|
---|
| 79 | ;
|
---|
| 80 | Q:+$G(X1)'?7N
|
---|
| 81 | Q:$G(IBOLDAUT)?7N
|
---|
| 82 | Q:$L($P($G(^IBE(354.2,+IBEXREA,0)),"^",5))'=3 ; only for income exemptions
|
---|
| 83 | N X
|
---|
| 84 | S X=$$LSTAC^IBARXEU0(DFN) ; x =most recent exemption reason ^ date
|
---|
| 85 | Q:+X1'<$P(X,"^",2) ;test date is less than most recent exemption date
|
---|
| 86 | Q:+X1'>$$MINUS^IBARXEU0(DT) ; exemption date > year ago - don't inactivate more recent exemptions
|
---|
| 87 | ;
|
---|
| 88 | ; -- get last test date
|
---|
| 89 | S Y=$G(^DGMT(408.31,+$$LST^DGMTCOU1(DFN,DT,3),0))
|
---|
| 90 | ;
|
---|
| 91 | ; -- if most recent test date is this test inactivate exemption
|
---|
| 92 | I +X1=+Y S IBOLDAUT=$P(X,"^",2)
|
---|
| 93 | Q
|
---|
| 94 | ;
|
---|
| 95 | REGAUTO ; -- will automatically update in background autoexempt
|
---|
| 96 | ; called from registration
|
---|
| 97 | ;
|
---|
| 98 | S ZTREQ="@" ; always called as task, delete task
|
---|
| 99 | G:'$G(DFN) REGQ
|
---|
| 100 | N I,J,X,Y,IBEXREA,IBNSTAT,IBFORCE,IBOLDAUT,IBJOB
|
---|
| 101 | S IBJOB=16
|
---|
| 102 | S IBEXREA=$P($G(^IBA(354,DFN,0)),"^",5)
|
---|
| 103 | I $P($G(^IBE(354.2,+IBEXREA,0)),"^",5)=2010 G REGQ ; don't overwrite hardships
|
---|
| 104 | S IBNSTAT=$$STATUS^IBARXEU1(DFN,DT)
|
---|
| 105 | I IBEXREA=+IBNSTAT G REGQ ; computes to same as on file
|
---|
| 106 | ;
|
---|
| 107 | ; -- not same must force new entry
|
---|
| 108 | L +^IBA(354,DFN)
|
---|
| 109 | D OLDAUT^IBARXEX1(IBNSTAT)
|
---|
| 110 | S IBFORCE=$P(IBNSTAT,"^",2)
|
---|
| 111 | D ADDEX^IBAUTL6(+IBNSTAT,$P(IBNSTAT,"^",2),1,1,$G(IBOLDAUT))
|
---|
| 112 | L -^IBA(354,DFN)
|
---|
| 113 | REGQ Q
|
---|