DG53558M ;ALB/GN - DG*5.3*558 CLEANUP UTILITES ; 7/16/04 11:14am
;;5.3;PIMS;**1016**;JUN 30, 2012;Build 20
;
;DG*53.*579 - add line for records modified vs. deleted ones
; Misc cleanup utilities
;
DELMT(IEN,DFN,PUR,DELETED,LINK) ; Kill duplicate MT
S DELETED=0
Q:'$G(IEN)
S TESTING=+$G(TESTING,1),DFN=$G(DFN)
S DELETED=$$DEL^DG53558M(IEN,.LINK,DFN)
Q:'DELETED
S PUR=PUR+1
I '$D(ZTQUEUED) W !,"Deleting Dupe IEN in 408.31 > ",IEN," for DFN > ",DFN
Q
;
DEL(IVMMTIEN,IVMLINK,DFN) ; delete 408.31 ien only, no income related files killed here
; input: ien to be deleted
; output: 1 = was deleted
; 0 = was not deleted
N DA,DIK,IVMTYP
S DFN=$G(DFN)
S IVMTYP=$P($G(^DGMT(408.31,IVMMTIEN,0)),"^",19) ;test type
S IVMLINK=$P($G(^DGMT(408.31,IVMMTIEN,2)),"^",6)
;don't delete copay test linked to valid means test directly
I IVMTYP=2,IVMLINK,$D(^DGMT(408.31,IVMLINK,0)) Q 0
;
S DA=IVMMTIEN,DIK="^DGMT(408.31," D:'$G(TESTING) ^DIK ;del MT here
D:DFN D4081275(DFN)
;
;delete linked RXCT here after above delete of the MT
I IVMTYP=1,IVMLINK D
. S DA=IVMLINK,DIK="^DGMT(408.31," D:'$G(TESTING) ^DIK
. D:DFN D4081275(DFN)
;
Q 1
;
D4081275(DFN) ; Deletes SPOUSE Effective date multiple entries that may exist
; and point to the MT just deleted.
;
Q:'$D(^DPT(DFN,0))
N R12,EIEN,ENODE,QUIT,DA,DIK
S R12=0
F S R12=$O(^DGPR(408.12,"B",DFN,R12)) Q:'R12 D
. Q:$P($G(^DGPR(408.12,R12,0)),"^",2)'=2 ;only process spouse
. ; drive through the Effective Date Multiple in ien reverse order
. S EIEN="A",QUIT=0
. F S EIEN=$O(^DGPR(408.12,R12,"E",EIEN),-1) Q:'EIEN D Q:QUIT
. . S ENODE=$G(^DGPR(408.12,R12,"E",EIEN,0))
. . Q:+$P(ENODE,"^",2) ;active flag
. . Q:'+$P(ENODE,"^",4) ;no MT ien
. . Q:$D(^DGMT(408.31,$P(ENODE,"^",4),0)) ;points to valid MT
. . ; if inactive and does not point to a valid MT, delete this
. . ; effective date multiple rec from 408.1275
. . S DA=EIEN,DA(1)=R12,DIK="^DGPR(408.12,"_DA(1)_",""E"","
. . D:'$G(TESTING) ^DIK
. . I '$D(ZTQUEUED) W !,"Deleting BAD 408.1275 > ",R12,",",EIEN
. . S QUIT=1
Q
;
MAIL ; mail stats
N BTIME,HTEXT,TEXT,NAMSPC,LIN,TYPNAM,MSGNO,IVMBAD,IVMPUR,IVMTOT,IVMPFL
S MSGNO=0
S NAMSPC=$$NAMSPC^DG53558
S IVMTOT=$P($G(^XTMP(NAMSPC,0,0)),U,2)
S IVMPUR=$P($G(^XTMP(NAMSPC,0,0)),U,3)
S BTIME=$P($G(^XTMP(NAMSPC,0,0)),U,4)
S STAT=$P($G(^XTMP(NAMSPC,0,0)),U,5)
S STIME=$P($G(^XTMP(NAMSPC,0,0)),U,6)
S IVMBAD=$P($G(^XTMP(NAMSPC,0,0)),U,7)
S IVMPFL=$P($G(^XTMP(NAMSPC,0,0)),U,8)
;
D HDNG(.HTEXT,.MSGNO,.LIN)
D SUMRY(.LIN)
D MAILIT(HTEXT)
;
D SNDDET
Q
;
HDNG(HTEXT,MSGNO,LIN) ;build heading lines for mail message
K ^TMP(NAMSPC,$J,"MSG")
S LIN=0
S HTEXT="Cleanup Dupes in the Means Test file "_STAT_" on "
S HTEXT=HTEXT_$$FMTE^XLFDT(STIME)
D BLDLINE(HTEXT,.LIN)
D BLDLINE("",.LIN)
I TESTING S TEXT="** TESTING **" D BLDLINE(TEXT,.LIN)
I MSGNO S TEXT="Message number: "_MSGNO D BLDLINE(TEXT,.LIN)
D BLDLINE("",.LIN)
I MSGNO D
. S TEXT="* = modified due to IVM Converted Test scenario"
. D BLDLINE(TEXT,.LIN) ;DG*5.3*579
S MSGNO=MSGNO+1
Q
;
SUMRY(LIN) ;build summary lines for mail message
S TEXT=" Records Processed: "_$J($FN(IVMTOT,","),11)
D BLDLINE(TEXT,.LIN)
S TEXT="Duplicate Tests Purged: "_$J($FN(IVMPUR,","),11)
D BLDLINE(TEXT,.LIN)
S TEXT=" Null Tests Purged: "_$J($FN(IVMBAD,","),11)
D BLDLINE(TEXT,.LIN)
S TEXT="Primary status changed: "_$J($FN(IVMPFL,","),11)
D BLDLINE(TEXT,.LIN)
D BLDLINE("",.LIN)
D BLDLINE("",.LIN)
D BLDLINE("",.LIN)
;
I (IVMPUR+IVMBAD+IVMPFL) D
. D BLDLINE("Detail changes to follow in subsequent mail messages.",.LIN)
Q
;
SNDDET ;build and send detail messages limit under 2000 lines each
N BAD,DATE,GL,MAXLIN,MORE,NAME,SSN,MTVER
S MAXLIN=1995,MORE=0
D HDNG(.HTEXT,.MSGNO,.LIN)
;
S GL=$NA(^XTMP(NAMSPC_".DET",1)),TYPNAM=""
F S GL=$Q(@GL) Q:GL="" Q:$QS(GL,1)'=(NAMSPC_".DET") D
. S MORE=1 ;at least 1 more line to send
. S DFN=$QS(GL,2)
. S ICDT=$QS(GL,3)
. S MTVER=$QS(GL,4)
. S MTIEN=$QS(GL,5)
. S BAD=$QS(GL,6)
. S SSN=$P($G(^DPT(DFN,0)),"^",9),NAME=$P($G(^DPT(DFN,0)),"^")
. S DATE=$$FMTE^XLFDT(ICDT)
. S TYPNAM=$G(@GL)
. S TEXT=$S(TYPNAM["PRIMARY":"* Prim> ",1:" Dupe> ")
. S:BAD="BAD" TEXT=" Null> "
. S TEXT=TEXT_"ssn: "_SSN_" "_$J(TYPNAM,22)_" date: "_DATE_" ien: "_MTIEN_" ver: "_+MTVER
. D BLDLINE(TEXT,.LIN)
. ;max lines reached, print a msg
. I LIN>MAXLIN D MAILIT(HTEXT),HDNG(.HTEXT,.MSGNO,.LIN) S MORE=0
;
;print final message if any to print
D MAILIT(HTEXT):MORE
Q
;
BLDLINE(TEXT,LIN) ;build a single line into TMP message global
S LIN=LIN+1
S ^TMP(NAMSPC,$J,"MSG",LIN)=TEXT
Q
MAILIT(HTEXT) ; send the mail message
N XMY,XMDUZ,XMSUB,XMTEXT
S XMY(DUZ)="",XMDUZ=.5
S XMSUB=HTEXT_" Results"
S XMTEXT="^TMP(NAMSPC,$J,""MSG"","
D ^XMD
Q
;
MONITOR ; Monitor job while running
N IOINORM,IOINHI,IOUON,IOUOFF,IOBON,IOBOFF,IORVON,IORVOFF,IOHOME
N IOELEOL,NAMSPC,REC,IVMTOT,IVMPUR,STIME,IVMEND,RUN,IVMTOTAL,IVMLST
N STAT,IVMLINE,IVMBLNK,NOWTIM,%H,DTOUT,I,IVMLEN,IVMQUIT,TITLE,TLEN,X
N NOWTIME,PCT,TMP
S:'$D(U) U="^"
S NAMSPC=$$NAMSPC^DG53558
S TMP=0 F IVMTOTAL=0:1 S TMP=$O(^DGMT(408.31,"C",TMP)) Q:'TMP
S IVMQUIT=0
D SCRNSET
;
F D Q:IVMQUIT
. ;check lock status
. L +^XTMP(NAMSPC):0
. I '$T S RUN=1
. E S RUN=0
. L -^XTMP(NAMSPC)
. S REC=$G(^XTMP(NAMSPC,0,0))
. S STAT=$P(REC,U,5) S:STAT="" STAT="NOT RUNNING"
. S IVMLST=$P(REC,U,1),IVMTOT=$P(REC,U,2),IVMPUR=$P(REC,U,3)
. S STIME=$P(REC,U,6),IVMBAD=$P(REC,U,7)
. S:IVMTOTAL>0 PCT=IVMTOT/IVMTOTAL
. S PCT=PCT*100
. S NOWTIME=$$NOW^XLFDT
. I (RUN&(STAT'="RUNNING"))!('RUN&(STAT="RUNNING")) D
. . S STAT="ERRORED"
. D CLRSCR
. S $P(IVMBLNK," ",81)=""
. S IVMLINE=IVMBLNK
. S TITLE="Cleanup Duplicates in the Means Test file"
. S TLEN=(80-$L(TITLE)\2)
. W $$FMTE^XLFDT($$NOW^XLFDT,"2P")
. W ?65,"Completed ",$FN(PCT,"",0),"%",!!
. W ?TLEN,IOINHI,IOUON,TITLE,IOUOFF,IOINORM,!
. S IVMLINE=IVMBLNK
. S IVMLINE=$$FMTLINE(IVMLINE,4,"Status")
. S IVMLINE=$$FMTLINE(IVMLINE,12,"Total recs")
. S IVMLINE=$$FMTLINE(IVMLINE,24,"Dupes Purged")
. S IVMLINE=$$FMTLINE(IVMLINE,38,"Nulls Purged")
. S IVMLINE=$$FMTLINE(IVMLINE,52,"Last DFN")
. S IVMLINE=$$FMTLINE(IVMLINE,66,"Completed Time")
. W !!,IORVON,IVMLINE,IORVOFF
. S IVMLINE=IVMBLNK
. S IVMLINE=$$FMTLINE(IVMLINE,2,STAT)
. S IVMLINE=$$FMTLINE(IVMLINE,15,IVMTOT)
. S IVMLINE=$$FMTLINE(IVMLINE,28,IVMPUR)
. S IVMLINE=$$FMTLINE(IVMLINE,40,IVMBAD)
. S IVMLINE=$$FMTLINE(IVMLINE,52,IVMLST)
. S IVMLINE=$$FMTLINE(IVMLINE,64,$$FMTE^XLFDT(STIME,2))
. W !,IVMLINE
. S IVMLINE=IVMBLNK
. W !,IVMLINE,!!!!!!
. K DIR
. S DIR("T")=5
. W ?13,"screen refreshes automatically every "_DIR("T")_" seconds",!
. W !!,"Press "_IORVON_"<Enter>"_IORVOFF_" to Stop Monitor...",!
. S DIR(0)="EA"
. D ^DIR
. I '$D(DTOUT) S IVMQUIT=1
. I STAT'="RUNNING" S IVMQUIT=1
W @IOF
Q
;
FMTLINE(IVMLINE,IVMTB,IVMTX) ; format a line
S IVMLEN=$L(IVMTX)
S IVMEND=IVMTB+IVMLEN-1
S $E(IVMLINE,IVMTB,IVMEND)=IVMTX
Q IVMLINE
;
SCRNSET ; setup screen variables
S:'$D(IOST(0)) IOST(0)="C-VT320"
S X="IOINORM;IOINHI;IOUON;IOUOFF;IOBON;IOBOFF;IORVON;IORVOFF;IOHOME"
S X=X_";IOELEOL" D ENDR^%ZISS
Q
;
CLRSCR ; clear screen and return to normal
W IOHOME,IORVOFF,IOBOFF,IOUOFF,IOINORM,@IOF
S $X=0,$Y=0
Q
;
SETUPX(EXPDAY) ;Setup XTMP's according to standards and set expiration days
N BEGTIME,PURGDT,NAMSPC
S NAMSPC=$$NAMSPC^DG53558
S BEGTIME=$$NOW^XLFDT()
S PURGDT=$$FMADD^XLFDT(BEGTIME,EXPDAY)
S ^XTMP(NAMSPC,0)=PURGDT_U_BEGTIME
S $P(^XTMP(NAMSPC,0),U,3)="Cleanup Duplicate Means Test File"
S ^XTMP(NAMSPC_".DET",0)=PURGDT_U_BEGTIME
S $P(^XTMP(NAMSPC_".DET",0),U,3)="Cleanup Duplicate Means Test File detail"
Q
DG53558M ;ALB/GN - DG*5.3*558 CLEANUP UTILITES ; 7/16/04 11:14am
+1 ;;5.3;PIMS;**1016**;JUN 30, 2012;Build 20
+2 ;
+3 ;DG*53.*579 - add line for records modified vs. deleted ones
+4 ; Misc cleanup utilities
+5 ;
DELMT(IEN,DFN,PUR,DELETED,LINK) ; Kill duplicate MT
+1 SET DELETED=0
+2 IF '$GET(IEN)
QUIT
+3 SET TESTING=+$GET(TESTING,1)
SET DFN=$GET(DFN)
+4 SET DELETED=$$DEL^DG53558M(IEN,.LINK,DFN)
+5 IF 'DELETED
QUIT
+6 SET PUR=PUR+1
+7 IF '$DATA(ZTQUEUED)
WRITE !,"Deleting Dupe IEN in 408.31 > ",IEN," for DFN > ",DFN
+8 QUIT
+9 ;
DEL(IVMMTIEN,IVMLINK,DFN) ; delete 408.31 ien only, no income related files killed here
+1 ; input: ien to be deleted
+2 ; output: 1 = was deleted
+3 ; 0 = was not deleted
+4 NEW DA,DIK,IVMTYP
+5 SET DFN=$GET(DFN)
+6 ;test type
SET IVMTYP=$PIECE($GET(^DGMT(408.31,IVMMTIEN,0)),"^",19)
+7 SET IVMLINK=$PIECE($GET(^DGMT(408.31,IVMMTIEN,2)),"^",6)
+8 ;don't delete copay test linked to valid means test directly
+9 IF IVMTYP=2
IF IVMLINK
IF $DATA(^DGMT(408.31,IVMLINK,0))
QUIT 0
+10 ;
+11 ;del MT here
SET DA=IVMMTIEN
SET DIK="^DGMT(408.31,"
IF '$GET(TESTING)
DO ^DIK
+12 IF DFN
DO D4081275(DFN)
+13 ;
+14 ;delete linked RXCT here after above delete of the MT
+15 IF IVMTYP=1
IF IVMLINK
Begin DoDot:1
+16 SET DA=IVMLINK
SET DIK="^DGMT(408.31,"
IF '$GET(TESTING)
DO ^DIK
+17 IF DFN
DO D4081275(DFN)
End DoDot:1
+18 ;
+19 QUIT 1
+20 ;
D4081275(DFN) ; Deletes SPOUSE Effective date multiple entries that may exist
+1 ; and point to the MT just deleted.
+2 ;
+3 IF '$DATA(^DPT(DFN,0))
QUIT
+4 NEW R12,EIEN,ENODE,QUIT,DA,DIK
+5 SET R12=0
+6 FOR
SET R12=$ORDER(^DGPR(408.12,"B",DFN,R12))
IF 'R12
QUIT
Begin DoDot:1
+7 ;only process spouse
IF $PIECE($GET(^DGPR(408.12,R12,0)),"^",2)'=2
QUIT
+8 ; drive through the Effective Date Multiple in ien reverse order
+9 SET EIEN="A"
SET QUIT=0
+10 FOR
SET EIEN=$ORDER(^DGPR(408.12,R12,"E",EIEN),-1)
IF 'EIEN
QUIT
Begin DoDot:2
+11 SET ENODE=$GET(^DGPR(408.12,R12,"E",EIEN,0))
+12 ;active flag
IF +$PIECE(ENODE,"^",2)
QUIT
+13 ;no MT ien
IF '+$PIECE(ENODE,"^",4)
QUIT
+14 ;points to valid MT
IF $DATA(^DGMT(408.31,$PIECE(ENODE,"^",4),0))
QUIT
+15 ; if inactive and does not point to a valid MT, delete this
+16 ; effective date multiple rec from 408.1275
+17 SET DA=EIEN
SET DA(1)=R12
SET DIK="^DGPR(408.12,"_DA(1)_",""E"","
+18 IF '$GET(TESTING)
DO ^DIK
+19 IF '$DATA(ZTQUEUED)
WRITE !,"Deleting BAD 408.1275 > ",R12,",",EIEN
+20 SET QUIT=1
End DoDot:2
IF QUIT
QUIT
End DoDot:1
+21 QUIT
+22 ;
MAIL ; mail stats
+1 NEW BTIME,HTEXT,TEXT,NAMSPC,LIN,TYPNAM,MSGNO,IVMBAD,IVMPUR,IVMTOT,IVMPFL
+2 SET MSGNO=0
+3 SET NAMSPC=$$NAMSPC^DG53558
+4 SET IVMTOT=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,2)
+5 SET IVMPUR=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,3)
+6 SET BTIME=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,4)
+7 SET STAT=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,5)
+8 SET STIME=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,6)
+9 SET IVMBAD=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,7)
+10 SET IVMPFL=$PIECE($GET(^XTMP(NAMSPC,0,0)),U,8)
+11 ;
+12 DO HDNG(.HTEXT,.MSGNO,.LIN)
+13 DO SUMRY(.LIN)
+14 DO MAILIT(HTEXT)
+15 ;
+16 DO SNDDET
+17 QUIT
+18 ;
HDNG(HTEXT,MSGNO,LIN) ;build heading lines for mail message
+1 KILL ^TMP(NAMSPC,$JOB,"MSG")
+2 SET LIN=0
+3 SET HTEXT="Cleanup Dupes in the Means Test file "_STAT_" on "
+4 SET HTEXT=HTEXT_$$FMTE^XLFDT(STIME)
+5 DO BLDLINE(HTEXT,.LIN)
+6 DO BLDLINE("",.LIN)
+7 IF TESTING
SET TEXT="** TESTING **"
DO BLDLINE(TEXT,.LIN)
+8 IF MSGNO
SET TEXT="Message number: "_MSGNO
DO BLDLINE(TEXT,.LIN)
+9 DO BLDLINE("",.LIN)
+10 IF MSGNO
Begin DoDot:1
+11 SET TEXT="* = modified due to IVM Converted Test scenario"
+12 ;DG*5.3*579
DO BLDLINE(TEXT,.LIN)
End DoDot:1
+13 SET MSGNO=MSGNO+1
+14 QUIT
+15 ;
SUMRY(LIN) ;build summary lines for mail message
+1 SET TEXT=" Records Processed: "_$JUSTIFY($FNUMBER(IVMTOT,","),11)
+2 DO BLDLINE(TEXT,.LIN)
+3 SET TEXT="Duplicate Tests Purged: "_$JUSTIFY($FNUMBER(IVMPUR,","),11)
+4 DO BLDLINE(TEXT,.LIN)
+5 SET TEXT=" Null Tests Purged: "_$JUSTIFY($FNUMBER(IVMBAD,","),11)
+6 DO BLDLINE(TEXT,.LIN)
+7 SET TEXT="Primary status changed: "_$JUSTIFY($FNUMBER(IVMPFL,","),11)
+8 DO BLDLINE(TEXT,.LIN)
+9 DO BLDLINE("",.LIN)
+10 DO BLDLINE("",.LIN)
+11 DO BLDLINE("",.LIN)
+12 ;
+13 IF (IVMPUR+IVMBAD+IVMPFL)
Begin DoDot:1
+14 DO BLDLINE("Detail changes to follow in subsequent mail messages.",.LIN)
End DoDot:1
+15 QUIT
+16 ;
SNDDET ;build and send detail messages limit under 2000 lines each
+1 NEW BAD,DATE,GL,MAXLIN,MORE,NAME,SSN,MTVER
+2 SET MAXLIN=1995
SET MORE=0
+3 DO HDNG(.HTEXT,.MSGNO,.LIN)
+4 ;
+5 SET GL=$NAME(^XTMP(NAMSPC_".DET",1))
SET TYPNAM=""
+6 FOR
SET GL=$QUERY(@GL)
IF GL=""
QUIT
IF $QSUBSCRIPT(GL,1)'=(NAMSPC_".DET")
QUIT
Begin DoDot:1
+7 ;at least 1 more line to send
SET MORE=1
+8 SET DFN=$QSUBSCRIPT(GL,2)
+9 SET ICDT=$QSUBSCRIPT(GL,3)
+10 SET MTVER=$QSUBSCRIPT(GL,4)
+11 SET MTIEN=$QSUBSCRIPT(GL,5)
+12 SET BAD=$QSUBSCRIPT(GL,6)
+13 SET SSN=$PIECE($GET(^DPT(DFN,0)),"^",9)
SET NAME=$PIECE($GET(^DPT(DFN,0)),"^")
+14 SET DATE=$$FMTE^XLFDT(ICDT)
+15 SET TYPNAM=$GET(@GL)
+16 SET TEXT=$SELECT(TYPNAM["PRIMARY":"* Prim> ",1:" Dupe> ")
+17 IF BAD="BAD"
SET TEXT=" Null> "
+18 SET TEXT=TEXT_"ssn: "_SSN_" "_$JUSTIFY(TYPNAM,22)_" date: "_DATE_" ien: "_MTIEN_" ver: "_+MTVER
+19 DO BLDLINE(TEXT,.LIN)
+20 ;max lines reached, print a msg
+21 IF LIN>MAXLIN
DO MAILIT(HTEXT)
DO HDNG(.HTEXT,.MSGNO,.LIN)
SET MORE=0
End DoDot:1
+22 ;
+23 ;print final message if any to print
+24 IF MORE
DO MAILIT(HTEXT)
+25 QUIT
+26 ;
BLDLINE(TEXT,LIN) ;build a single line into TMP message global
+1 SET LIN=LIN+1
+2 SET ^TMP(NAMSPC,$JOB,"MSG",LIN)=TEXT
+3 QUIT
MAILIT(HTEXT) ; send the mail message
+1 NEW XMY,XMDUZ,XMSUB,XMTEXT
+2 SET XMY(DUZ)=""
SET XMDUZ=.5
+3 SET XMSUB=HTEXT_" Results"
+4 SET XMTEXT="^TMP(NAMSPC,$J,""MSG"","
+5 DO ^XMD
+6 QUIT
+7 ;
MONITOR ; Monitor job while running
+1 NEW IOINORM,IOINHI,IOUON,IOUOFF,IOBON,IOBOFF,IORVON,IORVOFF,IOHOME
+2 NEW IOELEOL,NAMSPC,REC,IVMTOT,IVMPUR,STIME,IVMEND,RUN,IVMTOTAL,IVMLST
+3 NEW STAT,IVMLINE,IVMBLNK,NOWTIM,%H,DTOUT,I,IVMLEN,IVMQUIT,TITLE,TLEN,X
+4 NEW NOWTIME,PCT,TMP
+5 IF '$DATA(U)
SET U="^"
+6 SET NAMSPC=$$NAMSPC^DG53558
+7 SET TMP=0
FOR IVMTOTAL=0:1
SET TMP=$ORDER(^DGMT(408.31,"C",TMP))
IF 'TMP
QUIT
+8 SET IVMQUIT=0
+9 DO SCRNSET
+10 ;
+11 FOR
Begin DoDot:1
+12 ;check lock status
+13 LOCK +^XTMP(NAMSPC):0
+14 IF '$TEST
SET RUN=1
+15 IF '$TEST
SET RUN=0
+16 LOCK -^XTMP(NAMSPC)
+17 SET REC=$GET(^XTMP(NAMSPC,0,0))
+18 SET STAT=$PIECE(REC,U,5)
IF STAT=""
SET STAT="NOT RUNNING"
+19 SET IVMLST=$PIECE(REC,U,1)
SET IVMTOT=$PIECE(REC,U,2)
SET IVMPUR=$PIECE(REC,U,3)
+20 SET STIME=$PIECE(REC,U,6)
SET IVMBAD=$PIECE(REC,U,7)
+21 IF IVMTOTAL>0
SET PCT=IVMTOT/IVMTOTAL
+22 SET PCT=PCT*100
+23 SET NOWTIME=$$NOW^XLFDT
+24 IF (RUN&(STAT'="RUNNING"))!('RUN&(STAT="RUNNING"))
Begin DoDot:2
+25 SET STAT="ERRORED"
End DoDot:2
+26 DO CLRSCR
+27 SET $PIECE(IVMBLNK," ",81)=""
+28 SET IVMLINE=IVMBLNK
+29 SET TITLE="Cleanup Duplicates in the Means Test file"
+30 SET TLEN=(80-$LENGTH(TITLE)\2)
+31 WRITE $$FMTE^XLFDT($$NOW^XLFDT,"2P")
+32 WRITE ?65,"Completed ",$FNUMBER(PCT,"",0),"%",!!
+33 WRITE ?TLEN,IOINHI,IOUON,TITLE,IOUOFF,IOINORM,!
+34 SET IVMLINE=IVMBLNK
+35 SET IVMLINE=$$FMTLINE(IVMLINE,4,"Status")
+36 SET IVMLINE=$$FMTLINE(IVMLINE,12,"Total recs")
+37 SET IVMLINE=$$FMTLINE(IVMLINE,24,"Dupes Purged")
+38 SET IVMLINE=$$FMTLINE(IVMLINE,38,"Nulls Purged")
+39 SET IVMLINE=$$FMTLINE(IVMLINE,52,"Last DFN")
+40 SET IVMLINE=$$FMTLINE(IVMLINE,66,"Completed Time")
+41 WRITE !!,IORVON,IVMLINE,IORVOFF
+42 SET IVMLINE=IVMBLNK
+43 SET IVMLINE=$$FMTLINE(IVMLINE,2,STAT)
+44 SET IVMLINE=$$FMTLINE(IVMLINE,15,IVMTOT)
+45 SET IVMLINE=$$FMTLINE(IVMLINE,28,IVMPUR)
+46 SET IVMLINE=$$FMTLINE(IVMLINE,40,IVMBAD)
+47 SET IVMLINE=$$FMTLINE(IVMLINE,52,IVMLST)
+48 SET IVMLINE=$$FMTLINE(IVMLINE,64,$$FMTE^XLFDT(STIME,2))
+49 WRITE !,IVMLINE
+50 SET IVMLINE=IVMBLNK
+51 WRITE !,IVMLINE,!!!!!!
+52 KILL DIR
+53 SET DIR("T")=5
+54 WRITE ?13,"screen refreshes automatically every "_DIR("T")_" seconds",!
+55 WRITE !!,"Press "_IORVON_"<Enter>"_IORVOFF_" to Stop Monitor...",!
+56 SET DIR(0)="EA"
+57 DO ^DIR
+58 IF '$DATA(DTOUT)
SET IVMQUIT=1
+59 IF STAT'="RUNNING"
SET IVMQUIT=1
End DoDot:1
IF IVMQUIT
QUIT
+60 WRITE @IOF
+61 QUIT
+62 ;
FMTLINE(IVMLINE,IVMTB,IVMTX) ; format a line
+1 SET IVMLEN=$LENGTH(IVMTX)
+2 SET IVMEND=IVMTB+IVMLEN-1
+3 SET $EXTRACT(IVMLINE,IVMTB,IVMEND)=IVMTX
+4 QUIT IVMLINE
+5 ;
SCRNSET ; setup screen variables
+1 IF '$DATA(IOST(0))
SET IOST(0)="C-VT320"
+2 SET X="IOINORM;IOINHI;IOUON;IOUOFF;IOBON;IOBOFF;IORVON;IORVOFF;IOHOME"
+3 SET X=X_";IOELEOL"
DO ENDR^%ZISS
+4 QUIT
+5 ;
CLRSCR ; clear screen and return to normal
+1 WRITE IOHOME,IORVOFF,IOBOFF,IOUOFF,IOINORM,@IOF
+2 SET $X=0
SET $Y=0
+3 QUIT
+4 ;
SETUPX(EXPDAY) ;Setup XTMP's according to standards and set expiration days
+1 NEW BEGTIME,PURGDT,NAMSPC
+2 SET NAMSPC=$$NAMSPC^DG53558
+3 SET BEGTIME=$$NOW^XLFDT()
+4 SET PURGDT=$$FMADD^XLFDT(BEGTIME,EXPDAY)
+5 SET ^XTMP(NAMSPC,0)=PURGDT_U_BEGTIME
+6 SET $PIECE(^XTMP(NAMSPC,0),U,3)="Cleanup Duplicate Means Test File"
+7 SET ^XTMP(NAMSPC_".DET",0)=PURGDT_U_BEGTIME
+8 SET $PIECE(^XTMP(NAMSPC_".DET",0),U,3)="Cleanup Duplicate Means Test File detail"
+9 QUIT