DGMTR1 ;ALB/CJM,SCG,LBD - Check Means Test Requirements Cont'd;3/25/92 09:51
;;5.3;PIMS;**1016**;JUN 30, 2012;Build 20
;
COPYRX(DFN,MTIEN) ;
;Creates a Pharmacy Copay test based on the means test if the vet is
;subject to the Rx copayment and the income screening was already
;completed
;1/16/2002 - Changes added for LTC Copay Phase II (DG*5.3*433)
;Creates a Pharmacy Copay test based on a LTC copay exemption test
;(type 4) if the veteran is exempt from means test
;
N NODE0,RXSTATUS,Y,DGMT,DGMTYPT,DGNODE,DATA,SUB,COMMENTS,RXIEN,DGMTACT,DGMTI,DGMTP,DGMTA,NODE2,CODE,QUIT,TRIES,ERROR,TYPE
;
S DGMTP="",DGMTACT="ADD"
D ON^DGMTCOU G:'Y COPYRXQ
I $$CHK(DFN) D
.S NODE0=$G(^DGMT(408.31,MTIEN,0))
.Q:NODE0=""
.S NODE2=$G(^DGMT(408.31,MTIEN,2))
.;
.;get type of test (1=means test; 4=LTC copay exemption test)
.S TYPE=$P(NODE0,"^",19)
.;
.;must have been completed
.S CODE=$$GETCODE^DGMTH($P(NODE0,"^",3))
.S QUIT=1
.I (CODE'=""),("ACGP01"[CODE) S QUIT=0
.S CODE=$$GETCODE^DGMTH($P(NODE2,"^",3))
.I (CODE'=""),("ACGP01"[CODE) S QUIT=0
.Q:QUIT
.;
.;must still be effective
.Q:($$FMDIFF^XLFDT(DT,$P(NODE0,"^"))>365)
.Q:$$OLD^DGMTU4($P(NODE0,"^"))
.Q:($P(NODE0,"^",14)) ;declined to provide income information
.Q:($P(NODE0,"^",26)) ;refused to sign the test
.F TRIES=1:1 D Q:(TRIES>3)
..S DGNODE=$$LST^DGMTU(DFN,$S((DT>$P(NODE0,"^",2)):DT,1:$P(NODE0,"^",2)),2),RXIEN=+DGNODE
..;
..;mark existing test as non-primary
..I RXIEN,($E($P(DGNODE,"^",2),1,3)=$E($P(NODE0,"^"),1,3)) D
...S DATA(2)=0 I $$UPD^DGENDBS(408.31,RXIEN,.DATA)
..E S TRIES=4
.;
.S RXIEN=$P(NODE2,"^",6)
.;if already copied, reuse the same record
.I RXIEN,$P($G(^DGMT(408.31,RXIEN,2)),"^",6)=MTIEN D
..S DGMTI=RXIEN
..; Check for another test in the current year and convert IAI records, if needed
..S CONVRT=$$VRCHKUP^DGMTU2(2,TYPE,$P(^DGMT(408.31,MTIEN,0),"^"),$P(^DGMT(408.31,RXIEN,0),"^"))
.E D Q:'DGMTI
..;This call works. Adding via the ADD^DGENDBS encountered an error
..S DGMTDT=$P(NODE0,"^") S DGMTYPT=2 D ADD^DGMTA
.;
.S DATA(.019)=2
.S DATA(.03)=""
.F SUB=.01,.02,.04,.05,.06,.07,.14,.15,.18,.23,.24,.25 S DATA(SUB)=$P(NODE0,"^",(SUB/.01))
.S DATA(2)=1
.S DATA(2.02)=$P(NODE2,"^",2)
.S DATA(2.05)=$P(NODE2,"^",5)
.I TYPE=1 D
..S DATA(2.06)=MTIEN
..S COMMENTS("LINES",1,0)="This Rx Copay Test was automatically created based on a completed means test"
..S COMMENTS("LINES",2,0)="which was changed to NO LONGER REQUIRED. All data including income"
..S COMMENTS("LINES",3,0)="screening was copied from the test on "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
.I TYPE=4 D
..S COMMENTS("LINES",1,0)="This Rx Copay Test was automatically created based on a completed"
..S COMMENTS("LINES",2,0)="LTC copay exemption test. All data including income screening"
..S COMMENTS("LINES",3,0)="was copied from the test on "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
.S DATA(50)="COMMENTS(""LINES"")"
.S (DATA(.03),DATA(2.03))=$$RXSTATUS(MTIEN)
.S DATA(2.11)=1
.I $$UPD^DGENDBS(408.31,DGMTI,.DATA,.ERROR)
.K DATA
.S:TYPE=1 DATA(2.06)=DGMTI
.S:TYPE=4 DATA(2.08)=DGMTI
.I $$UPD^DGENDBS(408.31,MTIEN,.DATA,.ERROR)
.D TRANSFER^DGMTU4(DFN,MTIEN,DGMTI)
.D QUE^DGMTR
COPYRXQ ;
K ERROR
Q
;
RXSTATUS(MTIEN) ;
;Determins RX Copay Status based on the means test
;
Q:('$G(MTIEN)) ""
N NODE0,NODE,PIECE,IBSTATUS,MTSTATUS
S NODE0=$G(^DGMT(408.31,MTIEN,0))
Q:(NODE0="") ""
F PIECE=1,2,4,5,14,15,18 S $P(NODE,"^",PIECE)=$P(NODE0,"^",PIECE)
S $P(NODE,"^",19)=2
S IBSTATUS=+$$INCDT^IBARXEU1(NODE)
S MTSTATUS=$S(IBSTATUS=1:"E",IBSTATUS=2:"M",1:"")
Q:(MTSTATUS="") ""
Q $O(^DG(408.32,"AC",2,MTSTATUS,0))
;
CHK(DFN) ;
;can the veteran take a RX copay test?
N DGMTI,DGMTCOR,DGNODE,DGELIG,DGI,DGE
S DGMTCOR=1
;
I $P($G(^DPT(DFN,"VET")),U,1)'="Y" S DGMTCOR=0 G CHKQ ;NON-VET
S DGI=$P($G(^DPT(DFN,.36)),U) I 'DGI S DGMTCOR=0 G CHKQ ;NO PRIM ELIG
S DGELIG=U_$P($G(^DIC(8,+DGI,0)),U,9)_U
S DGI=0 F S DGI=$O(^DPT(DFN,"E",DGI)) Q:'DGI S DGE=$P($G(^DPT(DFN,"E",DGI,0)),U),DGELIG=DGELIG_$P($G(^DIC(8,+DGE,0)),U,9)_U
I (DGELIG["^1^") S DGMTCOR=0 G CHKQ ;SC 50-100%
F DGI=.3,.362,.39,.52 S DGNODE(DGI)=$G(^DPT(DFN,DGI))
I $P(DGNODE(.362),U,12)["Y"!(DGELIG["^2^") S DGMTCOR=0 G CHKQ ;A&A
I $P(DGNODE(.362),U,13)["Y"!(DGELIG["^15^") S DGMTCOR=0 G CHKQ ;HB
I $P(DGNODE(.362),U,14)["Y"!(DGELIG["^4^") S DGMTCOR=0 G CHKQ ;PENSION
I $P(DGNODE(.52),U,5)["Y"!(DGELIG["^18^") S DGMTCOR=0 G CHKQ ;POW
I $P(DGNODE(.39),U,6)["Y"!(DGELIG["^21^") S DGMTCOR=0 G CHKQ ;CD DG*5.3*840
I $P(DGNODE(.3),U,5)["Y"&($P(DGNODE(.3),U,2)>0)&($P(DGNODE(.362),U,20)>0) S DGMTCOR=0 G CHKQ ;UNEMPLOYABLE
CHKQ ;
Q DGMTCOR
MAIL ; Send a mailman msg to user/ INCONSISTENCY EDIT GROUP with results
N %,DGB,I,VA,VADM,VAERR,Y,XMDUZ,XMSUB,XMTEXT,XMY,XMZ
D DEM^VADPT
S XMSUB="Patient "_VADM(1)_" has an invalid secondary eligibility"
S XMDUZ="PIMS PACKAGE",XMY(DUZ)="",XMY(.5)=""
S DGB=+$P($G(^DG(43,1,"NOT")),"^",6)
I $D(^XMB(3.8,DGB,0)) S XMY("G."_$P($G(^XMB(3.8,DGB,0)),"^"))=""
S XMTEXT="DGTXT("
D NOW^%DTC S Y=% D DD^%DT
S DGTXT(1)="On "_Y_" "_VADM(1)_" ("_VA("BID")_")"
S DGTXT(2)="has an invalid secondary eligibility"
S DGTXT(3)=" "
;que mailman message
N DIFROM,I,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
F I="DGTXT(","XMDUZ","XMSUB","XMTEXT","XMY(" S ZTSAVE(I)=""
S ZTDESC="MAILMAN MSG FOR INVALID ELIGIBILITY CODE FILE ENTRIES"
S ZTDTH=$$NOW^XLFDT(),ZTIO="",ZTRTN="^XMD"
D ^%ZTLOAD
Q
DGMTR1 ;ALB/CJM,SCG,LBD - Check Means Test Requirements Cont'd;3/25/92 09:51
+1 ;;5.3;PIMS;**1016**;JUN 30, 2012;Build 20
+2 ;
COPYRX(DFN,MTIEN) ;
+1 ;Creates a Pharmacy Copay test based on the means test if the vet is
+2 ;subject to the Rx copayment and the income screening was already
+3 ;completed
+4 ;1/16/2002 - Changes added for LTC Copay Phase II (DG*5.3*433)
+5 ;Creates a Pharmacy Copay test based on a LTC copay exemption test
+6 ;(type 4) if the veteran is exempt from means test
+7 ;
+8 NEW NODE0,RXSTATUS,Y,DGMT,DGMTYPT,DGNODE,DATA,SUB,COMMENTS,RXIEN,DGMTACT,DGMTI,DGMTP,DGMTA,NODE2,CODE,QUIT,TRIES,ERROR,TYPE
+9 ;
+10 SET DGMTP=""
SET DGMTACT="ADD"
+11 DO ON^DGMTCOU
IF 'Y
GOTO COPYRXQ
+12 IF $$CHK(DFN)
Begin DoDot:1
+13 SET NODE0=$GET(^DGMT(408.31,MTIEN,0))
+14 IF NODE0=""
QUIT
+15 SET NODE2=$GET(^DGMT(408.31,MTIEN,2))
+16 ;
+17 ;get type of test (1=means test; 4=LTC copay exemption test)
+18 SET TYPE=$PIECE(NODE0,"^",19)
+19 ;
+20 ;must have been completed
+21 SET CODE=$$GETCODE^DGMTH($PIECE(NODE0,"^",3))
+22 SET QUIT=1
+23 IF (CODE'="")
IF ("ACGP01"[CODE)
SET QUIT=0
+24 SET CODE=$$GETCODE^DGMTH($PIECE(NODE2,"^",3))
+25 IF (CODE'="")
IF ("ACGP01"[CODE)
SET QUIT=0
+26 IF QUIT
QUIT
+27 ;
+28 ;must still be effective
+29 IF ($$FMDIFF^XLFDT(DT,$PIECE(NODE0,"^"))>365)
QUIT
+30 IF $$OLD^DGMTU4($PIECE(NODE0,"^"))
QUIT
+31 ;declined to provide income information
IF ($PIECE(NODE0,"^",14))
QUIT
+32 ;refused to sign the test
IF ($PIECE(NODE0,"^",26))
QUIT
+33 FOR TRIES=1:1
Begin DoDot:2
+34 SET DGNODE=$$LST^DGMTU(DFN,$SELECT((DT>$PIECE(NODE0,"^",2)):DT,1:$PIECE(NODE0,"^",2)),2)
SET RXIEN=+DGNODE
+35 ;
+36 ;mark existing test as non-primary
+37 IF RXIEN
IF ($EXTRACT($PIECE(DGNODE,"^",2),1,3)=$EXTRACT($PIECE(NODE0,"^"),1,3))
Begin DoDot:3
+38 SET DATA(2)=0
IF $$UPD^DGENDBS(408.31,RXIEN,.DATA)
End DoDot:3
+39 IF '$TEST
SET TRIES=4
End DoDot:2
IF (TRIES>3)
QUIT
+40 ;
+41 SET RXIEN=$PIECE(NODE2,"^",6)
+42 ;if already copied, reuse the same record
+43 IF RXIEN
IF $PIECE($GET(^DGMT(408.31,RXIEN,2)),"^",6)=MTIEN
Begin DoDot:2
+44 SET DGMTI=RXIEN
+45 ; Check for another test in the current year and convert IAI records, if needed
+46 SET CONVRT=$$VRCHKUP^DGMTU2(2,TYPE,$PIECE(^DGMT(408.31,MTIEN,0),"^"),$PIECE(^DGMT(408.31,RXIEN,0),"^"))
End DoDot:2
+47 IF '$TEST
Begin DoDot:2
+48 ;This call works. Adding via the ADD^DGENDBS encountered an error
+49 SET DGMTDT=$PIECE(NODE0,"^")
SET DGMTYPT=2
DO ADD^DGMTA
End DoDot:2
IF 'DGMTI
QUIT
+50 ;
+51 SET DATA(.019)=2
+52 SET DATA(.03)=""
+53 FOR SUB=.01,.02,.04,.05,.06,.07,.14,.15,.18,.23,.24,.25
SET DATA(SUB)=$PIECE(NODE0,"^",(SUB/.01))
+54 SET DATA(2)=1
+55 SET DATA(2.02)=$PIECE(NODE2,"^",2)
+56 SET DATA(2.05)=$PIECE(NODE2,"^",5)
+57 IF TYPE=1
Begin DoDot:2
+58 SET DATA(2.06)=MTIEN
+59 SET COMMENTS("LINES",1,0)="This Rx Copay Test was automatically created based on a completed means test"
+60 SET COMMENTS("LINES",2,0)="which was changed to NO LONGER REQUIRED. All data including income"
+61 SET COMMENTS("LINES",3,0)="screening was copied from the test on "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
End DoDot:2
+62 IF TYPE=4
Begin DoDot:2
+63 SET COMMENTS("LINES",1,0)="This Rx Copay Test was automatically created based on a completed"
+64 SET COMMENTS("LINES",2,0)="LTC copay exemption test. All data including income screening"
+65 SET COMMENTS("LINES",3,0)="was copied from the test on "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
End DoDot:2
+66 SET DATA(50)="COMMENTS(""LINES"")"
+67 SET (DATA(.03),DATA(2.03))=$$RXSTATUS(MTIEN)
+68 SET DATA(2.11)=1
+69 IF $$UPD^DGENDBS(408.31,DGMTI,.DATA,.ERROR)
+70 KILL DATA
+71 IF TYPE=1
SET DATA(2.06)=DGMTI
+72 IF TYPE=4
SET DATA(2.08)=DGMTI
+73 IF $$UPD^DGENDBS(408.31,MTIEN,.DATA,.ERROR)
+74 DO TRANSFER^DGMTU4(DFN,MTIEN,DGMTI)
+75 DO QUE^DGMTR
End DoDot:1
COPYRXQ ;
+1 KILL ERROR
+2 QUIT
+3 ;
RXSTATUS(MTIEN) ;
+1 ;Determins RX Copay Status based on the means test
+2 ;
+3 IF ('$GET(MTIEN))
QUIT ""
+4 NEW NODE0,NODE,PIECE,IBSTATUS,MTSTATUS
+5 SET NODE0=$GET(^DGMT(408.31,MTIEN,0))
+6 IF (NODE0="")
QUIT ""
+7 FOR PIECE=1,2,4,5,14,15,18
SET $PIECE(NODE,"^",PIECE)=$PIECE(NODE0,"^",PIECE)
+8 SET $PIECE(NODE,"^",19)=2
+9 SET IBSTATUS=+$$INCDT^IBARXEU1(NODE)
+10 SET MTSTATUS=$SELECT(IBSTATUS=1:"E",IBSTATUS=2:"M",1:"")
+11 IF (MTSTATUS="")
QUIT ""
+12 QUIT $ORDER(^DG(408.32,"AC",2,MTSTATUS,0))
+13 ;
CHK(DFN) ;
+1 ;can the veteran take a RX copay test?
+2 NEW DGMTI,DGMTCOR,DGNODE,DGELIG,DGI,DGE
+3 SET DGMTCOR=1
+4 ;
+5 ;NON-VET
IF $PIECE($GET(^DPT(DFN,"VET")),U,1)'="Y"
SET DGMTCOR=0
GOTO CHKQ
+6 ;NO PRIM ELIG
SET DGI=$PIECE($GET(^DPT(DFN,.36)),U)
IF 'DGI
SET DGMTCOR=0
GOTO CHKQ
+7 SET DGELIG=U_$PIECE($GET(^DIC(8,+DGI,0)),U,9)_U
+8 SET DGI=0
FOR
SET DGI=$ORDER(^DPT(DFN,"E",DGI))
IF 'DGI
QUIT
SET DGE=$PIECE($GET(^DPT(DFN,"E",DGI,0)),U)
SET DGELIG=DGELIG_$PIECE($GET(^DIC(8,+DGE,0)),U,9)_U
+9 ;SC 50-100%
IF (DGELIG["^1^")
SET DGMTCOR=0
GOTO CHKQ
+10 FOR DGI=.3,.362,.39,.52
SET DGNODE(DGI)=$GET(^DPT(DFN,DGI))
+11 ;A&A
IF $PIECE(DGNODE(.362),U,12)["Y"!(DGELIG["^2^")
SET DGMTCOR=0
GOTO CHKQ
+12 ;HB
IF $PIECE(DGNODE(.362),U,13)["Y"!(DGELIG["^15^")
SET DGMTCOR=0
GOTO CHKQ
+13 ;PENSION
IF $PIECE(DGNODE(.362),U,14)["Y"!(DGELIG["^4^")
SET DGMTCOR=0
GOTO CHKQ
+14 ;POW
IF $PIECE(DGNODE(.52),U,5)["Y"!(DGELIG["^18^")
SET DGMTCOR=0
GOTO CHKQ
+15 ;CD DG*5.3*840
IF $PIECE(DGNODE(.39),U,6)["Y"!(DGELIG["^21^")
SET DGMTCOR=0
GOTO CHKQ
+16 ;UNEMPLOYABLE
IF $PIECE(DGNODE(.3),U,5)["Y"&($PIECE(DGNODE(.3),U,2)>0)&($PIECE(DGNODE(.362),U,20)>0)
SET DGMTCOR=0
GOTO CHKQ
CHKQ ;
+1 QUIT DGMTCOR
MAIL ; Send a mailman msg to user/ INCONSISTENCY EDIT GROUP with results
+1 NEW %,DGB,I,VA,VADM,VAERR,Y,XMDUZ,XMSUB,XMTEXT,XMY,XMZ
+2 DO DEM^VADPT
+3 SET XMSUB="Patient "_VADM(1)_" has an invalid secondary eligibility"
+4 SET XMDUZ="PIMS PACKAGE"
SET XMY(DUZ)=""
SET XMY(.5)=""
+5 SET DGB=+$PIECE($GET(^DG(43,1,"NOT")),"^",6)
+6 IF $DATA(^XMB(3.8,DGB,0))
SET XMY("G."_$PIECE($GET(^XMB(3.8,DGB,0)),"^"))=""
+7 SET XMTEXT="DGTXT("
+8 DO NOW^%DTC
SET Y=%
DO DD^%DT
+9 SET DGTXT(1)="On "_Y_" "_VADM(1)_" ("_VA("BID")_")"
+10 SET DGTXT(2)="has an invalid secondary eligibility"
+11 SET DGTXT(3)=" "
+12 ;que mailman message
+13 NEW DIFROM,I,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,ZTSK
+14 FOR I="DGTXT(","XMDUZ","XMSUB","XMTEXT","XMY("
SET ZTSAVE(I)=""
+15 SET ZTDESC="MAILMAN MSG FOR INVALID ELIGIBILITY CODE FILE ENTRIES"
+16 SET ZTDTH=$$NOW^XLFDT()
SET ZTIO=""
SET ZTRTN="^XMD"
+17 DO ^%ZTLOAD
+18 QUIT