DVBAUDAO1 ;ALB/CP - List Audited Option Summary Build ; 4/12/18 5:57pm
;;2.7;AMIE;**256**;;Build 19
; Per VHA Directive 6402 this routine should not be modified
; $$FIND1^DIC ; IA # 2051
; $$GET1^DIQ ; IA # 2056
; $$FMDIFF^XLFDT ; IA #10103
; $$UP^XLFSTR ; IA #10104
; ^DIC(19, ; IA # 2246
;
;
Q
;
BUILD ; Build sorted ^TMP global for report output.
; ZEXCEPT: DVBRPT
;
; From option: List Audited option Summary
; [AMIE LIST AUDITED OPTION SUM]
;
; This driver will execute the most efficient loop based upon DVBRPT.
;
I DVBRPT=1 D BUILDOPT Q ;. Include all currently audited options
I DVBRPT=2 D BUILDOPT Q ;. Audited options never utilized
I DVBRPT=3 D BUILDOPT Q ;. Options with low or no usage
I DVBRPT=4 D BUILDSUM Q ;. Options with high usage
I DVBRPT=5 D BUILDSUM Q ;. Options added to the audit list within 'X' number oo
I DVBRPT=6 D BUILDSUM Q ;. Options not used within 'X' number of days
I DVBRPT=7 D BUILDSUM Q ;. Options used within the last 'X' number of days
I DVBRPT=8 D BUILDFT Q ;.. User selected free text range of Options
I DVBRPT=9 D BUILDPKG Q ;. User selected package namespace
I DVBRPT=10 D BUILDSUM Q ; Audited options that are regularly recurring tasks
I DVBRPT=11 D BUILDSUM Q ; All audits option with recorded usage
;
EXIT ; Exit BUILD^DVBAUDOA1
;
Q ; Quit routine BUILD^DVBAUDOA1
;
BUILDFT ; User selected specific free text range found in DVBFTBEG & DVBFTEND
;
N DVBCNT,DVBOPTNAME
; ZEXCEPT: DVBFTBEG,DVBFTEND
;
S DVBCNT=0
S DVBOPTNAME=DVBFTBEG ; Loop thru options names using free text from-to range
F S DVBOPTNAME=$O(^DIC(19,"B",DVBOPTNAME)) Q:DVBOPTNAME=""!(DVBOPTNAME]DVBFTEND) D ;
. S DVBCNT=DVBCNT+1 ;........ Count the number of records processed
. D DOTS^DVBAUDPRT2(DVBCNT) ; Display a dot every 100 records
. N DVBIEN19
. S DVBIEN19=0
. F S DVBIEN19=$O(^DIC(19,"B",DVBOPTNAME,DVBIEN19)) Q:'DVBIEN19 D
.. Q:'$D(^DVB(396.9991,"B",DVBIEN19,DVBIEN19)) ; Quit if no SUMMARY BY OPTION stub rd
.. ;
.. D COMMON(DVBIEN19,DVBOPTNAME)
;
Q ; Quit BUILDFT
;
BUILDOPT ; Loop through the entire AMIE AUDIT SUMMARY BY OPTION
; file #396.9991
N DVBCNT,DVBIEN19,DVBQUIT
;
S (DVBQUIT,DVBCNT,DVBIEN19)=0
F S DVBIEN19=$O(^DVB(396.9991,DVBIEN19)) Q:'DVBIEN19!DVBQUIT D ;
. N DIERR,DVBOPTNAME,DVBERRMSG
. S DVBCNT=DVBCNT+1 ;........ Count the number of records processed
. D DOTS^DVBAUDPRT2(DVBCNT) ; Display a dot every 100 records
. S DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
. D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","BUILDDVBOPT^"_$T(+0)) Q:DVBQUIT
. Q:DVBOPTNAME=""
. ;
. D COMMON(DVBIEN19,DVBOPTNAME)
;
Q ; Quit BUILDOPT
;
BUILDPKG ; User selected package namespace found in DVBPKG
;
N DVBCNT,DVBOPTNAME
; ZEXCEPT: DVBPKG
;
S DVBCNT=0
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 DVBCNT=DVBCNT+1 ;........ Count the number of records processed
. D DOTS^DVBAUDPRT2(DVBCNT) ; Display a dot every 100 records
. N DVBIEN19
. S DVBIEN19=0
. F S DVBIEN19=$O(^DIC(19,"B",DVBOPTNAME,DVBIEN19)) Q:'DVBIEN19 D ;
.. Q:'$D(^DVB(396.9991,"B",DVBIEN19,DVBIEN19)) ; Quit if no SUMMARY BY OPTION stub rd
.. N DIERR,DVBERRMSG
.. S DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
.. D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","BUILDPKG^"_$T(+0)) Q:DVBQUIT
.. ;
.. D COMMON(DVBIEN19,DVBOPTNAME)
;
Q ; Quit BUILDPKG
;
BUILDSUM ; Loop through AMIE AUDIT SUMMARY BY OPTION file #396.9991
;
N DVBCNT,DVBIEN19
;
S (DVBCNT,DVBIEN19)=0
F S DVBIEN19=$O(^DVB(396.9991,DVBIEN19)) Q:'DVBIEN19 D ;
. N DIERR,DVBOPTNAME,DVBERRMSG
. S DVBCNT=DVBCNT+1 ;........ Count the number of records processed
. D DOTS^DVBAUDPRT2(DVBCNT) ; Display a dot every 100 records
. S DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
. D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","BUILDSUM^"_$T(+0)) Q:DVBQUIT
. D COMMON(DVBIEN19,DVBOPTNAME)
;
Q ; Quit BUILDSUM
;
COMMON(DVBIEN19,DVBOPTNAME) ; Code used by all BUILD loops above
N DVBSUMOPT,DVBSAVEOPT
S DVBSAVEOPT=$G(DVBOPT)
N DVBOPT
;
; Get OPTION file #19 report data
;
D OPTION^DVBAUDDIQ(DVBIEN19) Q:DVBQUIT
;
D SUMOPT^DVBAUDDIQ(DVBIEN19) ; Get AMIE AUDIT SUMMARY BY OPTION data
;
; Screen the record and skip over any record that does not pass
; all of the various screens.
;
S DVBOPT=$G(DVBSAVEOPT)
N DVBSKIP
;
S DVBSKIP=0 D SCREEN(.DVBSUMOPT) Q:DVBSKIP
;
D SETTMP(DVBIEN19)
;
Q ; Quit COMMON
;
SCREEN(DVBSUMOPT) ; Screen record and set DVBSKIP=1 if any screen is not passed.
; Input:
; DVBSUMOPT(array) ; Required ; See output of SUMOPT^DVBAUDDIQ
;
N DVBDAYSAGO
; ZEXCEPT: DT,DVBDAYS,DVBASKDT,DVBDTBEG,DVBDTEND
; ZEXCEPT: DVBNTIMES,DVBOPT,DVBRPT,DVBSKIP,DVBSORT
;
; Applies to all the reporting options
;I DVBRPT>1,DVBSUMOPT("AUDITED?")="NO" S DVBSKIP=1 Q ; Audit currently turned off.
;
; Screens applied to specific reports are below.
;
I DVBRPT=2,DVBSUMOPT("USAGE")>0 S DVBSKIP=1 Q ; Audited options never utilized
I DVBRPT=3,DVBSUMOPT("USAGE")'<DVBNTIMES S DVBSKIP=1 Q ; options with low or no usae
I DVBRPT=4,DVBSUMOPT("USAGE")'>DVBNTIMES S DVBSKIP=1 Q ; options with high usage
;
; Options added to the audit list within 'X' number of days ago (DVBRPT=5)
I DVBRPT=5,DVBSUMOPT("AUDDAYS")>(DVBDAYS+1) S DVBSKIP=1 Q
;
; Options NOT used within 'X' number of days (DVBRPT=6)
S DVBDAYSAGO=0 ; Determine how many days ago the option was used?
I DVBSUMOPT("DTLASTI") S DVBDAYSAGO=$$FMDIFF^XLFDT(DT,DVBSUMOPT("DTLASTI"))
I DVBRPT=6,DVBDAYSAGO>0,DVBDAYSAGO'>DVBDAYS S DVBSKIP=1 Q
I DVBRPT=6,$P(DVBSUMOPT("DTLASTI"),".")=DT S DVBSKIP=1 Q ; Skip TODAY
;
; Options used within the last 'X' number of days (DVBRPT=7)
I DVBRPT=7,DVBSUMOPT("DTLASTI"),$$FMDIFF^XLFDT(DT,DVBSUMOPT("DTLASTI"))>DVBDAYS,DVBSUMOPT("USAGE")>0 S DVBSKIP=1 Q
I DVBRPT=7,DVBSUMOPT("USAGE")=0 S DVBSKIP=1 Q
;
; Audited options scheduled as regular recurring tasks
I DVBRPT=10 D ;
. N DVBIENOSF,DVBOPTSCH
. S DVBIENOSF=$$FIND1^DIC(19.2,"","BO",DVBSUMOPT("OPTNAME"))
. I 'DVBIENOSF S DVBSKIP=1 Q
. D OPTSCH^DVBAUDDIQ(DVBIENOSF) ; Get OPTION SCHEDULING data
. I DVBOPTSCH("TASKID")="" S DVBSKIP=1 Q ;.... No TASK ID
. I DVBOPTSCH("FREQ")="" S DVBSKIP=1 Q ;...... No RESCHEDULING FREQUENCY
. I DVBOPTSCH("QTORUNTIME")="" S DVBSKIP=1 Q ; No QUEUED TO RUN AT WHAT TIME
;
; All audited options with recorded usage (DVBRPT=11)
I DVBRPT=11,'DVBSUMOPT("DTLASTI") S DVBSKIP=1 Q
;
I DVBOPT=2,DVBSUMOPT("ACTIVE?")="NO" S DVBSKIP=1 Q ; Only 'active' options are ad
I DVBOPT=3,DVBSUMOPT("ACTIVE?")="YES" S DVBSKIP=1 Q ;Only 'inactive' options are ad
;
; Limit the report to a specific date range (DVBASKDT="YES")
I DVBASKDT="YES" D Q:DVBSKIP
. I DVBSORT=3 D Q ; If sorting by AUDIT START DATE
. . I $P(DVBSUMOPT("DTSTARTI"),".")<DVB2DTBEG("I") S DVBSKIP=1 Q
. . I $P(DVBSUMOPT("DTSTARTI"),".")>DVB2DTEND("I") S DVBSKIP=1 Q
. ; If not sorting by AUDIT START DATE use LAST AUDITED DATE
. I $P(DVBSUMOPT("DTLASTI"),".")<DVB2DTBEG("I") S DVBSKIP=1 Q
. I $P(DVBSUMOPT("DTLASTI"),".")>DVB2DTEND("I") S DVBSKIP=1 Q
;
Q ; Quit SCREEN
;
SETTMP(DVBIEN19) ; Set DVBRPTDATA field pieces, set DVBSORTBY fields, set ^TMP global
; Input:
; DVBIEN19 ; IEN of a AMIE AUDIT SUMMARY BY OPTION entry
;
N DVBRPTDATA,DVBSORT1,DVBSORT2,DVBSORTBY
; ZEXCEPT: DVBOPTION,DVBSORT,DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBRPTDATA=DVBSUMOPT("OPTNAME")_"^"
S DVBRPTDATA=DVBRPTDATA_DVBIEN19_"^"
S DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("OPTTYPE")_"^"
S DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("ACTIVE?")_"^"
I DVBSUMOPT("DTSTARTI") S DVBRPTDATA=DVBRPTDATA_$$DATE^DVBAUDDT1(DVBSUMOPT("DTSTARTI"),0,1,1)
E S DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("DTSTART")_"^" ; AUDIT START DATE might be '<Emptyl
S DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("AUDDAYS")_"^"
I DVBSUMOPT("DT1STI") S DVBRPTDATA=DVBRPTDATA_$$DATE^DVBAUDDT1(DVBSUMOPT("DT1STI"),0,1,1)_"^"
E S DVBRPTDATA=DVBRPTDATA_"<Empty>^" ;LATEST AUDIT DATE might be '<Empty>' or null
I DVBSUMOPT("DTLASTI") S DVBRPTDATA=DVBRPTDATA_$$DAYSAGO^DVBAUDDT1(DVBSUMOPT("DTLASTI"))_"^"
E S DVBRPTDATA=DVBRPTDATA_"<Empty>^" ;LATEST AUDIT DATE might be '<Empty>' or null
S DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("USAGE")
;
S DVBSORTBY="SORT"_DVBSORT ; DVBSORT1, DVBSORT2, etc.
D @DVBSORTBY
;
S ^TMP("AMIE",$J,DVBOPTION,DVBSORT1,DVBSORT2,DVBIEN19)=DVBRPTDATA
;
Q ; Quit SETTMP
;
SORT1 ; Sort by OPTION
; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBSORT1=DVBSUMOPT("OPTNAME")
S DVBSORT2="<SORT2>"
;
Q ; Quit SORT1
;
SORT2 ; Sort by OPTION TYPE & OPTION
; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBSORT1=$$UP^XLFSTR(DVBSUMOPT("OPTTYPE"))
S DVBSORT2=DVBSUMOPT("OPTNAME")
;
Q ; Quit SORT2
;------------------------------------------------------------------
SORT3 ; Sort by AUDIT START DATE & OPTION
; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBSORT1=$P(DVBSUMOPT("DTSTARTI"),".",1) ; Drop the time, most recent 1st
S DVBSORT2=DVBSUMOPT("OPTNAME")
;
Q ; Quit SORT3
;
SORT4 ; Sort by LAST AUDITED DATE & OPTION
; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBSORT1=-+$P(DVBSUMOPT("DTLASTI"),".",1) ; Drop the time, most recent 1st
S DVBSORT2=DVBSUMOPT("OPTNAME")
;
Q ; Quit SORT3
;
SORT5 ; Sort by ASCENDING USAGE COUNT & OPTION
; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBSORT1=DVBSUMOPT("USAGE")
S DVBSORT2=DVBSUMOPT("OPTNAME")
;
Q ; Quit SORT5
;
SORT6 ; Sort by DECENDING USAGE COUNT & OPTION
; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
;
S DVBSORT1=-DVBSUMOPT("USAGE")
S DVBSORT2=DVBSUMOPT("OPTNAME")
;
Q ; Quit SORT6
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDVBAUDAO1 9930 printed Sep 17, 2026@20:27:11 Page 2
DVBAUDAO1 ;ALB/CP - List Audited Option Summary Build ; 4/12/18 5:57pm
+1 ;;2.7;AMIE;**256**;;Build 19
+2 ; Per VHA Directive 6402 this routine should not be modified
+3 ; $$FIND1^DIC ; IA # 2051
+4 ; $$GET1^DIQ ; IA # 2056
+5 ; $$FMDIFF^XLFDT ; IA #10103
+6 ; $$UP^XLFSTR ; IA #10104
+7 ; ^DIC(19, ; IA # 2246
+8 ;
+9 ;
+10 QUIT
+11 ;
BUILD ; Build sorted ^TMP global for report output.
+1 ; ZEXCEPT: DVBRPT
+2 ;
+3 ; From option: List Audited option Summary
+4 ; [AMIE LIST AUDITED OPTION SUM]
+5 ;
+6 ; This driver will execute the most efficient loop based upon DVBRPT.
+7 ;
+8 ;. Include all currently audited options
IF DVBRPT=1
DO BUILDOPT
QUIT
+9 ;. Audited options never utilized
IF DVBRPT=2
DO BUILDOPT
QUIT
+10 ;. Options with low or no usage
IF DVBRPT=3
DO BUILDOPT
QUIT
+11 ;. Options with high usage
IF DVBRPT=4
DO BUILDSUM
QUIT
+12 ;. Options added to the audit list within 'X' number oo
IF DVBRPT=5
DO BUILDSUM
QUIT
+13 ;. Options not used within 'X' number of days
IF DVBRPT=6
DO BUILDSUM
QUIT
+14 ;. Options used within the last 'X' number of days
IF DVBRPT=7
DO BUILDSUM
QUIT
+15 ;.. User selected free text range of Options
IF DVBRPT=8
DO BUILDFT
QUIT
+16 ;. User selected package namespace
IF DVBRPT=9
DO BUILDPKG
QUIT
+17 ; Audited options that are regularly recurring tasks
IF DVBRPT=10
DO BUILDSUM
QUIT
+18 ; All audits option with recorded usage
IF DVBRPT=11
DO BUILDSUM
QUIT
+19 ;
EXIT ; Exit BUILD^DVBAUDOA1
+1 ;
+2 ; Quit routine BUILD^DVBAUDOA1
QUIT
+3 ;
BUILDFT ; User selected specific free text range found in DVBFTBEG & DVBFTEND
+1 ;
+2 NEW DVBCNT,DVBOPTNAME
+3 ; ZEXCEPT: DVBFTBEG,DVBFTEND
+4 ;
+5 SET DVBCNT=0
+6 ; Loop thru options names using free text from-to range
SET DVBOPTNAME=DVBFTBEG
+7 ;
FOR
SET DVBOPTNAME=$ORDER(^DIC(19,"B",DVBOPTNAME))
if DVBOPTNAME=""!(DVBOPTNAME]DVBFTEND)
QUIT
Begin DoDot:1
+8 ;........ Count the number of records processed
SET DVBCNT=DVBCNT+1
+9 ; Display a dot every 100 records
DO DOTS^DVBAUDPRT2(DVBCNT)
+10 NEW DVBIEN19
+11 SET DVBIEN19=0
+12 FOR
SET DVBIEN19=$ORDER(^DIC(19,"B",DVBOPTNAME,DVBIEN19))
if 'DVBIEN19
QUIT
Begin DoDot:2
+13 ; Quit if no SUMMARY BY OPTION stub rd
if '$DATA(^DVB(396.9991,"B",DVBIEN19,DVBIEN19))
QUIT
+14 ;
+15 DO COMMON(DVBIEN19,DVBOPTNAME)
End DoDot:2
End DoDot:1
+16 ;
+17 ; Quit BUILDFT
QUIT
+18 ;
BUILDOPT ; Loop through the entire AMIE AUDIT SUMMARY BY OPTION
+1 ; file #396.9991
+2 NEW DVBCNT,DVBIEN19,DVBQUIT
+3 ;
+4 SET (DVBQUIT,DVBCNT,DVBIEN19)=0
+5 ;
FOR
SET DVBIEN19=$ORDER(^DVB(396.9991,DVBIEN19))
if 'DVBIEN19!DVBQUIT
QUIT
Begin DoDot:1
+6 NEW DIERR,DVBOPTNAME,DVBERRMSG
+7 ;........ Count the number of records processed
SET DVBCNT=DVBCNT+1
+8 ; Display a dot every 100 records
DO DOTS^DVBAUDPRT2(DVBCNT)
+9 SET DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
+10 DO DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","BUILDDVBOPT^"_$TEXT(+0))
if DVBQUIT
QUIT
+11 if DVBOPTNAME=""
QUIT
+12 ;
+13 DO COMMON(DVBIEN19,DVBOPTNAME)
End DoDot:1
+14 ;
+15 ; Quit BUILDOPT
QUIT
+16 ;
BUILDPKG ; User selected package namespace found in DVBPKG
+1 ;
+2 NEW DVBCNT,DVBOPTNAME
+3 ; ZEXCEPT: DVBPKG
+4 ;
+5 SET DVBCNT=0
+6 ; Loop thru option names using the package namespace
SET DVBOPTNAME=DVBPKG
+7 FOR
SET DVBOPTNAME=$ORDER(^DIC(19,"B",DVBOPTNAME))
if DVBOPTNAME=""!($EXTRACT(DVBOPTNAME,1,$LENGTH(DVBPKG))'=DVBPKG)
QUIT
Begin DoDot:1
+8 ;........ Count the number of records processed
SET DVBCNT=DVBCNT+1
+9 ; Display a dot every 100 records
DO DOTS^DVBAUDPRT2(DVBCNT)
+10 NEW DVBIEN19
+11 SET DVBIEN19=0
+12 ;
FOR
SET DVBIEN19=$ORDER(^DIC(19,"B",DVBOPTNAME,DVBIEN19))
if 'DVBIEN19
QUIT
Begin DoDot:2
+13 ; Quit if no SUMMARY BY OPTION stub rd
if '$DATA(^DVB(396.9991,"B",DVBIEN19,DVBIEN19))
QUIT
+14 NEW DIERR,DVBERRMSG
+15 SET DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
+16 DO DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","BUILDPKG^"_$TEXT(+0))
if DVBQUIT
QUIT
+17 ;
+18 DO COMMON(DVBIEN19,DVBOPTNAME)
End DoDot:2
End DoDot:1
+19 ;
+20 ; Quit BUILDPKG
QUIT
+21 ;
BUILDSUM ; Loop through AMIE AUDIT SUMMARY BY OPTION file #396.9991
+1 ;
+2 NEW DVBCNT,DVBIEN19
+3 ;
+4 SET (DVBCNT,DVBIEN19)=0
+5 ;
FOR
SET DVBIEN19=$ORDER(^DVB(396.9991,DVBIEN19))
if 'DVBIEN19
QUIT
Begin DoDot:1
+6 NEW DIERR,DVBOPTNAME,DVBERRMSG
+7 ;........ Count the number of records processed
SET DVBCNT=DVBCNT+1
+8 ; Display a dot every 100 records
DO DOTS^DVBAUDPRT2(DVBCNT)
+9 SET DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
+10 DO DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","BUILDSUM^"_$TEXT(+0))
if DVBQUIT
QUIT
+11 DO COMMON(DVBIEN19,DVBOPTNAME)
End DoDot:1
+12 ;
+13 ; Quit BUILDSUM
QUIT
+14 ;
COMMON(DVBIEN19,DVBOPTNAME) ; Code used by all BUILD loops above
+1 NEW DVBSUMOPT,DVBSAVEOPT
+2 SET DVBSAVEOPT=$GET(DVBOPT)
+3 NEW DVBOPT
+4 ;
+5 ; Get OPTION file #19 report data
+6 ;
+7 DO OPTION^DVBAUDDIQ(DVBIEN19)
if DVBQUIT
QUIT
+8 ;
+9 ; Get AMIE AUDIT SUMMARY BY OPTION data
DO SUMOPT^DVBAUDDIQ(DVBIEN19)
+10 ;
+11 ; Screen the record and skip over any record that does not pass
+12 ; all of the various screens.
+13 ;
+14 SET DVBOPT=$GET(DVBSAVEOPT)
+15 NEW DVBSKIP
+16 ;
+17 SET DVBSKIP=0
DO SCREEN(.DVBSUMOPT)
if DVBSKIP
QUIT
+18 ;
+19 DO SETTMP(DVBIEN19)
+20 ;
+21 ; Quit COMMON
QUIT
+22 ;
SCREEN(DVBSUMOPT) ; Screen record and set DVBSKIP=1 if any screen is not passed.
+1 ; Input:
+2 ; DVBSUMOPT(array) ; Required ; See output of SUMOPT^DVBAUDDIQ
+3 ;
+4 NEW DVBDAYSAGO
+5 ; ZEXCEPT: DT,DVBDAYS,DVBASKDT,DVBDTBEG,DVBDTEND
+6 ; ZEXCEPT: DVBNTIMES,DVBOPT,DVBRPT,DVBSKIP,DVBSORT
+7 ;
+8 ; Applies to all the reporting options
+9 ;I DVBRPT>1,DVBSUMOPT("AUDITED?")="NO" S DVBSKIP=1 Q ; Audit currently turned off.
+10 ;
+11 ; Screens applied to specific reports are below.
+12 ;
+13 ; Audited options never utilized
IF DVBRPT=2
IF DVBSUMOPT("USAGE")>0
SET DVBSKIP=1
QUIT
+14 ; options with low or no usae
IF DVBRPT=3
IF DVBSUMOPT("USAGE")'<DVBNTIMES
SET DVBSKIP=1
QUIT
+15 ; options with high usage
IF DVBRPT=4
IF DVBSUMOPT("USAGE")'>DVBNTIMES
SET DVBSKIP=1
QUIT
+16 ;
+17 ; Options added to the audit list within 'X' number of days ago (DVBRPT=5)
+18 IF DVBRPT=5
IF DVBSUMOPT("AUDDAYS")>(DVBDAYS+1)
SET DVBSKIP=1
QUIT
+19 ;
+20 ; Options NOT used within 'X' number of days (DVBRPT=6)
+21 ; Determine how many days ago the option was used?
SET DVBDAYSAGO=0
+22 IF DVBSUMOPT("DTLASTI")
SET DVBDAYSAGO=$$FMDIFF^XLFDT(DT,DVBSUMOPT("DTLASTI"))
+23 IF DVBRPT=6
IF DVBDAYSAGO>0
IF DVBDAYSAGO'>DVBDAYS
SET DVBSKIP=1
QUIT
+24 ; Skip TODAY
IF DVBRPT=6
IF $PIECE(DVBSUMOPT("DTLASTI"),".")=DT
SET DVBSKIP=1
QUIT
+25 ;
+26 ; Options used within the last 'X' number of days (DVBRPT=7)
+27 IF DVBRPT=7
IF DVBSUMOPT("DTLASTI")
IF $$FMDIFF^XLFDT(DT,DVBSUMOPT("DTLASTI"))>DVBDAYS
IF DVBSUMOPT("USAGE")>0
SET DVBSKIP=1
QUIT
+28 IF DVBRPT=7
IF DVBSUMOPT("USAGE")=0
SET DVBSKIP=1
QUIT
+29 ;
+30 ; Audited options scheduled as regular recurring tasks
+31 ;
IF DVBRPT=10
Begin DoDot:1
+32 NEW DVBIENOSF,DVBOPTSCH
+33 SET DVBIENOSF=$$FIND1^DIC(19.2,"","BO",DVBSUMOPT("OPTNAME"))
+34 IF 'DVBIENOSF
SET DVBSKIP=1
QUIT
+35 ; Get OPTION SCHEDULING data
DO OPTSCH^DVBAUDDIQ(DVBIENOSF)
+36 ;.... No TASK ID
IF DVBOPTSCH("TASKID")=""
SET DVBSKIP=1
QUIT
+37 ;...... No RESCHEDULING FREQUENCY
IF DVBOPTSCH("FREQ")=""
SET DVBSKIP=1
QUIT
+38 ; No QUEUED TO RUN AT WHAT TIME
IF DVBOPTSCH("QTORUNTIME")=""
SET DVBSKIP=1
QUIT
End DoDot:1
+39 ;
+40 ; All audited options with recorded usage (DVBRPT=11)
+41 IF DVBRPT=11
IF 'DVBSUMOPT("DTLASTI")
SET DVBSKIP=1
QUIT
+42 ;
+43 ; Only 'active' options are ad
IF DVBOPT=2
IF DVBSUMOPT("ACTIVE?")="NO"
SET DVBSKIP=1
QUIT
+44 ;Only 'inactive' options are ad
IF DVBOPT=3
IF DVBSUMOPT("ACTIVE?")="YES"
SET DVBSKIP=1
QUIT
+45 ;
+46 ; Limit the report to a specific date range (DVBASKDT="YES")
+47 IF DVBASKDT="YES"
Begin DoDot:1
+48 ; If sorting by AUDIT START DATE
IF DVBSORT=3
Begin DoDot:2
+49 IF $PIECE(DVBSUMOPT("DTSTARTI"),".")<DVB2DTBEG("I")
SET DVBSKIP=1
QUIT
+50 IF $PIECE(DVBSUMOPT("DTSTARTI"),".")>DVB2DTEND("I")
SET DVBSKIP=1
QUIT
End DoDot:2
QUIT
+51 ; If not sorting by AUDIT START DATE use LAST AUDITED DATE
+52 IF $PIECE(DVBSUMOPT("DTLASTI"),".")<DVB2DTBEG("I")
SET DVBSKIP=1
QUIT
+53 IF $PIECE(DVBSUMOPT("DTLASTI"),".")>DVB2DTEND("I")
SET DVBSKIP=1
QUIT
End DoDot:1
if DVBSKIP
QUIT
+54 ;
+55 ; Quit SCREEN
QUIT
+56 ;
SETTMP(DVBIEN19) ; Set DVBRPTDATA field pieces, set DVBSORTBY fields, set ^TMP global
+1 ; Input:
+2 ; DVBIEN19 ; IEN of a AMIE AUDIT SUMMARY BY OPTION entry
+3 ;
+4 NEW DVBRPTDATA,DVBSORT1,DVBSORT2,DVBSORTBY
+5 ; ZEXCEPT: DVBOPTION,DVBSORT,DVBSORT1,DVBSORT2,DVBSUMOPT
+6 ;
+7 SET DVBRPTDATA=DVBSUMOPT("OPTNAME")_"^"
+8 SET DVBRPTDATA=DVBRPTDATA_DVBIEN19_"^"
+9 SET DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("OPTTYPE")_"^"
+10 SET DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("ACTIVE?")_"^"
+11 IF DVBSUMOPT("DTSTARTI")
SET DVBRPTDATA=DVBRPTDATA_$$DATE^DVBAUDDT1(DVBSUMOPT("DTSTARTI"),0,1,1)
+12 ; AUDIT START DATE might be '<Emptyl
IF '$TEST
SET DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("DTSTART")_"^"
+13 SET DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("AUDDAYS")_"^"
+14 IF DVBSUMOPT("DT1STI")
SET DVBRPTDATA=DVBRPTDATA_$$DATE^DVBAUDDT1(DVBSUMOPT("DT1STI"),0,1,1)_"^"
+15 ;LATEST AUDIT DATE might be '<Empty>' or null
IF '$TEST
SET DVBRPTDATA=DVBRPTDATA_"<Empty>^"
+16 IF DVBSUMOPT("DTLASTI")
SET DVBRPTDATA=DVBRPTDATA_$$DAYSAGO^DVBAUDDT1(DVBSUMOPT("DTLASTI"))_"^"
+17 ;LATEST AUDIT DATE might be '<Empty>' or null
IF '$TEST
SET DVBRPTDATA=DVBRPTDATA_"<Empty>^"
+18 SET DVBRPTDATA=DVBRPTDATA_DVBSUMOPT("USAGE")
+19 ;
+20 ; DVBSORT1, DVBSORT2, etc.
SET DVBSORTBY="SORT"_DVBSORT
+21 DO @DVBSORTBY
+22 ;
+23 SET ^TMP("AMIE",$JOB,DVBOPTION,DVBSORT1,DVBSORT2,DVBIEN19)=DVBRPTDATA
+24 ;
+25 ; Quit SETTMP
QUIT
+26 ;
SORT1 ; Sort by OPTION
+1 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
+2 ;
+3 SET DVBSORT1=DVBSUMOPT("OPTNAME")
+4 SET DVBSORT2="<SORT2>"
+5 ;
+6 ; Quit SORT1
QUIT
+7 ;
SORT2 ; Sort by OPTION TYPE & OPTION
+1 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
+2 ;
+3 SET DVBSORT1=$$UP^XLFSTR(DVBSUMOPT("OPTTYPE"))
+4 SET DVBSORT2=DVBSUMOPT("OPTNAME")
+5 ;
+6 ; Quit SORT2
QUIT
+7 ;------------------------------------------------------------------
SORT3 ; Sort by AUDIT START DATE & OPTION
+1 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
+2 ;
+3 ; Drop the time, most recent 1st
SET DVBSORT1=$PIECE(DVBSUMOPT("DTSTARTI"),".",1)
+4 SET DVBSORT2=DVBSUMOPT("OPTNAME")
+5 ;
+6 ; Quit SORT3
QUIT
+7 ;
SORT4 ; Sort by LAST AUDITED DATE & OPTION
+1 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
+2 ;
+3 ; Drop the time, most recent 1st
SET DVBSORT1=-+$PIECE(DVBSUMOPT("DTLASTI"),".",1)
+4 SET DVBSORT2=DVBSUMOPT("OPTNAME")
+5 ;
+6 ; Quit SORT3
QUIT
+7 ;
SORT5 ; Sort by ASCENDING USAGE COUNT & OPTION
+1 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
+2 ;
+3 SET DVBSORT1=DVBSUMOPT("USAGE")
+4 SET DVBSORT2=DVBSUMOPT("OPTNAME")
+5 ;
+6 ; Quit SORT5
QUIT
+7 ;
SORT6 ; Sort by DECENDING USAGE COUNT & OPTION
+1 ; ZEXCEPT: DVBSORT1,DVBSORT2,DVBSUMOPT
+2 ;
+3 SET DVBSORT1=-DVBSUMOPT("USAGE")
+4 SET DVBSORT2=DVBSUMOPT("OPTNAME")
+5 ;
+6 ; Quit SORT6
QUIT
+7 ;