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

MHVUL1.m

Go to the documentation of this file.
  1. MHVUL1 ;WAS/GPM - MHV UTILITIES - LOGGING ; 3/16/06 10:44pm [4/20/06 11:48am]
  1. ;;1.0;My HealtheVet;**1**;Aug 23, 2005
  1. ;;Per VHA Directive 2004-038, this routine should not be modified.
  1. ;
  1. Q
  1. ; Utilities supporting options/rpcs for logging
  1. ;
  1. LOGON(RESULT,DELETE) ;Turn on logging
  1. ;
  1. ; Input:
  1. ; DELETE - Deletion Date/Time - optional
  1. ; Fileman date/time
  1. ; Default 30 days from Today
  1. ;
  1. ; Output:
  1. ; RESULT - success flag ^ deletion date/time ^ created date/time
  1. ;
  1. N UPDATE
  1. S UPDATE("STATE")=1
  1. S UPDATE("DELETE")=$G(DELETE)
  1. D LOGSET(.RESULT,.UPDATE)
  1. S RESULT=$P(RESULT,"^",1)_"^"_$P(RESULT,"^",3,4)
  1. Q
  1. ;
  1. LOGSET(RESULT,UPDATE) ; Set logging parameters
  1. ;
  1. ; Input:
  1. ; UPDATE("STATE") - Flag 0/1
  1. ; On or Off
  1. ; UPDATE("DELETE") - Deletion Date/Time
  1. ; Fileman date/time
  1. ; Default 30 days from Today
  1. ; UPDATE("LEVEL") - Logging level
  1. ; Error, Trace, Debug, Name
  1. ; Default - Trace
  1. ; UPDATE("NAMES") - Caret delimited list of log entry names
  1. ; UPDATE("AUTOPURGE") - Flag 0/1
  1. ; Default - 0 Off
  1. ; UPDATE("DAYS") - Number of Days to keep
  1. ;
  1. ; Output:
  1. ; RESULT - success flag ^ state ^ deletion date/time ^
  1. ; created date/time ^ level ^ names ^ autopurge ^ days
  1. ;
  1. N I,J,N,%DT,X,Y,STATE,DELETE,CREATED,TITLE,LEVEL,NAMES,AUTOPRG,DAYS,CURRENT
  1. D LOGINFO(.CURRENT)
  1. S STATE=$G(UPDATE("STATE"))
  1. S DELETE=$G(UPDATE("DELETE"))
  1. S LEVEL=$G(UPDATE("LEVEL"))
  1. S NAMES=$G(UPDATE("NAMES"))
  1. S AUTOPRG=$G(UPDATE("AUTOPURGE"))
  1. S DAYS=$G(UPDATE("DAYS"))
  1. ;
  1. ;Set defaults
  1. I STATE="",CURRENT("STATE")="" S STATE=0
  1. I DELETE="",CURRENT("DELETE")="" S DELETE="T+30"
  1. I STATE,DELETE="" S DELETE="T+30"
  1. I LEVEL="",CURRENT("LEVEL")="" S LEVEL="TRACE"
  1. I AUTOPRG="",CURRENT("AUTOPURGE")="" S AUTOPRG=0
  1. ;
  1. I STATE'="" D
  1. . S ^XTMP("MHV7LOG",1)=+STATE
  1. . S $P(RESULT,"^",2)=+STATE
  1. . Q
  1. ;
  1. I DELETE'="" D
  1. . S X=DELETE,%DT="TX" D ^%DT S DELETE=Y
  1. . I DELETE<0 S DELETE=$$HTFM^XLFDT($H+30,1)
  1. . S CREATED=$G(CURRENT("CREATED"))
  1. . I CREATED="" S CREATED=$$HTFM^XLFDT($H,1)
  1. . S TITLE=$G(CURRENT("TITLE"))
  1. . I TITLE="" S TITLE="MHV Application Log"
  1. . S ^XTMP("MHV7LOG",0)=DELETE_"^"_CREATED_"^"_TITLE
  1. . S $P(RESULT,"^",3)=DELETE
  1. . S $P(RESULT,"^",4)=CREATED
  1. . Q
  1. ;
  1. I LEVEL'="" D
  1. . S ^XTMP("MHV7LOG",1,"LEVEL","ERROR")=1
  1. . S ^XTMP("MHV7LOG",1,"LEVEL","TRACE")=2
  1. . S ^XTMP("MHV7LOG",1,"LEVEL","NAMED")=3
  1. . S ^XTMP("MHV7LOG",1,"LEVEL","DEBUG")=4
  1. . I ",ERROR,TRACE,NAMED,DEBUG,"'[(","_LEVEL_",") S LEVEL="TRACE"
  1. . S ^XTMP("MHV7LOG",1,"LEVEL")=LEVEL
  1. . S $P(RESULT,"^",5)=LEVEL
  1. . Q
  1. ;
  1. I NAMES'="" D
  1. . K ^XTMP("MHV7LOG",1,"NAMES")
  1. . S ^XTMP("MHV7LOG",1,"NAMES")=NAMES
  1. . F I=1:1:$L(NAMES,"^") S N=$P(NAMES,"^",I) S:N'="" ^XTMP("MHV7LOG",1,"NAMES",N)=""
  1. . S $P(RESULT,"^",6)=NAMES
  1. . Q
  1. ;
  1. I AUTOPRG'="" D
  1. . I DAYS<1 S DAYS=7
  1. . S ^XTMP("MHV7LOG",1,"AUTOPURGE")=+AUTOPRG
  1. . S ^XTMP("MHV7LOG",1,"AUTOPURGE","DAYS")=+DAYS
  1. . S $P(RESULT,"^",7)=+AUTOPRG
  1. . S $P(RESULT,"^",8)=+DAYS
  1. . Q
  1. ;
  1. S $P(RESULT,"^",1)=1
  1. Q
  1. ;
  1. LOGOFF(RESULT) ; Turn off logging
  1. ;
  1. ; Input: none
  1. ;
  1. ; Output:
  1. ; RESULT - success flag ^ deletion date/time
  1. ;
  1. S ^XTMP("MHV7LOG",1)=0
  1. S RESULT="1^"_$P($G(^XTMP("MHV7LOG",0)),"^")
  1. Q
  1. ;
  1. LOGPRG(RESULT,DTM) ;Purge MHV application log
  1. ;
  1. ; Input:
  1. ; DTM - Purge Date/Time - optional
  1. ; Fileman date/time
  1. ; Default to older than a week
  1. ;
  1. ; Output:
  1. ; RESULT - success flag ^ purge date/time
  1. ;
  1. N %DT,X,Y
  1. S X=$G(DTM),%DT="TX" D ^%DT S DTM=Y
  1. I DTM<0 S DTM=$$HTFM^XLFDT($H-7,1)
  1. S RESULT=DTM
  1. S DTM=-DTM
  1. F S DTM=$O(^XTMP("MHV7LOG",2,DTM)) Q:DTM="" K ^XTMP("MHV7LOG",2,DTM)
  1. S RESULT="1^"_RESULT
  1. Q
  1. ;
  1. LOGINFO(RESULT) ; Get information about log
  1. ;
  1. ; Input: none
  1. ;
  1. ; Output:
  1. ; RESULT - log information
  1. ;
  1. K RESULT
  1. S RESULT("HEAD")=$G(^XTMP("MHV7LOG",0))
  1. S RESULT("DELETE")=$P(RESULT("HEAD"),"^",1)
  1. S RESULT("CREATED")=$P(RESULT("HEAD"),"^",2)
  1. S RESULT("TITLE")=$P(RESULT("HEAD"),"^",3)
  1. S RESULT("STATE")=$G(^XTMP("MHV7LOG",1))
  1. S RESULT("LEVEL")=$G(^XTMP("MHV7LOG",1,"LEVEL"))
  1. S RESULT("NAMES")=$G(^XTMP("MHV7LOG",1,"NAMES"))
  1. S RESULT("NEWEST")=-$O(^XTMP("MHV7LOG",2,""))
  1. S RESULT("OLDEST")=-$O(^XTMP("MHV7LOG",2,""),-1)
  1. S RESULT("AUTOPURGE")=$G(^XTMP("MHV7LOG",1,"AUTOPURGE"))
  1. S RESULT("DAYS")=$G(^XTMP("MHV7LOG",1,"AUTOPURGE","DAYS"))
  1. Q
  1. ;
  1. LOGSIZE(RESULT) ; Get log size information
  1. ;
  1. ; Input: none
  1. ;
  1. ; Output:
  1. ; RESULT - log size information
  1. ;
  1. K RESULT
  1. S RESULT("ENTRY COUNT")=0
  1. S RESULT("NODE COUNT")=0
  1. S RESULT("BYTE COUNT")=0
  1. N DTM,I,J,BASE,LBASE
  1. S DTM="",J=""
  1. F S DTM=$O(^XTMP("MHV7LOG",2,DTM)) Q:DTM="" D
  1. . F S J=$O(^XTMP("MHV7LOG",2,DTM,J)) Q:J="" D
  1. .. S RESULT("ENTRY COUNT")=RESULT("ENTRY COUNT")+1
  1. .. S BASE="^XTMP(""MHV7LOG"",2,"_DTM_","_J
  1. .. S I=BASE_")"
  1. .. S LBASE=$L(BASE)
  1. .. F S I=$Q(@I) Q:$E(I,1,LBASE)'=BASE D
  1. ... S RESULT("NODE COUNT")=RESULT("NODE COUNT")+1
  1. ... S RESULT("BYTE COUNT")=RESULT("BYTE COUNT")+$L(I)+$L(@I)-LBASE
  1. ... Q
  1. .. Q
  1. . Q
  1. Q
  1. ;
  1. LOGSUM(RESULT) ; Retrieve log summary
  1. ;
  1. ; Input: none
  1. ;
  1. ; Output:
  1. ; RESULT - Global Root of Result Array
  1. ; @RESULT - success flag ^ message or entry count ^ name
  1. ; @RESULT@(n)=nth entry of log
  1. ;
  1. N CNT,DTM,J,NAME,ENTRYCNT
  1. S RESULT="^TMP(""MHV LOG SUMMARY"",$J)"
  1. K @RESULT
  1. S CNT=0,DTM="",J=""
  1. F S DTM=$O(^XTMP("MHV7LOG",2,DTM)) Q:DTM="" D
  1. . F S J=$O(^XTMP("MHV7LOG",2,DTM,J)) Q:J="" D
  1. .. S CNT=CNT+1
  1. .. S NAME=$O(^XTMP("MHV7LOG",2,DTM,J,1,""))
  1. .. S ENTRYCNT=$G(^XTMP("MHV7LOG",2,DTM,J))
  1. .. S @RESULT@(CNT)=DTM_"^"_J_"^"_ENTRYCNT_"^"_NAME
  1. .. Q
  1. . Q
  1. S @RESULT="1^"_CNT_"^"
  1. Q
  1. ;
  1. LOGDET(RESULT,DTM,JOB) ; Retrieve log entry detail
  1. ;
  1. ; Input:
  1. ; DTM - Log Entry Date/Time
  1. ; - Fileman date/time
  1. ; JOB - Job Number
  1. ;
  1. ; Output:
  1. ; RESULT - Global Root of Result Array
  1. ; @RESULT - success flag ^ message or node count
  1. ; @RESULT@(0)= log entry header
  1. ; @RESULT@(n)=nth node of entry
  1. ;
  1. N CNT,BASE,I,LBASE
  1. S RESULT="^TMP(""MHV LOG DETAIL"",$J)"
  1. K @RESULT
  1. I '$D(^XTMP("MHV7LOG",2,DTM)) S @RESULT="0^NO SUCH ENTRY"
  1. I '$D(^XTMP("MHV7LOG",2,DTM,JOB)) S @RESULT="0^NO SUCH ENTRY"
  1. ;
  1. S BASE="^XTMP(""MHV7LOG"",2,"_DTM_","_JOB
  1. S I=BASE_")"
  1. S BASE=BASE_","
  1. S LBASE=$L(BASE)
  1. S CNT=0
  1. S @RESULT@(0)=DTM_"^"_JOB_"^"_$G(^XTMP("MHV7LOG",2,DTM,JOB))
  1. F S I=$Q(@I) Q:$E(I,1,LBASE)'=BASE D
  1. . S CNT=CNT+1
  1. . S @RESULT@(CNT)=$P(I,BASE,2)_" = "_@I
  1. . Q
  1. S @RESULT="1^"_CNT
  1. Q
  1. ;