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

CIANBLOG.m

Go to the documentation of this file.
  1. CIANBLOG ;MSC/IND/DKM - MSC RPC Broker Activity Log Support ;10-Jan-2011 13:06;PLS
  1. ;;1.1;CIA NETWORK COMPONENTS;**001007,001008**;Jan 3, 2008
  1. ;;Copyright 2000-2008, Medsphere Systems Corporation
  1. ;=================================================================
  1. ; Open a log entry. The return value is the IEN of the new entry.
  1. ; UID = Unique session id
  1. ; USER = User IEN
  1. ; WID = Workstation id
  1. OPEN(UID,USER,WID) ;EP
  1. N IEN,NOW,X
  1. S NOW=$$NOW^XLFDT
  1. S:$G(WID)="" WID="UNKNOWN"
  1. L +^CIANB(19941.24,0):2
  1. S X=1+$P(^CIANB(19941.24,0),U,3),IEN=$O(^($C(1)),-1)+1,$P(^(0),U,3,4)=X_U_IEN,^(IEN,0)=UID_U_USER_U_WID_U_NOW_U_U_DUZ(2)
  1. L -^CIANB(19941.24,0)
  1. S ^CIANB(19941.24,"B",UID,IEN)=""
  1. S ^CIANB(19941.24,"BUSER",USER,IEN)=""
  1. S ^CIANB(19941.24,"BWID",WID,IEN)=""
  1. S ^CIANB(19941.24,"BLOGIN",NOW,IEN)=""
  1. S ^CIANB(19941.24,"BDIV",DUZ(2),IEN)=""
  1. Q IEN
  1. ; Close a log entry.
  1. ; IEN = IEN of the entry.
  1. CLOSE(IEN) ;EP
  1. N NOW
  1. S NOW=$$NOW^XLFDT
  1. S:$D(^CIANB(19941.24,+IEN,0)) $P(^(0),U,5)=NOW,^CIANB(19941.24,"BLOGOUT",NOW,IEN)=""
  1. Q
  1. ; Log an activity
  1. ; IEN = IEN of log entry
  1. ; TYPE = Type of log entry (1=RPC, 2=Event)
  1. ; NAME = Text name associated with activity
  1. ; Returns subfile IEN
  1. LOG(IEN,TYPE,NAME) ;EP
  1. N SUB,NOW
  1. Q:'$D(^CIANB(19941.24,IEN)) 0
  1. S NOW=$$NOW^XLFDT
  1. S SUB=$O(^CIANB(19941.24,IEN,10,$C(1)),-1)+1,^(0)="^19941.241D^"_SUB_U_SUB,^(SUB,0)=NOW_U_TYPE_U_NAME
  1. Q SUB
  1. ; Add an entry to the specified activity
  1. ; IEN = IEN of log entry
  1. ; SUB = IEN of subfile entry
  1. ; ARY = Array or global root
  1. ; INC = Include variable name with output (optional)
  1. ADD(IEN,SUB,ARY,INC) ;EP
  1. N ROOT,WP,A,L,P,X,Y,Z
  1. S ROOT=$NA(^CIANB(19941.24,IEN,10,SUB,10))
  1. S WP=$O(@ROOT@($C(1)),-1),WP(0)=WP,INC=+$G(INC),(A,ARY)=$NA(@ARY),L=$QL(ARY)
  1. F D:$D(@A)#2 S A=$Q(@A) Q:'$L(A) Q:$NA(@A,L)'=ARY
  1. .S X=@A,P=$S(INC:A_" = ",1:"")
  1. .F Q:'$L(X) D
  1. ..S Y=$F(X,$C(13))
  1. ..S:'Y!(Y>200) Y=200
  1. ..S Z=$TR($E(X,1,Y-1),$C(13,10)),X=$E(X,Y,999999)
  1. ..S WP=WP+1,@ROOT@(WP,0)=P_Z,P=$S(INC:">>> ",1:"")
  1. S:WP'=WP(0) @ROOT@(0)="^^"_WP_U_WP_U_$$NOW^XLFDT
  1. Q
  1. ; Delete a log entry
  1. DELETE(DA) ;
  1. Q:'$D(^CIANB(19941.24,DA))
  1. N DIK
  1. S DIK="^CIANB(19941.24,"
  1. D ^DIK
  1. Q
  1. ; Task purge in background
  1. TASKPRG N ZTSK
  1. S ZTSK=$$QUEUE^CIAUTSK("DOPURGE^CIANBLOG","Purge CIA ACTIVITY LOG")
  1. I ZTSK>0 W !,"CIA ACTIVITY LOG purge submitted as task #",ZTSK,!!
  1. E W !,"Error submitting CIA ACTIVITY LOG purge.",!!
  1. Q
  1. ; Purge log entries according to retention criteria
  1. DOPURGE N DAYS,LP,IEN
  1. S DAYS=$$GET^XPAR("ALL","CIANB ACTIVITY RETENTION")
  1. Q:'DAYS
  1. S LP=$$FMADD^XLFDT(DT,-DAYS)
  1. F S LP=$O(^CIANB(19941.24,"BLOGIN",LP),-1) Q:'LP D
  1. .S IEN=0
  1. .F S IEN=$O(^CIANB(19941.24,"BLOGIN",LP,IEN)) Q:'IEN D
  1. ..D DELETE(IEN)
  1. Q
  1. ; Returns true if activity logging is active
  1. ; Creates a log entry if one does not already exist
  1. ISACTIVE() ;
  1. N RTN,DUZ2
  1. Q:'$D(CIA("UID")) 0
  1. Q:'CIA("UID") 0
  1. S DUZ2=$$GETVAR^CIANBUTL("DUZ2")
  1. S RTN=$$GETVAR^CIANBUTL("ALOG"_$S(DUZ2:":"_DUZ2,1:""))
  1. I RTN="" D
  1. .S RTN=+$$GET^XPAR("ALL","CIANB ACTIVITY LOGGING","`"_$$GETVAR^CIANBUTL("AID0"))
  1. .S:RTN RTN=$$OPEN(CIA("UID"),DUZ,$$GETVAR^CIANBUTL("WID"))
  1. .D SETVAR^CIANBUTL("ALOG"_$S(DUZ2:":"_DUZ2,1:""),RTN)
  1. Q RTN