| 1 | LEXXST ; ISL/KER - Lexicon Status (Main/Files) ; 02/22/2007 | 
|---|
| 2 | ;;2.0;LEXICON UTILITY;**4,5,8,25,27,49**;Sep 23, 1996;Build 3 | 
|---|
| 3 | ; | 
|---|
| 4 | ; External References | 
|---|
| 5 | ;   DBIA 10096  ^%ZOSF("PROD" | 
|---|
| 6 | ;   DBIA 10096  ^%ZOSF("UCI" | 
|---|
| 7 | ;   DBIA 10060  ^VA(200 | 
|---|
| 8 | ;   DBIA 10000  NOW^%DTC | 
|---|
| 9 | ;   DBIA 10086  ^%ZIS | 
|---|
| 10 | ;   DBIA 10086  HOME^%ZIS | 
|---|
| 11 | ;   DBIA 10089  ^%ZISC | 
|---|
| 12 | ;   DBIA 10063  ^%ZTLOAD | 
|---|
| 13 | ;   DBIA  2052  FILE^DID | 
|---|
| 14 | ;   DBIA 10103  $$FMTE^XLFDT | 
|---|
| 15 | ;   DBIA 10104  $$UP^XLFSTR | 
|---|
| 16 | ;   DBIA 10070  ^XMD | 
|---|
| 17 | ; | 
|---|
| 18 | DISP ; Display Status only | 
|---|
| 19 | K ^TMP($J,"LEXINFO"),LEXMAIL,LEXAO N X,Y,LEXM,LEXY | 
|---|
| 20 | D DATA,SHOW Q | 
|---|
| 21 | SEND ; Send Status to G.LEXINS@ISC-SLC.VA.GOV | 
|---|
| 22 | K ^TMP($J,"LEXINFO") N X,Y,LEXM,LEXY | 
|---|
| 23 | S:$L($G(LEXBUILD)) ZTSAVE("LEXBUILD")="" | 
|---|
| 24 | S:$D(LEXSHORT) ZTSAVE("LEXSHORT")="" | 
|---|
| 25 | S ZTRTN="SENDTO^LEXXST",ZTDESC="Lexicon Status Report Msg [LEXXST]",ZTIO="",ZTDTH=$H | 
|---|
| 26 | D ^%ZTLOAD | 
|---|
| 27 | D HOME^%ZIS K Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTSAVE,ZTRTN | 
|---|
| 28 | Q | 
|---|
| 29 | SENDTO ; Send Status (Tasked) | 
|---|
| 30 | N LEXMAIL,LEXAO S (LEXMAIL,LEXAO)="" S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 31 | D:'$D(LEXSHORT) N0 D DATA,SHOW Q | 
|---|
| 32 | DATA ; Get Data | 
|---|
| 33 | D TITLE Q:$D(LEXSHORT) | 
|---|
| 34 | D FILES,PT^LEXXST2,RTT^LEXXST2 | 
|---|
| 35 | D KIDS^LEXXST3,RTN^LEXXST3 | 
|---|
| 36 | Q | 
|---|
| 37 | TITLE ; Title of display/message | 
|---|
| 38 | N LEXT,LEXA,LEXD,LEXU,LEXN,LEXP | 
|---|
| 39 | S LEXT="LEXICON UTILITY STATUS",LEXD=$$A,LEXA=$$U | 
|---|
| 40 | S LEXU=$$P,LEXN=$P(LEXU,"^",1),LEXP=$P(LEXU,"^",2) | 
|---|
| 41 | I $D(LEXAO) D  Q | 
|---|
| 42 | . D:$L(LEXT) TT(LEXT),BL S:$L(LEXD) LEXT="  AS OF:       "_LEXD D:$L(LEXD) TL(LEXT) S LEXT="" S:$L(LEXA) LEXT="  IN ACCOUNT:  "_$S($L($P(LEXA,"^",1)):"[",1:"")_$P(LEXA,"^",1)_$S($L($P(LEXA,"^",2)):"]",1:"") | 
|---|
| 43 | . S:$L(LEXT)&($L($P(LEXA,"^",2))) LEXT=LEXT_"  "_$P(LEXA,"^",2) D:$L(LEXA) TL(LEXT) | 
|---|
| 44 | . S LEXT="" S:$L(LEXU) LEXT="  MAINT BY:    " S:$L(LEXN) LEXT=LEXT_LEXN S:$L(LEXP)&($L(LEXN)) LEXT=LEXT_"   "_LEXP D:$L(LEXT) TL(LEXT) | 
|---|
| 45 | . S LEXT="" S:$L($G(LEXBUILD)) LEXT="  BUILD:       "_$G(LEXBUILD) | 
|---|
| 46 | . D:$L(LEXT) TL(LEXT) D BL | 
|---|
| 47 | I '$D(LEXAO) D  Q | 
|---|
| 48 | . D:$L(LEXT) TT(LEXT),BL S:$L(LEXD) LEXT="  AS OF:       "_LEXD D:$L(LEXD) TL(LEXT) S LEXT="" S:$L(LEXA) LEXT="  IN ACCOUNT:  "_$S($L($P(LEXA,"^",1)):"[",1:"")_$P(LEXA,"^",1)_$S($L($P(LEXA,"^",2)):"]",1:"") | 
|---|
| 49 | . S:$L(LEXT)&($L($P(LEXA,"^",2))) LEXT=LEXT_"  "_$P(LEXA,"^",2) D:$L(LEXA) TL(LEXT) D BL | 
|---|
| 50 | Q | 
|---|
| 51 | U(X) ;   UCI where Lexicon is installed | 
|---|
| 52 | N LEXU,LEXP,LEXT,Y X ^%ZOSF("UCI") S LEXU=Y,LEXP="" | 
|---|
| 53 | S:LEXU=^%ZOSF("PROD")!($P(LEXU,",",1)=^%ZOSF("PROD")) LEXP=" (Production)" | 
|---|
| 54 | S:LEXU'=^%ZOSF("PROD")&($P(LEXU,",",1)'=^%ZOSF("PROD")) LEXP=" (Test)" | 
|---|
| 55 | S X="",$P(X,"^",1)=LEXU,$P(X,"^",2)=LEXP | 
|---|
| 56 | Q X | 
|---|
| 57 | FILES ; File version/contents | 
|---|
| 58 | N LEXCT,LEXT,LEXSP,LEXFI,LEXX,LEXGL,LEXNM,LEXVR,LEXLR,LEXTR,LEXRLR | 
|---|
| 59 | N LEXDDA,LEXPRD,LEXRN,LEXRD,LEXFCT | 
|---|
| 60 | S LEXFI=756.999999,LEXCT=0,LEXSP="                           ",LEXFCT=$$FC | 
|---|
| 61 | S LEXT="     FILE     NAME                   VER  REV     DATE      LAST IEN    RECORDS" | 
|---|
| 62 | D BL,TT("FILE VERSIONS/REVISIONS"),BL,TL(LEXT),BK1 | 
|---|
| 63 | D:+LEXFCT'>0 BL,TL("       NO FILES FOUND") Q:+LEXFCT'>0 | 
|---|
| 64 | S LEXFI=756.999999 F  S LEXFI=$O(^LEX(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  D FL | 
|---|
| 65 | S LEXFI=756.999999 F  S LEXFI=$O(^LEXT(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  D FL | 
|---|
| 66 | S LEXFI=756.999999 F  S LEXFI=$O(^LEXC(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  D FL | 
|---|
| 67 | F LEXFI=80,80.1,81,81.3 D FL | 
|---|
| 68 | Q | 
|---|
| 69 | FL ; File List | 
|---|
| 70 | N LEXN K LEXDDA S LEXN=$$ATTR(LEXFI,"NAME") Q:'$L(LEXN) | 
|---|
| 71 | S LEXGL=$$ATTR(LEXFI,"GLOBAL NAME") Q:'$L(LEXGL) | 
|---|
| 72 | S LEXX=LEXGL_"0)",LEXX=$G(@LEXX),LEXTR=+($P(LEXX,"^",4)),LEXLR=+($P(LEXX,"^",3)) | 
|---|
| 73 | S LEXRLR=$O(@(LEXGL_""" "")"),-1) S:'$L($G(LEXX)) (LEXTR,LEXLR)="??" S:LEXRLR'=LEXLR (LEXTR,LEXLR)="??" | 
|---|
| 74 | S LEXNM=$E(LEXN,1,21),LEXX=$$ATTR(LEXFI,"VERSION") | 
|---|
| 75 | S LEXVR=$P(LEXX,".",1),LEXX=$P(LEXX,".",2),LEXVR=$J(LEXVR,3)_$S($L(LEXVR):".",1:"")_LEXX | 
|---|
| 76 | S LEXPRD=$$ATTR(LEXFI,"PACKAGE REVISION DATA") | 
|---|
| 77 | S LEXRN=$P(LEXPRD,"^",1) S:LEXRN="" LEXRN="1" | 
|---|
| 78 | S LEXRD=$P(LEXPRD,"^",2) S:LEXRD'="" LEXRD=$$MDCY(LEXRD) | 
|---|
| 79 | S:LEXRD="" LEXRD="10/04/96" | 
|---|
| 80 | S LEXCT=LEXCT+1,LEXT=$J(LEXCT,3)_"  "_LEXFI_$E(LEXSP,1,(9-$L(LEXFI))) | 
|---|
| 81 | S LEXT=LEXT_LEXNM_$E(LEXSP,1,(21-$L(LEXNM))),LEXT=LEXT_LEXVR_$E(LEXSP,1,(8-$L(LEXVR))) | 
|---|
| 82 | S LEXT=LEXT_LEXRN_$E(LEXSP,1,(4-$L(LEXRN))),LEXT=LEXT_LEXRD_$E(LEXSP,1,(14-$L(LEXRD))) | 
|---|
| 83 | S LEXT=LEXT_$J(LEXLR,7)_"    "_$J(LEXTR,7) D TL(LEXT) | 
|---|
| 84 | Q | 
|---|
| 85 | SHOW ; Show global array (display or mail) | 
|---|
| 86 | D:$D(LEXMAIL) MAIL,CLR D:'$D(LEXMAIL) DSP,CLR Q | 
|---|
| 87 | SHOW2 ; Display global array | 
|---|
| 88 | N LEXI S LEXI=0 F  S LEXI=$O(^TMP($J,"LEXINFO",LEXI)) Q:+LEXI=0  W !,^TMP($J,"LEXINFO",LEXI) | 
|---|
| 89 | Q | 
|---|
| 90 | MAIL ; Mail global array in message | 
|---|
| 91 | N DIFROM,LEXADR S U="^",XMSUB="LEXICON INFO" | 
|---|
| 92 | S:$L($G(LEXBUILD)) XMSUB=LEXBUILD_" Installation" | 
|---|
| 93 | S LEXADR=$$ADR^LEXU Q:'$L(LEXADR) | 
|---|
| 94 | S XMY(("G.LEXINS@"_LEXADR))="",XMTEXT="^TMP($J,""LEXINFO"",",XMDUZ=.5 D ^XMD | 
|---|
| 95 | K ^TMP($J,"LEXINFO"),%Z,XCNP,XMSCR,XMDUZ,XMY,XMZ,XMSUB,XMY,XMTEXT,XMDUZ Q | 
|---|
| 96 | Q | 
|---|
| 97 | CLR ; Clean up | 
|---|
| 98 | K ^TMP($J,"LEXINFO") Q | 
|---|
| 99 | BL ; Blank Line | 
|---|
| 100 | N LEXNX S LEXNX=+($$NX),^TMP($J,"LEXINFO",LEXNX)="" Q | 
|---|
| 101 | TT(LEXX) ; Title Line | 
|---|
| 102 | Q:'$L($G(LEXX))  D TL(LEXX) N LEXBK S LEXBK="===============================================================================",LEXBK=$E(LEXBK,1,$L($G(LEXX))) D:$L(LEXBK) TL(LEXBK) Q | 
|---|
| 103 | TL(LEXX) ; Text Line | 
|---|
| 104 | N LEXNX S LEXNX=+($$NX),^TMP($J,"LEXINFO",LEXNX)=$G(LEXX) Q | 
|---|
| 105 | BK1 ; Break Line | 
|---|
| 106 | N LEXNX S LEXNX=+($$NX),^TMP($J,"LEXINFO",LEXNX)="-------------------------------------------------------------------------------" Q | 
|---|
| 107 | NX(LEXX) ; Next Line # | 
|---|
| 108 | S (LEXX,^TMP($J,"LEXINFO",0))=+($G(^TMP($J,"LEXINFO",0)))+1 Q LEXX | 
|---|
| 109 | DSP ; Display ^TMP($J,"LEXINFO") | 
|---|
| 110 | D DEV Q | 
|---|
| 111 | DEV ; Select a device | 
|---|
| 112 | N %,%ZIS,IOP,ZTRTN,ZTSAVE,ZTDESC,ZTDTH,ZTIO,ZTSK | 
|---|
| 113 | S ZTRTN="DSPI^LEXXST",ZTDESC="printing Lexicon installation information" | 
|---|
| 114 | S ZTIO=ION,ZTDTH=$H,%ZIS="PQ",ZTSAVE("^TMP($J,""LEXINFO"",")="" | 
|---|
| 115 | D ^%ZIS Q:POP  S ZTIO=ION I $D(IO("Q")) D QUE,^%ZISC Q | 
|---|
| 116 | D NOQUE Q | 
|---|
| 117 | NOQUE ; Do not que task | 
|---|
| 118 | W @IOF W:IOST["P-" !,"< Not queued, printing Lexicon Installations >",! H 2 U:IOST["P-" IO D @ZTRTN,^%ZISC Q | 
|---|
| 119 | QUE ; Task queued to print user defaults | 
|---|
| 120 | K IO("Q") D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued",1:"Request Cancelled"),! H 2 Q | 
|---|
| 121 | Q | 
|---|
| 122 | DSPI ; Display installations | 
|---|
| 123 | I '$D(ZTQUEUED),$G(IOST)'["P-" W:'$D(LEXDNC) # I '$D(^TMP($J,"LEXINFO")) W !,"Installations not found" | 
|---|
| 124 | I IOST["P-" U IO | 
|---|
| 125 | G:'$D(^TMP($J,"LEXINFO")) DSPQ | 
|---|
| 126 | N LEXCONT,LEXI,LEXLC,LEXEOP S LEXCONT="",(LEXLC,LEXI)=0,LEXEOP=+($G(IOSL)) S:LEXEOP=0 LEXEOP=24 | 
|---|
| 127 | F  S LEXI=$O(^TMP($J,"LEXINFO",LEXI)) Q:+LEXI=0!(LEXCONT["^")  D | 
|---|
| 128 | . W !,^TMP($J,"LEXINFO",LEXI) D LF Q:LEXCONT["^" | 
|---|
| 129 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 130 | W:$G(IOST)["P-" @IOF | 
|---|
| 131 | DSPQ ; Quit Display | 
|---|
| 132 | Q | 
|---|
| 133 | LF ; Line Feed | 
|---|
| 134 | S LEXLC=LEXLC+1 D:IOST["P-"&(LEXLC>(LEXEOP-7)) CONT D:IOST'["P-"&(LEXLC>(LEXEOP-4)) CONT | 
|---|
| 135 | Q | 
|---|
| 136 | CONT ; Page/Form Feed | 
|---|
| 137 | S LEXLC=0 W:IOST["P-" @IOF Q:IOST["P-"  W !!,"Press <Return> to continue  " R LEXCONT:300 S:'$T LEXCONT="^" S:LEXCONT'["^" LEXCONT="" | 
|---|
| 138 | Q | 
|---|
| 139 | A(LEX) ; As of date/time | 
|---|
| 140 | N %,X,%I,%H D NOW^%DTC S LEX=$$UP^XLFSTR($$FMTE^XLFDT(%,"1")) S:LEX["@" LEX=$P(LEX,"@",1)_"  "_$P(LEX,"@",2,299) Q LEX | 
|---|
| 141 | P(LEX) ; Person | 
|---|
| 142 | S LEX=+($G(DUZ)) Q:'$L($P($G(^VA(200,+($G(LEX)),0)),"^",1)) "UNKNOWN^" | 
|---|
| 143 | N LEXDUZ,LEXPH S LEXDUZ=+($G(DUZ)) | 
|---|
| 144 | S LEXPH=$P($G(^VA(200,LEXDUZ,.13)),"^",2) S:LEXPH="" LEXPH=$P($G(^VA(200,LEXDUZ,.13)),"^",1) S:LEXPH="" LEXPH=$P($G(^VA(200,LEXDUZ,.13)),"^",3) S:LEXPH="" LEXPH=$P($G(^VA(200,LEXDUZ,.13)),"^",4) | 
|---|
| 145 | S LEXDUZ=$P(^VA(200,LEXDUZ,0),"^",1),LEX=LEXDUZ_"^"_LEXPH Q LEX | 
|---|
| 146 | N0 ; 0 Node | 
|---|
| 147 | N LEXFI,LEXCT,DIC S LEXCT=0 | 
|---|
| 148 | S LEXFI=756.999999 F  S LEXFI=$O(^LEX(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  S DIC=$$ATTR(LEXFI,"GLOBAL NAME") D N0C | 
|---|
| 149 | S LEXFI=756.999999 F  S LEXFI=$O(^LEXT(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  S DIC=$$ATTR(LEXFI,"GLOBAL NAME") D N0C | 
|---|
| 150 | S LEXFI=756.999999 F  S LEXFI=$O(^LEXC(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  S DIC=$$ATTR(LEXFI,"GLOBAL NAME") D N0C | 
|---|
| 151 | F LEXFI=80,80.1,81,81.3 S DIC=$$ATTR(LEXFI,"GLOBAL NAME") D N0C | 
|---|
| 152 | Q | 
|---|
| 153 | N0C ; 0 Node Count | 
|---|
| 154 | N DA,LEXLR,LEXTR,LEXDDA,LEXNM | 
|---|
| 155 | K LEXDDA D FILE^DID(LEXFI,"N","NAME","LEXDDA","LEXDDA") | 
|---|
| 156 | S LEXNM=$G(LEXDDA("NAME")) Q:'$L(LEXNM)  S (DA,LEXLR,LEXTR)=0 | 
|---|
| 157 | F  S DA=$O(@(DIC_DA_")")) Q:+DA=0  S LEXLR=DA,LEXTR=LEXTR+1 | 
|---|
| 158 | S $P(@(DIC_"0)"),"^",3)=LEXLR,$P(@(DIC_"0)"),"^",4)=LEXTR | 
|---|
| 159 | W:'$D(ZTQUEUED) !,LEXFI,?10,$J(LEXLR,10),$J(LEXTR,10) | 
|---|
| 160 | Q | 
|---|
| 161 | FC(X) ; File Count | 
|---|
| 162 | N LEXFI,LEXCT S LEXCT=0 | 
|---|
| 163 | S LEXFI=756.999999 F  S LEXFI=$O(^LEX(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  S LEXCT=LEXCT+1 | 
|---|
| 164 | S LEXFI=756.999999 F  S LEXFI=$O(^LEXT(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  S LEXCT=LEXCT+1 | 
|---|
| 165 | S LEXFI=756.999999 F  S LEXFI=$O(^LEXC(LEXFI)) Q:+LEXFI=0!($E(LEXFI,1,3)'="757")  S LEXCT=LEXCT+1 | 
|---|
| 166 | S X=LEXCT Q X | 
|---|
| 167 | MDCY(X) ; Month/Day/Century-Year where X=FM Date | 
|---|
| 168 | N LEXCY S LEXCY=+($G(X)) Q:LEXCY=0 "" S LEXCY=$P($$FMTE^XLFDT(LEXCY,2),"/",1,2)_"/"_$P($P($$FMTE^XLFDT(LEXCY,1)," ",3),"@",1) | 
|---|
| 169 | S:$L($P(LEXCY,"/",1))<2 $P(LEXCY,"/",1)="0"_$P(LEXCY,"/",1) S:$L($P(LEXCY,"/",2))<2 $P(LEXCY,"/",2)="0"_$P(LEXCY,"/",2) | 
|---|
| 170 | S:$L($P(LEXCY,"/",1))<2 $P(LEXCY,"/",1)="0"_$P(LEXCY,"/",1) S:$L($P(LEXCY,"/",2))<2 $P(LEXCY,"/",2)="0"_$P(LEXCY,"/",2) | 
|---|
| 171 | S X=LEXCY Q X | 
|---|
| 172 | ATTR(X,A) ; File Attributes | 
|---|
| 173 | N LEXFI,LEXATT,LEXDDA | 
|---|
| 174 | S LEXFI=+($G(X)) Q:+LEXFI'>0 ""  S LEXATT=$G(A) Q:'$L(LEXATT) "" | 
|---|
| 175 | D FILE^DID(LEXFI,"N",LEXATT,"LEXDDA","LEXDDA") S X=$G(LEXDDA(LEXATT)) | 
|---|
| 176 | Q X | 
|---|