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

XUSPURGE.m

Go to the documentation of this file.
  1. XUSPURGE ;SFISC/STAFF - PURGE ROUTINE FOR XUSEC ; Oct 23, 2023@14:28:20
  1. ;;8.0;KERNEL;**180,312,543,756**;Jul 10, 1995;Build 18
  1. ;Per VHA Directive 2004-038, this routine should not be modified.
  1. SCPURG ;Purge sign-on log to 365 days
  1. N XUDT,DA,XUNOW,XURETENT
  1. I $O(^XUSEC(0,0))'>0 Q
  1. S XURETENT=$$RETENTION ; get # of days to retain
  1. S XUDT=$$FMADD^XLFDT(DT,-XURETENT),XUNOW=$$NOW^XLFDT() ;Set the limit
  1. F DA=0:0 S DA=$O(^XUSEC(0,DA)) Q:(DA'>0)!('$$EXPIRED(DA,XUDT)) D DELETE(DA,XUNOW)
  1. Q
  1. ;
  1. AOLD ;
  1. N DIRUT,DIR,XUT,XUDAYS,XUDT,XUI,XUJ,XUK,X
  1. I $D(ZTQUEUED) D Q
  1. . S X=$G(ZTQPARAM),X=$S(X<270:270,1:X) D A02(X),V02(X)
  1. . Q
  1. W !!,"This option will purge the log of inactive access and verify codes ",!,"older than the date specified to allow for their re-use."
  1. S DIR("A")="Do you wish to continue",DIR(0)="Y",DIR("B")="NO" D ^DIR G:$D(DIRUT)!(Y'=1) ENDA
  1. DAYS K DIR S DIR("A")="How far back do you wish to retain codes",DIR("A",1)="VHA has set the minimum time to keep old codes at 270 days.",DIR("B")=270
  1. S DIR("?")="Enter the number of days indicating at what date codes should be purged.",DIR(0)="N^270:400"
  1. D ^DIR Q:$D(DIRUT)
  1. D A02(X),V02(X)
  1. Q
  1. ;
  1. A02(XUDAYS) ;Purge old Access codes in the AOLD x-ref.
  1. N XUT,XUI,XUJ,XUK,XUDT
  1. S XUT=0,XUDT=$H-XUDAYS,XUI=""
  1. F S XUI=$O(^VA(200,"AOLD",XUI)) Q:XUI="" S XUJ=$O(^(XUI,0)) S XUK=^(XUJ) I XUK<XUDT K ^VA(200,"AOLD",XUI,XUJ) S XUT=XUT+1 W:'$D(ZTQUEUED) "."
  1. I '$D(ZTQUEUED) W !!,$S('XUT:"No",1:XUT)," old access codes have been purged."
  1. Q
  1. ;
  1. V02(XUDAYS) ;Purge old Verify code from each users VOLD x-ref
  1. N XUT,XUI,XUJ,XUK,XUDT
  1. S XUT=0,XUDT=$H-XUDAYS,XUI=0
  1. F S XUI=$O(^VA(200,XUI)) Q:XUI'>0 S XUK="" D
  1. . F S XUK=$O(^VA(200,XUI,"VOLD",XUK)) Q:XUK="" I ^(XUK)<XUDT K ^VA(200,XUI,"VOLD",XUK) S XUT=XUT+1 W:'$D(ZTQUEUED) "."
  1. I '$D(ZTQUEUED) W !!,$S('XUT:"No",1:XUT)," old verify codes have been purged."
  1. Q
  1. ENDA K DIRUT,DIR,XUT,XUDAYS,XUDT,XUI,XUJ,XUK
  1. Q
  1. ;
  1. RETENTION() ; returns number of days to retain SIGN-ON LOG file entries
  1. N XURETENT
  1. S XURETENT=$P(^XTV(8989.3,1,"XUS"),"^",21) ;p756
  1. I ('XURETENT)!($G(XURETENT)<365) S XURETENT=365
  1. I ($G(XURETENT)>9999) S XURETENT=9999
  1. Q XURETENT
  1. ;
  1. EXPIRED(XUDA,XUDT) ;Is XUDA older (smaller) than XUDT
  1. Q XUDA<XUDT
  1. ;
  1. DELETE(XUDA,XUNOW) ; delete entry XUDA from SIGN-ON LOG file
  1. N DR,XU1,XU2,DIK,DIE
  1. S XU1=$G(^XUSEC(0,XUDA,0)),XU2=+XU1
  1. ;Enter a SIGN OFF time to clear the X-ref's p543
  1. I $P(XU1,U,4)="" S DR="3////"_XUNOW,DIE="^XUSEC(0," D ^DIE
  1. ;Now kill the record.
  1. S DIK="^XUSEC(0," D ^DIK
  1. ;Make sure the CUR X-ref is cleared.
  1. I XU1 K ^XUSEC(0,"CUR",XU2,XUDA)
  1. Q
  1. ;