DVBAUDUU2 ;ALB/CP - Audited Option User Utilization Print ; 3/28/18 9:17am
;;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,DVBC5,DVBC6,DVBC7,DVBCNT,DVBGTOT
N DVBLC1,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7,DVBLIMIT,DVBPREVSORT
N DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBSORTBY,DVBSTOT
; ZEXCEPT: DVBLEGEND,DVBOPTION,DVBQUIT,DVBSORT,U
;
D PRINTINI
;
; IF There is not any data found in the ^TMP global
; Force a page break, print the report headers
; and display 'No Data Found'
;
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,0) Q:DVBQUIT
I '$D(^TMP("AMIE",$J,DVBOPTION)) D G EXIT
. D NODATA^DVBAUDPRT1(2)
;
S (DVBPREVSORT,DVBSORT1)=""
F S DVBSORT1=$O(^TMP("AMIE",$J,DVBOPTION,DVBSORT1)) Q:DVBSORT1=""!DVBQUIT D ;
. ; ZEXCEPT: DVBFLAG1
. ;
. ; Provide a control when sorting by Option (1-4) or Parent Service (7-10)
. I "^1^2^3^4^7^8^9^10^"[("^"_DVBSORT_"^") D Q:DVBQUIT S DVBFLAG1=0
. . Q:DVBFLAG1 ; Skip the control break on the first record
. . D STOT
. . D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
. . W !
. S DVBSORT2=""
. F S DVBSORT2=$O(^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2)) Q:DVBSORT2=""!DVBQUIT D ;
.. ;
.. ; Count the number of unique OPTIONS reported
.. I "^1^2^3^4^"[("^"_DVBSORT_"^") S DVBCNT("OPTS")=DVBCNT("OPTS")+1
.. I "^7^8^9^10^"[("^"_DVBSORT_"^") S DVBCNT("PSVC")=DVBCNT("PSVC")+1
.. ;
.. S DVBSORT3=""
.. F S DVBSORT3=$O(^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3)) Q:DVBSORT3=""!DVBQUIT D
... S DVBSORT4=""
... F S DVBSORT4=$O(^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4)) Q:DVBSORT4=""!DVBQUIT D
.... S DVBSORT5=""
.... F S DVBSORT5=$O(^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5)) Q:DVBSORT5=""!DVBQUIT D
..... S DVBSORT6=""
..... F S DVBSORT6=$O(^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6)) Q:DVBSORT6=""!DVBQUIT D
...... N DVBRPTDATA
...... ; ZEXCEPT: DVBSTOT
...... ;
...... S DVBRPTDATA=^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6)
...... D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
...... W !
...... ; Suppress repetitive printing of the OPTION name
...... W ?DVBC1,$E($P(DVBRPTDATA,U,1),1,DVBLC1) ; OPTION
...... W ?DVBC2,$J($P(DVBRPTDATA,U,2),DVBLC2) ;.. USER# pointer to file #200
...... W ?DVBC3,$E($P(DVBRPTDATA,U,3),1,DVBLC3) ; USER
...... W ?DVBC4,$E($P(DVBRPTDATA,U,4),1,DVBLC4) ; SERVICE
...... W ?DVBC5,$E($P(DVBRPTDATA,U,5),1,DVBLC5) ; FIRST TIME OPTION USED
...... W ?DVBC6,$E($P(DVBRPTDATA,U,6),1,DVBLC6) ; LAST TIME OPTION USED
...... W ?DVBC7,$J($P(DVBRPTDATA,U,7),DVBLC7) ;.. USAGE COUNT
...... S DVBCNT("PRINTED")=DVBCNT("PRINTED")+1 ; Count number of Options
...... S DVBSTOT("USERS")=DVBSTOT("USERS")+1 ; Number of users
...... S DVBSTOT("USAGE")=DVBSTOT("USAGE")+$P(DVBRPTDATA,U,7) ; Usage count
Q:DVBQUIT
;
D STOT Q:DVBQUIT
D GTOT
;
I DVBCNT("PRINTED") D ;
. I 'DVBQUIT D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
. W !
. I 'DVBQUIT D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
. W !
. W ?DVBC1,"Number of audit records listed..: ",DVBCNT("PRINTED")
;
I "^1^2^3^4^"[("^"_DVBSORT_"^") D ;
. I 'DVBQUIT D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
. W !
. W ?DVBC1,"Number of unique options listed.: ",$J(DVBCNT("OPTS"),$L(DVBCNT("PRINTED")))
;
I "^7^8^9^10^"[("^"_DVBSORT_"^") D ;
. I 'DVBQUIT D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
. W !
. W ?DVBC1,"Number of parent services listed: ",$J(DVBCNT("PSVC"),$L(DVBCNT("PRINTED")))
;
I DVBLEGEND=1 D ; Print inactive user legend
. I 'DVBQUIT D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
. W !
. W ?DVBC1,"Legend: Inactive users are prefixed with an asterisk (*)."
;
EXIT ; Exit PRINT^DVBAUDUU2
;
Q ; Quit PRINT^DVBAUDU2
;
GTOT ; Print grand totals at the end of the report
;
; ZEXCEPT: DVBGTOT,DVBLC3,DVBLC7,DVBLINED
;
Q:'DVBGTOT("USERS") ; No totals to print
;
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
W !
W ?DVBC3,$E(DVBLINED,1,DVBLC3)
W ?DVBC7,$E(DVBLINED,1,DVBLC7)
;
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
W !
W ?DVBC3,$J(DVBGTOT("USERS"),DVBLC3)
W ?DVBC7,$J(DVBGTOT("USAGE"),DVBLC7)
;
GTOTINIT ; Initialize grand totals
;
S DVBGTOT("USERS")=0 ; Number of records
S DVBGTOT("USAGE")=0 ; Total Usage counts
;
Q ; Quit DVBGTOT & GTOTINIT
;
PRINTHD ; Print report header
;
N DVBCOL
; ZEXCEPT: DVBCOORD,IOF,IOM,L,DVBLASTREF
; ZEXCEPT" DVBC1,DVBC2,DVBC3,DVBC4,DVBC5,DVBC6,DVBC7,DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7
; ZEXCEPT: IOF,IOM,IOST,DVBLIMIT,DVBMGNAME,DVBASKDT,DVBDT,DVBDTBEG,DVBDTEND
; ZEXCEPT: DVBFLAG1,DVBFTBEG,DVBFTEND,DVBLINED,DVBLINEE,DVBOPT,DVBOPTION
; ZEXCEPT: DVBPG,DVBPKG,DVBRPT,DVBREFCNT,DVBSORTBY,DVBTYPE,DVBUSERNAME
;
W:$E(IOST,1,2)="C-" @IOF
S DVBCOL=(IOM-7)-$L(DVBPG) ;.... Calculate page number column position
D CENTER^DVBAUDPRT1(DVBOPTION) ; Report title
;
I DVBRPT=1 D ;
. I DVBOPT("CNT")=1 D ; Show the selected option on the header
. . D CENTER^DVBAUDPRT1("Selected Option: "_$O(DVBOPT("B","")))
. I DVBOPT("CNT")>3 D ; DVBTEXT would be too long, make it generic
. . D CENTER^DVBAUDPRT1("SPECIFIC OPTIONS WERE SELECTED")
. I DVBOPT("CNT")>1 D ;
. . N DVBJ,DVB2OPT,DVBTEXT
. . S (DVB2OPT,DVBTEXT)=""
. . F DVBJ=1:1:DVBOPT("CNT") S DVB2OPT=$O(DVBOPT("B",DVB2OPT)) D ;
. . . S DVBTEXT=DVBTEXT_$S(DVBJ>1:", ",1:"")_DVB2OPT
. . D CENTER^DVBAUDPRT1("Options: "_DVBTEXT)
;
I DVBRPT=2 D ; Report selection is by free DVBTEXT range
. D CENTER^DVBAUDPRT1("Options: "_DVBFTBEG_" to "_DVBFTEND) ;Display range
I DVBRPT=3 D ; Report selection is by package namespace
. D CENTER^DVBAUDPRT1("Package namespace: "_DVBPKG)
;
I DVBASKDT="NO" D ; If report is NOT limited by date range
. D CENTER^DVBAUDPRT1("NO SPECIFIC LAST AUDIT DATE RANGE DVBLIMIT WAS SPECIFIED")
I DVBASKDT="YES" D ; If report is limited by date range
. D CENTER^DVBAUDPRT1("For options LAST USED used from: "_DVB2DTBEG("E")_" to "_DVB2DTEND("E"))
;
D CENTER^DVBAUDPRT1(DVBLIMIT) ;... Include selected user limitation
W !?DVBC1,DVBDT ;............... Reporting date
D CENTER^DVBAUDPRT1("Sorted by: "_DVBSORTBY,0) ; Include sorting method
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 ?DVBC5,"FIRST"
W ?DVBC6,"LAST"
W ?DVBC7,"USAGE"
;
W ! ;....................... Column header line 2
W ?DVBC1,"OPTION NAME"
W ?DVBC2,"DUZ"
W ?DVBC3,"USER NAME"
W ?DVBC4,"PARENT SERVICE"
W ?DVBC5,"USED"
W ?DVBC6,"USED"
W ?DVBC7,"COUNT"
;
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)
W ?DVBC5,$E(DVBLINED,1,DVBLC5)
W ?DVBC6,$E(DVBLINED,1,DVBLC6)
W ?DVBC7,$E(DVBLINED,1,DVBLC7)
;
Q ; Quit PRINTHD & PRINTHD1
;
PRINTINI ; Initialize variables, set column positions and length of columns
;
; ZEXCEPT: DVBC1,DVBC10,DVBC11,DVBC2,DVBC3,DVBC4,DVBC5,DVBC6,DVBC7,DVBCNT
; ZEXCEPT: DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7
; ZEXCEPT: DVBLIMIT,DVBRPT,DVBSORT,DVBULIMIT,DVBSORTBY
;
; Initialize commonly used printed report variables
D INITPRT^DVBAUDPRT1
;
; Init DVBCOL pos's & length
S DVBC1=1,DVBC2=33,DVBC3=42,DVBC4=73,DVBC5=104,DVBC6=114,DVBC7=124
S DVBLC1=30,DVBLC2=7,DVBLC3=29,DVBLC4=29,DVBLC5=8,DVBLC6=8,DVBLC7=7
;
S DVBSORTBY=$$UP^XLFSTR(DVBSORT)
I DVBSORTBY="" S DVBSORTBY=$$UP^XLFSTR(DVBSORT(DVBSORT)) ; Sorted by DVBTEXT in uppercase
S DVBLIMIT=$$DVBLIMIT(DVBULIMIT) ; DVBLIMIT report to which users?
S DVBCNT("PRINTED")=0 ; Number of printed records
S DVBCNT("OPTS")=0 ;... Number of unique printed options (for sort 1-4)
S DVBCNT("PSVC")=0 ;... Number of unique parent services (for sort 7-10)
;
; Initialize sub-totals & grand totals for various control breaks
D STOTINIT,GTOTINIT
;
Q ; Quit PRINTINI
;
DVBLIMIT(DVBLIMIT) ; Return: Which users were included
;
I DVBLIMIT=1 Q "BOTH ACTIVE AND INACTIVE USERS"
I DVBLIMIT=2 Q "ONLY ACTIVE USERS"
I DVBLIMIT=3 Q "ONLY INACTIVE USERS"
;
Q "" ; Quit extrinsic function $$DVBLIMIT
;
STOT ; Print subtotals on each control break & accumulate grand totals
;
; ZEXCEPT: DVBGTOT,DVBLC3,DVBLC7,DVBLINED,DVBSTOT
;
Q:'DVBSTOT("USERS") ; No totals to print
;
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
W !
W ?DVBC3,$E(DVBLINED,1,DVBLC3)
W ?DVBC7,$E(DVBLINED,1,DVBLC7)
;
D PAGEBRK^DVBAUDPRT1($T(+0),.DVBPG,1) Q:DVBQUIT
W !
W ?DVBC3,$J(DVBSTOT("USERS"),DVBLC3)
W ?DVBC7,$J(DVBSTOT("USAGE"),DVBLC7)
;
; Accumlate grand totals
S DVBGTOT("USERS")=DVBGTOT("USERS")+DVBSTOT("USERS")
S DVBGTOT("USAGE")=DVBGTOT("USAGE")+DVBSTOT("USAGE")
I DVBGTOT("USERS")=DVBSTOT("USERS"),DVBGTOT("USAGE")=DVBSTOT("USAGE") D ;
. ; Zero out grand totals so they do not print duplicate numbers
. S (DVBGTOT("USERS"),DVBGTOT("USAGE"))=0
;
STOTINIT ; Initialize subtotals
;
S DVBSTOT("USERS")=0 ; Number of records
S DVBSTOT("USAGE")=0 ; Total Usage counts
;
Q ; Quit DVBSTOT & STOTINIT
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBAUDUU2 9631 printed Sep 17, 2026@20:27:38 Page 2
DVBAUDUU2 ;ALB/CP - Audited Option User Utilization Print ; 3/28/18 9:17am
+1 ;;2.7;AMIE;**256**;;Build 19
+2 ; Per VHA Directive 6402 this routine should not be modified
+3 ; $$UP^XLFSTR ; IA #10104
+4 QUIT
+5 ;
PRINT ; Print the report from the sorted ^TMP global
+1 ;
+2 NEW @($$PRTVARS^DVBAUDPRT1())
+3 NEW DVBC1,DVBC2,DVBC3,DVBC4,DVBC5,DVBC6,DVBC7,DVBCNT,DVBGTOT
+4 NEW DVBLC1,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7,DVBLIMIT,DVBPREVSORT
+5 NEW DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBSORTBY,DVBSTOT
+6 ; ZEXCEPT: DVBLEGEND,DVBOPTION,DVBQUIT,DVBSORT,U
+7 ;
+8 DO PRINTINI
+9 ;
+10 ; IF There is not any data found in the ^TMP global
+11 ; Force a page break, print the report headers
+12 ; and display 'No Data Found'
+13 ;
+14 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,0)
if DVBQUIT
QUIT
+15 IF '$DATA(^TMP("AMIE",$JOB,DVBOPTION))
Begin DoDot:1
+16 DO NODATA^DVBAUDPRT1(2)
End DoDot:1
GOTO EXIT
+17 ;
+18 SET (DVBPREVSORT,DVBSORT1)=""
+19 ;
FOR
SET DVBSORT1=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1))
if DVBSORT1=""!DVBQUIT
QUIT
Begin DoDot:1
+20 ; ZEXCEPT: DVBFLAG1
+21 ;
+22 ; Provide a control when sorting by Option (1-4) or Parent Service (7-10)
+23 IF "^1^2^3^4^7^8^9^10^"[("^"_DVBSORT_"^")
Begin DoDot:2
+24 ; Skip the control break on the first record
if DVBFLAG1
QUIT
+25 DO STOT
+26 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+27 WRITE !
End DoDot:2
if DVBQUIT
QUIT
SET DVBFLAG1=0
+28 SET DVBSORT2=""
+29 ;
FOR
SET DVBSORT2=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2))
if DVBSORT2=""!DVBQUIT
QUIT
Begin DoDot:2
+30 ;
+31 ; Count the number of unique OPTIONS reported
+32 IF "^1^2^3^4^"[("^"_DVBSORT_"^")
SET DVBCNT("OPTS")=DVBCNT("OPTS")+1
+33 IF "^7^8^9^10^"[("^"_DVBSORT_"^")
SET DVBCNT("PSVC")=DVBCNT("PSVC")+1
+34 ;
+35 SET DVBSORT3=""
+36 FOR
SET DVBSORT3=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3))
if DVBSORT3=""!DVBQUIT
QUIT
Begin DoDot:3
+37 SET DVBSORT4=""
+38 FOR
SET DVBSORT4=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4))
if DVBSORT4=""!DVBQUIT
QUIT
Begin DoDot:4
+39 SET DVBSORT5=""
+40 FOR
SET DVBSORT5=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5))
if DVBSORT5=""!DVBQUIT
QUIT
Begin DoDot:5
+41 SET DVBSORT6=""
+42 FOR
SET DVBSORT6=$ORDER(^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6))
if DVBSORT6=""!DVBQUIT
QUIT
Begin DoDot:6
+43 NEW DVBRPTDATA
+44 ; ZEXCEPT: DVBSTOT
+45 ;
+46 SET DVBRPTDATA=^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6)
+47 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+48 WRITE !
+49 ; Suppress repetitive printing of the OPTION name
+50 ; OPTION
WRITE ?DVBC1,$EXTRACT($PIECE(DVBRPTDATA,U,1),1,DVBLC1)
+51 ;.. USER# pointer to file #200
WRITE ?DVBC2,$JUSTIFY($PIECE(DVBRPTDATA,U,2),DVBLC2)
+52 ; USER
WRITE ?DVBC3,$EXTRACT($PIECE(DVBRPTDATA,U,3),1,DVBLC3)
+53 ; SERVICE
WRITE ?DVBC4,$EXTRACT($PIECE(DVBRPTDATA,U,4),1,DVBLC4)
+54 ; FIRST TIME OPTION USED
WRITE ?DVBC5,$EXTRACT($PIECE(DVBRPTDATA,U,5),1,DVBLC5)
+55 ; LAST TIME OPTION USED
WRITE ?DVBC6,$EXTRACT($PIECE(DVBRPTDATA,U,6),1,DVBLC6)
+56 ;.. USAGE COUNT
WRITE ?DVBC7,$JUSTIFY($PIECE(DVBRPTDATA,U,7),DVBLC7)
+57 ; Count number of Options
SET DVBCNT("PRINTED")=DVBCNT("PRINTED")+1
+58 ; Number of users
SET DVBSTOT("USERS")=DVBSTOT("USERS")+1
+59 ; Usage count
SET DVBSTOT("USAGE")=DVBSTOT("USAGE")+$PIECE(DVBRPTDATA,U,7)
End DoDot:6
End DoDot:5
End DoDot:4
End DoDot:3
End DoDot:2
End DoDot:1
+60 if DVBQUIT
QUIT
+61 ;
+62 DO STOT
if DVBQUIT
QUIT
+63 DO GTOT
+64 ;
+65 ;
IF DVBCNT("PRINTED")
Begin DoDot:1
+66 IF 'DVBQUIT
DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+67 WRITE !
+68 IF 'DVBQUIT
DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+69 WRITE !
+70 WRITE ?DVBC1,"Number of audit records listed..: ",DVBCNT("PRINTED")
End DoDot:1
+71 ;
+72 ;
IF "^1^2^3^4^"[("^"_DVBSORT_"^")
Begin DoDot:1
+73 IF 'DVBQUIT
DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+74 WRITE !
+75 WRITE ?DVBC1,"Number of unique options listed.: ",$JUSTIFY(DVBCNT("OPTS"),$LENGTH(DVBCNT("PRINTED")))
End DoDot:1
+76 ;
+77 ;
IF "^7^8^9^10^"[("^"_DVBSORT_"^")
Begin DoDot:1
+78 IF 'DVBQUIT
DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+79 WRITE !
+80 WRITE ?DVBC1,"Number of parent services listed: ",$JUSTIFY(DVBCNT("PSVC"),$LENGTH(DVBCNT("PRINTED")))
End DoDot:1
+81 ;
+82 ; Print inactive user legend
IF DVBLEGEND=1
Begin DoDot:1
+83 IF 'DVBQUIT
DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+84 WRITE !
+85 WRITE ?DVBC1,"Legend: Inactive users are prefixed with an asterisk (*)."
End DoDot:1
+86 ;
EXIT ; Exit PRINT^DVBAUDUU2
+1 ;
+2 ; Quit PRINT^DVBAUDU2
QUIT
+3 ;
GTOT ; Print grand totals at the end of the report
+1 ;
+2 ; ZEXCEPT: DVBGTOT,DVBLC3,DVBLC7,DVBLINED
+3 ;
+4 ; No totals to print
if 'DVBGTOT("USERS")
QUIT
+5 ;
+6 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+7 WRITE !
+8 WRITE ?DVBC3,$EXTRACT(DVBLINED,1,DVBLC3)
+9 WRITE ?DVBC7,$EXTRACT(DVBLINED,1,DVBLC7)
+10 ;
+11 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+12 WRITE !
+13 WRITE ?DVBC3,$JUSTIFY(DVBGTOT("USERS"),DVBLC3)
+14 WRITE ?DVBC7,$JUSTIFY(DVBGTOT("USAGE"),DVBLC7)
+15 ;
GTOTINIT ; Initialize grand totals
+1 ;
+2 ; Number of records
SET DVBGTOT("USERS")=0
+3 ; Total Usage counts
SET DVBGTOT("USAGE")=0
+4 ;
+5 ; Quit DVBGTOT & GTOTINIT
QUIT
+6 ;
PRINTHD ; Print report header
+1 ;
+2 NEW DVBCOL
+3 ; ZEXCEPT: DVBCOORD,IOF,IOM,L,DVBLASTREF
+4 ; ZEXCEPT" DVBC1,DVBC2,DVBC3,DVBC4,DVBC5,DVBC6,DVBC7,DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7
+5 ; ZEXCEPT: IOF,IOM,IOST,DVBLIMIT,DVBMGNAME,DVBASKDT,DVBDT,DVBDTBEG,DVBDTEND
+6 ; ZEXCEPT: DVBFLAG1,DVBFTBEG,DVBFTEND,DVBLINED,DVBLINEE,DVBOPT,DVBOPTION
+7 ; ZEXCEPT: DVBPG,DVBPKG,DVBRPT,DVBREFCNT,DVBSORTBY,DVBTYPE,DVBUSERNAME
+8 ;
+9 if $EXTRACT(IOST,1,2)="C-"
WRITE @IOF
+10 ;.... Calculate page number column position
SET DVBCOL=(IOM-7)-$LENGTH(DVBPG)
+11 ; Report title
DO CENTER^DVBAUDPRT1(DVBOPTION)
+12 ;
+13 ;
IF DVBRPT=1
Begin DoDot:1
+14 ; Show the selected option on the header
IF DVBOPT("CNT")=1
Begin DoDot:2
+15 DO CENTER^DVBAUDPRT1("Selected Option: "_$ORDER(DVBOPT("B","")))
End DoDot:2
+16 ; DVBTEXT would be too long, make it generic
IF DVBOPT("CNT")>3
Begin DoDot:2
+17 DO CENTER^DVBAUDPRT1("SPECIFIC OPTIONS WERE SELECTED")
End DoDot:2
+18 ;
IF DVBOPT("CNT")>1
Begin DoDot:2
+19 NEW DVBJ,DVB2OPT,DVBTEXT
+20 SET (DVB2OPT,DVBTEXT)=""
+21 ;
FOR DVBJ=1:1:DVBOPT("CNT")
SET DVB2OPT=$ORDER(DVBOPT("B",DVB2OPT))
Begin DoDot:3
+22 SET DVBTEXT=DVBTEXT_$SELECT(DVBJ>1:", ",1:"")_DVB2OPT
End DoDot:3
+23 DO CENTER^DVBAUDPRT1("Options: "_DVBTEXT)
End DoDot:2
End DoDot:1
+24 ;
+25 ; Report selection is by free DVBTEXT range
IF DVBRPT=2
Begin DoDot:1
+26 ;Display range
DO CENTER^DVBAUDPRT1("Options: "_DVBFTBEG_" to "_DVBFTEND)
End DoDot:1
+27 ; Report selection is by package namespace
IF DVBRPT=3
Begin DoDot:1
+28 DO CENTER^DVBAUDPRT1("Package namespace: "_DVBPKG)
End DoDot:1
+29 ;
+30 ; If report is NOT limited by date range
IF DVBASKDT="NO"
Begin DoDot:1
+31 DO CENTER^DVBAUDPRT1("NO SPECIFIC LAST AUDIT DATE RANGE DVBLIMIT WAS SPECIFIED")
End DoDot:1
+32 ; If report is limited by date range
IF DVBASKDT="YES"
Begin DoDot:1
+33 DO CENTER^DVBAUDPRT1("For options LAST USED used from: "_DVB2DTBEG("E")_" to "_DVB2DTEND("E"))
End DoDot:1
+34 ;
+35 ;... Include selected user limitation
DO CENTER^DVBAUDPRT1(DVBLIMIT)
+36 ;............... Reporting date
WRITE !?DVBC1,DVBDT
+37 ; Include sorting method
DO CENTER^DVBAUDPRT1("Sorted by: "_DVBSORTBY,0)
+38 ;...... Display page number
WRITE ?DVBCOL,"PAGE: ",DVBPG
+39 ;............... Draw a line before displaying column hdr
WRITE !,DVBLINEE
+40 ;
PRINTHD1 ; Print column headers
+1 ;
+2 ;....................... Column header line 1
WRITE !
+3 WRITE ?DVBC5,"FIRST"
+4 WRITE ?DVBC6,"LAST"
+5 WRITE ?DVBC7,"USAGE"
+6 ;
+7 ;....................... Column header line 2
WRITE !
+8 WRITE ?DVBC1,"OPTION NAME"
+9 WRITE ?DVBC2,"DUZ"
+10 WRITE ?DVBC3,"USER NAME"
+11 WRITE ?DVBC4,"PARENT SERVICE"
+12 WRITE ?DVBC5,"USED"
+13 WRITE ?DVBC6,"USED"
+14 WRITE ?DVBC7,"COUNT"
+15 ;
+16 ;....................... Draw a line under each column header
WRITE !
+17 WRITE ?DVBC1,$EXTRACT(DVBLINED,1,DVBLC1)
+18 WRITE ?DVBC2,$EXTRACT(DVBLINED,1,DVBLC2)
+19 WRITE ?DVBC3,$EXTRACT(DVBLINED,1,DVBLC3)
+20 WRITE ?DVBC4,$EXTRACT(DVBLINED,1,DVBLC4)
+21 WRITE ?DVBC5,$EXTRACT(DVBLINED,1,DVBLC5)
+22 WRITE ?DVBC6,$EXTRACT(DVBLINED,1,DVBLC6)
+23 WRITE ?DVBC7,$EXTRACT(DVBLINED,1,DVBLC7)
+24 ;
+25 ; Quit PRINTHD & PRINTHD1
QUIT
+26 ;
PRINTINI ; Initialize variables, set column positions and length of columns
+1 ;
+2 ; ZEXCEPT: DVBC1,DVBC10,DVBC11,DVBC2,DVBC3,DVBC4,DVBC5,DVBC6,DVBC7,DVBCNT
+3 ; ZEXCEPT: DVBLC1,DVBLC10,DVBLC11,DVBLC2,DVBLC3,DVBLC4,DVBLC5,DVBLC6,DVBLC7
+4 ; ZEXCEPT: DVBLIMIT,DVBRPT,DVBSORT,DVBULIMIT,DVBSORTBY
+5 ;
+6 ; Initialize commonly used printed report variables
+7 DO INITPRT^DVBAUDPRT1
+8 ;
+9 ; Init DVBCOL pos's & length
+10 SET DVBC1=1
SET DVBC2=33
SET DVBC3=42
SET DVBC4=73
SET DVBC5=104
SET DVBC6=114
SET DVBC7=124
+11 SET DVBLC1=30
SET DVBLC2=7
SET DVBLC3=29
SET DVBLC4=29
SET DVBLC5=8
SET DVBLC6=8
SET DVBLC7=7
+12 ;
+13 SET DVBSORTBY=$$UP^XLFSTR(DVBSORT)
+14 ; Sorted by DVBTEXT in uppercase
IF DVBSORTBY=""
SET DVBSORTBY=$$UP^XLFSTR(DVBSORT(DVBSORT))
+15 ; DVBLIMIT report to which users?
SET DVBLIMIT=$$DVBLIMIT(DVBULIMIT)
+16 ; Number of printed records
SET DVBCNT("PRINTED")=0
+17 ;... Number of unique printed options (for sort 1-4)
SET DVBCNT("OPTS")=0
+18 ;... Number of unique parent services (for sort 7-10)
SET DVBCNT("PSVC")=0
+19 ;
+20 ; Initialize sub-totals & grand totals for various control breaks
+21 DO STOTINIT
DO GTOTINIT
+22 ;
+23 ; Quit PRINTINI
QUIT
+24 ;
DVBLIMIT(DVBLIMIT) ; Return: Which users were included
+1 ;
+2 IF DVBLIMIT=1
QUIT "BOTH ACTIVE AND INACTIVE USERS"
+3 IF DVBLIMIT=2
QUIT "ONLY ACTIVE USERS"
+4 IF DVBLIMIT=3
QUIT "ONLY INACTIVE USERS"
+5 ;
+6 ; Quit extrinsic function $$DVBLIMIT
QUIT ""
+7 ;
STOT ; Print subtotals on each control break & accumulate grand totals
+1 ;
+2 ; ZEXCEPT: DVBGTOT,DVBLC3,DVBLC7,DVBLINED,DVBSTOT
+3 ;
+4 ; No totals to print
if 'DVBSTOT("USERS")
QUIT
+5 ;
+6 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+7 WRITE !
+8 WRITE ?DVBC3,$EXTRACT(DVBLINED,1,DVBLC3)
+9 WRITE ?DVBC7,$EXTRACT(DVBLINED,1,DVBLC7)
+10 ;
+11 DO PAGEBRK^DVBAUDPRT1($TEXT(+0),.DVBPG,1)
if DVBQUIT
QUIT
+12 WRITE !
+13 WRITE ?DVBC3,$JUSTIFY(DVBSTOT("USERS"),DVBLC3)
+14 WRITE ?DVBC7,$JUSTIFY(DVBSTOT("USAGE"),DVBLC7)
+15 ;
+16 ; Accumlate grand totals
+17 SET DVBGTOT("USERS")=DVBGTOT("USERS")+DVBSTOT("USERS")
+18 SET DVBGTOT("USAGE")=DVBGTOT("USAGE")+DVBSTOT("USAGE")
+19 ;
IF DVBGTOT("USERS")=DVBSTOT("USERS")
IF DVBGTOT("USAGE")=DVBSTOT("USAGE")
Begin DoDot:1
+20 ; Zero out grand totals so they do not print duplicate numbers
+21 SET (DVBGTOT("USERS"),DVBGTOT("USAGE"))=0
End DoDot:1
+22 ;
STOTINIT ; Initialize subtotals
+1 ;
+2 ; Number of records
SET DVBSTOT("USERS")=0
+3 ; Total Usage counts
SET DVBSTOT("USAGE")=0
+4 ;
+5 ; Quit DVBSTOT & STOTINIT
QUIT