DVBAUDUI1 ;ALB/CP - User Audit Summary Inquiry Build ; 3/27/18 2:27pm
;;2.7;AMIE;**256**;;Build 19
; Per VHA Directive 6402 this routine should not be modified
;
Q
;
BUILD ; Build a sorted ^TMP global based on user DVBSORT preference.
;
; From option: User Audit Summary Inquiry
; [DVBA USER AUDIT SUMMARY INQ]
;
N DVBQUIT,DVBSORTBY
; ZEXCEPT: DVBSORT,DVB2USER
;
S DVBSORTBY="SORT"_DVBSORT ; value will be DVBSORT1, DVBSORT2, DVBSORT3, etc.
;
; Loop thru the selected Users
;
S DVBUSER="",DVBQUIT=0
F S DVBUSER=$O(DVBUSER("B",DVBUSER)) Q:DVBUSER=""!DVBQUIT D ;
. N DVBIEN200
. S DVBIEN200=0
. F S DVBIEN200=$O(DVBUSER("B",DVBUSER,DVBIEN200)) Q:'DVBIEN200!DVBQUIT D
.. ;
.. ; Loop thru the OPTION NAME (multiple) of the user summary file
.. ; #396.9992
.. N DVBIEN19
.. S DVBIEN19=0
.. F S DVBIEN19=$O(^DVB(396.9992,DVBIEN200,"OPTION",DVBIEN19)) Q:'DVBIEN19 D ;
... Q:$G(^DVB(396.9992,DVBIEN200,"OPTION",DVBIEN19,0))']"" ;Quit no zero nd
... ;
... ; Get Option UOPTION (array) for the sub-file entry
... ; -- This is the OPTION used by the audit user --
... ;
... N DVBUOPTION ; Output array from UOPTION^DVBAUDDIQ below
... D UOPTION^DVBAUDDIQ(DVBIEN200,DVBIEN19) Q:DVBQUIT ; Get user audited opt
... N DVBSKIP
... S DVBSKIP=0 D SCREEN Q:DVBSKIP ;Screen by date range, upon request
... N DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5
... D @DVBSORTBY ; Set DVBSORT1, DVBSORT2, DVBSORT3 variables based on DVBSORT
... D SETTMP(DVBUSER,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5)
;
K DVB2USER
Q ; Quit BUILD
;
SCREEN ; Screen the report by LAST AUDITED DATE when appropriate
; ZEXCEPT: DVBASKDT,DVBDTBEG,DVBDTEND,DVBSKIP,DVBUOPTION
; Output:
; DVBSKIP ; 0 ; If the record passes the screen
; 1 ; If the record is outside of the input range
;
; Limit the report to a specific date range (DVBASKDT="YES")
I DVBASKDT="YES" D Q:DVBSKIP
. ; If not sorting by AUDIT START DATE use LAST AUDITED DATE
. I $P(DVBUOPTION("DTLASTI"),".")<DVB2DTBEG("I") S DVBSKIP=1 Q
. I $P(DVBUOPTION("DTLASTI"),".")>DVB2DTEND("I") S DVBSKIP=1 Q
;
Q ; Quit SCREEN
;
SETTMP(DVBUSER,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5) ; Set ^TMP global with data
;
N DVBRPTDATA
; ZEXCEPT: DVBOPTION,DVBSVC,USAGE,U,USAGE,DVBUSER,DVBUOPTION
;
S DVBRPTDATA=DVBUOPTION("OPTNAME")_"^"
S DVBRPTDATA=DVBRPTDATA_DVBUOPTION("DT1ST")_"^"
S DVBRPTDATA=DVBRPTDATA_DVBUOPTION("DTLAST")_"^"
S DVBRPTDATA=DVBRPTDATA_DVBUOPTION("COUNTER")
;
S ^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5)=DVBRPTDATA
;
Q ; Quit SETTMP
;
SORT1 ; By USER & OPTION NAME
; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
;
S DVBSORT1=DVBUSER ;............... USER NAME
S DVBSORT2=DVBIEN200 ;............. User's IEN of NEW PERSON file #200
S DVBSORT3="<DVBSORT3>" ;.......... Not used and dummied up for DVBSORT3
S DVBSORT4=DVBUOPTION("OPTNAME") ;. OPTION NAME
S DVBSORT5=DVBIEN19 ;.............. OPTION IEN
;
Q ; Quit SORT1
;
SORT2 ; By USER & DATE LAST USER (chronological order)
; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
;
S DVBSORT1=DVBUSER ;............... USER NAME
S DVBSORT2=DVBIEN200 ;............. User's IEN of NEW PERSON file #200
S DVBSORT3=$P(DVBUOPTION("DTLASTI"),".") ; LAST TIME OPTION USED
S DVBSORT4=DVBUOPTION("OPTNAME") ;. OPTION NAME
S DVBSORT5=DVBIEN19 ;.............. OPTION IEN
;
Q ; Quit SORT2
;
SORT3 ; By USER & DATE LAST USER (reverse chronological order)
; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
;
S DVBSORT1=DVBUSER ;............... USER NAME
S DVBSORT2=DVBIEN200 ;............. User's IEN of NEW PERSON file #200
S DVBSORT3=-$P(DVBUOPTION("DTLASTI"),".") ; LAST TIME OPTION USED
S DVBSORT4=DVBUOPTION("OPTNAME") ;. OPTION NAME
S DVBSORT5=DVBIEN19 ;.............. OPTION IEN
;
Q ; Quit SORT3
;
SORT4 ; By USER & HIGHTEST TO LOWEST USAGE COUNT
; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
;
S DVBSORT1=DVBUSER ;............... DVBUSER NAME
S DVBSORT2=DVBIEN200 ;............. User's IEN of NEW PERSON file #200
S DVBSORT3=999999999-DVBUOPTION("COUNTER") ; OPTION COUNTER (reversed)
S DVBSORT4=DVBUOPTION("OPTNAME") ;. OPTION NAME
S DVBSORT5=DVBIEN19 ;.............. OPTION IEN
;
Q ; Quit SORT4
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBAUDUI1 4621 printed Sep 17, 2026@20:27:34 Page 2
DVBAUDUI1 ;ALB/CP - User Audit Summary Inquiry Build ; 3/27/18 2:27pm
+1 ;;2.7;AMIE;**256**;;Build 19
+2 ; Per VHA Directive 6402 this routine should not be modified
+3 ;
+4 QUIT
+5 ;
BUILD ; Build a sorted ^TMP global based on user DVBSORT preference.
+1 ;
+2 ; From option: User Audit Summary Inquiry
+3 ; [DVBA USER AUDIT SUMMARY INQ]
+4 ;
+5 NEW DVBQUIT,DVBSORTBY
+6 ; ZEXCEPT: DVBSORT,DVB2USER
+7 ;
+8 ; value will be DVBSORT1, DVBSORT2, DVBSORT3, etc.
SET DVBSORTBY="SORT"_DVBSORT
+9 ;
+10 ; Loop thru the selected Users
+11 ;
+12 SET DVBUSER=""
SET DVBQUIT=0
+13 ;
FOR
SET DVBUSER=$ORDER(DVBUSER("B",DVBUSER))
if DVBUSER=""!DVBQUIT
QUIT
Begin DoDot:1
+14 NEW DVBIEN200
+15 SET DVBIEN200=0
+16 FOR
SET DVBIEN200=$ORDER(DVBUSER("B",DVBUSER,DVBIEN200))
if 'DVBIEN200!DVBQUIT
QUIT
Begin DoDot:2
+17 ;
+18 ; Loop thru the OPTION NAME (multiple) of the user summary file
+19 ; #396.9992
+20 NEW DVBIEN19
+21 SET DVBIEN19=0
+22 ;
FOR
SET DVBIEN19=$ORDER(^DVB(396.9992,DVBIEN200,"OPTION",DVBIEN19))
if 'DVBIEN19
QUIT
Begin DoDot:3
+23 ;Quit no zero nd
if $GET(^DVB(396.9992,DVBIEN200,"OPTION",DVBIEN19,0))']""
QUIT
+24 ;
+25 ; Get Option UOPTION (array) for the sub-file entry
+26 ; -- This is the OPTION used by the audit user --
+27 ;
+28 ; Output array from UOPTION^DVBAUDDIQ below
NEW DVBUOPTION
+29 ; Get user audited opt
DO UOPTION^DVBAUDDIQ(DVBIEN200,DVBIEN19)
if DVBQUIT
QUIT
+30 NEW DVBSKIP
+31 ;Screen by date range, upon request
SET DVBSKIP=0
DO SCREEN
if DVBSKIP
QUIT
+32 NEW DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5
+33 ; Set DVBSORT1, DVBSORT2, DVBSORT3 variables based on DVBSORT
DO @DVBSORTBY
+34 DO SETTMP(DVBUSER,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5)
End DoDot:3
End DoDot:2
End DoDot:1
+35 ;
+36 KILL DVB2USER
+37 ; Quit BUILD
QUIT
+38 ;
SCREEN ; Screen the report by LAST AUDITED DATE when appropriate
+1 ; ZEXCEPT: DVBASKDT,DVBDTBEG,DVBDTEND,DVBSKIP,DVBUOPTION
+2 ; Output:
+3 ; DVBSKIP ; 0 ; If the record passes the screen
+4 ; 1 ; If the record is outside of the input range
+5 ;
+6 ; Limit the report to a specific date range (DVBASKDT="YES")
+7 IF DVBASKDT="YES"
Begin DoDot:1
+8 ; If not sorting by AUDIT START DATE use LAST AUDITED DATE
+9 IF $PIECE(DVBUOPTION("DTLASTI"),".")<DVB2DTBEG("I")
SET DVBSKIP=1
QUIT
+10 IF $PIECE(DVBUOPTION("DTLASTI"),".")>DVB2DTEND("I")
SET DVBSKIP=1
QUIT
End DoDot:1
if DVBSKIP
QUIT
+11 ;
+12 ; Quit SCREEN
QUIT
+13 ;
SETTMP(DVBUSER,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5) ; Set ^TMP global with data
+1 ;
+2 NEW DVBRPTDATA
+3 ; ZEXCEPT: DVBOPTION,DVBSVC,USAGE,U,USAGE,DVBUSER,DVBUOPTION
+4 ;
+5 SET DVBRPTDATA=DVBUOPTION("OPTNAME")_"^"
+6 SET DVBRPTDATA=DVBRPTDATA_DVBUOPTION("DT1ST")_"^"
+7 SET DVBRPTDATA=DVBRPTDATA_DVBUOPTION("DTLAST")_"^"
+8 SET DVBRPTDATA=DVBRPTDATA_DVBUOPTION("COUNTER")
+9 ;
+10 SET ^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5)=DVBRPTDATA
+11 ;
+12 ; Quit SETTMP
QUIT
+13 ;
SORT1 ; By USER & OPTION NAME
+1 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
+2 ;
+3 ;............... USER NAME
SET DVBSORT1=DVBUSER
+4 ;............. User's IEN of NEW PERSON file #200
SET DVBSORT2=DVBIEN200
+5 ;.......... Not used and dummied up for DVBSORT3
SET DVBSORT3="<DVBSORT3>"
+6 ;. OPTION NAME
SET DVBSORT4=DVBUOPTION("OPTNAME")
+7 ;.............. OPTION IEN
SET DVBSORT5=DVBIEN19
+8 ;
+9 ; Quit SORT1
QUIT
+10 ;
SORT2 ; By USER & DATE LAST USER (chronological order)
+1 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
+2 ;
+3 ;............... USER NAME
SET DVBSORT1=DVBUSER
+4 ;............. User's IEN of NEW PERSON file #200
SET DVBSORT2=DVBIEN200
+5 ; LAST TIME OPTION USED
SET DVBSORT3=$PIECE(DVBUOPTION("DTLASTI"),".")
+6 ;. OPTION NAME
SET DVBSORT4=DVBUOPTION("OPTNAME")
+7 ;.............. OPTION IEN
SET DVBSORT5=DVBIEN19
+8 ;
+9 ; Quit SORT2
QUIT
+10 ;
SORT3 ; By USER & DATE LAST USER (reverse chronological order)
+1 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
+2 ;
+3 ;............... USER NAME
SET DVBSORT1=DVBUSER
+4 ;............. User's IEN of NEW PERSON file #200
SET DVBSORT2=DVBIEN200
+5 ; LAST TIME OPTION USED
SET DVBSORT3=-$PIECE(DVBUOPTION("DTLASTI"),".")
+6 ;. OPTION NAME
SET DVBSORT4=DVBUOPTION("OPTNAME")
+7 ;.............. OPTION IEN
SET DVBSORT5=DVBIEN19
+8 ;
+9 ; Quit SORT3
QUIT
+10 ;
SORT4 ; By USER & HIGHTEST TO LOWEST USAGE COUNT
+1 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBUOPTION,DVBUSER
+2 ;
+3 ;............... DVBUSER NAME
SET DVBSORT1=DVBUSER
+4 ;............. User's IEN of NEW PERSON file #200
SET DVBSORT2=DVBIEN200
+5 ; OPTION COUNTER (reversed)
SET DVBSORT3=999999999-DVBUOPTION("COUNTER")
+6 ;. OPTION NAME
SET DVBSORT4=DVBUOPTION("OPTNAME")
+7 ;.............. OPTION IEN
SET DVBSORT5=DVBIEN19
+8 ;
+9 ; Quit SORT4
QUIT