DVBAUDUI2 ;ALB/CP - User Audit Summary Inquiry Print ; 3/27/18 2:28pm
;;2.7;AMIE;**256**;;Build 19
; Per VHA Directive 6402 this routine should not be modified
; $$UP^XLFSTR ; IA #10104
;
Q
;
PRINT ; Print the report from the sorted ^TMP global
;
;
N @($$PRTVARS^DVBAUDPRT1())
N DVBC1,DVBC2,DVBC3,DVBC4
N DVBLC1,DVBLC2,DVBLC3,DVBLC4
N DVBSORTBY,DVBUSER
; ZEXCEPT: DVBCNT,DVBFLAG1,DVBOPTION,DVBPG
;
D PRINTINI
;
;
I '$D(^TMP("AMIE",$J,DVBOPTION)) D G EXIT
. D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,0) Q:DVBQUIT
. D NODATA^DVBAUDPRT1(2)
;
S DVBUSER=""
F S DVBUSER=$O(^TMP("AMIE",$J,DVBOPTION,DVBUSER)) Q:DVBUSER=""!DVBQUIT D ;
. N DVBIEN200
. S DVBIEN200=0
. F S DVBIEN200=$O(^TMP("AMIE",$J,DVBOPTION,DVBUSER,DVBIEN200)) Q:'DVBIEN200!DVBQUIT D ;
.. ; ZEXCEPT: DVBPG,DVBCNT
.. D PRINTOC(DVBCNT("OPTS")) ; Print the option DVBCOUNT for each user
.. I DVBPG>0 D CONTINUE^DVBAUDPRT1(2,"Q") Q:DVBQUIT
.. S (DVBPG,DVBCNT("OPTS"))=0
.. D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,0,1)
.. N DVBSORT2
.. S DVBSORT2=""
.. F S DVBSORT2=$O(^TMP("AMIE",$J,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2)) Q:DVBSORT2=""!DVBQUIT D
... N DVBSORT3
... S DVBSORT3=""
... F S DVBSORT3=$O(^TMP("AMIE",$J,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2,DVBSORT3)) Q:DVBSORT3=""!DVBQUIT D
.... N DVBIEN19
.... S DVBIEN19=0
.... F S DVBIEN19=$O(^TMP("AMIE",$J,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2,DVBSORT3,DVBIEN19)) Q:DVBIEN19=""!DVBQUIT D
..... N DVBRPTDATA
..... S DVBRPTDATA=^TMP("AMIE",$J,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2,DVBSORT3,DVBIEN19)
..... D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
..... W !
..... W ?DVBC1,$E($P(DVBRPTDATA,U,1),1,DVBLC1) ; OPTION
..... W ?DVBC2,$E($P(DVBRPTDATA,U,2),1,DVBLC2) ; FIRST TIME OPTION USED
..... W ?DVBC3,$E($P(DVBRPTDATA,U,3),1,DVBLC3) ; LAST TIME OPTION USED
..... W ?DVBC4,$J($P(DVBRPTDATA,U,4),DVBLC4) ;.. USAGE DVBCOUNT
..... S DVBCNT("OPTS")=DVBCNT("OPTS")+1
Q:DVBQUIT
D PRINTOC(DVBCNT("OPTS")) ;Print the option DVBCOUNT for each unique user
Q:DVBQUIT
;
EXIT ; Exit print subroutine
;
Q
;
PRINTHD ; Print report header
;
N DVBCOL
; ZEXCEPT: COORD,IOF,IOM,IOST
; ZEXCEPT: IOF,IOM,IOST,L,DVBLASTREF
; ZEXCEPT: DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7
; ZEXCEPT: DVBLIMIT,MGNAME,DVBDT,DVBFLAG1,DVBLINED,DVBLINEE,DVBPG,REFCNT
; ZEXCEPT: DVBSORTBY,TYPE,DVBUSER
; ZEXCEPT: DVBASKDT,DVBDT,DVBDTBEG,DVBDTEND,DVBLINED,DVBLINEE,DVBOPTION,DVBPG
;
W:$E(IOST,1,2)="C-" @IOF
S DVBCOL=(IOM-7)-$L(DVBPG) ;...... Calculate page number column position
D CENTER^DVBAUDPRT1(DVBOPTION) ;.. Report title
D:$G(DVBUSER)]"" CENTER^DVBAUDPRT1("for "_DVBUSER) ; User name
;
I DVBASKDT="YES" D ; If report is limited by date range
. N DVBRANGE
. S DVBRANGE=DVB2DTBEG("E")_" to "_DVB2DTEND("E")
. D CENTER^DVBAUDPRT1("DATE LAST AUDITED range: "_DVBRANGE)
I DVBASKDT="NO" D ; If report is NOT limited by date range
. D CENTER^DVBAUDPRT1("NO SPECIFIC LAST AUDIT DATE RANGE LIMIT WAS SPECIFIED")
;
D CENTER^DVBAUDPRT1("Sorted by: "_DVBSORTBY,1) ; Include sorting method
W !,?DVBC1,DVBDT
W ?DVBCOL,"PAGE: ",DVBPG ;...... Display page number
W !,DVBLINEE ;............... Draw a line before displaying column hdr
;
PRINTHD1 ; Print column headers
;
W ! ;....................... Column header line 1
W ?DVBC2,"FIRST"
W ?DVBC3,"LAST"
W ?DVBC4,$J("USAGE",DVBLC4)
;
W ! ;....................... Column header line 2
W ?DVBC1,"OPTION NAME"
W ?DVBC2,"USED"
W ?DVBC3,"USED"
W ?DVBC4,$J("DVBCOUNT",DVBLC4)
;
W ! ;....................... Draw a line under each column header
W ?DVBC1,$E(DVBLINED,1,DVBLC1)
W ?DVBC2,$E(DVBLINED,1,DVBLC2)
W ?DVBC3,$E(DVBLINED,1,DVBLC3)
W ?DVBC4,$E(DVBLINED,1,DVBLC4)
;
Q ; Quit PRINTHD & PRINTHD1
;
PRINTINI ; Initialize variables, set column positions and length of columns
;
; ZEXCEPT: DVBC1,C10,C11,DVBC2,DVBC3,DVBC4
; ZEXCEPT: DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4
; ZEXCEPT: DVBCNT,DVBFLAG1,DVBSORT,DVBULIMIT,DVBSORTBY
;
D INITPRT^DVBAUDPRT1
; Init DVBCOL pos's & length
S DVBC1=1,DVBC2=33,DVBC3=49,DVBC4=65
S DVBLC1=30,DVBLC2=14,DVBLC3=14,DVBLC4=8
;
S DVBSORTBY=$$UP^XLFSTR(DVBSORT)
I DVBSORTBY="" S DVBSORTBY=$$UP^XLFSTR(DVBSORT(DVBSORT))
S DVBCNT("OPTS")=0 ; Number of options for a particular user.
;
Q
;
PRINTOC(DVBCOUNT) ; Print the Option DVBCOUNT (OC) for each unique User
; ZEXCEPT: DVBC1,DVBLC1,DVBLINED
;
Q:DVBCOUNT'>1 ; Will only print when more than 1 Option for the User
;
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
W !,?DVBC1,$E(DVBLINED,1,DVBLC1)
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
W !,?DVBC1,$J(DVBCOUNT,DVBLC1) ; Right justify no. of options
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBAUDUI2 4799 printed Sep 17, 2026@20:27:35 Page 2
DVBAUDUI2 ;ALB/CP - User Audit Summary Inquiry Print ; 3/27/18 2:28pm
+1 ;;2.7;AMIE;**256**;;Build 19
+2 ; Per VHA Directive 6402 this routine should not be modified
+3 ; $$UP^XLFSTR ; IA #10104
+4 ;
+5 QUIT
+6 ;
PRINT ; Print the report from the sorted ^TMP global
+1 ;
+2 ;
+3 NEW @($$PRTVARS^DVBAUDPRT1())
+4 NEW DVBC1,DVBC2,DVBC3,DVBC4
+5 NEW DVBLC1,DVBLC2,DVBLC3,DVBLC4
+6 NEW DVBSORTBY,DVBUSER
+7 ; ZEXCEPT: DVBCNT,DVBFLAG1,DVBOPTION,DVBPG
+8 ;
+9 DO PRINTINI
+10 ;
+11 ;
+12 IF '$DATA(^TMP("AMIE",$JOB,DVBOPTION))
Begin DoDot:1
+13 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,0)
if DVBQUIT
QUIT
+14 DO NODATA^DVBAUDPRT1(2)
End DoDot:1
GOTO EXIT
+15 ;
+16 SET DVBUSER=""
+17 ;
FOR
SET DVBUSER=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBUSER))
if DVBUSER=""!DVBQUIT
QUIT
Begin DoDot:1
+18 NEW DVBIEN200
+19 SET DVBIEN200=0
+20 ;
FOR
SET DVBIEN200=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBUSER,DVBIEN200))
if 'DVBIEN200!DVBQUIT
QUIT
Begin DoDot:2
+21 ; ZEXCEPT: DVBPG,DVBCNT
+22 ; Print the option DVBCOUNT for each user
DO PRINTOC(DVBCNT("OPTS"))
+23 IF DVBPG>0
DO CONTINUE^DVBAUDPRT1(2,"Q")
if DVBQUIT
QUIT
+24 SET (DVBPG,DVBCNT("OPTS"))=0
+25 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,0,1)
+26 NEW DVBSORT2
+27 SET DVBSORT2=""
+28 FOR
SET DVBSORT2=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2))
if DVBSORT2=""!DVBQUIT
QUIT
Begin DoDot:3
+29 NEW DVBSORT3
+30 SET DVBSORT3=""
+31 FOR
SET DVBSORT3=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2,DVBSORT3))
if DVBSORT3=""!DVBQUIT
QUIT
Begin DoDot:4
+32 NEW DVBIEN19
+33 SET DVBIEN19=0
+34 FOR
SET DVBIEN19=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2,DVBSORT3,DVBIEN19))
if DVBIEN19=""!DVBQUIT
QUIT
Begin DoDot:5
+35 NEW DVBRPTDATA
+36 SET DVBRPTDATA=^TMP("AMIE",$JOB,DVBOPTION,DVBUSER,DVBIEN200,DVBSORT2,DVBSORT3,DVBIEN19)
+37 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+38 WRITE !
+39 ; OPTION
WRITE ?DVBC1,$EXTRACT($PIECE(DVBRPTDATA,U,1),1,DVBLC1)
+40 ; FIRST TIME OPTION USED
WRITE ?DVBC2,$EXTRACT($PIECE(DVBRPTDATA,U,2),1,DVBLC2)
+41 ; LAST TIME OPTION USED
WRITE ?DVBC3,$EXTRACT($PIECE(DVBRPTDATA,U,3),1,DVBLC3)
+42 ;.. USAGE DVBCOUNT
WRITE ?DVBC4,$JUSTIFY($PIECE(DVBRPTDATA,U,4),DVBLC4)
+43 SET DVBCNT("OPTS")=DVBCNT("OPTS")+1
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+44 if DVBQUIT
QUIT
+45 ;Print the option DVBCOUNT for each unique user
DO PRINTOC(DVBCNT("OPTS"))
+46 if DVBQUIT
QUIT
+47 ;
EXIT ; Exit print subroutine
+1 ;
+2 QUIT
+3 ;
PRINTHD ; Print report header
+1 ;
+2 NEW DVBCOL
+3 ; ZEXCEPT: COORD,IOF,IOM,IOST
+4 ; ZEXCEPT: IOF,IOM,IOST,L,DVBLASTREF
+5 ; ZEXCEPT: DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7
+6 ; ZEXCEPT: DVBLIMIT,MGNAME,DVBDT,DVBFLAG1,DVBLINED,DVBLINEE,DVBPG,REFCNT
+7 ; ZEXCEPT: DVBSORTBY,TYPE,DVBUSER
+8 ; ZEXCEPT: DVBASKDT,DVBDT,DVBDTBEG,DVBDTEND,DVBLINED,DVBLINEE,DVBOPTION,DVBPG
+9 ;
+10 if $EXTRACT(IOST,1,2)="C-"
WRITE @IOF
+11 ;...... Calculate page number column position
SET DVBCOL=(IOM-7)-$LENGTH(DVBPG)
+12 ;.. Report title
DO CENTER^DVBAUDPRT1(DVBOPTION)
+13 ; User name
if $GET(DVBUSER)]""
DO CENTER^DVBAUDPRT1("for "_DVBUSER)
+14 ;
+15 ; If report is limited by date range
IF DVBASKDT="YES"
Begin DoDot:1
+16 NEW DVBRANGE
+17 SET DVBRANGE=DVB2DTBEG("E")_" to "_DVB2DTEND("E")
+18 DO CENTER^DVBAUDPRT1("DATE LAST AUDITED range: "_DVBRANGE)
End DoDot:1
+19 ; If report is NOT limited by date range
IF DVBASKDT="NO"
Begin DoDot:1
+20 DO CENTER^DVBAUDPRT1("NO SPECIFIC LAST AUDIT DATE RANGE LIMIT WAS SPECIFIED")
End DoDot:1
+21 ;
+22 ; Include sorting method
DO CENTER^DVBAUDPRT1("Sorted by: "_DVBSORTBY,1)
+23 WRITE !,?DVBC1,DVBDT
+24 ;...... Display page number
WRITE ?DVBCOL,"PAGE: ",DVBPG
+25 ;............... Draw a line before displaying column hdr
WRITE !,DVBLINEE
+26 ;
PRINTHD1 ; Print column headers
+1 ;
+2 ;....................... Column header line 1
WRITE !
+3 WRITE ?DVBC2,"FIRST"
+4 WRITE ?DVBC3,"LAST"
+5 WRITE ?DVBC4,$JUSTIFY("USAGE",DVBLC4)
+6 ;
+7 ;....................... Column header line 2
WRITE !
+8 WRITE ?DVBC1,"OPTION NAME"
+9 WRITE ?DVBC2,"USED"
+10 WRITE ?DVBC3,"USED"
+11 WRITE ?DVBC4,$JUSTIFY("DVBCOUNT",DVBLC4)
+12 ;
+13 ;....................... Draw a line under each column header
WRITE !
+14 WRITE ?DVBC1,$EXTRACT(DVBLINED,1,DVBLC1)
+15 WRITE ?DVBC2,$EXTRACT(DVBLINED,1,DVBLC2)
+16 WRITE ?DVBC3,$EXTRACT(DVBLINED,1,DVBLC3)
+17 WRITE ?DVBC4,$EXTRACT(DVBLINED,1,DVBLC4)
+18 ;
+19 ; Quit PRINTHD & PRINTHD1
QUIT
+20 ;
PRINTINI ; Initialize variables, set column positions and length of columns
+1 ;
+2 ; ZEXCEPT: DVBC1,C10,C11,DVBC2,DVBC3,DVBC4
+3 ; ZEXCEPT: DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4
+4 ; ZEXCEPT: DVBCNT,DVBFLAG1,DVBSORT,DVBULIMIT,DVBSORTBY
+5 ;
+6 DO INITPRT^DVBAUDPRT1
+7 ; Init DVBCOL pos's & length
+8 SET DVBC1=1
SET DVBC2=33
SET DVBC3=49
SET DVBC4=65
+9 SET DVBLC1=30
SET DVBLC2=14
SET DVBLC3=14
SET DVBLC4=8
+10 ;
+11 SET DVBSORTBY=$$UP^XLFSTR(DVBSORT)
+12 IF DVBSORTBY=""
SET DVBSORTBY=$$UP^XLFSTR(DVBSORT(DVBSORT))
+13 ; Number of options for a particular user.
SET DVBCNT("OPTS")=0
+14 ;
+15 QUIT
+16 ;
PRINTOC(DVBCOUNT) ; Print the Option DVBCOUNT (OC) for each unique User
+1 ; ZEXCEPT: DVBC1,DVBLC1,DVBLINED
+2 ;
+3 ; Will only print when more than 1 Option for the User
if DVBCOUNT'>1
QUIT
+4 ;
+5 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+6 WRITE !,?DVBC1,$EXTRACT(DVBLINED,1,DVBLC1)
+7 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+8 ; Right justify no. of options
WRITE !,?DVBC1,$JUSTIFY(DVBCOUNT,DVBLC1)
+9 QUIT