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

DVBAUDDIE.m

Go to the documentation of this file.
DVBAUDDIE ;ALB/CP - FM DIE API Subroutine Calls ; 4/8/18 12:53pm
 ;;2.7;AMIE;**256**;;Build 19
 ; Per VHA Directive 6402 this routine should not be modified
 ;    $$FIND1^DIC      ; # 2051
 ;       FILE^DIE      ; # 2053
 ;     UPDATE^DIE      ; # 2053
 ;     $$GET1^DIQ      ; # 2056
 ;    $$FMTE^XLFDT     ; #10103
 ;     $$NOW^XLFDT     ; #10103
 ;  $$ACTIVE^XUSER     ; # 2343
 ; ENTRY & EXIT ACTION ; # 1282
 ;
 Q
 ;
AUDEVENT(DVBIEN19,DVBIEN200) ; Create a AMIE OPTION AUDIT DVBEVENT file #396.999 entry.
 ;                   'D AUDIT^DVBAUDOA'
 ;   AUDIT^DVBAUDOA
 ;
 N %DT,DVBDIALLVAL ; Left behind by UPDATE^DIE call during testing
 N DIERR,DVBIENS,DVBOPTNAME,DVBERRMSG,DVBFDA,DVBFILE,DVBUSERNAME
 ; ZEXCEPT: DVBQUIT,ZTSK
 ;
 S DVBQUIT=0 ; Indicates a successful database update
 ;
 S DVBIENS=+$G(DVBIEN19)_",",DVBFILE=19
 S DVBOPTNAME=$$GET1^DIQ(DVBFILE,DVBIENS,.01,"E",,"DVBERRMSG")
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","AUDEVENT^"_$T(+0)) Q:DVBQUIT
 I DVBOPTNAME']"" S DVBQUIT=1 Q
 ;
 S DVBIENS=+$G(DVBIEN200)_",",DVBFILE=200
 S DVBUSERNAME=$$GET1^DIQ(DVBFILE,DVBIENS,.01,"E",,"DVBERRMSG")
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","AUDEVENT^"_$T(+0)) Q:DVBQUIT
 I DVBUSERNAME']"" S DVBQUIT=1 Q
 ;I $P($$ACTIVE^XUSER(+$G(DVBIEN200)),U,2)'="ACTIVE" S DVBQUIT=1 Q
 S DVBFILE=19
 I $$GET1^DIQ(DVBFILE,DVBIEN19,20,"E",,"DVBERRMSG")'["D AUDIT^DVBAUDOA" S DVBQUIT=1 Q
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","AUDEVENT^"_$T(+0)) Q:DVBQUIT
 ;
 K DVBFDA ; Refresh FM data array (FDA)
 ;
 S DVBIENS="+1,",DVBFILE=396.999
 S DVBFDA(DVBFILE,DVBIENS,.01)=$$NOW^XLFDT() ; E-DATE/TIME [RD]
 S DVBFDA(DVBFILE,DVBIENS,2)="`"_DVBIEN19 ;...... E-OPTION ACCESSED [RP19']
 S DVBFDA(DVBFILE,DVBIENS,3)="`"_DVBIEN200 ;..... E-AUDITED USER    [RP200']
 I $G(ZTSK) D  ; If the audited DVBEVENT was a tasked job
 . N DVBIENOSF ; DVBIENOSF=IEN of the OPTION SCHEDULING file #19.2
 . N DVBOPTSCH ; Array of Option Scheduling attributes
 . S DVBIENOSF=$$FIND1^DIC(19.2,"","BO",DVBOPTNAME) Q:DVBIENOSF'>0
 . D OPTSCH^DVBAUDDIQ(DVBIENOSF) ; Get file #19.2 data, put DVBOPTSCH(array)
 . Q:DVBQUIT  ; Database server error detected.
 . Q:'$$OPTSCHOK^DVBAUDU1($T(+0),.DVBOPTSCH)  ; Option must be screened
 . S DVBFDA(DVBFILE,DVBIENS,4)="YES" ;........ E-TASKED AUDIT? [S] (1:YES)
 . S DVBFDA(DVBFILE,DVBIENS,5)=$JOB ; ........ E-TASKED JOB NUMBER [N]
 ;
 D UPDATE^DIE("E","DVBFDA","","DVBERRMSG") ; Add an DVBEVENT file record
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","AUDEVENT^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit AUDEVENT
 ;
ENTRYACT(DVBIEN19,DVBENACTION,DVBEXACTION) ; 
 ;
 N DIERR,DVBERRMSG,DVBFDA,DVBFILE,DVBIENS
 N %,DIC ; Variables left behind during testing
 N DG,DICR,DIW ; Covers editing of audited fields
 ; ZEXCEPT: DVBQUIT
 ;
 S DVBQUIT=0 ; Indicates a successful database update
 ;
 S DVBIENS=DVBIEN19_",",DVBFILE=19
 S DVBFDA(DVBFILE,DVBIENS,15)=DVBEXACTION("AFT") ; Option EXIT  ACTION
 S DVBFDA(DVBFILE,DVBIENS,20)=DVBENACTION("AFT") ; Option ENTRY ACTION
 ;
 D FILE^DIE("E","DVBFDA","DVBERRMSG") ; ICR #1282
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","ENTRYACT^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit ENTRYACT
 ;
EVENTEND(DVBIENEVENT) ; Record a tasked job's E-TASK END DATE/TIME #6
 ;           in the appropriate AMIE OPTION AUDIT DVBEVENT entry.
 N DIERR,DVBIENS,DVBERRMSG,DVBFDA,DVBFILE
 ; ZEXCEPT: DVBQUIT
 S DVBQUIT=0 ; Indicates a successful database update
 S DVBIENS=DVBIENEVENT_",",DVBFILE="396.999"
 S DVBFDA(DVBFILE,DVBIENS,6)=$$NOW^XLFDT()
 ;
 D FILE^DIE("","DVBFDA","DVBERRMSG")
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","EVENTEND^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit EVENTEND
 ;
SETPFLAG(DVBIENEVENT) ; Set E-PURGE FLAG? #7 of the
 ;                 AMIE OPTION AUDIT DVBEVENT file #396.999 to YES
 N DIERR,DVBIENS,DVBERRMSG,DVBFDA,DVBFILE
 ; ZEXCEPT: DVBQUIT
 ;
 S DVBQUIT=0 ; Indicates a successful database update
 ;
 S DVBIENS=DVBIENEVENT_",",DVBFILE=396.999
 S DVBFDA(DVBFILE,DVBIENS,7)=1 ; E-PURGE FLAG? [S] 1:YES
 ;
 ; Set the DETAIL record to be purged after summarization
 D FILE^DIE("","DVBFDA","DVBERRMSG")
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SETPFLAG^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit SETPFLAG
 ;
SUMOPT(DVBEVENT,DVBMAXHIST) ;
 N DIERR,DVBIENS,DVBERRMSG,DVBFDA,DVBFILE
 ; ZEXCEPT: DVBQUIT
 ;
 S DVBQUIT=0 ; Indicates a successful database update
 D SUMSTUB(DVBEVENT("DVBIEN19")) Q:DVBQUIT  ; DVBQUIT=1 if DVBEVENT is invalid
 ;
 ; Quit if no SUMMARY rec. "B: x-ref
 Q:'$D(^DVB(396.9991,"B",DVBEVENT("DVBIEN19"),DVBEVENT("DVBIEN19")))
 ; Quit, if no zeroith node in SUMMARY file for DVBIEN19
 Q:'$D(^DVB(396.9991,DVBEVENT("DVBIEN19"),0))
 ;
 I DVBEVENT("TASKEDI")=1 Q:'$$TASKDONE(DVBEVENT("DVBIENEVENT"))
 ;
 S DVBIENS=DVBEVENT("DVBIEN19")_",",DVBFILE=396.9991
 I $$GET1^DIQ(DVBFILE,DVBIENS,3,"E",,"DVBERRMSG")="" D  ;
 . S DVBFDA(DVBFILE,DVBIENS,3)=DVBEVENT("DTEVENTI")
 . D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMOPT^"_$T(+0))
 Q:DVBQUIT
 ;
 ; OP-LATEST AUDIT DATE/TIME
 S DVBFDA(DVBFILE,DVBIENS,4)=DVBEVENT("DTEVENTI") ; OP-LATEST AUDIT DATE/TIME
 S DVBFDA(DVBFILE,DVBIENS,5)=DVBEVENT("DVBIEN200") ;.. OP-LAST USED BY
 ;
 ; Increment the OP-USAGE COUNT field #6 & check for error
 S DVBFDA(DVBFILE,DVBIENS,6)=$$GET1^DIQ(DVBFILE,DVBIENS,6,"E",,"DVBERRMSG")+1
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMOPT^"_$T(+0)) Q:DVBQUIT
 ;
 I DVBEVENT("TASKED")="YES",DVBEVENT("DTENDEDI") D  ;
 . S DVBFDA(DVBFILE,DVBIENS,21)=DVBEVENT("DTEVENTI") ; from E-DATE/TIME
 . S DVBFDA(DVBFILE,DVBIENS,22)=DVBEVENT("DTENDEDI") ; from E-TASK END DATE/TIME
 . S DVBFDA(DVBFILE,DVBIENS,23)=DVBEVENT("DVBIEN200") ;.. from E-AUDITED USER
 ;
 D FILE^DIE("","DVBFDA","DVBERRMSG") ; Edit existing DVBIEN19 record
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMOPT^"_$T(+0)) Q:DVBQUIT
 ;
 ; Record the tasked DVBEVENT history in the OCCURANCE multiple
 D TASKHIST(.DVBEVENT,DVBMAXHIST)
 ;
 Q  ; QUIT SUMOPT
 ;
SUMSTUB(DVBIEN19) ; 
 ;
 N %DT,DVBDIALLVAL ; Left behind by UPDATE^DIE call during testing
 N DIERR,DVBIENS,DVBOPTNAME,DVBFDA,DVBFILE
 ; ZEXCEPT: DT,DVBQUIT
 ;
 S DVBQUIT=0 ; Indicates a successful database update
 ;
 S DVBFILE=396.9991
 Q:$D(^DVB(DVBFILE,"B",DVBIEN19,DVBIEN19))  ;Record already exists, not needed
 ;
 I $L($G(DT))'=7 S DVBQUIT=1 Q  ; System var. DT is not defined or null
 S DVBOPTNAME=$$GET1^DIQ(19,DVBIEN19,.01,"E",,"DVBERRMSG")
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMSTUB^"_$T(+0)) Q:DVBQUIT
 Q:DVBOPTNAME=""
 ;
 S DVBIENS="+"_DVBIEN19_","
 S DVBFDA(DVBFILE,DVBIENS,.01)="`"_DVBIEN19 ;..... OP-NAME
 S DVBFDA(DVBFILE,DVBIENS,2)=$$FMTE^XLFDT(DT) ; OP-AUDIT BEGIN DATE
 S DVBFDA(DVBFILE,DVBIENS,6)=0 ;............... OP-USAGE COUNT (initialize)
 S DVBFDA(DVBFILE,DVBIENS,7)=$$GET1^DIQ(200,DUZ,.01) ; OP-AUDIT TURNED-ON BY
 ;
 D UPDATE^DIE("E","DVBFDA","","DVBERRMSG")
 ;D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMSTUB^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit SUMSTUB
 ;
SUMUSER(DVBEVENT) ; 
 ;
 S DVBQUIT=0 ; Indicates a successful database update
 ;
 I '$D(^DVB(396.9992,"B",DVBEVENT("DVBIEN200"),DVBEVENT("DVBIEN200"))) D  ;
 . N %DT,DVBDIALLVAL ; Left behind by UPDATE^DIE call during testing
 . N DIERR,DVBIENS,DVBERRMSG,DVBFDA,DVBFILE
 . S DVBIENS="+"_DVBEVENT("DVBIEN200")_",",DVBFILE=396.9992
 . S DVBFDA(DVBFILE,DVBIENS,.01)="`"_DVBEVENT("DVBIEN200")
 . D UPDATE^DIE("E","DVBFDA","","DVBERRMSG")
 . D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMUSER^"_$T(+0)) Q:DVBQUIT
 Q:DVBQUIT  ; Database server error occured on add to #396.9992
 ;
 N DVBFILE
 S DVBFILE=396.9992201
 I '$D(^DVB(396.9992,DVBEVENT("DVBIEN200"),"OPTION",DVBEVENT("DVBIEN19"),0)) D  Q
 . N %DT,DVBDIALLVAL ; Left behind by UPDATE^DIE call during testing
 . N DIERR,DVBIENS,DVBERRMSG,DVBFDA
 . S DVBIENS="+"_DVBEVENT("DVBIEN19")_","_DVBEVENT("DVBIEN200")_","
 . S DVBFDA(DVBFILE,DVBIENS,.01)="`"_DVBEVENT("DVBIEN19") ; OP-NAME
 . S DVBFDA(DVBFILE,DVBIENS,2)=DVBEVENT("DTEVENT") ;.. OP-FIRST USED DATE/TIME
 . S DVBFDA(DVBFILE,DVBIENS,3)=DVBEVENT("DTEVENT") ;.. OP-LAST USED DATE/TIME
 . S DVBFDA(DVBFILE,DVBIENS,4)=1 ; OP-USAGE COUNT (Set to 1)
 . ;
 . D UPDATE^DIE("E","DVBFDA","","DVBERRMSG")
 . D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMUSER^"_$T(+0)) Q:DVBQUIT
 ;
 N DVBCOUNTER,DIERR,DVBIENS,DVBERRMSG,DVBFDA
 ;
 S DVBIENS=DVBEVENT("DVBIEN19")_","_DVBEVENT("DVBIEN200")_","
 ;
 ; Update the OP-FIRST USED DATE/TIME sub-field #2
 I $$GET1^DIQ(DVBFILE,DVBIENS,2,"E",,"DVBERRMSG")="" D  ;
 . S DVBFDA(DVBFILE,DVBIENS,2)=DVBEVENT("DTEVENTI") ; OP-FIRST USED DATE/TIME
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMUSER^"_$T(+0)) Q:DVBQUIT
 ;
 S DVBFDA(DVBFILE,DVBIENS,3)=DVBEVENT("DTEVENTI") ;... OP-LAST USED DATE/TIME
 S DVBCOUNTER=$$GET1^DIQ(DVBFILE,DVBIENS,4,"E",,"DVBERRMSG") ; OP-USAGE COUNT
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMUSER^"_$T(+0)) Q:DVBQUIT
 S DVBCOUNTER=DVBCOUNTER+1 ;.................... Increment  OP-USAGE COUNT
 S DVBFDA(DVBFILE,DVBIENS,4)=DVBCOUNTER ;.... Update the OP-USAGE COUNT
 ;
 D FILE^DIE("","DVBFDA","DVBERRMSG") ; Update OPTION NAME (multiple)
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","SUMUSER^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit SUMUSER
 ;
TASKDONE(DVBIENEVENT) ; 
 ;
 I DVBEVENT("TASKEDI")=1,DVBEVENT("DTENDEDI")]"" Q 1
 ;
 Q 0 ; Quit TASKDONE extrinsic
 ;
TASKHIST(DVBEVENT,DVBMAXHIST) ; 
 ;
 N %DT,DVBDIALLVAL ; Left behind by UPDATE^DIE call during testing
 N DIERR,DVBIENS,DVBLASTIEN,DVBNEWIEN,DVBNUMRECS
 N DVBERRMSG,DVBFDA,DVBFIELD,DVBFILE
 ; ZEXCEPT: DVBQUIT
 ;
 Q:'DVBEVENT("DTENDEDI")  ; Quit if no E-TASK END DATE/TIME defined
 ;
 S DVBFILE=396.9991
 S DVBLASTIEN=$P($G(^DVB(DVBFILE,DVBEVENT("DVBIEN19"),"OCCUR",0)),U,3) ; Last IEN
 S DVBNEWIEN=DVBLASTIEN+1
 ;
 S DVBNUMRECS=$P($G(^DVB(DVBFILE,DVBEVENT("DVBIEN19"),"OCCUR",0)),U,4)
 I DVBNUMRECS=DVBMAXHIST!(DVBNUMRECS>DVBMAXHIST) D  ;
 . F  D  Q:DVBNUMRECS=(DVBMAXHIST-1)!(DVBNUMRECS=0)
 . . N DVBIEN1ST
 . . S DVBIEN1ST=$O(^DVB(DVBFILE,DVBEVENT("DVBIEN19"),"OCCUR",0)) ; 1st OCCURENCE IEN
 . . I $D(^DVB(DVBFILE,DVBEVENT("DVBIEN19"),"OCCUR",DVBIEN1ST,0)) D  ;
 . . . D OCCURENC^DVBAUDDIK(DVBEVENT("DVBIEN19"),DVBIEN1ST) ; Delete 1st occur.
 . . S DVBNUMRECS=$P($G(^DVB(DVBFILE,DVBEVENT("DVBIEN19"),"OCCUR",0)),U,4)
 ;
 S DVBIENS="+1,"_DVBEVENT("DVBIEN19")_","
 S DVBFILE=396.9991201
 S DVBFDA(DVBFILE,DVBIENS,.01)=DVBNEWIEN ; DINUM multp. occurance number
 S DVBFDA(DVBFILE,DVBIENS,2)=DVBEVENT("DTEVENT") ;....E-DATE/TIME (started)
 S DVBFDA(DVBFILE,DVBIENS,3)=DVBEVENT("DTENDED") ;....E-TASK END DATE/TIME
 S DVBFDA(DVBFILE,DVBIENS,4)="`"_DVBEVENT("DVBIEN200") ; E-AUDITED USER
 ;
 D UPDATE^DIE("E","DVBFDA","","DVBERRMSG")
 D DIERR^DVBAUDDILG1(60,5,"DVBERRMSG","TASKHIST^"_$T(+0)) Q:DVBQUIT
 ;
 Q  ; Quit TASKHIST