| 1 | GMTSXPS1 ; SLC/KER - Health Summary Status       ; 08/27/2002
 | 
|---|
| 2 |  ;;2.7;Health Summary;**35,34,46,56**;Oct 20, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; External References
 | 
|---|
| 5 |  ;   DBIA 10086  HOME^%ZIS
 | 
|---|
| 6 |  ;   DBIA 10086  ^%ZIS
 | 
|---|
| 7 |  ;   DBIA 10089  ^%ZISC
 | 
|---|
| 8 |  ;   DBIA 10063  ^%ZTLOAD
 | 
|---|
| 9 |  ;   DBIA 10096  ^%ZOSF("UCI")
 | 
|---|
| 10 |  ;   DBIA 10096  ^%ZOSF("PROD")
 | 
|---|
| 11 |  ;   DBIA 10096  ^%ZOSF("TEST")
 | 
|---|
| 12 |  ;   DBIA 10060  ^VA(200,
 | 
|---|
| 13 |  ;   DBIA  2056  $$GET1^DIQ (file #4 and 200)
 | 
|---|
| 14 |  ;   DBIA  1131  ^XMB("NETNAME")
 | 
|---|
| 15 |  ;   DBIA 10091  ^XMB(1,  file #4.3
 | 
|---|
| 16 |  ;   DBIA 10070  ^XMD
 | 
|---|
| 17 |  ;   DBIA 10103  $$NOW^XLFDT
 | 
|---|
| 18 |  ;   DBIA 10103  $$FMTE^XLFDT
 | 
|---|
| 19 |  ;                    
 | 
|---|
| 20 | EN ; Display status only
 | 
|---|
| 21 |  N POP,GMTSENV S GMTSENV=$$ENV Q:'GMTSENV
 | 
|---|
| 22 |  K ^TMP($J,"GMTSINFO"),GMTSMAIL N X,Y,ZTSAVE D HDR
 | 
|---|
| 23 |  D:'$D(GMTSHORT) FI,INS^GMTSXPS2 D OUTPUT Q
 | 
|---|
| 24 | SEND ; Send status to G.GMTS@ISC-SLC.VA.GOV
 | 
|---|
| 25 |  N POP,GMTSENV S GMTSENV=$$ENV2 Q:'GMTSENV
 | 
|---|
| 26 |  S GMTSIENS=$G(GMTSIENS) S:$L(GMTSIENS) GMTSIENS=";"_GMTSIENS_";"
 | 
|---|
| 27 |  S GMTSENV=$$ROK("XMD") Q:'GMTSENV  K ^TMP($J,"GMTSINFO") N X,Y,ZTSAVE,ZTQUEUED,ZTREQ,ZTRTN
 | 
|---|
| 28 |  S:$D(GMTSHORT) ZTSAVE("GMTSHORT")="" S:$L($G(GMTSBLD)) ZTSAVE("GMTSBLD")="" S:$D(GMTSINST) ZTSAVE("GMTSINST")="" S:$L($G(GMTSIENS)) ZTSAVE("GMTSIENS")=""
 | 
|---|
| 29 |  S ZTRTN="SENDTO^GMTSXPS1",ZTDESC="Health Summary Status Report Msg",ZTIO="",ZTDTH=$H D ^%ZTLOAD,HOME^%ZIS K Y,ZTSK,ZTDESC,ZTDTH,ZTIO,ZTRTN Q
 | 
|---|
| 30 | SENDTO ;   Send (Tasked)
 | 
|---|
| 31 |  N GMTSMAIL S GMTSMAIL="" S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
| 32 |  N X,Y D HDR D:'$D(GMTSHORT) FI,INS^GMTSXPS2 D OUTPUT Q
 | 
|---|
| 33 |  ;                           
 | 
|---|
| 34 | HDR ; Report Header
 | 
|---|
| 35 |  N X D TITLE,ASOF D:$D(GMTSINST) MTBY D INAC,BLD D BL
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 | TITLE ;   As of date
 | 
|---|
| 38 |  N X S X=$S($D(GMTSINST)&('$L($G(GMTSBLD))):"Health Summary Installation",$D(GMTSINST)&($L($G(GMTSBLD))):($G(GMTSBLD)_" Installation"),1:"Health Summary Status") D TT(X),BL Q
 | 
|---|
| 39 | ASOF ;   As of date
 | 
|---|
| 40 |  N X S X=$$NOW S:$L(X) X=$$TB($S($D(GMTSINST):"  Installed on:",1:"  As of:"))_X D:$L(X) TL(X) Q
 | 
|---|
| 41 | INAC ;   In Account
 | 
|---|
| 42 |  N X S X=$$UCI($$U) S:$L(X) X=$$TB("  Install Account:")_X D:$L(X) TL(X) Q
 | 
|---|
| 43 | MTBY ;   Maintained by
 | 
|---|
| 44 |  N X,Y S X=$$P,Y=$P(X,"^",2),X=$P(X,"^",1) S:$L(X) X=$$TB($S($D(GMTSINST):"  Installed by:",1:"  Maintained by:"))_X S:$L(X)&($L(Y)) X=X_"    "_Y D:$L(X) TL(X) Q
 | 
|---|
| 45 | BLD ;   Install Build
 | 
|---|
| 46 |  Q:$D(GMTSINST)&($L($G(GMTSBLD)))  N X S X=$G(GMTSBLD) Q:'$L(X)  S:$L(X) X=$$TB("  Build:")_X D:$L(X) TL(X) Q
 | 
|---|
| 47 |  ;                          
 | 
|---|
| 48 | FI ; Health Summary Files
 | 
|---|
| 49 |  Q:$D(GMTSHORT)
 | 
|---|
| 50 |  N X S X="",X=X_$J("",37-$L(X))_" Total",X=X_$J("",48-$L(X))_"Last" D TL(X)
 | 
|---|
| 51 |  S X="  File",X=X_$J("",37-$L(X))_"Entries",X=X_$J("",48-$L(X))_"Entry" D TL(X)
 | 
|---|
| 52 |  S X="",$P(X,"-",51)="-",X="  "_X D TL(X)
 | 
|---|
| 53 |  D F142,F1421,F14299,BL
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | F142 ;   Health Summary Type file 142
 | 
|---|
| 56 |  N X,GMTSA,GMTSAT,GMTSAP,GMTSL,GMTST,GMTSI S X="  Health Summary Type",(GMTSL,GMTST,GMTSI)=0
 | 
|---|
| 57 |  F  S GMTSI=$O(^GMT(142,GMTSI)) Q:+GMTSI=0  S GMTSL=GMTSI,GMTST=GMTST+1
 | 
|---|
| 58 |  S X=X_$J("",32-$L(X))_$J(GMTST,10),X=X_$J("",42-$L(X))_$J(GMTSL,10) D TL(X)
 | 
|---|
| 59 |  S GMTSA=$O(^GMT(142,"B","GMTS HS ADHOC OPTION",0))
 | 
|---|
| 60 |  S X="    Ad Hoc Health Summary Type",(GMTSL,GMTST,GMTSI)=0
 | 
|---|
| 61 |  I GMTSA=0 S X=X_$J("",37-$L(X))_"Missing Ad Hoc Health Summary Type" D TL(X) Q
 | 
|---|
| 62 |  F  S GMTSI=$O(^GMT(142,GMTSA,1,GMTSI)) Q:+GMTSI=0  S GMTSL=GMTSI,GMTST=GMTST+1
 | 
|---|
| 63 |  S X=X_$J("",32-$L(X))_$J(GMTST,10),X=X_$J("",42-$L(X))_$J(GMTSL,10) S:GMTSA'=12 X=X_$J("",57-$L(X))_"Invalid IEN" D TL(X)
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 | F1421 ;   Health Summary Component file 142.1
 | 
|---|
| 66 |  N X,GMTSA,GMTSAC,GMTSAT,GMTSAP,GMTSL,GMTST,GMTSE,GMTSI
 | 
|---|
| 67 |  S X="  Health Summary Component",(GMTSAT,GMTSAP,GMTSAC,GMTSL,GMTST,GMTSI,GMTSE)=0
 | 
|---|
| 68 |  F  S GMTSI=$O(^GMT(142.1,GMTSI)) Q:+GMTSI=0  D
 | 
|---|
| 69 |  . S GMTSL=GMTSI,GMTST=GMTST+1 S:GMTSI<501 GMTSE=GMTSE+1
 | 
|---|
| 70 |  . S GMTSA=$P($G(^GMT(142.1,GMTSI,0)),"^",6) S:GMTSA="T" GMTSAT=+($G(GMTSAT))+1 S:GMTSA="P" GMTSAP=+($G(GMTSAP))+1 S:GMTSA="" GMTSAC=+($G(GMTSAC))+1
 | 
|---|
| 71 |  S X=X_$J("",32-$L(X))_$J(GMTST,10),X=X_$J("",42-$L(X))_$J(GMTSL,10) D TL(X)
 | 
|---|
| 72 |  I +($G(GMTSE))>0 S X="    Exported",X=X_$J("",32-$L(X))_$J(GMTSE,10) D TL(X)
 | 
|---|
| 73 |  I +($G(GMTSAT))>0 S X="    Temporarily Disabled",X=X_$J("",32-$L(X))_$J(GMTSAT,10) D TL(X)
 | 
|---|
| 74 |  I +($G(GMTSAP))>0 S X="    Permanently Disabled",X=X_$J("",32-$L(X))_$J(GMTSAP,10) D TL(X)
 | 
|---|
| 75 |  I +($G(GMTSAC))>0&(+($G(GMTSAC))'=+($G(GMTST))) S X="    Active Components",X=X_$J("",32-$L(X))_$J(GMTSAC,10) D TL(X)
 | 
|---|
| 76 |  D STA^GMTSXPS3
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | F14299 ;   Health Summary Parameter file 142.9
 | 
|---|
| 79 |  N X,GMTSA,GMTSL,GMTST,GMTSI S X="  Health Summary Parameters",(GMTSL,GMTST,GMTSI)=0
 | 
|---|
| 80 |  F  S GMTSI=$O(^GMT(142.99,GMTSI)) Q:+GMTSI=0  S GMTSL=GMTSI,GMTST=GMTST+1
 | 
|---|
| 81 |  S X=X_$J("",32-$L(X))_$J(GMTST,10),X=X_$J("",42-$L(X))_$J(GMTSL,10) D TL(X)
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;                            
 | 
|---|
| 84 |  ; Retrieve Data
 | 
|---|
| 85 | U(X) ;   UCI where Health Summary is installed
 | 
|---|
| 86 |  N GMTSU,GMTSP,GMTST S GMTST=$G(X) X ^%ZOSF("UCI") S GMTSU=Y
 | 
|---|
| 87 |  S:Y=^%ZOSF("PROD") GMTSP=" (Production)" S:Y'=^%ZOSF("PROD") GMTSP=" (Test)" S:GMTSU["DEM" GMTSP=" (Demo)"
 | 
|---|
| 88 |  S X="",$P(X,"^",1)=GMTSU,$P(X,"^",2)=GMTSP Q X
 | 
|---|
| 89 | UCI(X) ;   UCI Format
 | 
|---|
| 90 |  S X=$G(X) N GMTSA,GMTST S GMTSA=$P(X,"^",1),GMTST=$P(X,"^",2) S:$L(GMTST) GMTST=$$MX($$TRIM($$PA(GMTST)))
 | 
|---|
| 91 |  S:$L($P(GMTSA,",",1))=3&($L($P(GMTSA,",",2))=3) GMTSA="["_GMTSA_"]" S:$L(GMTSA)&($L(GMTST)) GMTST="("_GMTST_")"
 | 
|---|
| 92 |  S X="" S:$L(GMTSA) X=GMTSA S:$L(X)&($L(GMTST)) X=X_"  "_GMTST S:'$L(X)&($L(GMTST)) X=GMTST
 | 
|---|
| 93 |  Q X
 | 
|---|
| 94 | P(X) ;   Person
 | 
|---|
| 95 |  S X=+($G(DUZ)) Q:'$L($P($G(^VA(200,+($G(X)),0)),"^",1)) "UNKNOWN^"
 | 
|---|
| 96 |  N GMTSDUZ,GMTSPH S GMTSDUZ=+($G(DUZ))
 | 
|---|
| 97 |  S GMTSPH=$P($G(^VA(200,GMTSDUZ,.13)),"^",2) S:GMTSPH="" GMTSPH=$P($G(^VA(200,GMTSDUZ,.13)),"^",1) S:GMTSPH="" GMTSPH=$P($G(^VA(200,GMTSDUZ,.13)),"^",3) S:GMTSPH="" GMTSPH=$P($G(^VA(200,GMTSDUZ,.13)),"^",4)
 | 
|---|
| 98 |  S GMTSDUZ=$P(^VA(200,GMTSDUZ,0),"^",1),X=GMTSDUZ_"^"_GMTSPH Q X
 | 
|---|
| 99 | INST(X) ;   Institution
 | 
|---|
| 100 |  S X=$G(^XMB("NETNAME")) I $L(X) S:X[".VA.GOV" X=$P(X,".VA.GOV",1) S:X["." X=$P(X,".",$L(X,".")) Q X
 | 
|---|
| 101 |  S X=$P($G(^XMB(1,1,"XUS")),"^",17) I +X>0 S X=$$GET1^DIQ(4,+X,.01,"E") Q:$L(X) X
 | 
|---|
| 102 |  S X="" Q X
 | 
|---|
| 103 |  ;                     
 | 
|---|
| 104 | OUTPUT ; Show global array (display or mail)
 | 
|---|
| 105 |  D:$D(GMTSMAIL) MAIL,CLR D:'$D(GMTSMAIL) DSP,CLR Q
 | 
|---|
| 106 | DISPLAY ;   Display global array
 | 
|---|
| 107 |  N GMTSI S GMTSI=0 F  S GMTSI=$O(^TMP($J,"GMTSINFO",GMTSI)) Q:+GMTSI=0  D
 | 
|---|
| 108 |  . W !,^TMP($J,"GMTSINFO",GMTSI)
 | 
|---|
| 109 |  Q
 | 
|---|
| 110 | MAIL ;   Mail global array in message
 | 
|---|
| 111 |  N DIFROM S U="^",XMSUB="Health Summary Info"
 | 
|---|
| 112 |  S:$D(GMTSINST)&($L($G(GMTSBLD))) XMSUB="Health Summary "_GMTSBLD_" Install"
 | 
|---|
| 113 |  S XMY("G.GMTS@ISC-SLC.VA.GOV")=""
 | 
|---|
| 114 |  S XMTEXT="^TMP($J,""GMTSINFO"",",XMDUZ=.5 D ^XMD
 | 
|---|
| 115 |  K ^TMP($J,"GMTSINFO"),%Z,XCNP,XMSCR,XMDUZ,XMY("G.GMTS@ISC-SLC.VA.GOV"),XMZ,XMSUB,XMY,XMTEXT,XMDUZ Q
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 |  ;                            
 | 
|---|
| 118 |  ; Temporary Global
 | 
|---|
| 119 | BL ;   Blank Line
 | 
|---|
| 120 |  N GMTSNX S GMTSNX=+($$NX),^TMP($J,"GMTSINFO",GMTSNX)="" Q
 | 
|---|
| 121 | TT(X) ;   Title Line
 | 
|---|
| 122 |  Q:'$L($G(X))  D TL(X) N GMTSBK S GMTSBK="===============================================================================",GMTSBK=$E(GMTSBK,1,$L($G(X))) D:$L(GMTSBK) TL(GMTSBK) Q
 | 
|---|
| 123 | TL(X) ;   Text Line
 | 
|---|
| 124 |  N GMTSNX S GMTSNX=+($$NX),^TMP($J,"GMTSINFO",GMTSNX)=$G(X) Q
 | 
|---|
| 125 | BK1 ;   Break Line
 | 
|---|
| 126 |  N GMTSNX S GMTSNX=+($$NX),^TMP($J,"GMTSINFO",GMTSNX)="-------------------------------------------------------------------------------" Q
 | 
|---|
| 127 | NX(X) ;   Next Line #
 | 
|---|
| 128 |  S (X,^TMP($J,"GMTSINFO",0))=+($G(^TMP($J,"GMTSINFO",0)))+1 Q X
 | 
|---|
| 129 | ST ;   Show ^TMP($J,"GMTSINFO")
 | 
|---|
| 130 |  N GMTSNN,GMTSNC S GMTSNN="^TMP("_$J_",""GMTSINFO"")",GMTSNC="^TMP("_$J_",""GMTSINFO"","
 | 
|---|
| 131 |  F  S GMTSNN=$Q(@GMTSNN) Q:GMTSNN=""!(GMTSNN'[GMTSNC)  W:GMTSNN'[",0)" !,@GMTSNN
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 |  ;                            
 | 
|---|
| 134 | DSP ; Display ^TMP($J,"GMTSINFO")
 | 
|---|
| 135 |  D DEV Q
 | 
|---|
| 136 | DEV ;   Select a device
 | 
|---|
| 137 |  N %,%ZIS,IOP,ZTRTN,ZTSAVE,ZTDESC,ZTDTH,ZTIO,ZTSK
 | 
|---|
| 138 |  S ZTRTN="DSPI^GMTSXPS1",ZTDESC="printing Health Summary install information"
 | 
|---|
| 139 |  S ZTIO=ION,ZTDTH=$H,%ZIS="PQ",ZTSAVE("^TMP($J,""GMTSINFO"",")=""
 | 
|---|
| 140 |  D ^%ZIS Q:POP  S ZTIO=ION I $D(IO("Q")) D QUE,^%ZISC Q
 | 
|---|
| 141 |  D NOQUE Q
 | 
|---|
| 142 | NOQUE ;   Do not que task
 | 
|---|
| 143 |  W @IOF W:IOST["P-" !,"< Not queued, printing Health Summary Info >",! H 2 U:IOST["P-" IO D @ZTRTN,^%ZISC Q
 | 
|---|
| 144 | QUE ;   Task queued to print user defaults
 | 
|---|
| 145 |  K IO("Q") D ^%ZTLOAD W !,$S($D(ZTSK):"Request Queued",1:"Request Cancelled"),! H 2 Q
 | 
|---|
| 146 |  Q
 | 
|---|
| 147 | DSPI ;   Display installation information
 | 
|---|
| 148 |  I '$D(ZTQUEUED),$G(IOST)'["P-" I '$D(^TMP($J,"GMTSINFO")) W !,"Health Summary Installation not found"
 | 
|---|
| 149 |  I IOST["P-" U IO
 | 
|---|
| 150 |  G:'$D(^TMP($J,"GMTSINFO")) DSPQ
 | 
|---|
| 151 |  N GMTSCONT,GMTSI,GMTSLC,GMTSEOP S GMTSCONT="",(GMTSLC,GMTSI)=0,GMTSEOP=+($G(IOSL)) S:GMTSEOP=0 GMTSEOP=24
 | 
|---|
| 152 |  F  S GMTSI=$O(^TMP($J,"GMTSINFO",GMTSI)) Q:+GMTSI=0!(GMTSCONT["^")  D
 | 
|---|
| 153 |  . W !,^TMP($J,"GMTSINFO",GMTSI) D LF Q:GMTSCONT["^"
 | 
|---|
| 154 |  S:$D(ZTQUEUED) ZTREQ="@"
 | 
|---|
| 155 |  W:$G(IOST)["P-" @IOF
 | 
|---|
| 156 | DSPQ ;   Quit Display
 | 
|---|
| 157 |  Q
 | 
|---|
| 158 | LF ;   Line Feed
 | 
|---|
| 159 |  S GMTSLC=GMTSLC+1 D:IOST["P-"&(GMTSLC>(GMTSEOP-7)) CONT D:IOST'["P-"&(GMTSLC>(GMTSEOP-4)) CONT
 | 
|---|
| 160 |  Q
 | 
|---|
| 161 | CONT ;   Page/Form Feed
 | 
|---|
| 162 |  S GMTSLC=0 W:IOST["P-" @IOF Q:IOST["P-"  W !!,"Press <Return> to continue  " R GMTSCONT:300 S:'$T GMTSCONT="^" S:GMTSCONT'["^" GMTSCONT=""
 | 
|---|
| 163 |  Q
 | 
|---|
| 164 |  ;                       
 | 
|---|
| 165 |  ; Miscellaneous
 | 
|---|
| 166 | TB(X) ;   Tab
 | 
|---|
| 167 |  S X=X F  Q:$L(X)>19  S X=X_" "
 | 
|---|
| 168 |  Q X
 | 
|---|
| 169 | PA(X) ;   Remove Parenthesis
 | 
|---|
| 170 |  Q $TR(X,"()","")
 | 
|---|
| 171 | LO(X) ;   Lowercase
 | 
|---|
| 172 |  Q $TR(X,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
 | 
|---|
| 173 | UP(X) ;   Uppercase
 | 
|---|
| 174 |  Q $TR(X,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 | 
|---|
| 175 | MX(X) ;   Mixed Case
 | 
|---|
| 176 |  Q $TR($E(X,1),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")_$TR($E(X,2,$L(X)),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
 | 
|---|
| 177 | TRIM(X) ;   Trim Space Characters
 | 
|---|
| 178 |  S X=$G(X) F  Q:$E(X,1)'=" "  S X=$E(X,2,$L(X))
 | 
|---|
| 179 |  F  Q:$E(X,$L(X))'=" "  S X=$E(X,1,($L(X)-1))
 | 
|---|
| 180 |  Q X
 | 
|---|
| 181 | CLR ;   Clean up
 | 
|---|
| 182 |  K ^TMP($J,"GMTSINFO") Q
 | 
|---|
| 183 | NOW(X) ;   Today's Date
 | 
|---|
| 184 |  S X=$$EDT($$NOW^XLFDT) Q X
 | 
|---|
| 185 | EDT(X) ;   External Date Foramt
 | 
|---|
| 186 |  S X=+($G(X)) Q:X=0 "" S X=$$FMTE^XLFDT(+X,"5Z") S:X["@" X=$P(X,"@",1)_"  "_$P(X,"@",2) Q X
 | 
|---|
| 187 | ROK(X) ;   Routine OK (in UCI) (NDBI)
 | 
|---|
| 188 |  S X=$G(X) Q:'$L(X) 0 Q:$L(X)>8 0 X ^%ZOSF("TEST") Q:$T 1 Q 0
 | 
|---|
| 189 | ENV(X) ;   Environment check
 | 
|---|
| 190 |  D HOME^%ZIS I '$D(^VA(200,+($G(DUZ)),0)) W !!,"    User (DUZ) not defined",! Q 0
 | 
|---|
| 191 |  Q 1
 | 
|---|
| 192 | ENV2(X) ;   Environment check
 | 
|---|
| 193 |  D HOME^%ZIS I '$D(^VA(200,+($G(DUZ)),0)) Q 0
 | 
|---|
| 194 |  Q 1
 | 
|---|