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

ACRFAUD.m

Go to the documentation of this file.
  1. ACRFAUD ;IHS/OIRM/DSD/AEF - PRINT ARMS AUDITS [ 09/23/2005 9:44 AM ]
  1. ;;2.1;ADMIN RESOURCE MGT SYSTEM;**19**;NOV 05, 2001
  1. ;
  1. DESC ;----- ROUTINE DESCRIPTION
  1. ;;
  1. ;; This option prints a listing of audits for the specified file
  1. ;; during the specified date range. The list includes the audit
  1. ;; number, date/time recorded, user, file entry number, file entry
  1. ;; name, field number, field name, old value, and new value.
  1. ;; FileMan Auditing must be active to generate audit entries for
  1. ;; this list.
  1. ;;
  1. ;;$$END
  1. ;
  1. EN ;EP -- MAIN ENTRY POINT
  1. ;
  1. N ACRDATES,ACRFILE,ZTSAVE
  1. D ^XBKVAR
  1. D HOME^%ZIS
  1. ;
  1. D TXT
  1. ;
  1. D FILE(.ACRFILE)
  1. Q:ACRFILE']""
  1. ;
  1. D DATES(.ACRDATES)
  1. Q:ACRDATES']""
  1. ;
  1. S ZTSAVE("ACRDATES")=""
  1. S ZTSAVE("ACRFILE")=""
  1. D QUE^ACRFUTL("DQ^ACRFAUD",.ZTSAVE,"ARMS AUDIT REPORT")
  1. ;
  1. Q
  1. DQ ;EP -- QUEUED JOB ENTRY POINT
  1. ;
  1. N ACRPAGE
  1. D HDR(ACRDATES,ACRFILE)
  1. D LOOP(ACRDATES,ACRFILE)
  1. D ^%ZISC
  1. Q
  1. LOOP(ACRDATES,ACRFILE) ;
  1. ;----- LOOP THROUGH THE FILE
  1. ;
  1. N ACRBEG,ACRCNT,ACRD0,ACRDATE,ACREND,ACRMSG,ACROUT,DIA,DIR,X,Y
  1. S DIA=+$P(ACRFILE,U)
  1. S ACRMSG="NO DATA FOUND"
  1. S ACRBEG=$P(ACRDATES,U)
  1. S ACREND=$P(ACRDATES,U,2)_".999999"
  1. S ACRDATE=ACRBEG-1_".999999"
  1. F S ACRDATE=$O(^DIA(DIA,"C",ACRDATE)) Q:'ACRDATE Q:ACRDATE>ACREND D Q:$G(ACROUT)
  1. . S ACRD0=0
  1. . F S ACRD0=$O(^DIA(DIA,"C",ACRDATE,ACRD0)) Q:'ACRD0 D Q:$G(ACROUT)
  1. . . D PRT(ACRD0,ACRDATES,ACRFILE,.ACROUT)
  1. . . S ACRMSG=""
  1. Q:$G(ACROUT)
  1. W !?5,ACRMSG
  1. W !
  1. I $E($G(IOST))="C" S DIR(0)="E" D ^DIR
  1. Q
  1. PRT(ACRD0,ACRDATES,ACRFILE,ACROUT) ;
  1. ;----- PRINT THE DATA
  1. ;
  1. N DIA,ACRDATA,ACRDATE,ACRENT,ACRENTN,ACRFLD,ACRFLDN,ACRNEW,ACROLD,ACRUSER,X,Y
  1. S ACRCNT=$G(ACRCNT)+1
  1. I $E($G(IOST))="C",ACRCNT>2 D
  1. . D HDR(ACRDATES,ACRFILE,.ACROUT)
  1. . S ACRCNT=1
  1. I $E($G(IOST))="P",ACRCNT>6 D
  1. . D HDR(ACRDATES,ACRFILE,.ACROUT)
  1. . S ACRCNT=1
  1. Q:$G(ACROUT)
  1. S DIA=+$P(ACRFILE,U)
  1. S ACRDATA=^DIA(DIA,ACRD0,0)
  1. S ACRENT=$P(ACRDATA,U)
  1. S ACRENTN=$$ENTNAM(DIA,ACRD0)
  1. S Y=$P(ACRDATA,U,2)
  1. X ^DD("DD")
  1. S ACRDATE=Y
  1. S ACRFLD=$P(ACRDATA,U,3)
  1. S ACRFLDN=$$FLDNAM(DIA,ACRD0)
  1. S ACRUSER=$P(ACRDATA,U,4)
  1. ;I ACRUSER S ACRUSER=$P(^VA(200,ACRUSER,0),U) ;ACR*2.1*19.02 IM16848
  1. I ACRUSER S ACRUSER=$$NAME2^ACRFUTL1(ACRUSER) ;ACR*2.1*19.02 IM16848
  1. S ACROLD=$$OLD(DIA,ACRD0)
  1. S ACRNEW=$$NEW(DIA,ACRD0)
  1. ;
  1. W !!
  1. W "AUDIT #: "
  1. W ACRD0
  1. W ?40,"DATE/TIME RECORDED: "
  1. W ACRDATE
  1. W !
  1. W "USER: "
  1. W ACRUSER
  1. W !
  1. W "FILE ENTRY #: "
  1. W ACRENT
  1. W ?40,"FILE ENTRY NAME: "
  1. W ACRENTN
  1. W !
  1. W "FIELD #: "
  1. W ACRFLD
  1. W ?40,"FIELD NAME: "
  1. W ACRFLDN
  1. W !
  1. W "OLD VALUE: "
  1. W ACROLD
  1. W !
  1. W "NEW VALUE: "
  1. W ACRNEW
  1. Q
  1. HDR(ACRDATES,ACRFILE,ACROUT) ;
  1. ;
  1. N DIR,I,X,Y
  1. I $E($G(IOST))="C",$G(ACRPAGE) D Q:$G(ACROUT)
  1. . S DIR(0)="E"
  1. . D ^DIR
  1. . I 'Y S ACROUT=1
  1. S ACRPAGE=$G(ACRPAGE)+1
  1. W @IOF
  1. W !,"AUDIT LISTING OF "_$P(ACRFILE,U,2)_" FILE"
  1. W ?IOM-20,$$NOW^ACRFUTL
  1. S Y=$P(ACRDATES,U)
  1. X ^DD("DD")
  1. W !,"FROM "_Y
  1. S Y=$P(ACRDATES,U,2)
  1. X ^DD("DD")
  1. W " TO "_Y
  1. W ?IOM-20,"PAGE: ",ACRPAGE
  1. W !
  1. F I=1:1:IOM W "-"
  1. W !
  1. Q
  1. FILE(ACRFILE) ;
  1. ;----- ASK WHICH FILE
  1. ;
  1. N DIC,DTOUT,DUOUT,X,Y
  1. S ACRFILE=""
  1. S DIC="^DIC("
  1. S DIC(0)="AEMQ"
  1. D ^DIC
  1. Q:$D(DTOUT)!($D(DUOUT))
  1. Q:+Y'>0
  1. S ACRFILE=Y
  1. Q
  1. DATES(ACRDATES) ;
  1. ;----- ASK DATE RANGE
  1. ;
  1. DLOOP ;----- DATE LOOP
  1. ;
  1. N ACRBEG,ACREND,DIR,DIRUT,DTOUT,DUOUT,X,Y
  1. S ACRDATES=""
  1. W !
  1. S DIR(0)="DO^::E"
  1. S DIR("A")="Begin with AUDIT DATE"
  1. S DIR("?")="The first date in the audit date range"
  1. D ^DIR
  1. Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))
  1. Q:Y=""
  1. S ACRBEG=Y
  1. S DIR("A")="End with AUDIT DATE"
  1. S DIR("?")="The last date in the audit date range"
  1. D ^DIR
  1. Q:$D(DTOUT)!($D(DUOUT))!($D(DIRUT))
  1. Q:Y=""
  1. S ACREND=Y
  1. I ACREND<ACRBEG D G DLOOP
  1. . W *7,!?5,"ENDING DATE cannot be less than BEGINNING DATE"
  1. S ACRDATES=ACRBEG_U_ACREND
  1. Q
  1. ENTNAM(DIA,D0) ;
  1. ;----- EXTRINSIC FUNCTION - GET EXTERNAL FILE ENTRY NAME
  1. ;
  1. ; INPUT:
  1. ; DIA = FILE NUMBER
  1. ; D0 = INTERNAL NUMBER OF AUDIT ENTRY
  1. ;
  1. ; RETURNS EXTERNAL ENTRY NAME
  1. ;
  1. N %,C,X,Y
  1. Q:'$D(^DIA(DIA,D0))
  1. S %=^DIC(DIA,0,"GL")
  1. S X=^DIA(DIA,D0,0)
  1. S X=$S($D(@(%_+X_",0)")):$P(^(0),U),1:"")
  1. S C=$S($D(^DD(DIA,.01,0)):$P(^(0),U,2),1:"")
  1. S Y=X
  1. D:Y]"" Y^DIQ:C]""
  1. S X=Y
  1. Q X
  1. ;
  1. FLDNAM(DIA,D0) ;
  1. ;----- EXTRINSIC FUNCTION - GET FIELD NAME
  1. ;
  1. ; INPUT:
  1. ; DIA = FILE NUMBER
  1. ; D0 = INTERNAL NUMBER OF AUDIT ENTRY
  1. ;
  1. ; RETURNS EXTERNAL FIELD NAME
  1. ;
  1. N X,Y
  1. S Y(1.1,1.1)=$S($D(^DIA(DIA,D0,0)):$P(^(0),U,3),1:"")
  1. X ^DD(1.1,1.1,9.2)
  1. K Y(1.1)
  1. S X=$E(X,1,$L(X)-1)
  1. Q X
  1. ;
  1. OLD(DIA,D0) ;
  1. ;----- EXTRINSIC FUNCTION - GET OLD VALUE
  1. ;
  1. ; INPUT:
  1. ; DIA = FILE NUMBER
  1. ; D0 = INTERNAL NUMBER OF AUDIT ENTRY
  1. ;
  1. ; RETURNS OLD VALUE OF AUDIT FIELD
  1. ;
  1. N X
  1. S X=$S($D(^DIA(DIA,D0,2)):^(2),1:"<no previous value>")
  1. Q X
  1. ;
  1. NEW(DIA,D0) ;
  1. ;----- EXTRINSIC FUNCTION - GET NEW VALUE
  1. ;
  1. ; INPUT:
  1. ; DIA = FILE NUMBER
  1. ; D0 = INTERNAL NUMBER OF AUDIT ENTRY
  1. ;
  1. ; RETURNS NEW VALUE OF AUDIT FIELD
  1. ;
  1. N X
  1. S X=$S($D(^DIA(DIA,D0,3)):^(3),1:"<deleted>")
  1. Q X
  1. ;
  1. TXT ;----- PRINT OPTION DESCRIPTION
  1. ;
  1. N I,X
  1. F I=1:1 S X=$P($T(DESC+I),";",3) Q:X["$$END" W !,X
  1. Q
  1. ONE ;EP -- DISPLAY AUDIT TRAIL FOR ONE ENTRY
  1. ;
  1. N ACRFILE,DA,DIC,X,Y,ZTSAVE
  1. ;
  1. D FILE(.ACRFILE)
  1. Q:ACRFILE']""
  1. S DIC=^DIC(+ACRFILE,0,"GL")
  1. ;
  1. D ENTRY(DIC,.Y)
  1. Q:+Y'>0
  1. S DA=+Y
  1. ;
  1. S ZTSAVE("DIC")=""
  1. S ZTSAVE("DA")=""
  1. S ZTSAVE("ACRFILE")=""
  1. D QUE^ACRFUTL("DQ1^ACRFAUD",.ZTSAVE,"ARMS AUDIT REPORT")
  1. Q
  1. DQ1 ;EP -- QUEUED REPORT STARTS HERE
  1. ;
  1. N ACRPAGE
  1. D HDR1(ACRFILE,DA,.ACROUT)
  1. D DIQ(DIC,DA)
  1. D ^%ZISC
  1. Q
  1. ENTRY(DIC,Y) ;
  1. ;----- LOOK UP FILE ENTRY
  1. ;
  1. S DIC(0)="AEMQ"
  1. D ^DIC
  1. Q
  1. DIQ(DIC,DA) ;
  1. ;----- CALL EN^DIQ TO DISPLAY THE ENTRY
  1. ;
  1. S DIQ(0)="ACR"
  1. D EN^DIQ
  1. Q
  1. HDR1(ACRFILE,DA,ACROUT) ;
  1. ;----- PRINT HEADER FOR ONE ENTRY AUDIT REPORT
  1. ;
  1. N ACRENT,DIR,I,X,Y
  1. I $E($G(IOST))="C",$G(ACRPAGE) D Q:$G(ACROUT)
  1. . S DIR(0)="E"
  1. . D ^DIR
  1. . I 'Y S ACROUT=1
  1. S ACRPAGE=$G(ACRPAGE)+1
  1. W @IOF
  1. W !,"AUDIT LISTING OF ",$P(ACRFILE,U,2)," FILE ENTRY "
  1. W ?IOM-20,$$NOW^ACRFUTL
  1. W !?IOM-20,"PAGE: ",ACRPAGE
  1. W !
  1. F I=1:1:IOM W "-"
  1. W !
  1. Q