LEXRXXT ;ISL/KER - Repair/Re-Index - Task ;08/17/2011
;;2.0;LEXICON UTILITY;**81**;Sep 23, 1996;Build 10
;
; Global Variables
; ^LEX( SACC 1.3
; ^LEXT( SACC 1.3
; ^TMP("LEXRX") SACC 2.3.2.5.1
; ^XTMP("LEXRX") SACC 2.3.2.5.2
;
; External References
; HOME^%ZIS ICR 10086
; ^%ZTLOAD ICR 10063
; $$FMDIFF^XLFDT ICR 10103
; $$NOW^XLFDT ICR 10103
;
; Local Variables NEWed or KILLed Elsewhere
; LEXAMSO User Selection NEWed/KILLed by LEXRX
; LEXFI File number NEWed/KILLed by LEXRX
; LEXINS Install Flag NEWed/KILLed by Post-Install
; LEXOK Continue flag NEWed/KILLed by LEXRX
;
Q
ALL ; Repair/Re-Index all Lexicon Files
Q:+($G(LEXOK))'>0 Q:$G(LEXAMSO)'="A" N X,Y,ZTQUEUED,ZTREQ,ZTSK
N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU,LEXNAM
N LEXC,LEXL,LEXENV,LEXTSK,LEXMSG,LEXSUBJ
S LEXNAM="LEXRXALL" I $D(^XTMP(LEXNAM,0)) D PROG(LEXNAM) Q
K ^TMP("LEXRX",$J) S LEXENV=$$ENV^LEXRXXM Q:+LEXENV'>0
S LEXSUBJ="Lexicon - Repair/Re-Index All Files"
S ZTRTN="ALLT^LEXRXXT2",ZTDESC="Lexicon Index Repair/Re-Index"
S ZTIO="",ZTDTH=$H S:$D(LEXINS) ZTSAVE("LEXINS")=""
S ZTSAVE("DUZ")="",ZTSAVE("LEXAMSO")="",ZTSAVE("LEXSUBJ")=""
S LEXMSG="When the task completes a message will be sent"
S LEXMSG=LEXMSG_" to you reporting the results."
D ^%ZTLOAD K LEXTSK I +($G(ZTSK))>0&('$D(LEXINS)) D
. S LEXTSK(1)="A task has been created to repair the cross-references"
. S LEXTSK(2)="in the major Lexicon files and to re-index the cross-"
. S LEXTSK(3)="references of the supporting Lexicon files. This "
. S LEXTSK(4)="will take several hours, however, users may be on the "
. S LEXTSK(5)="system during this time. (Task #"_+($G(ZTSK))_"). "
. S:$L($G(LEXMSG)) LEXTSK(6)=LEXMSG
I $O(LEXTSK(0))>0&('$D(LEXINS)) D PR^LEXRXXP(.LEXTSK,70)
I '$D(LEXINS) S LEXI=0 F S LEXI=$O(LEXTSK(LEXI)) Q:+LEXI'>0 D
. S LEXC=$$TM^LEXRXXM($G(LEXTSK(LEXI))) W:'$D(LEXINS) !," ",LEXC
D HOME^%ZIS K ZTDESC,ZTDTH,ZTIO,ZTRTN S LEXI=0
W:+($G(ZTSK))>0&('$D(LEXINS)) ! H:+($G(ZTSK))>0&('$D(LEXINS)) 1 K ZTSK
Q
MAJ ; Repair/Re-Index all Lookup Related Lexicon Files
Q:+($G(LEXOK))'>0 Q:$G(LEXAMSO)'="M"
N X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI
N LEXU,LEXC,LEXL,LEXENV,LEXTSK,LEXMSG,LEXSUBJ,LEXNAM
S LEXNAM="LEXRXMAJ" I $D(^XTMP(LEXNAM,0)) D PROG(LEXNAM) Q
S LEXSUBJ="Lexicon - Repair Major Files (larger files)"
K ^TMP("LEXRX",$J) S LEXENV=$$ENV^LEXRXXM Q:+LEXENV'>0
S ZTRTN="MAJT^LEXRXXT2",ZTDESC="Lexicon Look-up Index Repair"
S ZTIO="",ZTDTH=$H,ZTSAVE("DUZ")="",ZTSAVE("LEXAMSO")=""
S ZTSAVE("LEXSUBJ")="" S:$D(LEXINS) ZTSAVE("LEXINS")=""
S LEXMSG="When the task completes a message will be sent"
S LEXMSG=LEXMSG_" to you reporting the results."
D ^%ZTLOAD K LEXTSK I +($G(ZTSK))>0&('$D(LEXINS)) D
. S LEXTSK(1)="A task has been created to repair the "
. S LEXTSK(2)="cross-references of the major files in the Lexicon "
. S LEXTSK(3)="(Task #"_+($G(ZTSK))_")."
. S:$L($G(LEXMSG)) LEXTSK(4)=LEXMSG
I $O(LEXTSK(0))>0&('$D(LEXINS)) D PR^LEXRXXP(.LEXTSK,70)
I '$D(LEXINS) S LEXI=0 F S LEXI=$O(LEXTSK(LEXI)) Q:+LEXI'>0 D
. S LEXC=$$TM^LEXRXXM($G(LEXTSK(LEXI))) W:'$D(LEXINS) !," ",LEXC
D HOME^%ZIS K ZTDESC,ZTDTH,ZTIO,ZTRTN S LEXI=0
W:+($G(ZTSK))>0&('$D(LEXINS)) ! H:+($G(ZTSK))>0&('$D(LEXINS)) 1 K ZTSK
Q
SUP ; Re-Index all Supporting Lexicon Files (non-Lookup Related)
Q:+($G(LEXOK))'>0 Q:$G(LEXAMSO)'="S" N X,Y,ZTQUEUED,ZTREQ,ZTSK
N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU,LEXC,LEXL,LEXENV
N LEXTSK,LEXMSG,LEXSUBJ,LEXNAM
S LEXNAM="LEXRXSUP" I $D(^XTMP(LEXNAM,0)) D PROG(LEXNAM) Q
S LEXSUBJ="Lexicon - Re-Index Supporting Files (smaller files)"
K ^TMP("LEXRX",$J) S LEXENV=$$ENV^LEXRXXM Q:+LEXENV'>0
S ZTRTN="SUPT^LEXRXXT2",ZTDESC="Lexicon Look-up Index Repair"
S ZTIO="",ZTDTH=$H,ZTSAVE("DUZ")="",ZTSAVE("LEXAMSO")=""
S ZTSAVE("LEXSUBJ")="" S:$D(LEXINS) ZTSAVE("LEXINS")=""
S LEXMSG="When the task completes a message will be sent"
S LEXMSG=LEXMSG_" to you reporting the results."
D ^%ZTLOAD K LEXTSK I +($G(ZTSK))>0&('$D(LEXINS)) D
. S LEXTSK(1)="A task has been created to re-index the "
. S LEXTSK(2)="cross-references of the supporting files in the "
. S LEXTSK(3)="Lexicon (Task #"_+($G(ZTSK))_")."
. S:$L($G(LEXMSG)) LEXTSK(4)=LEXMSG
I $O(LEXTSK(0))>0&('$D(LEXINS)) D PR^LEXRXXP(.LEXTSK,70)
I '$D(LEXINS) S LEXI=0 F S LEXI=$O(LEXTSK(LEXI)) Q:+LEXI'>0 D
. S LEXC=$$TM^LEXRXXM($G(LEXTSK(LEXI))) W:'$D(LEXINS) !," ",LEXC
D HOME^%ZIS K ZTDESC,ZTDTH,ZTIO,ZTRTN S LEXI=0
W:+($G(ZTSK))>0&('$D(LEXINS)) ! H:+($G(ZTSK))>0&('$D(LEXINS)) 1 K ZTSK
Q
ONE ; Repair/Re-Index one file X
Q:+($G(LEXOK))'>0 Q:$G(LEXAMSO)'="O" Q:'$L($G(LEXFI))
S LEXFI=$G(LEXFI) Q:'$D(^LEX(LEXFI))&('$D(^LEXT(LEXFI)))
N Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU
N LEXC,LEXL,LEXENV,LEXTY,LEXUTY,LEXTSK,LEXMSG,LEXFN,LEXSUBJ,LEXNAM
S LEXNAM="LEXRXONE" I $D(^XTMP(LEXNAM,0)) D PROG(LEXNAM) Q
S LEXENV=$$ENV^LEXRXXM Q:+LEXENV'>0 S LEXTY=""
I "^757^757.001^757.01^757.02^757.1^757.21^757.33^"[("^"_LEXFI_"^") D
. S LEXTY="repair",LEXUTY="Repair"
S:'$L(LEXTY) LEXTY="re-index",LEXUTY="Re-Index"
S LEXFN=$$FN^LEXRXXM(LEXFI)
S LEXSUBJ="Lexicon - "_LEXUTY_" the "_LEXFN_" file #"_LEXFI
S ZTRTN="ONET^LEXRXXT2",ZTIO="",ZTDTH=$H
S ZTDESC="Lexicon Index Repair/Re-Index file "_LEXFI
S:$D(LEXINS) ZTSAVE("LEXINS")=""
S ZTSAVE("DUZ")="",ZTSAVE("LEXFI")="",ZTSAVE("LEXAMSO")=""
S ZTSAVE("LEXSUBJ")="",ZTSAVE("LEXTY")="",ZTSAVE("LEXFN")=""
S LEXMSG="When the task completes a message will be sent"
S LEXMSG=LEXMSG_" to you reporting the results."
D ^%ZTLOAD I +($G(ZTSK))>0&('$D(LEXINS)) D
. S LEXTSK(1)="A task has been created to "_LEXTY_" the "
. S LEXTSK(2)="cross-references in "_$S($L(LEXFN):"the ",1:"Lexicon ")
. S LEXTSK(3)=$S($L(LEXFN):LEXFN,1:"")_" file #"_LEXFI_" "
. S LEXTSK(4)="(Task #"_+($G(ZTSK))_")."
. S:$L($G(LEXMSG)) LEXTSK(5)=LEXMSG
I $O(LEXTSK(0))>0&('$D(LEXINS)) D PR^LEXRXXP(.LEXTSK,70)
I '$D(LEXINS) S LEXI=0 F S LEXI=$O(LEXTSK(LEXI)) Q:+LEXI'>0 D
. S LEXC=$$TM^LEXRXXM($G(LEXTSK(LEXI))) W:'$D(LEXINS) !," ",LEXC
D HOME^%ZIS K ZTDESC,ZTDTH,ZTIO,ZTRTN S LEXI=0
W:+($G(ZTSK))>0&('$D(LEXINS)) ! H:+($G(ZTSK))>0&('$D(LEXINS)) 1 K ZTSK
Q
SET ; Set Logic Only
Q:+($G(LEXFI))'>0 S LEXFI=+($G(LEXFI))
Q:'$D(^LEX(LEXFI))&('$D(^LEXT(LEXFI)))
N Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU
N LEXC,LEXL,LEXENV,LEXTY,LEXUTY,LEXTSK,LEXMSG,LEXFN,LEXSUBJ,LEXNAM
N LEXQ,LEXSET S LEXNAM="LEXRXSET" S LEXENV=$$ENV^LEXRXXM Q:+LEXENV'>0
S LEXQ="",ZTRTN="SET^LEXRXXT2",ZTIO="",ZTDTH=$H,LEXSET=""
S ZTDESC="Re-Index file "_LEXFI_", Set Logic Only"
S:$D(LEXINS) ZTSAVE("LEXINS")=""
S ZTSAVE("DUZ")="",ZTSAVE("LEXFI")="",ZTSAVE("LEXQ")=""
S ZTSAVE("LEXSET")="" D ^%ZTLOAD I +($G(ZTSK))>0&('$D(LEXINS)) D
. W !," Re-Index file "_LEXFI_", Set Logic Only (Task #"
. W +($G(ZTSK)),")"
D HOME^%ZIS K ZTDESC,ZTDTH,ZTIO,ZTRTN
W:+($G(ZTSK))>0&('$D(LEXINS)) ! H:+($G(ZTSK))>0&('$D(LEXINS)) 1 K ZTSK
Q
FIX ; Fix File and Execure Set Logic Only
Q:+($G(LEXFI))'>0 S LEXFI=+($G(LEXFI))
Q:'$D(^LEX(LEXFI))&('$D(^LEXT(LEXFI)))
Q:"^757.001^757.21^757.33^"'[("^"_LEXFI_"^")
N Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU
N LEXC,LEXL,LEXENV,LEXTY,LEXUTY,LEXTSK,LEXMSG,LEXFN,LEXSUBJ,LEXNAM
N LEXQ,LEXSET,LEXFIX S LEXNAM="LEXRXFIX" S LEXENV=$$ENV^LEXRXXM
Q:+LEXENV'>0 S LEXQ="",ZTRTN="FIX^LEXRXXT2",ZTIO="",ZTDTH=$H
S ZTDESC="Re-Index file "_LEXFI_", Set Logic Only"
S (LEXSET,LEXFIX)="" S:$D(LEXINS) ZTSAVE("LEXINS")=""
S ZTSAVE("DUZ")="",ZTSAVE("LEXFI")="",ZTSAVE("LEXQ")=""
S ZTSAVE("LEXNAM")="",ZTSAVE("LEXSET")="",ZTSAVE("LEXFIX")=""
D ^%ZTLOAD I +($G(ZTSK))>0&('$D(LEXINS)) D
. W !," Fix/Re-Index file "_LEXFI_", Set Logic Only (Task #"
. W +($G(ZTSK)),")"
D HOME^%ZIS K ZTDESC,ZTDTH,ZTIO,ZTRTN
W:+($G(ZTSK))>0&('$D(LEXINS)) ! H:+($G(ZTSK))>0&('$D(LEXINS)) 1 K ZTSK
Q
;
; Miscellaneous
PROG(X) ; Progress
N LEXNAME S LEXNAM=$G(X) Q:'$L(LEXNAM) Q:'$D(^XTMP(LEXNAM,0))
N LEXBEG,LEXBEGE,LEXBEGD,LEXUPD,LEXUPDE,LEXUPDD,LEXDES,LEXACT,LEXCUR
N LEXTSK,LEXNOW,LEXND S LEXNOW=$$NOW^XLFDT,LEXND=$G(^XTMP(LEXNAM,0))
S LEXBEG=$P(LEXND,"^",3),LEXDES=$P(LEXND,"^",4)
S LEXTSK=$G(^XTMP(LEXNAM,1)),LEXND=$G(^XTMP(LEXNAM,2))
S LEXUPD=$P(LEXND,"^",1),LEXACT=$P(LEXND,"^",2)
S LEXBEGE=$$ED^LEXRXXM(LEXBEG),LEXUPDE=$$ED^LEXRXXM(LEXUPD)
S LEXBEGD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
S LEXUPDD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
S:$E(LEXBEGD,1)=" "&($E(LEXBEGD,3)=":") LEXBEGD=$TR(LEXBEGD," ","0")
S:$E(LEXUPDD,1)=" "&($E(LEXUPDD,3)=":") LEXUPDD=$TR(LEXUPDD," ","0")
W !!," Repair/Re-Index is in progress "
I $L(LEXBEGE),$L(LEXDES) W !,?4,LEXDES,?49,"Started: ",LEXBEGE
I $L(LEXUPDE),$L(LEXACT) W !,?5,LEXACT,?49,"Current: ",LEXUPDE
I $L(LEXBEGD) W !,?49,"Running: ",LEXBEGD
Q
CLR ; Clear
K LEXAMSO,LEXFI,LEXINS,LEXOK
Q
LEXRXXT ;ISL/KER - Repair/Re-Index - Task ;08/17/2011
+1 ;;2.0;LEXICON UTILITY;**81**;Sep 23, 1996;Build 10
+2 ;
+3 ; Global Variables
+4 ; ^LEX( SACC 1.3
+5 ; ^LEXT( SACC 1.3
+6 ; ^TMP("LEXRX") SACC 2.3.2.5.1
+7 ; ^XTMP("LEXRX") SACC 2.3.2.5.2
+8 ;
+9 ; External References
+10 ; HOME^%ZIS ICR 10086
+11 ; ^%ZTLOAD ICR 10063
+12 ; $$FMDIFF^XLFDT ICR 10103
+13 ; $$NOW^XLFDT ICR 10103
+14 ;
+15 ; Local Variables NEWed or KILLed Elsewhere
+16 ; LEXAMSO User Selection NEWed/KILLed by LEXRX
+17 ; LEXFI File number NEWed/KILLed by LEXRX
+18 ; LEXINS Install Flag NEWed/KILLed by Post-Install
+19 ; LEXOK Continue flag NEWed/KILLed by LEXRX
+20 ;
+21 QUIT
ALL ; Repair/Re-Index all Lexicon Files
+1 IF +($GET(LEXOK))'>0
QUIT
IF $GET(LEXAMSO)'="A"
QUIT
NEW X,Y,ZTQUEUED,ZTREQ,ZTSK
+2 NEW ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU,LEXNAM
+3 NEW LEXC,LEXL,LEXENV,LEXTSK,LEXMSG,LEXSUBJ
+4 SET LEXNAM="LEXRXALL"
IF $DATA(^XTMP(LEXNAM,0))
DO PROG(LEXNAM)
QUIT
+5 KILL ^TMP("LEXRX",$JOB)
SET LEXENV=$$ENV^LEXRXXM
IF +LEXENV'>0
QUIT
+6 SET LEXSUBJ="Lexicon - Repair/Re-Index All Files"
+7 SET ZTRTN="ALLT^LEXRXXT2"
SET ZTDESC="Lexicon Index Repair/Re-Index"
+8 SET ZTIO=""
SET ZTDTH=$HOROLOG
IF $DATA(LEXINS)
SET ZTSAVE("LEXINS")=""
+9 SET ZTSAVE("DUZ")=""
SET ZTSAVE("LEXAMSO")=""
SET ZTSAVE("LEXSUBJ")=""
+10 SET LEXMSG="When the task completes a message will be sent"
+11 SET LEXMSG=LEXMSG_" to you reporting the results."
+12 DO ^%ZTLOAD
KILL LEXTSK
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
Begin DoDot:1
+13 SET LEXTSK(1)="A task has been created to repair the cross-references"
+14 SET LEXTSK(2)="in the major Lexicon files and to re-index the cross-"
+15 SET LEXTSK(3)="references of the supporting Lexicon files. This "
+16 SET LEXTSK(4)="will take several hours, however, users may be on the "
+17 SET LEXTSK(5)="system during this time. (Task #"_+($GET(ZTSK))_"). "
+18 IF $LENGTH($GET(LEXMSG))
SET LEXTSK(6)=LEXMSG
End DoDot:1
+19 IF $ORDER(LEXTSK(0))>0&('$DATA(LEXINS))
DO PR^LEXRXXP(.LEXTSK,70)
+20 IF '$DATA(LEXINS)
SET LEXI=0
FOR
SET LEXI=$ORDER(LEXTSK(LEXI))
IF +LEXI'>0
QUIT
Begin DoDot:1
+21 SET LEXC=$$TM^LEXRXXM($GET(LEXTSK(LEXI)))
IF '$DATA(LEXINS)
WRITE !," ",LEXC
End DoDot:1
+22 DO HOME^%ZIS
KILL ZTDESC,ZTDTH,ZTIO,ZTRTN
SET LEXI=0
+23 IF +($GET(ZTSK))>0&('$DATA(LEXINS))
WRITE !
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
HANG 1
KILL ZTSK
+24 QUIT
MAJ ; Repair/Re-Index all Lookup Related Lexicon Files
+1 IF +($GET(LEXOK))'>0
QUIT
IF $GET(LEXAMSO)'="M"
QUIT
+2 NEW X,Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI
+3 NEW LEXU,LEXC,LEXL,LEXENV,LEXTSK,LEXMSG,LEXSUBJ,LEXNAM
+4 SET LEXNAM="LEXRXMAJ"
IF $DATA(^XTMP(LEXNAM,0))
DO PROG(LEXNAM)
QUIT
+5 SET LEXSUBJ="Lexicon - Repair Major Files (larger files)"
+6 KILL ^TMP("LEXRX",$JOB)
SET LEXENV=$$ENV^LEXRXXM
IF +LEXENV'>0
QUIT
+7 SET ZTRTN="MAJT^LEXRXXT2"
SET ZTDESC="Lexicon Look-up Index Repair"
+8 SET ZTIO=""
SET ZTDTH=$HOROLOG
SET ZTSAVE("DUZ")=""
SET ZTSAVE("LEXAMSO")=""
+9 SET ZTSAVE("LEXSUBJ")=""
IF $DATA(LEXINS)
SET ZTSAVE("LEXINS")=""
+10 SET LEXMSG="When the task completes a message will be sent"
+11 SET LEXMSG=LEXMSG_" to you reporting the results."
+12 DO ^%ZTLOAD
KILL LEXTSK
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
Begin DoDot:1
+13 SET LEXTSK(1)="A task has been created to repair the "
+14 SET LEXTSK(2)="cross-references of the major files in the Lexicon "
+15 SET LEXTSK(3)="(Task #"_+($GET(ZTSK))_")."
+16 IF $LENGTH($GET(LEXMSG))
SET LEXTSK(4)=LEXMSG
End DoDot:1
+17 IF $ORDER(LEXTSK(0))>0&('$DATA(LEXINS))
DO PR^LEXRXXP(.LEXTSK,70)
+18 IF '$DATA(LEXINS)
SET LEXI=0
FOR
SET LEXI=$ORDER(LEXTSK(LEXI))
IF +LEXI'>0
QUIT
Begin DoDot:1
+19 SET LEXC=$$TM^LEXRXXM($GET(LEXTSK(LEXI)))
IF '$DATA(LEXINS)
WRITE !," ",LEXC
End DoDot:1
+20 DO HOME^%ZIS
KILL ZTDESC,ZTDTH,ZTIO,ZTRTN
SET LEXI=0
+21 IF +($GET(ZTSK))>0&('$DATA(LEXINS))
WRITE !
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
HANG 1
KILL ZTSK
+22 QUIT
SUP ; Re-Index all Supporting Lexicon Files (non-Lookup Related)
+1 IF +($GET(LEXOK))'>0
QUIT
IF $GET(LEXAMSO)'="S"
QUIT
NEW X,Y,ZTQUEUED,ZTREQ,ZTSK
+2 NEW ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU,LEXC,LEXL,LEXENV
+3 NEW LEXTSK,LEXMSG,LEXSUBJ,LEXNAM
+4 SET LEXNAM="LEXRXSUP"
IF $DATA(^XTMP(LEXNAM,0))
DO PROG(LEXNAM)
QUIT
+5 SET LEXSUBJ="Lexicon - Re-Index Supporting Files (smaller files)"
+6 KILL ^TMP("LEXRX",$JOB)
SET LEXENV=$$ENV^LEXRXXM
IF +LEXENV'>0
QUIT
+7 SET ZTRTN="SUPT^LEXRXXT2"
SET ZTDESC="Lexicon Look-up Index Repair"
+8 SET ZTIO=""
SET ZTDTH=$HOROLOG
SET ZTSAVE("DUZ")=""
SET ZTSAVE("LEXAMSO")=""
+9 SET ZTSAVE("LEXSUBJ")=""
IF $DATA(LEXINS)
SET ZTSAVE("LEXINS")=""
+10 SET LEXMSG="When the task completes a message will be sent"
+11 SET LEXMSG=LEXMSG_" to you reporting the results."
+12 DO ^%ZTLOAD
KILL LEXTSK
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
Begin DoDot:1
+13 SET LEXTSK(1)="A task has been created to re-index the "
+14 SET LEXTSK(2)="cross-references of the supporting files in the "
+15 SET LEXTSK(3)="Lexicon (Task #"_+($GET(ZTSK))_")."
+16 IF $LENGTH($GET(LEXMSG))
SET LEXTSK(4)=LEXMSG
End DoDot:1
+17 IF $ORDER(LEXTSK(0))>0&('$DATA(LEXINS))
DO PR^LEXRXXP(.LEXTSK,70)
+18 IF '$DATA(LEXINS)
SET LEXI=0
FOR
SET LEXI=$ORDER(LEXTSK(LEXI))
IF +LEXI'>0
QUIT
Begin DoDot:1
+19 SET LEXC=$$TM^LEXRXXM($GET(LEXTSK(LEXI)))
IF '$DATA(LEXINS)
WRITE !," ",LEXC
End DoDot:1
+20 DO HOME^%ZIS
KILL ZTDESC,ZTDTH,ZTIO,ZTRTN
SET LEXI=0
+21 IF +($GET(ZTSK))>0&('$DATA(LEXINS))
WRITE !
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
HANG 1
KILL ZTSK
+22 QUIT
ONE ; Repair/Re-Index one file X
+1 IF +($GET(LEXOK))'>0
QUIT
IF $GET(LEXAMSO)'="O"
QUIT
IF '$LENGTH($GET(LEXFI))
QUIT
+2 SET LEXFI=$GET(LEXFI)
IF '$DATA(^LEX(LEXFI))&('$DATA(^LEXT(LEXFI)))
QUIT
+3 NEW Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU
+4 NEW LEXC,LEXL,LEXENV,LEXTY,LEXUTY,LEXTSK,LEXMSG,LEXFN,LEXSUBJ,LEXNAM
+5 SET LEXNAM="LEXRXONE"
IF $DATA(^XTMP(LEXNAM,0))
DO PROG(LEXNAM)
QUIT
+6 SET LEXENV=$$ENV^LEXRXXM
IF +LEXENV'>0
QUIT
SET LEXTY=""
+7 IF "^757^757.001^757.01^757.02^757.1^757.21^757.33^"[("^"_LEXFI_"^")
Begin DoDot:1
+8 SET LEXTY="repair"
SET LEXUTY="Repair"
End DoDot:1
+9 IF '$LENGTH(LEXTY)
SET LEXTY="re-index"
SET LEXUTY="Re-Index"
+10 SET LEXFN=$$FN^LEXRXXM(LEXFI)
+11 SET LEXSUBJ="Lexicon - "_LEXUTY_" the "_LEXFN_" file #"_LEXFI
+12 SET ZTRTN="ONET^LEXRXXT2"
SET ZTIO=""
SET ZTDTH=$HOROLOG
+13 SET ZTDESC="Lexicon Index Repair/Re-Index file "_LEXFI
+14 IF $DATA(LEXINS)
SET ZTSAVE("LEXINS")=""
+15 SET ZTSAVE("DUZ")=""
SET ZTSAVE("LEXFI")=""
SET ZTSAVE("LEXAMSO")=""
+16 SET ZTSAVE("LEXSUBJ")=""
SET ZTSAVE("LEXTY")=""
SET ZTSAVE("LEXFN")=""
+17 SET LEXMSG="When the task completes a message will be sent"
+18 SET LEXMSG=LEXMSG_" to you reporting the results."
+19 DO ^%ZTLOAD
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
Begin DoDot:1
+20 SET LEXTSK(1)="A task has been created to "_LEXTY_" the "
+21 SET LEXTSK(2)="cross-references in "_$SELECT($LENGTH(LEXFN):"the ",1:"Lexicon ")
+22 SET LEXTSK(3)=$SELECT($LENGTH(LEXFN):LEXFN,1:"")_" file #"_LEXFI_" "
+23 SET LEXTSK(4)="(Task #"_+($GET(ZTSK))_")."
+24 IF $LENGTH($GET(LEXMSG))
SET LEXTSK(5)=LEXMSG
End DoDot:1
+25 IF $ORDER(LEXTSK(0))>0&('$DATA(LEXINS))
DO PR^LEXRXXP(.LEXTSK,70)
+26 IF '$DATA(LEXINS)
SET LEXI=0
FOR
SET LEXI=$ORDER(LEXTSK(LEXI))
IF +LEXI'>0
QUIT
Begin DoDot:1
+27 SET LEXC=$$TM^LEXRXXM($GET(LEXTSK(LEXI)))
IF '$DATA(LEXINS)
WRITE !," ",LEXC
End DoDot:1
+28 DO HOME^%ZIS
KILL ZTDESC,ZTDTH,ZTIO,ZTRTN
SET LEXI=0
+29 IF +($GET(ZTSK))>0&('$DATA(LEXINS))
WRITE !
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
HANG 1
KILL ZTSK
+30 QUIT
SET ; Set Logic Only
+1 IF +($GET(LEXFI))'>0
QUIT
SET LEXFI=+($GET(LEXFI))
+2 IF '$DATA(^LEX(LEXFI))&('$DATA(^LEXT(LEXFI)))
QUIT
+3 NEW Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU
+4 NEW LEXC,LEXL,LEXENV,LEXTY,LEXUTY,LEXTSK,LEXMSG,LEXFN,LEXSUBJ,LEXNAM
+5 NEW LEXQ,LEXSET
SET LEXNAM="LEXRXSET"
SET LEXENV=$$ENV^LEXRXXM
IF +LEXENV'>0
QUIT
+6 SET LEXQ=""
SET ZTRTN="SET^LEXRXXT2"
SET ZTIO=""
SET ZTDTH=$HOROLOG
SET LEXSET=""
+7 SET ZTDESC="Re-Index file "_LEXFI_", Set Logic Only"
+8 IF $DATA(LEXINS)
SET ZTSAVE("LEXINS")=""
+9 SET ZTSAVE("DUZ")=""
SET ZTSAVE("LEXFI")=""
SET ZTSAVE("LEXQ")=""
+10 SET ZTSAVE("LEXSET")=""
DO ^%ZTLOAD
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
Begin DoDot:1
+11 WRITE !," Re-Index file "_LEXFI_", Set Logic Only (Task #"
+12 WRITE +($GET(ZTSK)),")"
End DoDot:1
+13 DO HOME^%ZIS
KILL ZTDESC,ZTDTH,ZTIO,ZTRTN
+14 IF +($GET(ZTSK))>0&('$DATA(LEXINS))
WRITE !
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
HANG 1
KILL ZTSK
+15 QUIT
FIX ; Fix File and Execure Set Logic Only
+1 IF +($GET(LEXFI))'>0
QUIT
SET LEXFI=+($GET(LEXFI))
+2 IF '$DATA(^LEX(LEXFI))&('$DATA(^LEXT(LEXFI)))
QUIT
+3 IF "^757.001^757.21^757.33^"'[("^"_LEXFI_"^")
QUIT
+4 NEW Y,ZTQUEUED,ZTREQ,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,LEXI,LEXU
+5 NEW LEXC,LEXL,LEXENV,LEXTY,LEXUTY,LEXTSK,LEXMSG,LEXFN,LEXSUBJ,LEXNAM
+6 NEW LEXQ,LEXSET,LEXFIX
SET LEXNAM="LEXRXFIX"
SET LEXENV=$$ENV^LEXRXXM
+7 IF +LEXENV'>0
QUIT
SET LEXQ=""
SET ZTRTN="FIX^LEXRXXT2"
SET ZTIO=""
SET ZTDTH=$HOROLOG
+8 SET ZTDESC="Re-Index file "_LEXFI_", Set Logic Only"
+9 SET (LEXSET,LEXFIX)=""
IF $DATA(LEXINS)
SET ZTSAVE("LEXINS")=""
+10 SET ZTSAVE("DUZ")=""
SET ZTSAVE("LEXFI")=""
SET ZTSAVE("LEXQ")=""
+11 SET ZTSAVE("LEXNAM")=""
SET ZTSAVE("LEXSET")=""
SET ZTSAVE("LEXFIX")=""
+12 DO ^%ZTLOAD
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
Begin DoDot:1
+13 WRITE !," Fix/Re-Index file "_LEXFI_", Set Logic Only (Task #"
+14 WRITE +($GET(ZTSK)),")"
End DoDot:1
+15 DO HOME^%ZIS
KILL ZTDESC,ZTDTH,ZTIO,ZTRTN
+16 IF +($GET(ZTSK))>0&('$DATA(LEXINS))
WRITE !
IF +($GET(ZTSK))>0&('$DATA(LEXINS))
HANG 1
KILL ZTSK
+17 QUIT
+18 ;
+19 ; Miscellaneous
PROG(X) ; Progress
+1 NEW LEXNAME
SET LEXNAM=$GET(X)
IF '$LENGTH(LEXNAM)
QUIT
IF '$DATA(^XTMP(LEXNAM,0))
QUIT
+2 NEW LEXBEG,LEXBEGE,LEXBEGD,LEXUPD,LEXUPDE,LEXUPDD,LEXDES,LEXACT,LEXCUR
+3 NEW LEXTSK,LEXNOW,LEXND
SET LEXNOW=$$NOW^XLFDT
SET LEXND=$GET(^XTMP(LEXNAM,0))
+4 SET LEXBEG=$PIECE(LEXND,"^",3)
SET LEXDES=$PIECE(LEXND,"^",4)
+5 SET LEXTSK=$GET(^XTMP(LEXNAM,1))
SET LEXND=$GET(^XTMP(LEXNAM,2))
+6 SET LEXUPD=$PIECE(LEXND,"^",1)
SET LEXACT=$PIECE(LEXND,"^",2)
+7 SET LEXBEGE=$$ED^LEXRXXM(LEXBEG)
SET LEXUPDE=$$ED^LEXRXXM(LEXUPD)
+8 SET LEXBEGD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
+9 SET LEXUPDD=$$FMDIFF^XLFDT(LEXNOW,LEXBEG,3)
+10 IF $EXTRACT(LEXBEGD,1)=" "&($EXTRACT(LEXBEGD,3)="
SET LEXBEGD=$TRANSLATE(LEXBEGD," ","0")
+11 IF $EXTRACT(LEXUPDD,1)=" "&($EXTRACT(LEXUPDD,3)="
SET LEXUPDD=$TRANSLATE(LEXUPDD," ","0")
+12 WRITE !!," Repair/Re-Index is in progress "
+13 IF $LENGTH(LEXBEGE)
IF $LENGTH(LEXDES)
WRITE !,?4,LEXDES,?49,"Started: ",LEXBEGE
+14 IF $LENGTH(LEXUPDE)
IF $LENGTH(LEXACT)
WRITE !,?5,LEXACT,?49,"Current: ",LEXUPDE
+15 IF $LENGTH(LEXBEGD)
WRITE !,?49,"Running: ",LEXBEGD
+16 QUIT
CLR ; Clear
+1 KILL LEXAMSO,LEXFI,LEXINS,LEXOK
+2 QUIT