Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: DVBAUDUU1

DVBAUDUU1.m

Go to the documentation of this file.
DVBAUDUU1 ;ALB/CP - Audited Option User Utilization Build ; 3/28/18 9:16am
 ;;2.7;AMIE;**256**;;Build 19
 ; Per VHA Directive 6402 this routine should not be modified
 ;          GET1^DIQ      ; IA #2056
 ;      $$ACTIVE^XUSER    ; IA #2343
 ;   ^DIC(19,"B",         ; IA #2509
 ;
 Q
 ;
BUILD ; Driver for building sorted ^TMP global
 ;
 ;
 N DVBBUILD
 ; ZEXCEPT: DVBRPT
 ;
 S DVBBUILD="BUILD"_DVBRPT ; becomes BUILD1, BUILD2, or BUILD3
 D @DVBBUILD
 ;
EXIT ; Exit BUILD^DVBAUDUU1
 Q  ; Quit BUILD^DVBAUDUU
 ;
BUILD1 ; User selected specific audited OPTIONs found in DVBOPT(array).
 ;
 N DIERR,DVBIEN19,DVBIEN200,DVBOPTNAME,DVBIEN19,DVBQUIT
 ; ZEXCEPT: DVBOPT
 ;
 S DVBQUIT=0
 S DVBIEN19=0 ; Loop thru user's selected Options
 F  S DVBIEN19=$O(DVBOPT(DVBIEN19)) Q:'DVBIEN19!DVBQUIT  D  ;
 . ;
 . S DVBIEN200=0 ; IEN to top level of IVV OPTION AUDITOR-USER #396.9992
 . F  S DVBIEN200=$O(^DVB(396.9992,"OPTION",DVBIEN19,DVBIEN200)) Q:'DVBIEN200!DVBQUIT  D
 .. S DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E","","DVBERRMSG")
 .. D DIERR^DVBAUDDILG1(40,5,"","DVBERRMSG","BUILD1^"_$T(+0)) Q:DVBQUIT
 .. D CONTINUE(DVBIEN19,DVBOPTNAME,DVBIEN200)
 ;
 Q  ; Quit BUILD1
 ;
BUILD2 ; User selected specific free text range found in DVBFTBEG & DVBFTEND
 ;
 N DVBIEN19,DVBOPTNAME
 ; ZEXCEPT: DVBFTBEG,DVBFTEND
 ;
 S DVBOPTNAME=DVBFTBEG ; Loop thru Options names w/free text from-to range
 F  S DVBOPTNAME=$O(^DIC(19,"B",DVBOPTNAME)) Q:DVBOPTNAME=""!(DVBOPTNAME]DVBFTEND)  S DVBIEN19="" D
 . F  S DVBIEN19=$O(^DIC(19,"B",DVBOPTNAME,DVBIEN19)) Q:'DVBIEN19  D  ;
 .. Q:'$D(^DVB(396.9992,"OPTION",DVBIEN19))  ; Option not audited
 .. N DVBIEN200
 .. S DVBIEN200=0
 .. F  S DVBIEN200=$O(^DVB(396.9992,"OPTION",DVBIEN19,DVBIEN200)) Q:'DVBIEN200  D
 ... D CONTINUE(DVBIEN19,DVBOPTNAME,DVBIEN200)
 ;
 Q  ; Quit BUILD2
 ;
BUILD3 ; User selected package namespace found in DVBPKG
 ;
 N DVBIEN19,DVBIEN200,DVBOPTNAME
 ; ZEXCEPT: DVBPKG
 ;
 S DVBOPTNAME=DVBPKG ; Loop thru Option names using the package namespace
 F  S DVBOPTNAME=$O(^DIC(19,"B",DVBOPTNAME)) Q:DVBOPTNAME=""!($E(DVBOPTNAME,1,$L(DVBPKG))'=DVBPKG)  D
 . S DVBIEN19=0
 . F  S DVBIEN19=$O(^DIC(19,"B",DVBOPTNAME,DVBIEN19)) Q:'DVBIEN19  D  ;
 .. Q:'$D(^DVB(396.9992,"OPTION",DVBIEN19))  ; Option not audited
 .. N DVBIEN200
 .. S DVBIEN200=0
 .. F  S DVBIEN200=$O(^DVB(396.9992,"OPTION",DVBIEN19,DVBIEN200)) Q:'DVBIEN200  D  ;
 ... D CONTINUE(DVBIEN19,DVBOPTNAME,DVBIEN200)
 ;
 Q  ; Quit BUILD3
 ;
CONTINUE(DVBIEN19,DVBOPTNAME,DVBIEN200) ; Audited Option User Utilization Build
 N DVBACTUSER,DIERR,DVBIENS,DVBNEWPERS,DVBOPTION,DVBPARSVC
 N DVBSKIP,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBSORTBY
 N DVBSVC,DVBSVCI,DVBTITLE,DVBTITLEI,DVBUOPTION,DVBUSAGE,DVBUSER
 ; ZEXCEPT: DVBASKDT,DVBDTBEG,DVBDTEND,DVBLEGEND,DVBQUIT,DVBSORT,DVBULIMIT,U
 ;
 ; Retrieve data related to the top level of file #396.9992
 ;
 S DVBACTUSER=$P($$ACTIVE^XUSER(DVBIEN200),U,1)
 I DVBULIMIT=2,DVBACTUSER=0 Q
 I DVBULIMIT=3,DVBACTUSER=1 Q
 D NEWPERS^DVBAUDDIQ(DVBIEN200) Q:DVBQUIT
 D PARSVC^DVBAUDDIQ(+DVBNEWPERS("SVCI"))
 I DVBPARSVC("IEN49")=0 D  ;
 . S DVBPARSVC("IEN49")=+DVBNEWPERS("SVCI")
 . S DVBPARSVC("NAME")=DVBNEWPERS("SVC")
 . I DVBPARSVC("IEN49")=0 D  ;
 . . S DVBPARSVC("NAME")="<NoParentService>"
 . . S DVBPARSVC="<NoParentService>"
 ;
 ; Prefix inactive usernames with an '*'
 ;
 S DVBNEWPERS("USERNAME")=$S(DVBACTUSER=0:"*",1:"")_DVBNEWPERS("USERNAME")
 ; Retrieve data related to the DVBOPTION (multiple) of file #396.9992
 D UOPTION^DVBAUDDIQ(DVBIEN200,DVBIEN19) Q:DVBQUIT  ; Returns DVBUOPTION(array)
 S DVBSKIP=0 D SCREEN Q:DVBSKIP
 I $E(DVBACTUSER)=0 S DVBLEGEND=1 ; Inactive user, display legend at end of rpt
 ;
 ; Setup various sort variables and set the ^TMP global
 ;
 S DVBSORTBY="SORT"_DVBSORT D @DVBSORTBY
 D SETTMP(DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBIEN200)
 ;
 Q  ; Quit subroutine CONTINUE
 ;
SCREEN ; Screen the record
 ; Output:
 ;   DVBSKIP ; 0 ; All screens have passed, allow record to be utilized
 ;            1 ; One or more screens failed, so skip the record
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBASKDT,DVBDTBEG,DVBDTEND,DVBSKIP,DVBUOPTION
 ;
 ; Skip the record if no DVBOPTION (multiple) is defined for the user
 I '$D(^DVB(396.9992,DVBIEN200,"OPTION",DVBIEN19,0)) S DVBSKIP=1 Q
 ;
 I DVBASKDT="YES" D  Q:DVBSKIP  ; Check for optional data ranage
 . I $P(DVBUOPTION("DTLASTI"),".")<DVB2DTBEG("I") S DVBSKIP=1 Q
 . I $P(DVBUOPTION("DTLASTI"),".")>DVB2DTEND("I") S DVBSKIP=1 Q
 ;
 ;
 Q  ; Quit subroutine SCREEN
 ;
SETTMP(DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBIEN200) ; Set the ^TMP global data
 ;
 N DVBRPTDATA,DVB2OPTION
 ; ZEXCEPT: DVBIEN200,DVBNEWPERS,DVBOPTNAME,DVBPARSVC,DVB2OPTION,DVBUSAGE,DVBUSAGE,DVBUOPTION
 ;
 S DVBRPTDATA=DVBOPTNAME_"^"
 S DVBRPTDATA=DVBRPTDATA_DVBIEN200_"^"
 S DVBRPTDATA=DVBRPTDATA_DVBNEWPERS("USERNAME")_"^"
 S DVBRPTDATA=DVBRPTDATA_DVBPARSVC("NAME")_"^"
 S DVBRPTDATA=DVBRPTDATA_DVBUOPTION("DT1ST")_"^"
 S DVBRPTDATA=DVBRPTDATA_DVBUOPTION("DTLAST")_"^"
 S DVBRPTDATA=DVBRPTDATA_DVBUOPTION("COUNTER")
 ;
 S DVB2OPTION=$P($G(XQY0),U,2)
 S ^TMP("AMIE",$J,DVB2OPTION,DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6)=DVBRPTDATA
 ;
 Q  ; Quit SETTMP
 ;
SORT1 ; Sort by OPTION & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6
 ;
 S DVBSORT1=DVBOPTNAME
 S DVBSORT2=DVBIEN19
 S DVBSORT3="<Sort3>"
 S DVBSORT4="<Sort4>"
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT1
 ;
SORT2 ; Sort by OPTION, PARENT SERVICE & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBPARSVC,DVBOPTNAME
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6
 ;
 S DVBSORT1=DVBOPTNAME
 S DVBSORT2=DVBIEN19
 S DVBSORT3=DVBPARSVC("NAME")
 S DVBSORT4=DVBPARSVC("IEN49")
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT2
 ;
 ;------------------------------------------------------------------
SORT3 ; Sort by OPTION, DATE LAST USED & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBIENS,DVBNEWPERS,DVBOPTION,DVBOPTNAME,DVBUOPTION
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6
 ;
 S DVBSORT1=DVBOPTNAME
 S DVBSORT2=DVBIEN19
 S DVBSORT3=-DVBUOPTION("DTLASTI") ; dt last used (reverse order)
 S DVBSORT4="<Sort4>"
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT3
 ;
SORT4 ; Sort by OPTION, DVBUSAGE COUNT & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=DVBOPTNAME
 S DVBSORT2=DVBIEN19
 S DVBSORT3=-DVBUOPTION("COUNTER") ; Puts DVBUSAGE in reverse order
 S DVBSORT4="<Sort4>"
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT4
 ;
 ;------------------------------------------------------------------
SORT5 ; Sort by DVBUSAGE COUNT, OPTION & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=-DVBUOPTION("COUNTER") ; Puts DVBUSAGE in reverse order
 S DVBSORT2="<Sort2>"
 S DVBSORT3=DVBOPTNAME
 S DVBSORT4=DVBIEN19
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT5
 ;
SORT6 ; Sort by DVBUSAGE COUNT, PARENT SERVICE & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME,DVBPARSVC
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=-DVBUOPTION("COUNTER") ; Puts DVBUSAGE in reverse order
 S DVBSORT2=DVBPARSVC("NAME")
 S DVBSORT3=DVBPARSVC("IEN49")
 S DVBSORT4=DVBNEWPERS("USERNAME")
 S DVBSORT5=DVBIEN200
 S DVBSORT6=DVBIEN19 ; Needed so no sub-file entry is dropped
 ;
 Q  ; Quit SORT6
 ;
SORT7 ; Sort by PARENT SERVICE, OPTION & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME,DVBPARSVC
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=DVBPARSVC("NAME")
 S DVBSORT2=DVBPARSVC("IEN49")
 S DVBSORT3=DVBOPTNAME
 S DVBSORT4=DVBIEN19
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT7
 ;
SORT8 ; Sort by PARENT SERVICE, USER, & OPTION
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME,DVBPARSVC
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=DVBPARSVC("NAME")
 S DVBSORT2=DVBPARSVC("IEN49")
 S DVBSORT3=DVBNEWPERS("USERNAME")
 S DVBSORT4=DVBIEN200
 S DVBSORT5=DVBOPTNAME
 S DVBSORT6=DVBIEN19
 ;
 Q  ; Quit SORT8
 ;
SORT9 ; Sort by PARENT SERVICE, DATE LAST USED & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME,DVBPARSVC
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=DVBPARSVC("NAME")
 S DVBSORT2=DVBPARSVC("IEN49")
 S DVBSORT3=-DVBUOPTION("DTLASTI") ; dt last used (reverse order)
 S DVBSORT4=DVBNEWPERS("USERNAME")
 S DVBSORT5=DVBIEN200
 S DVBSORT6=DVBIEN19 ; Added to make sure records were not dropped
 ;
 Q  ; Quit SORT9
 ;
SORT10 ; Sort by PARENT SERVICE, DATE LAST USED & OPTION
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME,DVBPARSVC
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=DVBPARSVC("NAME")
 S DVBSORT2=DVBPARSVC("IEN49")
 S DVBSORT3=-DVBUOPTION("DTLASTI") ; dt last used (reverse order)
 S DVBSORT4=DVBOPTNAME
 S DVBSORT5=DVBIEN19
 S DVBSORT6=DVBIEN200 ; Added to make sure records were not dropped
 ;
 Q  ; Quit SORT10
 ;
SORT11 ; Sort by DATE LAST USED, OPTION, & USER
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=-DVBUOPTION("DTLASTI") ; dt last used (reverse orderer)
 S DVBSORT2="<Sort2>"
 S DVBSORT3=DVBOPTNAME
 S DVBSORT4=DVBIEN19
 S DVBSORT5=DVBNEWPERS("USERNAME")
 S DVBSORT6=DVBIEN200
 ;
 Q  ; Quit SORT11
 ;
SORT12 ; Sort by DATE LAST USED, USER & OPTION
 ;
 ; ZEXCEPT: DVBIEN19,DVBIEN200,DVBNEWPERS,DVBOPTNAME
 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSORT3,DVBSORT4,DVBSORT5,DVBSORT6,DVBUOPTION
 ;
 S DVBSORT1=-DVBUOPTION("DTLASTI") ; dt last used (reverse orderer)
 S DVBSORT2="<Sort2>"
 S DVBSORT3=DVBNEWPERS("USERNAME")
 S DVBSORT4=DVBIEN200
 S DVBSORT5=DVBOPTNAME
 S DVBSORT6=DVBIEN19
 ;
 Q  ; Quit SORT12