- XTERPUR ;ISC-SF.SEA/JLI - DELETE ENTRIES FROM ERROR TRAP ;02/11/11
- ;;8.0;KERNEL;**243,431**;Jul 10, 1995;Build 38
- ;Per VHA Directive 2004-038, this routine should not be modified.
- N I,X,XTDAT,XTDAT1,%DT
- EN1 W !!,"To Remove ALL entries except the last N days, simply enter the number N at the"
- W !,"prompt. OTHERWISE, enter return at the first prompt, and a DATE at the"
- W !,"second prompt. If no ending date is entered at the third prompt, then only"
- W !,"the date specified will be deleted. If an ending date is entered that range",!,"of dates INCLUSIVE will be deleted from the error log.",!!
- ;
- W !!,"Number of days to leave in error trap: " R X:DTIME Q:'$T!(X[U) I X'="",X'=+X W:$E(X)'="?" $C(7)," ??" W !?5,"Enter a number (zero or greater) of days to be left in the Error Log.",!,"A RETURN will result in a request for dates" G EN1
- I X=+X S X=$H-X D KRANGE(1,X) W !!?10,"DONE" D COUNT Q
- ;
- EN2 R !,"Starting Date to DELETE ERRORS from: ",X:DTIME Q:'$T!(X[U)!(X="") S %DT="EQXP" D ^%DT G:Y'>0 EN2 S XTDAT=Y
- R !,"Ending Date to DELETE ERRORS to: ",X:DTIME I '$T!(X[U) W $C(7)," ??" Q
- S:X="" X=XTDAT,%DT="QXP" D ^%DT G:Y'>0 EN2 S XTDAT1=Y
- S XTDAT=$$FMTH^XLFDT(XTDAT),XTDAT1=$$FMTH^XLFDT(XTDAT1) I XTDAT1<XTDAT W $C(7)," ?? CAN NOT BE EARLIER" Q
- D KRANGE(XTDAT,XTDAT1),COUNT
- Q
- ;
- COUNT ;Update FM zero node counts
- N I,X,XTDAT
- S X=0,XTDAT=0 F I=0:0 S I=$O(^%ZTER(1,I)) Q:I'>0 S X=X+1,XTDAT=I
- S $P(^%ZTER(1,0),U,3,4)=$S(X'>0:"",1:XTDAT_U_X)
- F XTDAT=0:0 S XTDAT=$O(^%ZTER(1,"B",XTDAT)) Q:XTDAT'>0 I '$D(^%ZTER(1,XTDAT)) K ^%ZTER(1,"B",XTDAT)
- Q
- TYPE ;To purge a type of error.
- N %DT,XTDAT,XTSTR,IX,Y,CNT
- S %DT="AEX" D ^%DT Q:Y'>1 S XTDAT=+$$FMTH^XLFDT(Y)
- R !,"ERROR STRING TO LOOK FOR: ",XTSTR:DTIME
- Q:'$L(XTSTR)
- S CNT=0 W !
- F IX=0:0 S IX=$O(^%ZTER(1,XTDAT,1,IX)) Q:IX'>0 D
- . I $G(^(IX,"ZE"))[XTSTR K ^%ZTER(1,XTDAT,1,IX) W "-" Q
- . W "." S CNT=CNT+1 Q
- ;Full reference of ^(IX,"ZE") is ^%ZTER(1,XTDAT,1,IX,"ZE")
- S $P(^%ZTER(1,XTDAT,0),"^",2)=CNT ;Reset count
- Q
- AUTO ;Auto clean of error over ZTQPARAM days ago.
- N XTDT,XUSX
- S XUSX=$P($G(^XTV(8989.3,1,"ZTER")),U,3)
- ;S:$G(ZTQPARAM)<1 ZTQPARAM=7
- S:$G(XUSX)<1 XUSX=7
- ;S XTDT=$P($G(^XTV(8989.3,1,"ZTER"),"^^7"),U,3),XTDT=$H-$S(XTDT>ZTQPARAM:XTDT,1:ZTQPARAM)
- S XTDT=$P($G(^XTV(8989.3,1,"ZTER"),"^^7"),U,3),XTDT=$H-$S(XTDT>XUSX:XTDT,1:XUSX)
- D KRANGE(1,XTDT),PURGE^XTERSUM1
- Q
- ;
- KRANGE(XTST,XTDAT) ;Kill error trap before this date
- N XTDH
- I (XTDAT>$H)!('XTDAT) Q
- S XTDH=+$G(XTST,1)-1
- F S XTDH=$O(^%ZTER(1,XTDH)) Q:(XTDH'>0)!(XTDH'<XTDAT) D KILLDAY(XTDH)
- Q
- KILLDAY(%H) ;Kill all errors on one day
- ;L +^%ZTER(1):60 K ^%ZTER(1,%H),^%ZTER(1,"B",%H) L -^%ZTER(1)
- N DIK,DA
- L +^%ZTER(1,%H):60 S DIK="^%ZTER(1,",DA=%H D ^DIK L -^%ZTER(1,%H)
- Q
- ;
- XTERPUR ;ISC-SF.SEA/JLI - DELETE ENTRIES FROM ERROR TRAP ;02/11/11
- +1 ;;8.0;KERNEL;**243,431**;Jul 10, 1995;Build 38
- +2 ;Per VHA Directive 2004-038, this routine should not be modified.
- +3 NEW I,X,XTDAT,XTDAT1,%DT
- EN1 WRITE !!,"To Remove ALL entries except the last N days, simply enter the number N at the"
- +1 WRITE !,"prompt. OTHERWISE, enter return at the first prompt, and a DATE at the"
- +2 WRITE !,"second prompt. If no ending date is entered at the third prompt, then only"
- +3 WRITE !,"the date specified will be deleted. If an ending date is entered that range",!,"of dates INCLUSIVE will be deleted from the error log.",!!
- +4 ;
- +5 WRITE !!,"Number of days to leave in error trap: "
- READ X:DTIME
- IF '$TEST!(X[U)
- QUIT
- IF X'=""
- IF X'=+X
- IF $EXTRACT(X)'="?"
- WRITE $CHAR(7)," ??"
- WRITE !?5,"Enter a number (zero or greater) of days to be left in the Error Log.",!,"A RETURN will result in a request for dates"
- GOTO EN1
- +6 IF X=+X
- SET X=$HOROLOG-X
- DO KRANGE(1,X)
- WRITE !!?10,"DONE"
- DO COUNT
- QUIT
- +7 ;
- EN2 READ !,"Starting Date to DELETE ERRORS from: ",X:DTIME
- IF '$TEST!(X[U)!(X="")
- QUIT
- SET %DT="EQXP"
- DO ^%DT
- IF Y'>0
- GOTO EN2
- SET XTDAT=Y
- +1 READ !,"Ending Date to DELETE ERRORS to: ",X:DTIME
- IF '$TEST!(X[U)
- WRITE $CHAR(7)," ??"
- QUIT
- +2 IF X=""
- SET X=XTDAT
- SET %DT="QXP"
- DO ^%DT
- IF Y'>0
- GOTO EN2
- SET XTDAT1=Y
- +3 SET XTDAT=$$FMTH^XLFDT(XTDAT)
- SET XTDAT1=$$FMTH^XLFDT(XTDAT1)
- IF XTDAT1<XTDAT
- WRITE $CHAR(7)," ?? CAN NOT BE EARLIER"
- QUIT
- +4 DO KRANGE(XTDAT,XTDAT1)
- DO COUNT
- +5 QUIT
- +6 ;
- COUNT ;Update FM zero node counts
- +1 NEW I,X,XTDAT
- +2 SET X=0
- SET XTDAT=0
- FOR I=0:0
- SET I=$ORDER(^%ZTER(1,I))
- IF I'>0
- QUIT
- SET X=X+1
- SET XTDAT=I
- +3 SET $PIECE(^%ZTER(1,0),U,3,4)=$SELECT(X'>0:"",1:XTDAT_U_X)
- +4 FOR XTDAT=0:0
- SET XTDAT=$ORDER(^%ZTER(1,"B",XTDAT))
- IF XTDAT'>0
- QUIT
- IF '$DATA(^%ZTER(1,XTDAT))
- KILL ^%ZTER(1,"B",XTDAT)
- +5 QUIT
- TYPE ;To purge a type of error.
- +1 NEW %DT,XTDAT,XTSTR,IX,Y,CNT
- +2 SET %DT="AEX"
- DO ^%DT
- IF Y'>1
- QUIT
- SET XTDAT=+$$FMTH^XLFDT(Y)
- +3 READ !,"ERROR STRING TO LOOK FOR: ",XTSTR:DTIME
- +4 IF '$LENGTH(XTSTR)
- QUIT
- +5 SET CNT=0
- WRITE !
- +6 FOR IX=0:0
- SET IX=$ORDER(^%ZTER(1,XTDAT,1,IX))
- IF IX'>0
- QUIT
- Begin DoDot:1
- +7 IF $GET(^(IX,"ZE"))[XTSTR
- KILL ^%ZTER(1,XTDAT,1,IX)
- WRITE "-"
- QUIT
- +8 WRITE "."
- SET CNT=CNT+1
- QUIT
- End DoDot:1
- +9 ;Full reference of ^(IX,"ZE") is ^%ZTER(1,XTDAT,1,IX,"ZE")
- +10 ;Reset count
- SET $PIECE(^%ZTER(1,XTDAT,0),"^",2)=CNT
- +11 QUIT
- AUTO ;Auto clean of error over ZTQPARAM days ago.
- +1 NEW XTDT,XUSX
- +2 SET XUSX=$PIECE($GET(^XTV(8989.3,1,"ZTER")),U,3)
- +3 ;S:$G(ZTQPARAM)<1 ZTQPARAM=7
- +4 IF $GET(XUSX)<1
- SET XUSX=7
- +5 ;S XTDT=$P($G(^XTV(8989.3,1,"ZTER"),"^^7"),U,3),XTDT=$H-$S(XTDT>ZTQPARAM:XTDT,1:ZTQPARAM)
- +6 SET XTDT=$PIECE($GET(^XTV(8989.3,1,"ZTER"),"^^7"),U,3)
- SET XTDT=$HOROLOG-$SELECT(XTDT>XUSX:XTDT,1:XUSX)
- +7 DO KRANGE(1,XTDT)
- DO PURGE^XTERSUM1
- +8 QUIT
- +9 ;
- KRANGE(XTST,XTDAT) ;Kill error trap before this date
- +1 NEW XTDH
- +2 IF (XTDAT>$HOROLOG)!('XTDAT)
- QUIT
- +3 SET XTDH=+$GET(XTST,1)-1
- +4 FOR
- SET XTDH=$ORDER(^%ZTER(1,XTDH))
- IF (XTDH'>0)!(XTDH'<XTDAT)
- QUIT
- DO KILLDAY(XTDH)
- +5 QUIT
- KILLDAY(%H) ;Kill all errors on one day
- +1 ;L +^%ZTER(1):60 K ^%ZTER(1,%H),^%ZTER(1,"B",%H) L -^%ZTER(1)
- +2 NEW DIK,DA
- +3 LOCK +^%ZTER(1,%H):60
- SET DIK="^%ZTER(1,"
- SET DA=%H
- DO ^DIK
- LOCK -^%ZTER(1,%H)
- +4 QUIT
- +5 ;