DGBTDLT ;UNK/BLD - BENEFICIARY TRAVEL DENIAL LETTER TEMPLATES ; 1/8/24 12:36pm
;;1.0;Beneficiary Travel;**20,33,41**;March 4, 2012;Build 7
;
EN ;entry point for denial letter templates.
;
Q ;DGBT*1*41 Remove functionality
N IEN,CNT,TMP,DGBTINST,COUNTER,DGBTDIVI,DGBTDIVN,QUIT,DGIEN,DGIEN2,DGBTLTR
;
K ^TMP("DGBTDLT",$J)
S QUIT=0
;
W @IOF
S QUIT=0
F D Q:$G(QUIT)
.D MENU(.DGIEN) Q:$G(QUIT) ;this will allow the user to choose which letter to edit.
.D EDIT ;this will bring of the screen editor for denial letter(s)
;
Q
;
;
S DIR("A")="SELECT TEMPLATE TYPE"
S DIR("L",1)="CHOOSE FROM:"
S DIR("L",2)="MILEAGE DENIAL TEMPLATE"
S DIR("L",3)="SPECIAL MODE DENIAL TEMPLATE"
S DIR("?")="ENTER EITHER 'M' FOR MILEAGE DENIAL TEMPLATE OR 'S' FOR SPECIAL MODE DENIAL TEMPLATE"
S DIR(0)="S^M:MILEAGE DENIAL TEMPLATE;S:SPECIAL MODE DENIAL TEMPLATE"
D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S QUIT=1 Q
S DGBTLTR("LETTER TYPE")=$P(Y,",",1)
;
I DGBTLTR("LETTER TYPE")="M" D Q
.S DIR("A")="SELECT WHICH MILEAGE LETTER"
.S DIR("L",1)="CHOOSE FROM: "
.S DIR("L",2)="MILEAGE TEMPLATE PART 1"
.S DIR("L",3)="MILEAGE TEMPLATE PART 2"
.S DIR("?")="PART 1 IS THE TOP HALF OF THE LETTER BEFORE DENIAL REASON. AND PART 2 IS THE BOTTOM HALF OF THE LETTER AFTER THE DENIAL REASON"
.S DIR(0)="S^1:MILEAGE TEMPLATE 1;2:MILEAGE TEMPLATE 2"
.D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S QUIT=1 Q
.S DGIEN=+Y
;
I DGBTLTR("LETTER TYPE")="S" D
.S DIR("A")="SELECT WHICH SPECIAL MODE LETTER"
.S DIR("L",1)="CHOOSE FROM: "
.S DIR("L",2)="SPECIAL MODE TEMPLATE PART 1"
.S DIR("L",3)="SPECIAL MODE TEMPLATE PART 2"
.S DIR("?")="PART 1 IS THE TOP HALF OF THE LETTER BEFORE DENIAL REASON. AND PART 2 IS THE BOTTOM HALF OF THE LETTER AFTER THE DENIAL REASON"
.S DIR(0)="S^1:SPECIAL MODE TEMPLATE 1;2:SPECIAL MODE TEMPLATE 2"
.D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S QUIT=1 Q
.S DGIEN=$S(+Y=1:3,1:4)
;
Q
;
SETUP(DGIEN) ;this will set up ^TMP global for editing
S CNT=0,COUNTER=0
F S CNT=$O(^DGBT(392.6,DGIEN,1,CNT)) Q:'CNT D
.S COUNTER=COUNTER+1
.S ^TMP("DGBTDLT",$J,COUNTER)=^DGBT(392.6,DGIEN,1,CNT,0)
Q
;
EDIT ;this will invoke the screen editor
;
K ^TMP($J,"DGBTDLT"),DWPK,DIC,DIWESUB,DIWETXT
S DWPK=1
S DGIEN2=$S(DGIEN=3!(DGIEN=4):3,1:1)
S DIC="^DGBT(392.6,DGIEN,DGIEN2,"
S DIWESUB="MILEAGE DENIAL LETTER"
S DIWETXT="MILEAGE DENIAL LETTER TEMPLATE PART "_DGIEN
D EN^DIWE
Q
;
;************************************************************************************************************
; THIS WILL PRINT DENIAL LETTERS
;************************************************************************************************************
;
DGBTDR ;will ask for the denial reason
;
N DRIEN,REASON,LETTERS1,LETTERS2,LINENBR,NBR,DGBTDNLTR,DGBTFDA,DGBTSCR,DGBTDR,DGBTISSUED,VADM,PATSEX,PATADD1,PATADD2,PATCITY,PATST,PATZIP,PATNAME
W !
K ^UTILITY($J,"W")
S QUIT=0
;
S SPCOMPLETE=1
;
S DGBTDL("ISSUED")=$$GET1^DIQ(392,DGBTDTI,45,"I")
S DGBTDL("ISSUED DATE")=$$GET1^DIQ(392,DGBTDTI,45.1)
S DGBTDL("CLAIM DENIED")=$$GET1^DIQ(392,DGBTDTI,45.2)
S DGBTDL("DT DENIED")=$$GET1^DIQ(392,DGBTDTI,45.3)
S DGBTDL("DENIED REASON")=$$GET1^DIQ(392,DGBTDTI,45.4)
;
K Y
F D Q:+Y>0!($G(DGBTTOUT)=-1)
.K X,DGBTTOUT S X=""
.S DIC("B")=$$GET1^DIQ(392,DGBTDT,45.4),DIC("A")="Select Denial Reason: "
.S DIC="^DGBT(392.8,",DIC(0)="AEQMZ"
.I DGBTCMTY="M" S DIC("S")="I $P(^(0),1)'[""MEDICAL REVIEW"""
.D ^DIC K DIC I $D(DTOUT)!($D(DUOUT)) S DGBTTOUT=-1,SPCOMPLETE=0 K DTOUT,DUOUT Q
.I Y<0 W !!,"Denial Reason Required. '^' to exit.",! Q
Q:Y<0!($G(DGBTTOUT)=-1)
S DRIEN=+Y
S DGBTDL("DENIED REASON")=$$GET1^DIQ(392.8,DRIEN,.01)
S DGBTDL("CLAIM DENIED")="YES"
S DGBTDL("DT DENIED")=$S(DGBTDL("DT DENIED")="":$$FMTE^XLFDT(DT),1:DGBTDL("DT DENIED"))
;
;
S DIR("B")=$$GET1^DIQ(392,DGBTDT,45)
S DIR(0)="Y^A",DIR("A")="ISSUE DENIAL OF BENEFITS LETTER"
S DIR("?")="ENTER 'YES' OR 'NO'"
D ^DIR K DIR I $D(DTOUT)!($D(DUOUT)) S DGBTTOUT=-1,SPCOMPLETE=0 K DTOUT,DUOUT Q
;
I +Y=1 S DGBTDL("ISSUED DATE")=$S(DGBTDL("ISSUED DATE")="":$$FMTE^XLFDT(DT),1:DGBTDL("ISSUED DATE")),DGBTDL("ISSUED")="YES"
I +Y'=1 S DGBTDL("ISSUED")="NO" D CLRLTR(1) S QUIT=1 S:$G(DGBTISSUED)=-1 DGBTTOUT=$G(DGBTISSUED),SPCOMPLETE=0 Q
;
S DGBTDNLTR=DGBTDL("ISSUED")
;
W !!
;
W @IOF
S DGBTFDA(392,DGBTDTI_",",45)=DGBTDNLTR
S DGBTFDA(392,DGBTDTI_",",45.1)=$S(DGBTDL("ISSUED DATE")'="":DGBTDL("ISSUED DATE"),1:$$FMTE^XLFDT(DT))
S DGBTFDA(392,DGBTDTI_",",45.2)=1
S DGBTFDA(392,DGBTDTI_",",45.3)=$S(DGBTDL("DT DENIED")'="":DGBTDL("DT DENIED"),1:$$FMTE^XLFDT(DT))
S DGBTFDA(392,DGBTDTI_",",45.4)=$S(DGBTDL("DENIED REASON")'="":DGBTDL("DENIED REASON"),1:$$GET1^DIQ(392.8,DRIEN,.01)) ;Y(0)
K ERRMSG D FILE^DIE("EKTS","DGBTFDA","ERRMSG") K DGBTFDA
I $$GET1^DIQ(392.8,DRIEN,1,,"REASON")
D DEVICE("DENIAL LETTER","LTR^DGBTDLT") I $D(DTOUT)!($D(DUOUT))!($G(SPCOMPLETE)=0) S QUIT=1,DGBTTOUT=-1 Q
I $G(DGBTQ) Q
D LTR
Q
;
LTR ;
;
N NAME,DGBTCDT,DIWL,DIWR
K ^UTILITY($J,"W")
D DIVISN(.DGBTINST) ;this will set up the DGBTINST array containing the current VA location address
D HEADER(.DGBTINST) ;this will print the current VA location information
S QUIT=1
S DIWL=5 ;left margin
S DIWR=75 ;right margin
S DGBTCDT(1)=$P(DGBTDTE,"@",1) ;date entered into file
S NAME=$$GET1^DIQ(200,DUZ,.01),DGBTCDT(2)=$P(NAME,",",2)_" "_$P(NAME,",",1) ;user name
S DGBTCDT(3)=$$GET1^DIQ(200,DUZ,8) ;user title
;
I DGBTCMTY="M" D ;for mileage claims
.I $$GET1^DIQ(392.6,1,1,,"LETTERS1")
.S LINENBR=0
.F S LINENBR=$O(LETTERS1(LINENBR)) Q:'LINENBR D D ^DIWP
..S X=LETTERS1(LINENBR)
.S NBR=0
.F S NBR=$O(REASON(NBR)) Q:'NBR D D ^DIWP
..S X=REASON(NBR)
.I $$GET1^DIQ(392.6,2,1,,"LETTERS2")
.F S LINENBR=$O(LETTERS2(LINENBR)) Q:'LINENBR D D ^DIWP
..S X=LETTERS2(LINENBR) Q:X=""
.D ^DIWW
;
K LETTERS1,LETTERS2
I DGBTCMTY="S" D ;for Special Mode Claims
.I $$GET1^DIQ(392.6,3,3,,"LETTERS1")
.S LINENBR=0
.F S LINENBR=$O(LETTERS1(LINENBR)) Q:'LINENBR D D ^DIWP
..S X=LETTERS1(LINENBR)
.S NBR=0
.F S NBR=$O(REASON(NBR)) Q:'NBR D D ^DIWP
..S X=REASON(NBR)
.I $$GET1^DIQ(392.6,4,3,,"LETTERS2")
.F S LINENBR=$O(LETTERS2(LINENBR)) Q:'LINENBR D D ^DIWP
..S X=LETTERS2(LINENBR) Q:X=""
.D ^DIWW
.S SPCOMPLETE=1
D:'IOST'["C-" ^%ZISC
Q
;
;
I $G(DGBTINST("ORG NAME"))="" D Q
.W !!,"INSTITUTION INFORMATION IS UNAVAILABLE. PLEASE UPDATE USING THE INSTITUTION FILE ENTER/EDIT."
N ORG,ADD1,ADD2,CITY,STATE,ZIP,INSTNAME,LOC,LOC2,DGBTDTFILED
;
S ORG=DGBTINST("ORG NAME")
S INSTNAME=DGBTINST("INST NAME")
S ADD1=DGBTINST("INST ADDRESS 1")
S ADD2=DGBTINST("INST ADDRESS 2")
S CITY=DGBTINST("INST CITY")
S STATE=DGBTINST("INST STATE")
S ZIP=DGBTINST("INST ZIP CODE")
;
D DEM^VADPT
S PATSEX=$P(VADM(5),"^",1),PATSEX=$S(PATSEX="M":"Mr",1:"Ms")_". "
S PATADD1=VAPA(1),PATADD2=VAPA(2)
S PATCITY=VAPA(4)_", ",PATST=$P(VAPA(5),"^",2)_" ",PATZIP=VAPA(6)
S PATNAME=VADM(1),PATNAME=$P(PATNAME,",",2)_" "_$P(PATNAME,",",1)
;
S LOC2=5
S LOC=80-$L(ORG) W !,?LOC/2,ORG
S LOC=80-$L(INSTNAME) W !,?LOC/2,INSTNAME
S LOC=80-$L(ADD1) W !,?LOC/2,ADD1
I $G(ADD2)'="" S LOC=80-$L(ADD2) W !,?LOC/2,ADD2
S CITYSTZIP=CITY_", "_STATE_" "_ZIP
S LOC=80-$L(CITYSTZIP) W !,?LOC/2,CITYSTZIP,!
;S LOC=80-$L(DGBTDTE) W !?LOC,$P(DGBTDTE,"@",1)
S DGBTDTFILED=$$GET1^DIQ(392,DGBTDTI,13,"E")
S DGBTDTFILED=$S(DGBTDTFILED'="":DGBTDTFILED,1:DT)
S DGBTDTFILED=$$FMTE^XLFDT(DGBTDTFILED)
S LOC=80-$L(DGBTDTFILED) W !,?LOC,DGBTDTFILED
W !,?LOC,DGBTINST("FAC NUMBER")
W ?LOC,"/"_$S(DGBTINST("MAIL CODE")'="":DGBTINST("MAIL CODE"),1:"BT"),!
W ?LOC,$E(VADM(1),1)_$E($P(VADM(2),"^",1),6,99)
W !,?LOC2,$G(PATSEX),$G(PATNAME)
W !,?LOC2,$G(PATADD1)
W:$G(PATADD2)'="" !,?LOC2,PATADD2
W !,?LOC2,PATCITY,PATST,PATZIP,!!
;
Q
;
PATIENT ; patient lookup, quit if patient doesn't exist
N VAEL
S DGBTOLD=0 ;PAVEL DGBT*1*20
I $D(DGANS) S DGANS="Q" Q ;bld DGTB*1*20
S DGBTTOUT="",DIC="^DPT(",DIC(0)="AEQMZ",DIC("A")="Select PATIENT: "
W !! D ^DIC K DIC I +Y'>0 Q
; get patient information#, call return patient return variables routine and set whether new claim or not
S DFN=+Y D 6^VADPT,PID^VADPT
S DGBTNEW=$S($D(^DGBT(392,"C",DFN)):0,1:1)
S SPCOMPLETE=0
Q
;
DIVISN(DGBTINST) ; if MED CTR DIV file set up (first record) and record does not exist, write warning, kill variables, and exit
I ($G(DGBTDIVI)'="")&($G(DGBTDIV)'="") D INSTIT(.DGBTINST) Q ; RFE DGBT*1.0*20
S DGBTDIVI=$O(^DG(40.8,0)),DGBTDIV=$P(^DG(40.8,DGBTDIVI,0),U) D INSTIT(.DGBTINST)
Q
;
INSTIT(DGBTINST) ; check for pointer to institution file and for address information on institution
N MAILCODE,INSTADD,INSTNODE
S DGBTDIVN=$P(^DG(40.8,DGBTDIVI,0),"^",7)
I 'DGBTDIVN W !!,"INSTITUTION HAS NOT BEEN DEFINED FOR ",$P(^(0),"^"),!,"USE THE ADT PARAMETER OPTION TO UPDATE",! Q
I $D(^DIC(4,DGBTDIVN,0)),$S($D(^(1))#10=0:1,$P(^(1),"^",3)']"":1,1:0) W !!,"INSTITUTION ADDRESS NOT ENTERED. PLEASE UPDATE USING THE INSTITUTION FILE ENTER/EDIT",! Q
;
S INSTNODE=^DIC(4,DGBTDIVN,0)
S INSTADD=^DIC(4,DGBTDIVN,1)
;
S DGBTINST("ORG NAME")="DEPARTMENT OF VETERANS AFFAIRS"
S DGBTINST("INST NAME")=$$GET1^DIQ(4,DGBTDIVN,.01)
S DGBTINST("INST ADDRESS 1")=$$GET1^DIQ(4,DGBTDIVN,1.01)
S DGBTINST("INST ADDRESS 2")=$$GET1^DIQ(4,DGBTDIVN,1.02)
S DGBTINST("INST CITY")=$$GET1^DIQ(4,DGBTDIVN,1.03)
S DGBTINST("INST STATE")=$$GET1^DIQ(4,DGBTDIVN,.02)
S DGBTINST("INST ZIP CODE")=$$GET1^DIQ(4,DGBTDIVN,1.04)
S DGBTINST("FAC NUMBER")=$$GET1^DIQ(40.8,DGBTDIVI,1)
S MAILCODE=$O(^DIC(49,"B","BENEFICIARY TRAVEL",""))
S DGBTINST("MAIL CODE")=$$GET1^DIQ(49,MAILCODE,1.5)
Q
;
DEVICE(RPTNAM,ROUTINE) ;common device call for DGBT reports
;
N %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP,ZTQUEUED
; RPTNAM = NAME OF DGBT REPORT BEING RUN
; ROUTINE = "TAG^ROUTINE"
;
S DGBTQ1=0,DGBTQ=0
S %ZIS="PQM"
D ^%ZIS
I POP S DGBTQ=1,SPCOMPLETE=0 Q
I IOST["C-" Q ;
;.N X I IOM=255,$D(^%ZOSF("RM")) X ^%ZOSF("RM")
;Check for exit
;S DGBTQ=1
I $G(IO("Q")) D S DGBTQ=1
.S ZTRTN=ROUTINE
.S ZTDESC="BT REPORT: "_RPTNAM
.S ZTSAVE("*")=""
.D ^%ZTLOAD
.W !,$S($D(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
.D HOME^%ZIS K IO("Q")
U IO
Q
;
DEVICE1(DGBTRPT) ;
N %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP
S %ZIS="QPM"
D ^%ZIS
I POP S DGBTQ=1,SPCOMPLETE=0
I IOST'["C-" S DGBTQ=1 Q
;
;Check for exit
I $G(DGBTQ) Q
;
I $D(IO("Q")) D S DGBTQ=1
. S ZTRTN="LTR^DGBTDLT"
. S ZTDESC="DGBT: "_DGBTRPT
.; S ZTIO=ION
. S ZTSAVE("*")=""
. D ^%ZTLOAD
. W !,$S($D(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
. D HOME^%ZIS K IO("Q")
;U IO
Q
;
CLRLTR(DENIED) ;
;
N Y,DGBTFDA,%
K ERRMSG
I $G(DGBTDL("ISSUED"))="" S DGBTDL("ISSUED")=$$GET1^DIQ(392,DGBTDTI,45,"I")
I $G(DGBTDL("CLAIM DENIED"))="" S DGBTDL("CLAIM DENIED")=DENIED
I $G(DGBTDL("DT DENIED"))="" S DGBTDL("DT DENIED")=$$GET1^DIQ(392,DGBTDTI,45.3) S:$G(DGBTDL("DT DENIED"))="" DGBTDL("DT DENIED")=$$FMTE^XLFDT(DT)
I $G(DGBTDL("DENIED REASON"))="" S DGBTDL("DENIED REASON")=$$GET1^DIQ(392,DGBTDTI,45.4)
;
S DGBTFDA(392,DGBTDTI_",",45)="" ;$G(DGBTDL("ISSUED"))
S DGBTFDA(392,DGBTDTI_",",45.1)=""
S DGBTFDA(392,DGBTDTI_",",45.2)="" ;$G(DGBTDL("CLAIM DENIED"))
S Y=$$NOW^XLFDT() D DD^%DT
S DGBTFDA(392,DGBTDTI_",",45.3)="" ;$G(DGBTDL("DT DENIED"))
S DGBTFDA(392,DGBTDTI_",",45.4)="" ;$G(DGBTDL("DENIED REASON"))
D FILE^DIE("EKTS","DGBTFDA","ERRMSG") K DGBTFDA
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGBTDLT 12032 printed Dec 13, 2024@01:40:34 Page 2
DGBTDLT ;UNK/BLD - BENEFICIARY TRAVEL DENIAL LETTER TEMPLATES ; 1/8/24 12:36pm
+1 ;;1.0;Beneficiary Travel;**20,33,41**;March 4, 2012;Build 7
+2 ;
EN ;entry point for denial letter templates.
+1 ;
+2 ;DGBT*1*41 Remove functionality
QUIT
+3 NEW IEN,CNT,TMP,DGBTINST,COUNTER,DGBTDIVI,DGBTDIVN,QUIT,DGIEN,DGIEN2,DGBTLTR
+4 ;
+5 KILL ^TMP("DGBTDLT",$JOB)
+6 SET QUIT=0
+7 ;
+8 WRITE @IOF
+9 SET QUIT=0
+10 FOR
Begin DoDot:1
+11 ;this will allow the user to choose which letter to edit.
DO MENU(.DGIEN)
if $GET(QUIT)
QUIT
+12 ;this will bring of the screen editor for denial letter(s)
DO EDIT
End DoDot:1
if $GET(QUIT)
QUIT
+13 ;
+14 QUIT
+15 ;
+1 ;
+2 SET DIR("A")="SELECT TEMPLATE TYPE"
+3 SET DIR("L",1)="CHOOSE FROM:"
+4 SET DIR("L",2)="MILEAGE DENIAL TEMPLATE"
+5 SET DIR("L",3)="SPECIAL MODE DENIAL TEMPLATE"
+6 SET DIR("?")="ENTER EITHER 'M' FOR MILEAGE DENIAL TEMPLATE OR 'S' FOR SPECIAL MODE DENIAL TEMPLATE"
+7 SET DIR(0)="S^M:MILEAGE DENIAL TEMPLATE;S:SPECIAL MODE DENIAL TEMPLATE"
+8 DO ^DIR
KILL DIR
IF $DATA(DTOUT)!($DATA(DUOUT))
SET QUIT=1
QUIT
+9 SET DGBTLTR("LETTER TYPE")=$PIECE(Y,",",1)
+10 ;
+11 IF DGBTLTR("LETTER TYPE")="M"
Begin DoDot:1
+12 SET DIR("A")="SELECT WHICH MILEAGE LETTER"
+13 SET DIR("L",1)="CHOOSE FROM: "
+14 SET DIR("L",2)="MILEAGE TEMPLATE PART 1"
+15 SET DIR("L",3)="MILEAGE TEMPLATE PART 2"
+16 SET DIR("?")="PART 1 IS THE TOP HALF OF THE LETTER BEFORE DENIAL REASON. AND PART 2 IS THE BOTTOM HALF OF THE LETTER AFTER THE DENIAL REASON"
+17 SET DIR(0)="S^1:MILEAGE TEMPLATE 1;2:MILEAGE TEMPLATE 2"
+18 DO ^DIR
KILL DIR
IF $DATA(DTOUT)!($DATA(DUOUT))
SET QUIT=1
QUIT
+19 SET DGIEN=+Y
End DoDot:1
QUIT
+20 ;
+21 IF DGBTLTR("LETTER TYPE")="S"
Begin DoDot:1
+22 SET DIR("A")="SELECT WHICH SPECIAL MODE LETTER"
+23 SET DIR("L",1)="CHOOSE FROM: "
+24 SET DIR("L",2)="SPECIAL MODE TEMPLATE PART 1"
+25 SET DIR("L",3)="SPECIAL MODE TEMPLATE PART 2"
+26 SET DIR("?")="PART 1 IS THE TOP HALF OF THE LETTER BEFORE DENIAL REASON. AND PART 2 IS THE BOTTOM HALF OF THE LETTER AFTER THE DENIAL REASON"
+27 SET DIR(0)="S^1:SPECIAL MODE TEMPLATE 1;2:SPECIAL MODE TEMPLATE 2"
+28 DO ^DIR
KILL DIR
IF $DATA(DTOUT)!($DATA(DUOUT))
SET QUIT=1
QUIT
+29 SET DGIEN=$SELECT(+Y=1:3,1:4)
End DoDot:1
+30 ;
+31 QUIT
+32 ;
SETUP(DGIEN) ;this will set up ^TMP global for editing
+1 SET CNT=0
SET COUNTER=0
+2 FOR
SET CNT=$ORDER(^DGBT(392.6,DGIEN,1,CNT))
if 'CNT
QUIT
Begin DoDot:1
+3 SET COUNTER=COUNTER+1
+4 SET ^TMP("DGBTDLT",$JOB,COUNTER)=^DGBT(392.6,DGIEN,1,CNT,0)
End DoDot:1
+5 QUIT
+6 ;
EDIT ;this will invoke the screen editor
+1 ;
+2 KILL ^TMP($JOB,"DGBTDLT"),DWPK,DIC,DIWESUB,DIWETXT
+3 SET DWPK=1
+4 SET DGIEN2=$SELECT(DGIEN=3!(DGIEN=4):3,1:1)
+5 SET DIC="^DGBT(392.6,DGIEN,DGIEN2,"
+6 SET DIWESUB="MILEAGE DENIAL LETTER"
+7 SET DIWETXT="MILEAGE DENIAL LETTER TEMPLATE PART "_DGIEN
+8 DO EN^DIWE
+9 QUIT
+10 ;
+11 ;************************************************************************************************************
+12 ; THIS WILL PRINT DENIAL LETTERS
+13 ;************************************************************************************************************
+14 ;
DGBTDR ;will ask for the denial reason
+1 ;
+2 NEW DRIEN,REASON,LETTERS1,LETTERS2,LINENBR,NBR,DGBTDNLTR,DGBTFDA,DGBTSCR,DGBTDR,DGBTISSUED,VADM,PATSEX,PATADD1,PATADD2,PATCITY,PATST,PATZIP,PATNAME
+3 WRITE !
+4 KILL ^UTILITY($JOB,"W")
+5 SET QUIT=0
+6 ;
+7 SET SPCOMPLETE=1
+8 ;
+9 SET DGBTDL("ISSUED")=$$GET1^DIQ(392,DGBTDTI,45,"I")
+10 SET DGBTDL("ISSUED DATE")=$$GET1^DIQ(392,DGBTDTI,45.1)
+11 SET DGBTDL("CLAIM DENIED")=$$GET1^DIQ(392,DGBTDTI,45.2)
+12 SET DGBTDL("DT DENIED")=$$GET1^DIQ(392,DGBTDTI,45.3)
+13 SET DGBTDL("DENIED REASON")=$$GET1^DIQ(392,DGBTDTI,45.4)
+14 ;
+15 KILL Y
+16 FOR
Begin DoDot:1
+17 KILL X,DGBTTOUT
SET X=""
+18 SET DIC("B")=$$GET1^DIQ(392,DGBTDT,45.4)
SET DIC("A")="Select Denial Reason: "
+19 SET DIC="^DGBT(392.8,"
SET DIC(0)="AEQMZ"
+20 IF DGBTCMTY="M"
SET DIC("S")="I $P(^(0),1)'[""MEDICAL REVIEW"""
+21 DO ^DIC
KILL DIC
IF $DATA(DTOUT)!($DATA(DUOUT))
SET DGBTTOUT=-1
SET SPCOMPLETE=0
KILL DTOUT,DUOUT
QUIT
+22 IF Y<0
WRITE !!,"Denial Reason Required. '^' to exit.",!
QUIT
End DoDot:1
if +Y>0!($GET(DGBTTOUT)=-1)
QUIT
+23 if Y<0!($GET(DGBTTOUT)=-1)
QUIT
+24 SET DRIEN=+Y
+25 SET DGBTDL("DENIED REASON")=$$GET1^DIQ(392.8,DRIEN,.01)
+26 SET DGBTDL("CLAIM DENIED")="YES"
+27 SET DGBTDL("DT DENIED")=$SELECT(DGBTDL("DT DENIED")="":$$FMTE^XLFDT(DT),1:DGBTDL("DT DENIED"))
+28 ;
+29 ;
+30 SET DIR("B")=$$GET1^DIQ(392,DGBTDT,45)
+31 SET DIR(0)="Y^A"
SET DIR("A")="ISSUE DENIAL OF BENEFITS LETTER"
+32 SET DIR("?")="ENTER 'YES' OR 'NO'"
+33 DO ^DIR
KILL DIR
IF $DATA(DTOUT)!($DATA(DUOUT))
SET DGBTTOUT=-1
SET SPCOMPLETE=0
KILL DTOUT,DUOUT
QUIT
+34 ;
+35 IF +Y=1
SET DGBTDL("ISSUED DATE")=$SELECT(DGBTDL("ISSUED DATE")="":$$FMTE^XLFDT(DT),1:DGBTDL("ISSUED DATE"))
SET DGBTDL("ISSUED")="YES"
+36 IF +Y'=1
SET DGBTDL("ISSUED")="NO"
DO CLRLTR(1)
SET QUIT=1
if $GET(DGBTISSUED)=-1
SET DGBTTOUT=$GET(DGBTISSUED)
SET SPCOMPLETE=0
QUIT
+37 ;
+38 SET DGBTDNLTR=DGBTDL("ISSUED")
+39 ;
+40 WRITE !!
+41 ;
+42 WRITE @IOF
+43 SET DGBTFDA(392,DGBTDTI_",",45)=DGBTDNLTR
+44 SET DGBTFDA(392,DGBTDTI_",",45.1)=$SELECT(DGBTDL("ISSUED DATE")'="":DGBTDL("ISSUED DATE"),1:$$FMTE^XLFDT(DT))
+45 SET DGBTFDA(392,DGBTDTI_",",45.2)=1
+46 SET DGBTFDA(392,DGBTDTI_",",45.3)=$SELECT(DGBTDL("DT DENIED")'="":DGBTDL("DT DENIED"),1:$$FMTE^XLFDT(DT))
+47 ;Y(0)
SET DGBTFDA(392,DGBTDTI_",",45.4)=$SELECT(DGBTDL("DENIED REASON")'="":DGBTDL("DENIED REASON"),1:$$GET1^DIQ(392.8,DRIEN,.01))
+48 KILL ERRMSG
DO FILE^DIE("EKTS","DGBTFDA","ERRMSG")
KILL DGBTFDA
+49 IF $$GET1^DIQ(392.8,DRIEN,1,,"REASON")
+50 DO DEVICE("DENIAL LETTER","LTR^DGBTDLT")
IF $DATA(DTOUT)!($DATA(DUOUT))!($GET(SPCOMPLETE)=0)
SET QUIT=1
SET DGBTTOUT=-1
QUIT
+51 IF $GET(DGBTQ)
QUIT
+52 DO LTR
+53 QUIT
+54 ;
LTR ;
+1 ;
+2 NEW NAME,DGBTCDT,DIWL,DIWR
+3 KILL ^UTILITY($JOB,"W")
+4 ;this will set up the DGBTINST array containing the current VA location address
DO DIVISN(.DGBTINST)
+5 ;this will print the current VA location information
DO HEADER(.DGBTINST)
+6 SET QUIT=1
+7 ;left margin
SET DIWL=5
+8 ;right margin
SET DIWR=75
+9 ;date entered into file
SET DGBTCDT(1)=$PIECE(DGBTDTE,"@",1)
+10 ;user name
SET NAME=$$GET1^DIQ(200,DUZ,.01)
SET DGBTCDT(2)=$PIECE(NAME,",",2)_" "_$PIECE(NAME,",",1)
+11 ;user title
SET DGBTCDT(3)=$$GET1^DIQ(200,DUZ,8)
+12 ;
+13 ;for mileage claims
IF DGBTCMTY="M"
Begin DoDot:1
+14 IF $$GET1^DIQ(392.6,1,1,,"LETTERS1")
+15 SET LINENBR=0
+16 FOR
SET LINENBR=$ORDER(LETTERS1(LINENBR))
if 'LINENBR
QUIT
Begin DoDot:2
+17 SET X=LETTERS1(LINENBR)
End DoDot:2
DO ^DIWP
+18 SET NBR=0
+19 FOR
SET NBR=$ORDER(REASON(NBR))
if 'NBR
QUIT
Begin DoDot:2
+20 SET X=REASON(NBR)
End DoDot:2
DO ^DIWP
+21 IF $$GET1^DIQ(392.6,2,1,,"LETTERS2")
+22 FOR
SET LINENBR=$ORDER(LETTERS2(LINENBR))
if 'LINENBR
QUIT
Begin DoDot:2
+23 SET X=LETTERS2(LINENBR)
if X=""
QUIT
End DoDot:2
DO ^DIWP
+24 DO ^DIWW
End DoDot:1
+25 ;
+26 KILL LETTERS1,LETTERS2
+27 ;for Special Mode Claims
IF DGBTCMTY="S"
Begin DoDot:1
+28 IF $$GET1^DIQ(392.6,3,3,,"LETTERS1")
+29 SET LINENBR=0
+30 FOR
SET LINENBR=$ORDER(LETTERS1(LINENBR))
if 'LINENBR
QUIT
Begin DoDot:2
+31 SET X=LETTERS1(LINENBR)
End DoDot:2
DO ^DIWP
+32 SET NBR=0
+33 FOR
SET NBR=$ORDER(REASON(NBR))
if 'NBR
QUIT
Begin DoDot:2
+34 SET X=REASON(NBR)
End DoDot:2
DO ^DIWP
+35 IF $$GET1^DIQ(392.6,4,3,,"LETTERS2")
+36 FOR
SET LINENBR=$ORDER(LETTERS2(LINENBR))
if 'LINENBR
QUIT
Begin DoDot:2
+37 SET X=LETTERS2(LINENBR)
if X=""
QUIT
End DoDot:2
DO ^DIWP
+38 DO ^DIWW
+39 SET SPCOMPLETE=1
End DoDot:1
+40 if 'IOST'["C-"
DO ^%ZISC
+41 QUIT
+42 ;
+1 ;
+2 IF $GET(DGBTINST("ORG NAME"))=""
Begin DoDot:1
+3 WRITE !!,"INSTITUTION INFORMATION IS UNAVAILABLE. PLEASE UPDATE USING THE INSTITUTION FILE ENTER/EDIT."
End DoDot:1
QUIT
+4 NEW ORG,ADD1,ADD2,CITY,STATE,ZIP,INSTNAME,LOC,LOC2,DGBTDTFILED
+5 ;
+6 SET ORG=DGBTINST("ORG NAME")
+7 SET INSTNAME=DGBTINST("INST NAME")
+8 SET ADD1=DGBTINST("INST ADDRESS 1")
+9 SET ADD2=DGBTINST("INST ADDRESS 2")
+10 SET CITY=DGBTINST("INST CITY")
+11 SET STATE=DGBTINST("INST STATE")
+12 SET ZIP=DGBTINST("INST ZIP CODE")
+13 ;
+14 DO DEM^VADPT
+15 SET PATSEX=$PIECE(VADM(5),"^",1)
SET PATSEX=$SELECT(PATSEX="M":"Mr",1:"Ms")_". "
+16 SET PATADD1=VAPA(1)
SET PATADD2=VAPA(2)
+17 SET PATCITY=VAPA(4)_", "
SET PATST=$PIECE(VAPA(5),"^",2)_" "
SET PATZIP=VAPA(6)
+18 SET PATNAME=VADM(1)
SET PATNAME=$PIECE(PATNAME,",",2)_" "_$PIECE(PATNAME,",",1)
+19 ;
+20 SET LOC2=5
+21 SET LOC=80-$LENGTH(ORG)
WRITE !,?LOC/2,ORG
+22 SET LOC=80-$LENGTH(INSTNAME)
WRITE !,?LOC/2,INSTNAME
+23 SET LOC=80-$LENGTH(ADD1)
WRITE !,?LOC/2,ADD1
+24 IF $GET(ADD2)'=""
SET LOC=80-$LENGTH(ADD2)
WRITE !,?LOC/2,ADD2
+25 SET CITYSTZIP=CITY_", "_STATE_" "_ZIP
+26 SET LOC=80-$LENGTH(CITYSTZIP)
WRITE !,?LOC/2,CITYSTZIP,!
+27 ;S LOC=80-$L(DGBTDTE) W !?LOC,$P(DGBTDTE,"@",1)
+28 SET DGBTDTFILED=$$GET1^DIQ(392,DGBTDTI,13,"E")
+29 SET DGBTDTFILED=$SELECT(DGBTDTFILED'="":DGBTDTFILED,1:DT)
+30 SET DGBTDTFILED=$$FMTE^XLFDT(DGBTDTFILED)
+31 SET LOC=80-$LENGTH(DGBTDTFILED)
WRITE !,?LOC,DGBTDTFILED
+32 WRITE !,?LOC,DGBTINST("FAC NUMBER")
+33 WRITE ?LOC,"/"_$SELECT(DGBTINST("MAIL CODE")'="":DGBTINST("MAIL CODE"),1:"BT"),!
+34 WRITE ?LOC,$EXTRACT(VADM(1),1)_$EXTRACT($PIECE(VADM(2),"^",1),6,99)
+35 WRITE !,?LOC2,$GET(PATSEX),$GET(PATNAME)
+36 WRITE !,?LOC2,$GET(PATADD1)
+37 if $GET(PATADD2)'=""
WRITE !,?LOC2,PATADD2
+38 WRITE !,?LOC2,PATCITY,PATST,PATZIP,!!
+39 ;
+40 QUIT
+41 ;
PATIENT ; patient lookup, quit if patient doesn't exist
+1 NEW VAEL
+2 ;PAVEL DGBT*1*20
SET DGBTOLD=0
+3 ;bld DGTB*1*20
IF $DATA(DGANS)
SET DGANS="Q"
QUIT
+4 SET DGBTTOUT=""
SET DIC="^DPT("
SET DIC(0)="AEQMZ"
SET DIC("A")="Select PATIENT: "
+5 WRITE !!
DO ^DIC
KILL DIC
IF +Y'>0
QUIT
+6 ; get patient information#, call return patient return variables routine and set whether new claim or not
+7 SET DFN=+Y
DO 6^VADPT
DO PID^VADPT
+8 SET DGBTNEW=$SELECT($DATA(^DGBT(392,"C",DFN)):0,1:1)
+9 SET SPCOMPLETE=0
+10 QUIT
+11 ;
DIVISN(DGBTINST) ; if MED CTR DIV file set up (first record) and record does not exist, write warning, kill variables, and exit
+1 ; RFE DGBT*1.0*20
IF ($GET(DGBTDIVI)'="")&($GET(DGBTDIV)'="")
DO INSTIT(.DGBTINST)
QUIT
+2 SET DGBTDIVI=$ORDER(^DG(40.8,0))
SET DGBTDIV=$PIECE(^DG(40.8,DGBTDIVI,0),U)
DO INSTIT(.DGBTINST)
+3 QUIT
+4 ;
INSTIT(DGBTINST) ; check for pointer to institution file and for address information on institution
+1 NEW MAILCODE,INSTADD,INSTNODE
+2 SET DGBTDIVN=$PIECE(^DG(40.8,DGBTDIVI,0),"^",7)
+3 IF 'DGBTDIVN
WRITE !!,"INSTITUTION HAS NOT BEEN DEFINED FOR ",$PIECE(^(0),"^"),!,"USE THE ADT PARAMETER OPTION TO UPDATE",!
QUIT
+4 IF $DATA(^DIC(4,DGBTDIVN,0))
IF $SELECT($DATA(^(1))#10=0:1,$PIECE(^(1),"^",3)']"":1,1:0)
WRITE !!,"INSTITUTION ADDRESS NOT ENTERED. PLEASE UPDATE USING THE INSTITUTION FILE ENTER/EDIT",!
QUIT
+5 ;
+6 SET INSTNODE=^DIC(4,DGBTDIVN,0)
+7 SET INSTADD=^DIC(4,DGBTDIVN,1)
+8 ;
+9 SET DGBTINST("ORG NAME")="DEPARTMENT OF VETERANS AFFAIRS"
+10 SET DGBTINST("INST NAME")=$$GET1^DIQ(4,DGBTDIVN,.01)
+11 SET DGBTINST("INST ADDRESS 1")=$$GET1^DIQ(4,DGBTDIVN,1.01)
+12 SET DGBTINST("INST ADDRESS 2")=$$GET1^DIQ(4,DGBTDIVN,1.02)
+13 SET DGBTINST("INST CITY")=$$GET1^DIQ(4,DGBTDIVN,1.03)
+14 SET DGBTINST("INST STATE")=$$GET1^DIQ(4,DGBTDIVN,.02)
+15 SET DGBTINST("INST ZIP CODE")=$$GET1^DIQ(4,DGBTDIVN,1.04)
+16 SET DGBTINST("FAC NUMBER")=$$GET1^DIQ(40.8,DGBTDIVI,1)
+17 SET MAILCODE=$ORDER(^DIC(49,"B","BENEFICIARY TRAVEL",""))
+18 SET DGBTINST("MAIL CODE")=$$GET1^DIQ(49,MAILCODE,1.5)
+19 QUIT
+20 ;
DEVICE(RPTNAM,ROUTINE) ;common device call for DGBT reports
+1 ;
+2 NEW %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP,ZTQUEUED
+3 ; RPTNAM = NAME OF DGBT REPORT BEING RUN
+4 ; ROUTINE = "TAG^ROUTINE"
+5 ;
+6 SET DGBTQ1=0
SET DGBTQ=0
+7 SET %ZIS="PQM"
+8 DO ^%ZIS
+9 IF POP
SET DGBTQ=1
SET SPCOMPLETE=0
QUIT
+10 ;
IF IOST["C-"
QUIT
+11 ;.N X I IOM=255,$D(^%ZOSF("RM")) X ^%ZOSF("RM")
+12 ;Check for exit
+13 ;S DGBTQ=1
+14 IF $GET(IO("Q"))
Begin DoDot:1
+15 SET ZTRTN=ROUTINE
+16 SET ZTDESC="BT REPORT: "_RPTNAM
+17 SET ZTSAVE("*")=""
+18 DO ^%ZTLOAD
+19 WRITE !,$SELECT($DATA(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
+20 DO HOME^%ZIS
KILL IO("Q")
End DoDot:1
SET DGBTQ=1
+21 USE IO
+22 QUIT
+23 ;
DEVICE1(DGBTRPT) ;
+1 NEW %ZIS,ZTSK,ZTRTN,ZTIO,ZTDESC,ZTSAVE,POP
+2 SET %ZIS="QPM"
+3 DO ^%ZIS
+4 IF POP
SET DGBTQ=1
SET SPCOMPLETE=0
+5 IF IOST'["C-"
SET DGBTQ=1
QUIT
+6 ;
+7 ;Check for exit
+8 IF $GET(DGBTQ)
QUIT
+9 ;
+10 IF $DATA(IO("Q"))
Begin DoDot:1
+11 SET ZTRTN="LTR^DGBTDLT"
+12 SET ZTDESC="DGBT: "_DGBTRPT
+13 ; S ZTIO=ION
+14 SET ZTSAVE("*")=""
+15 DO ^%ZTLOAD
+16 WRITE !,$SELECT($DATA(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
+17 DO HOME^%ZIS
KILL IO("Q")
End DoDot:1
SET DGBTQ=1
+18 ;U IO
+19 QUIT
+20 ;
CLRLTR(DENIED) ;
+1 ;
+2 NEW Y,DGBTFDA,%
+3 KILL ERRMSG
+4 IF $GET(DGBTDL("ISSUED"))=""
SET DGBTDL("ISSUED")=$$GET1^DIQ(392,DGBTDTI,45,"I")
+5 IF $GET(DGBTDL("CLAIM DENIED"))=""
SET DGBTDL("CLAIM DENIED")=DENIED
+6 IF $GET(DGBTDL("DT DENIED"))=""
SET DGBTDL("DT DENIED")=$$GET1^DIQ(392,DGBTDTI,45.3)
if $GET(DGBTDL("DT DENIED"))=""
SET DGBTDL("DT DENIED")=$$FMTE^XLFDT(DT)
+7 IF $GET(DGBTDL("DENIED REASON"))=""
SET DGBTDL("DENIED REASON")=$$GET1^DIQ(392,DGBTDTI,45.4)
+8 ;
+9 ;$G(DGBTDL("ISSUED"))
SET DGBTFDA(392,DGBTDTI_",",45)=""
+10 SET DGBTFDA(392,DGBTDTI_",",45.1)=""
+11 ;$G(DGBTDL("CLAIM DENIED"))
SET DGBTFDA(392,DGBTDTI_",",45.2)=""
+12 SET Y=$$NOW^XLFDT()
DO DD^%DT
+13 ;$G(DGBTDL("DT DENIED"))
SET DGBTFDA(392,DGBTDTI_",",45.3)=""
+14 ;$G(DGBTDL("DENIED REASON"))
SET DGBTFDA(392,DGBTDTI_",",45.4)=""
+15 DO FILE^DIE("EKTS","DGBTFDA","ERRMSG")
KILL DGBTFDA
+16 QUIT