XTER1A ;ISC-SF.SEA/JLI - VA error reporting ;05/20/10 15:53
;;8.0;KERNEL;**63,112,120,431**;Jul 10, 1995;Build 38
;Per VHA Directive 2004-038, this routine should not be modified.
TWO ;Print two of each error
S XTNUM=2
ONE ;Print one of each error
S:'$D(XTNUM) XTNUM=1
S:'$D(XTNDATE) XTNDATE=$H-1 I '$D(ZTQUEUED) S XTNDAT1=$$HTFM^XLFDT(XTNDATE),XTNDAT2=XTNDAT1 G INT^XTER1A1
K ^TMP($J,"XTER1A") D LISTN,LIST
EXIT K XTNUM,XTNDATE,XTERN,XTERX,X,N,N1,Y,C,XTOUT,Z,I,XTER1AX,XTER1AN,XTER1AN1,%XTZDAT,%XTZNUM,XTMES,XTDV1,XTMES,XTPRNT
Q
LISTN ;Sort errors
F XTERN=0:0 S XTERN=$O(^%ZTER(1,XTNDATE,1,XTERN)) Q:XTERN'>0 I $D(^(XTERN,"ZE")) S XTERX=$E(^("ZE"),1,30),X=^("ZE") D
.S N1=0 F N=0:0 S N=$O(^TMP($J,"XTER1A",XTERX,N)) Q:N="" S N1=N I ^(N)=X Q
.I N="" S ^TMP($J,"XTER1A",XTERX,N1+1)=X,^(N1+1,"CNT")=1,^(1)=XTNDATE_U_XTERN
.E S ^("CNT")=^TMP($J,"XTER1A",XTERX,N,"CNT")+1 I ^("CNT")'>XTNUM S Y=^("CNT"),^(Y)=XTNDATE_U_XTERN
.Q
Q
LIST ;
S XTERX="",C=0,XTOUT=0 K ^TMP($J,"XTER")
;List count of errors
F S XTERX=$O(^TMP($J,"XTER1A",XTERX)) Q:XTERX="" F N=0:0 S N=$O(^TMP($J,"XTER1A",XTERX,N)) Q:N'>0 D
.S X=^TMP($J,"XTER1A",XTERX,N) D ADD(""),ADD("") S Z=$J(^TMP($J,"XTER1A",XTERX,N,"CNT"),8)_" "
.F I=1:60 S Y=$E(X,I,I+59) Q:Y="" D ADD(Z_Y) S Z=" "
.Q
;List errors
S XTER1AX="" F S XTER1AX=$O(^TMP($J,"XTER1A",XTER1AX)) Q:XTER1AX="" F XTER1AN=0:0 S XTER1AN=$O(^TMP($J,"XTER1A",XTER1AX,XTER1AN)) Q:XTER1AN'>0 D
.F XTER1AN1=0:0 S XTER1AN1=$O(^TMP($J,"XTER1A",XTER1AX,XTER1AN,XTER1AN1)) Q:XTER1AN1'>0 S X=^(XTER1AN1) D
..D ADD("|PAGE|") S %XTZDAT=+X,%XTZNUM=$P(X,U,2),XTDV1=0 S XTMES=1 D WRT^XTER1
D:IO=""&$D(^TMP($J,"XTER")) MESSG D:IO'="" WRITER
K ^TMP($J,"XTER") S C=0 I IO'="" U IO D ^%ZISC
Q
;
MESG ;Send to a Mail message
N DWPK,DWLW,DIC K ^TMP($J,"XTER"),^TMP($J,"XTER1")
W @IOF,!!,"Enter any comments to precede the error listing:"
S DWPK=1,DWLW=75,DIC="^TMP($J,""XTER1"",",DIWESUB="Comments" D EN^DIWE
S C=0 W ! F I=0:0 S I=$O(^TMP($J,"XTER1",I)) Q:I'>0 S C=I,^TMP($J,"XTER",I)=^TMP($J,"XTER1",I,0)
S XTMES=1,XTDV1=0 D WRT^XTER1 D:C>0 MESSG
S C=0,XTX="" K XTMES,^TMP($J,"XTER"),^TMP($J,"XTER1")
G XTERR^XTER
;
PRNT ;Send to Printer
K ^TMP($J,"XTER"),ZTIO,XTDV1
S C=0,%ZIS="MQ" D ^%ZIS I POP D HOME^%ZIS G WRT^XTER1
I $D(IO("Q")) D S XTX="" G XTERR^XTER
. K IO("Q") S ZTRTN="DQPRNT^XTER1A",ZTSAVE("%XTZDAT")="",ZTSAVE("%XTZNUM")="",ZTDESC="XTER1A-PRINT OF ERROR" D ^%ZTLOAD K ZTSK D HOME^%ZIS
;
DQPRNT S XTPRNT=1,XTOUT=0 D WRT^XTER1 U IO D:C>0 WRITER
K ^TMP($J,"XTER"),XTX,XTPRNT S C=0 D ^%ZISC I $D(ZTQUEUED) Q
G XTERR^XTER
;
WRITER ;Write global
F %=0:0 S %=$O(^TMP($J,"XTER",%)) Q:%'>0 W:((IOSL-$Y)'>4&$G(XTPRNT)) @IOF S %1=$S($D(^(%))=1:^(%),1:^(%,0)) D
.I $E(%1,1,6)="|PAGE|" W @IOF S %1=$E(%1,7,$L(%1)) Q:%1=""
.I $E(%1,1,4)="@IOF" W @IOF S %1=$E(%1,5,$L(%1)) Q:%1=""
.F Q:%1="" W !,$E(%1,1,IOM) S %1=$E(%1,IOM+1,$L(%1))
K %,%1
Q
MESSG ;Global to Message
S XMY(DUZ)="",XMDUZ=.5 I '$D(ZTQUEUED) K XMY,XMDUZ
S XMTEXT="^TMP($J,""XTER"",",XMSUB="ERROR - "_$E(%XTZE,1,40) F Q:XMSUB'[U S XMSUB=$P(XMSUB,U)_"~U~"_$P(XMSUB,U,2,99)
D ^XMD K XMY,XMTEXT,XMSUB
Q
;
ADD(STR) ;Add STR to TMP global
S C=C+1,^TMP($J,"XTER",C)=STR
Q
;
MORE Q:$G(XTMES) N DIR,DTOUT,DIRUT,DUOUT
S XTOUT=0,XTX="" D WRITER K ^TMP($J,"XTER") S C=0
I '$D(ZTQUEUED),'$G(XTPRNT),$G(IOST)["C-" D
. S:($D(X)#2) XTMORE=X S DIR(0)="FO^0:50",DIR("A")=" Enter '^' to quit listing, <RETURN> to continue..."
. D ^DIR K DIR S:$D(DTOUT) X="^" S XTX=X S:$D(XTMORE) X=XTMORE K XTMORE
I $D(XTX),$E(XTX)="^" S XTOUT=1 Q
I $G(XTPRNT) W @IOF
Q
;
LST S X=" ",XTQ="" N XTXT,XBLNK S $P(XBLNK," ",80)=" "
T1 S X=$O(^%ZTER(1,%XTZDAT,1,X),-1) R XTQ:0 Q:XTQ'="" G T2:X'>0,T1:'($D(^(X,"ZE"))#2) S XTP=^("ZE"),XTS=""
F S XTS=$O(^TMP($J,"XTERSCR",XTS)) Q:XTS="" I XTP[XTS,XTD S XTD=XTD+1 G T1
;
I '(X#20) S %XTERRX=X D MORE Q:XTOUT Q:XTX>0 D T3 S X=%XTERRX
I ^%ZTER(1,%XTZDAT,1,X,"ZE")["," S %XTERR=$P($P(^("ZE"),",",4),"-",4),%XTERR=$P($P(^("ZE"),",",2),"-",3)_$S(%XTERR="":"",1:"(")_%XTERR_$S(%XTERR="":"",1:")") S XTXT=$J(X,3)_") "_"<"_%XTERR_">"_$P(^("ZE"),",",1)_" "
I ^%ZTER(1,%XTZDAT,1,X,"ZE")'["," S XTXT=$J(X,3)_") "_^("ZE")
S %XTZNUM=X,%="" I $D(^%ZTER(1,%XTZDAT,1,%XTZNUM,"H")) S %H=^("H") D YMD^%DTC S %=$P(%,".",2)_"000000",%=$E(%,1,2)_":"_$E(%,3,4)_":"_$E(%,5,6)
S X=%XTZNUM S XTXT=$S($L(XTXT)>38:XTXT,1:$E(XTXT_XBLNK,1,38))_%
S XTXT=XTXT_" "_$P($S('$D(^%ZTER(1,%XTZDAT,1,X,"J")):"",1:^("J")),U,4)_" "_$J($P($S('$D(^("J")):"",1:^("J")),U,5),7)_" "_$P($S('$D(^("I")):"",1:^("I")),U)
S XTXT=$S($L(XTXT)>51:XTXT,1:$E(XTXT_XBLNK,1,51))_$P(XTP,"\",7)
S XTXT=$S($L(XTXT)>59:XTXT,1:$E(XTXT_XBLNK,1,60))_$P(XTP,"\",3) S XTXT=$S($L(XTXT)>65:XTXT,1:$E(XTXT_XBLNK,1,65))_$P(XTP,"\",4) W !,$E(XTXT,1,79) G T1
T2 I XTD W !!,$S(XTD-1:XTD-1,1:"No")," screened error",$S(XTD-1>1:"s",1:""),!
D MORE
Q
T3 W !!,?11,"$ZE",?41,"Time",?49,"UCI,VOL",?61,"$J",?69,"$I",!
Q
INTRACT ;
G INTRACT^XTER1A1
XTER1A ;ISC-SF.SEA/JLI - VA error reporting ;05/20/10 15:53
+1 ;;8.0;KERNEL;**63,112,120,431**;Jul 10, 1995;Build 38
+2 ;Per VHA Directive 2004-038, this routine should not be modified.
TWO ;Print two of each error
+1 SET XTNUM=2
ONE ;Print one of each error
+1 IF '$DATA(XTNUM)
SET XTNUM=1
+2 IF '$DATA(XTNDATE)
SET XTNDATE=$HOROLOG-1
IF '$DATA(ZTQUEUED)
SET XTNDAT1=$$HTFM^XLFDT(XTNDATE)
SET XTNDAT2=XTNDAT1
GOTO INT^XTER1A1
+3 KILL ^TMP($JOB,"XTER1A")
DO LISTN
DO LIST
EXIT KILL XTNUM,XTNDATE,XTERN,XTERX,X,N,N1,Y,C,XTOUT,Z,I,XTER1AX,XTER1AN,XTER1AN1,%XTZDAT,%XTZNUM,XTMES,XTDV1,XTMES,XTPRNT
+1 QUIT
LISTN ;Sort errors
+1 FOR XTERN=0:0
SET XTERN=$ORDER(^%ZTER(1,XTNDATE,1,XTERN))
IF XTERN'>0
QUIT
IF $DATA(^(XTERN,"ZE"))
SET XTERX=$EXTRACT(^("ZE"),1,30)
SET X=^("ZE")
Begin DoDot:1
+2 SET N1=0
FOR N=0:0
SET N=$ORDER(^TMP($JOB,"XTER1A",XTERX,N))
IF N=""
QUIT
SET N1=N
IF ^(N)=X
QUIT
+3 IF N=""
SET ^TMP($JOB,"XTER1A",XTERX,N1+1)=X
SET ^(N1+1,"CNT")=1
SET ^(1)=XTNDATE_U_XTERN
+4 IF '$TEST
SET ^("CNT")=^TMP($JOB,"XTER1A",XTERX,N,"CNT")+1
IF ^("CNT")'>XTNUM
SET Y=^("CNT")
SET ^(Y)=XTNDATE_U_XTERN
+5 QUIT
End DoDot:1
+6 QUIT
LIST ;
+1 SET XTERX=""
SET C=0
SET XTOUT=0
KILL ^TMP($JOB,"XTER")
+2 ;List count of errors
+3 FOR
SET XTERX=$ORDER(^TMP($JOB,"XTER1A",XTERX))
IF XTERX=""
QUIT
FOR N=0:0
SET N=$ORDER(^TMP($JOB,"XTER1A",XTERX,N))
IF N'>0
QUIT
Begin DoDot:1
+4 SET X=^TMP($JOB,"XTER1A",XTERX,N)
DO ADD("")
DO ADD("")
SET Z=$JUSTIFY(^TMP($JOB,"XTER1A",XTERX,N,"CNT"),8)_" "
+5 FOR I=1:60
SET Y=$EXTRACT(X,I,I+59)
IF Y=""
QUIT
DO ADD(Z_Y)
SET Z=" "
+6 QUIT
End DoDot:1
+7 ;List errors
+8 SET XTER1AX=""
FOR
SET XTER1AX=$ORDER(^TMP($JOB,"XTER1A",XTER1AX))
IF XTER1AX=""
QUIT
FOR XTER1AN=0:0
SET XTER1AN=$ORDER(^TMP($JOB,"XTER1A",XTER1AX,XTER1AN))
IF XTER1AN'>0
QUIT
Begin DoDot:1
+9 FOR XTER1AN1=0:0
SET XTER1AN1=$ORDER(^TMP($JOB,"XTER1A",XTER1AX,XTER1AN,XTER1AN1))
IF XTER1AN1'>0
QUIT
SET X=^(XTER1AN1)
Begin DoDot:2
+10 DO ADD("|PAGE|")
SET %XTZDAT=+X
SET %XTZNUM=$PIECE(X,U,2)
SET XTDV1=0
SET XTMES=1
DO WRT^XTER1
End DoDot:2
End DoDot:1
+11 IF IO=""&$DATA(^TMP($JOB,"XTER"))
DO MESSG
IF IO'=""
DO WRITER
+12 KILL ^TMP($JOB,"XTER")
SET C=0
IF IO'=""
USE IO
DO ^%ZISC
+13 QUIT
+14 ;
MESG ;Send to a Mail message
+1 NEW DWPK,DWLW,DIC
KILL ^TMP($JOB,"XTER"),^TMP($JOB,"XTER1")
+2 WRITE @IOF,!!,"Enter any comments to precede the error listing:"
+3 SET DWPK=1
SET DWLW=75
SET DIC="^TMP($J,""XTER1"","
SET DIWESUB="Comments"
DO EN^DIWE
+4 SET C=0
WRITE !
FOR I=0:0
SET I=$ORDER(^TMP($JOB,"XTER1",I))
IF I'>0
QUIT
SET C=I
SET ^TMP($JOB,"XTER",I)=^TMP($JOB,"XTER1",I,0)
+5 SET XTMES=1
SET XTDV1=0
DO WRT^XTER1
IF C>0
DO MESSG
+6 SET C=0
SET XTX=""
KILL XTMES,^TMP($JOB,"XTER"),^TMP($JOB,"XTER1")
+7 GOTO XTERR^XTER
+8 ;
PRNT ;Send to Printer
+1 KILL ^TMP($JOB,"XTER"),ZTIO,XTDV1
+2 SET C=0
SET %ZIS="MQ"
DO ^%ZIS
IF POP
DO HOME^%ZIS
GOTO WRT^XTER1
+3 IF $DATA(IO("Q"))
Begin DoDot:1
+4 KILL IO("Q")
SET ZTRTN="DQPRNT^XTER1A"
SET ZTSAVE("%XTZDAT")=""
SET ZTSAVE("%XTZNUM")=""
SET ZTDESC="XTER1A-PRINT OF ERROR"
DO ^%ZTLOAD
KILL ZTSK
DO HOME^%ZIS
End DoDot:1
SET XTX=""
GOTO XTERR^XTER
+5 ;
DQPRNT SET XTPRNT=1
SET XTOUT=0
DO WRT^XTER1
USE IO
IF C>0
DO WRITER
+1 KILL ^TMP($JOB,"XTER"),XTX,XTPRNT
SET C=0
DO ^%ZISC
IF $DATA(ZTQUEUED)
QUIT
+2 GOTO XTERR^XTER
+3 ;
WRITER ;Write global
+1 FOR %=0:0
SET %=$ORDER(^TMP($JOB,"XTER",%))
IF %'>0
QUIT
IF ((IOSL-$Y)'>4&$GET(XTPRNT))
WRITE @IOF
SET %1=$SELECT($DATA(^(%))=1:^(%),1:^(%,0))
Begin DoDot:1
+2 IF $EXTRACT(%1,1,6)="|PAGE|"
WRITE @IOF
SET %1=$EXTRACT(%1,7,$LENGTH(%1))
IF %1=""
QUIT
+3 IF $EXTRACT(%1,1,4)="@IOF"
WRITE @IOF
SET %1=$EXTRACT(%1,5,$LENGTH(%1))
IF %1=""
QUIT
+4 FOR
IF %1=""
QUIT
WRITE !,$EXTRACT(%1,1,IOM)
SET %1=$EXTRACT(%1,IOM+1,$LENGTH(%1))
End DoDot:1
+5 KILL %,%1
+6 QUIT
MESSG ;Global to Message
+1 SET XMY(DUZ)=""
SET XMDUZ=.5
IF '$DATA(ZTQUEUED)
KILL XMY,XMDUZ
+2 SET XMTEXT="^TMP($J,""XTER"","
SET XMSUB="ERROR - "_$EXTRACT(%XTZE,1,40)
FOR
IF XMSUB'[U
QUIT
SET XMSUB=$PIECE(XMSUB,U)_"~U~"_$PIECE(XMSUB,U,2,99)
+3 DO ^XMD
KILL XMY,XMTEXT,XMSUB
+4 QUIT
+5 ;
ADD(STR) ;Add STR to TMP global
+1 SET C=C+1
SET ^TMP($JOB,"XTER",C)=STR
+2 QUIT
+3 ;
MORE IF $GET(XTMES)
QUIT
NEW DIR,DTOUT,DIRUT,DUOUT
+1 SET XTOUT=0
SET XTX=""
DO WRITER
KILL ^TMP($JOB,"XTER")
SET C=0
+2 IF '$DATA(ZTQUEUED)
IF '$GET(XTPRNT)
IF $GET(IOST)["C-"
Begin DoDot:1
+3 IF ($DATA(X)#2)
SET XTMORE=X
SET DIR(0)="FO^0:50"
SET DIR("A")=" Enter '^' to quit listing, <RETURN> to continue..."
+4 DO ^DIR
KILL DIR
IF $DATA(DTOUT)
SET X="^"
SET XTX=X
IF $DATA(XTMORE)
SET X=XTMORE
KILL XTMORE
End DoDot:1
+5 IF $DATA(XTX)
IF $EXTRACT(XTX)="^"
SET XTOUT=1
QUIT
+6 IF $GET(XTPRNT)
WRITE @IOF
+7 QUIT
+8 ;
LST SET X=" "
SET XTQ=""
NEW XTXT,XBLNK
SET $PIECE(XBLNK," ",80)=" "
T1 SET X=$ORDER(^%ZTER(1,%XTZDAT,1,X),-1)
READ XTQ:0
IF XTQ'=""
QUIT
IF X'>0
GOTO T2
IF '($DATA(^(X,"ZE"))#2)
GOTO T1
SET XTP=^("ZE")
SET XTS=""
+1 FOR
SET XTS=$ORDER(^TMP($JOB,"XTERSCR",XTS))
IF XTS=""
QUIT
IF XTP[XTS
IF XTD
SET XTD=XTD+1
GOTO T1
+2 ;
+3 IF '(X#20)
SET %XTERRX=X
DO MORE
IF XTOUT
QUIT
IF XTX>0
QUIT
DO T3
SET X=%XTERRX
+4 IF ^%ZTER(1,%XTZDAT,1,X,"ZE")[","
SET %XTERR=$PIECE($PIECE(^("ZE"),",",4),"-",4)
SET %XTERR=$PIECE($PIECE(^("ZE"),",",2),"-",3)_$SELECT(%XTERR="":"",1:"(")_%XTERR_$SELECT(%XTERR="":"",1:")")
SET XTXT=$JUSTIFY(X,3)_") "_"<"_%XTERR_">"_$PIECE(^("ZE"),",",1)_" "
+5 IF ^%ZTER(1,%XTZDAT,1,X,"ZE")'[","
SET XTXT=$JUSTIFY(X,3)_") "_^("ZE")
+6 SET %XTZNUM=X
SET %=""
IF $DATA(^%ZTER(1,%XTZDAT,1,%XTZNUM,"H"))
SET %H=^("H")
DO YMD^%DTC
SET %=$PIECE(%,".",2)_"000000"
SET %=$EXTRACT(%,1,2)_":"_$EXTRACT(%,3,4)_":"_$EXTRACT(%,5,6)
+7 SET X=%XTZNUM
SET XTXT=$SELECT($LENGTH(XTXT)>38:XTXT,1:$EXTRACT(XTXT_XBLNK,1,38))_%
+8 SET XTXT=XTXT_" "_$PIECE($SELECT('$DATA(^%ZTER(1,%XTZDAT,1,X,"J")):"",1:^("J")),U,4)_" "_$JUSTIFY($PIECE($SELECT('$DATA(^("J")):"",1:^("J")),U,5),7)_" "_$PIECE($SELECT('$DATA(^("I")):"",1:^("I")),U)
+9 SET XTXT=$SELECT($LENGTH(XTXT)>51:XTXT,1:$EXTRACT(XTXT_XBLNK,1,51))_$PIECE(XTP,"\",7)
+10 SET XTXT=$SELECT($LENGTH(XTXT)>59:XTXT,1:$EXTRACT(XTXT_XBLNK,1,60))_$PIECE(XTP,"\",3)
SET XTXT=$SELECT($LENGTH(XTXT)>65:XTXT,1:$EXTRACT(XTXT_XBLNK,1,65))_$PIECE(XTP,"\",4)
WRITE !,$EXTRACT(XTXT,1,79)
GOTO T1
T2 IF XTD
WRITE !!,$SELECT(XTD-1:XTD-1,1:"No")," screened error",$SELECT(XTD-1>1:"s",1:""),!
+1 DO MORE
+2 QUIT
T3 WRITE !!,?11,"$ZE",?41,"Time",?49,"UCI,VOL",?61,"$J",?69,"$I",!
+1 QUIT
INTRACT ;
+1 GOTO INTRACT^XTER1A1