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

BXPARPTU.m

Go to the documentation of this file.
  1. BXPARPTU ;IHS/OIT/FBD - PARAMETER AUDIT USER REPORTS ;
  1. ;;1.0;IHS EXTENSIONS TO KERNEL TOOLKIT;;Dec 19, 2013;Build 12
  1. ;
  1. ;PARAMETER VALUE REPORT FOR A SPECIFIED USER/PROVIDER
  1. ;ON A SPECIFIED DATE (DEFAULT TODAY)
  1. ;
  1. ;
  1. ;SELECT USER
  1. N DIC,DA,GLOBROOT,MSG
  1. S (DIC,GLOBROOT)="^VA(200,"
  1. S DIC(0)="AEMQ"
  1. D ^DIC K DIC
  1. Q:+Y'>0
  1. S BXPAUSER=+Y ;NEW USER FILE #200 RECORD POINTER
  1. S BXPAUNM=$P(^VA(200,BXPAUSER,0),U,1) ;USER NAME
  1. ;
  1. ;SELECT EFFECTIVE DATE OF REPORT (DEFAULT TODAY)
  1. K DIR
  1. S DIR(0)="D^3130801:"_DT_".2359:AETX"
  1. S DIR("A")="Enter effective date/time of report: "
  1. S DIR("B")="NOW"
  1. D ^DIR Q:'+Y ;EXIT IF NO DATE SPECIFIED
  1. S BXPAEFDT=+Y
  1. ;
  1. ;SELECT DEVICE
  1. K %ZIS S %ZIS="Q"
  1. D ^%ZIS Q:POP
  1. I $D(IO("Q")) D Q
  1. .S ZTRTN="TSK^BXPARPTU"
  1. .S ZTDESC="Parameter Audit Report for "_BXPAUNM
  1. .F %="BXPAEFDT","BXPAUSER","BXPAUNM" S ZTSAVE(%)=""
  1. .D ^%ZTLOAD
  1. .D HOME^%ZIS K IO("Q")
  1. ;
  1. TSK ;QUEUED TASK ENTRY POINT FOR REPORT
  1. S U="^"
  1. D COMPILE
  1. D OUTPUT
  1. D CLEANUP
  1. Q
  1. ;
  1. ;
  1. COMPILE ;COMPILE REPORT DATA
  1. N PTR,DATE,INST,VALUE
  1. K BXPADATA
  1. S BXPAENT=BXPAUSER_";VA(200," ;ENTITY SPECIFIER FOR THIS USER
  1. Q:'$D(^BXPA(9002026.01,"AENT",BXPAENT)) ;EXIT IF NO AUDIT RECORDS ON FILE FOR THIS USER
  1. ;
  1. ;STEP 1: BUILD WORK ARRAY
  1. S PTR=""
  1. F S PTR=$O(^BXPA(9002026.01,"AENT",BXPAENT,PTR)) Q:PTR="" D ;SCAN ALL AUDIT RECORDS FOR THIS ENTRY
  1. .S DATE=$P(^BXPA(9002026.01,PTR,0),U,1) ;AUDIT RECORD DATE/TIME
  1. .S INST=$P(^BXPA(9002026.01,PTR,0),U,7) ;PARAMETER NAME
  1. .S VALUE=$P(^BXPA(9002026.01,PTR,0),U,9) ;PARAMETER VALUE
  1. .S BXPADATA(BXPAUSER,INST,DATE)=VALUE
  1. ;
  1. ;STEP 2: SCAN FOR PARAMETER'S VALUE ON EFFECTIVE DATE
  1. S INST=""
  1. F S INST=$O(BXPADATA(BXPAUSER,INST)) Q:INST="" D ;SCAN WORK ARRAY FOR EACH PARAMETER INSTANCE
  1. .S BXPADATA(BXPAUSER,INST)="Not defined in audit log by this date"
  1. .S DATE=""
  1. .F S DATE=$O(BXPADATA(BXPAUSER,INST,DATE)) Q:(DATE="")!(DATE>BXPAEFDT) D ;SCAN ALL DATED RECORDS FOR VALUE CHANGES
  1. ..S BXPADATA(BXPAUSER,INST)=BXPADATA(BXPAUSER,INST,DATE)
  1. Q
  1. ;
  1. ;
  1. OUTPUT ;PRINT OUT REPORT
  1. N LINE,PAGE,PDATE,EFFDATE,INST,DASH,VALUE
  1. S PDATE=$E(DT,4,5)_"/"_$E(DT,6,7)_"/"_(1700+$E(DT,1,3)) ;TODAY'S DATE IN A PRINTABLE FORMAT
  1. S EFFDATE=$E(BXPAEFDT,4,5)_"/"_$E(BXPAEFDT,6,7)_"/"_(1700+$E(BXPAEFDT,1,3)) ;EFFECTIVE DATE IN A PRINTABLE FORMAT
  1. S DASH="",$P(DASH,"-",IOM)="" ;DASHED LINE FOR OUTPUT SEPARATOR
  1. S PAGE=0 ;INITIALIZE REPORT PAGE COUNTER
  1. S IOSL=$S(IOST["C-":IOSL-2,1:IOSL) ;FOR TERMINAL OUTPUT, LEAVE ROOM FOR A 'PAUSE' MESSAGE AT BOTTOM OF SCREEN
  1. S LINE=IOSL ;REPORT LINE COUNTER
  1. ;
  1. S INST=""
  1. F S INST=$O(BXPADATA(BXPAUSER,INST)) Q:INST="" D ;
  1. .S VALUE=BXPADATA(BXPAUSER,INST)
  1. .D LINEOUT
  1. Q
  1. ;
  1. ;
  1. LINEOUT ;OUTPUT A SINGLE LINE OF THE REPORT
  1. S LINE=LINE+1
  1. I LINE>IOSL D ;
  1. .I (IOST["C-"),+PAGE D ;EXECUTE PAUSE MESSAGE WHEN BOTTOM OF SCREEN IS REACHED
  1. ..K DIR
  1. ..S DIR(0)="E" ;END-OF-PAGE
  1. ..D ^DIR
  1. .D HEADER
  1. W $E(INST,1,38),?41,VALUE,!
  1. Q
  1. ;
  1. ;
  1. I +PAGE!(IOST["C-") W @IOF ;SKIP FORM FEED ON FIRST PAGE, IF OUTPUT DEVICE NOT A CRT
  1. S PAGE=PAGE+1
  1. W "PARAMETER SETTINGS FOR",?24,BXPAUNM,?69,PDATE,!
  1. W ?6,"IN EFFECT ON DATE",?24,EFFDATE,?71,"PAGE ",PAGE,!
  1. W !,?5,"PARAMETER",?41,"VALUE",!
  1. W DASH,!
  1. S LINE=6
  1. Q
  1. ;
  1. ;
  1. CLEANUP ;CLEAN PARTITION BEFORE EXITING PROCESS
  1. K BXPAEFDT,BXPAUSER,BXPAUNM,BXPAENT,BXPADATA
  1. D ^%ZISC
  1. Q