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

ACHSMAUD.m

Go to the documentation of this file.
  1. ACHSMAUD ; IHS/ITSC/PMF - TPF MENU OPTION USE AUDIT ;
  1. ;;3.1;CONTRACT HEALTH MGMT SYSTEM;;JUN 11, 2001
  1. ;
  1. ;
  1. ;THIS IS CALLED FROM ACHS OPTIONS THAT NEED TO BE AUDITED FOR FREQUENCY
  1. ;OF USE
  1. AUDIT(NAMESPAC,LEVEL) ;EP
  1. ;
  1. I $G(LEVEL)="" S LEVEL=0
  1. S LEVEL=LEVEL+1
  1. S U="^"
  1. S %H=$H D YX^%DTC S NOW=Y ;NOW INCLUDES SECONDS
  1. S GLOBAL=U_NAMESPAC_"AUD(" ;ADD AUD FOR AUDIT TO NAMESPACE PASSED
  1. ;
  1. ;XQDIC = INITIAL OPTION KICKED OFF?????
  1. ;XQY0 = CURRENT OPTION?????
  1. D NOW^%DTC
  1. S NOW=%
  1. S @(GLOBAL_"""OPTION"","_XQY_")")=$G(@(GLOBAL_"""OPTION"","_XQY_")"))+1
  1. S @(GLOBAL_"""OPTION"","_XQY_","""_XQUSER_""")")=$G(@(GLOBAL_"""OPTION"","_XQY_","""_XQUSER_""")"))+1
  1. S @(GLOBAL_DUZ_","_NOW_","_LEVEL_","_XQY_","""_XQUSER_""")")=XQY0
  1. S @(GLOBAL_DUZ_","""_XQUSER_""","_LEVEL_","_XQY_","_""""_$P(XQY0,U)_""""_")")=$G(@(GLOBAL_DUZ_","""_XQUSER_""","_LEVEL_","_XQY_","_""""_$P(XQY0,U)_""""_")"))+1
  1. ;
  1. K GLOBAL,NAMESPAC,NOW,%H
  1. Q
  1. ;
  1. ;SUB-ROUTINE TO PRINT OUT REPORT FROM AUDIT GLOBAL
  1. REPORT ;
  1. ;THREE REPORTS 1) BY DATE/TIM
  1. ; 2) BY USER NAME
  1. ; 3) BY OPTION USED A) FREQUENCY BY ALL USERS
  1. ; B) FREQUENCY USED BY EACH USER
  1. S $P(LINE,"-",81)=""
  1. S U="^"
  1. ;
  1. ;ASK FOR NAMESPACE
  1. ASKNMSP ;
  1. K DIC
  1. S DIC="^DIC(9.4,"
  1. S DIC("A")="Enter namespace: "
  1. S DIC(0)="MEAQZ"
  1. D ^DIC
  1. I Y=-1 Q
  1. S NAMESPAC=$P(Y(0),U,2)
  1. S NAME=$P(Y(0),U)
  1. W !!,"REPORTING FROM ",NAME
  1. ;
  1. ;ASK FOR DEVICE
  1. ASKDEV ;
  1. D ^%ZIS
  1. I POP G ASKNMSP
  1. ;
  1. ;ASK FOR WHICH REPORT
  1. ASKREP ;
  1. K DIR
  1. S DIR(0)="N^1:4^K:X'?.N X"
  1. S DIR("A",1)="Select Option Use Report:"
  1. S DIR("A",2)=" 1. By Date"
  1. S DIR("A",3)=" 2. By User"
  1. S DIR("A",4)=" 3. Frequency of use (All Users)"
  1. S DIR("A",5)=" 4. Frequency of use (By User)"
  1. S DIR("A")="Option: "
  1. S DIR("B")="1"
  1. D ^DIR
  1. Q:X=""!$D(DUOUT)!$D(DTOUT)
  1. S CHOICE=$S(X=1:"BYDATE",X=2:"BYUSER",1:"END")
  1. D @CHOICE
  1. G ASKNMSP
  1. Q
  1. ;
  1. ;DEPENDING ON SORT CHOICE DO THE SORT
  1. GENERIC ;
  1. ;
  1. S ACHSDUZ=""
  1. F S ACHSDUZ=$O(^ACHSAUD(ACHSDUZ)) Q:ACHSDUZ=""!(ACHSDUZ="OPTION") D Q:$G(ACHSQUIT)
  1. .W !!
  1. .S DTTIME=""
  1. .F S DTTIME=$O(^ACHSAUD(ACHSDUZ,DTTIME)) Q:DTTIME=""!(+DTTIME=0) D Q:$G(ACHSQUIT)
  1. ..S Y=DTTIME X ^DD("DD") S DATE=Y
  1. ..S LEVEL=""
  1. ..F S LEVEL=$O(^ACHSAUD(ACHSDUZ,DTTIME,LEVEL)) Q:LEVEL="" D Q:$G(ACHSQUIT)
  1. ...S OPTNUM=""
  1. ...F S OPTNUM=$O(^ACHSAUD(ACHSDUZ,DTTIME,LEVEL,OPTNUM)) Q:OPTNUM="" D Q:$G(ACHSQUIT)
  1. ....S NAME="",OLDNAME=""
  1. ....F S NAME=$O(^ACHSAUD(ACHSDUZ,DTTIME,LEVEL,OPTNUM,NAME)) Q:NAME="" D Q:$G(ACHSQUIT)
  1. ....I SORTBY="BY USER" D RPTLINE(ACHSDUZ,DTTIME,LEVEL,OPTNUM,NAME) Q
  1. ....I SORTBY="BY DATE" S ^TMP($J,"ACHSMAUD",SORTBY,DTTIME,NAME,LEVEL,OPTNUM)=""
  1. ....I SORTBY="BY OPTION" S ^TMP($J,"ACHSMAUD",SORTBY,NAME,OPTNUM,ACHSDUZ,DTTIME)=""
  1. D:SORTBY'="BY USER" SORTLOOP(SORTBY)
  1. Q
  1. ;GO THROUGH SORTED GLOBAL
  1. SORTLOOP(SORTBY) ;
  1. S SUB3=""
  1. F S SUB3=$O(^TMP($J,"ACHSMAUD",SORTBY,SUB3)) Q:SUB3="" D
  1. .S SUB4=""
  1. .F S SUB4=$O(^TMP($J,"ACHSMAUD",SORTBY,SUB3,SUB4)) Q:SUB4="" D
  1. ..S SUB5=""
  1. ..F S SUB5=$O(^TMP($J,"ACHSMAUD",SORTBY,SUB3,SUB4,SUB5)) Q:SUB5="" D
  1. ...S SUB6=""
  1. ...F S SUB6=$O(^TMP($J,"ACHSMAUD",SORTBY,SUB3,SUB4,SUB5,SUB6)) Q:SUB6="" D
  1. ....;D RPTLINE()
  1. ;
  1. Q
  1. ;WRITE THE LINE
  1. RPTLINE(SORTBY,ACHSDUZ,DTTIME,LEVEL,OPTNUM,NAME) ;
  1. I SORTBY="BY USER" W !,ACHSDUZ,?25,DTTIME,?35,LEVEL,?45,OPTNUM,?60,NAME
  1. I SORTBY="BY OPTION" W !,OPTNUM
  1. ;
  1. Q
  1. ;
  1. ;LIST BY USER
  1. BYUSER ;
  1. S SORTBY="BY USER"
  1. Q
  1. ;LIST BY DATE
  1. BYDATE ;
  1. S SORTBY="BY DATE"
  1. Q
  1. BYOPTION ;
  1. S SORTBY="BY OPTION"
  1. Q
  1. ;
  1. PGHDR ;
  1. W @IOF
  1. W $$C^XBFUNC(HEADER)
  1. Q
  1. SETAUD(NAMESPAC) ;EP
  1. Q ;ONE TIME USE BY PROGRAMMER. NEEDS TO BE REWRITTEN
  1. ;SET THIS ROUTINE INTO THE ENTRY POINT FIELD OF ALL OPTIONS FOR
  1. ;THE PASSED NAMESPACE
  1. S U="^"
  1. S OPTNAME=NAMESPAC_" "
  1. F S OPTNAME=$O(^DIC(19,"B",OPTNAME)) Q:OPTNAME'[(NAMESPAC) D
  1. .S OPTNUM=$O(^DIC(19,"B",OPTNAME,""))
  1. .Q:OPTNUM=""
  1. .W !,OPTNUM,?10,OPTNAME
  1. .S ENTRYACT=$G(^DIC(19,OPTNUM,20))
  1. .W !,ENTRYACT
  1. .I ENTRYACT="" D Q
  1. ..W "D "_U_$ZN_"("""_NAMESPAC_""")"
  1. ..;S ^DIC(19,OPTNUM,20)="D "_U_$ZN_"("""_NAMESPAC_""")"
  1. .Q:ENTRYACT[($ZN) ;IF THE AUDIT RTN IS ALREADY THERE
  1. . ;DONT DO ANYTHING
  1. .W !,OPTNUM ;W $G(^DIC(19,OPTNUM,20))_" D "_U_$ZN_"("""_NAMESPAC_""")" ;S ^DIC(19,OPTNUM,20)=$G(^DIC(19,OPTNUM,20))_" D "_U_$ZN_"("""_NAMESPAC_""")"
  1. ;
  1. ;
  1. ;FIND THIS AUDIT ROUTINE IN THE ENTRY ACTION FIELD IN THE OPTION FILE
  1. ;FOR THE PASSED NAMESPACE. USED BY PROGRAMMER ONLY. NEEDS TO BE
  1. ;RE-WRITTEN
  1. FINDAUD(NAMESPAC) ;
  1. Q
  1. S U="^"
  1. S OPTNAME=NAMESPAC_" "
  1. F CNT=1:1 S OPTNAME=$O(^DIC(19,"B",OPTNAME)) Q:OPTNAME'[(NAMESPAC) D
  1. .S OPTNUM=$O(^DIC(19,"B",OPTNAME,""))
  1. .Q:OPTNUM=""
  1. .S ENTRYACT=$G(^DIC(19,OPTNUM,20))
  1. .W !,CNT
  1. .I ENTRYACT[("ACHSMAUD") W ?5,"AUDIT FOUND: ",OPTNAME,!,$G(^DIC(19,OPTNUM,20))
  1. .E W ?15,"AUDIT NOT FOUND: ",OPTNAME
  1. ;
  1. Q
  1. ;