GMTSXPS2 ; SLC/KER - Health Summary Status     ; 08/27/2002
 ;;2.7;Health Summary;**35,56**;Oct 20, 1995
 ;
 ; External References
 ;   DBIA 10048  ^DIC(9.4,
 ;   DBIA 10006  IX^DIC
 ;   DBIA  2056  $$GET1^DIQ (file 9.4)
 ;                     
 Q
INS ; Get Installations
 N GMTS0,GMTSDT,GMTSEQ,GMTSI,GMTSIENS,GMTSIN,GMTSN,GMTSNM,GMTSP
 N GMTSPAT,GMTSPD,GMTSPDE,GMTSPI,GMTSST,GMTSTDT,GMTSTN,GMTSTNM
 N GMTSV,GMTSVD,GMTSVDE,GMTSVDS,GMTSVI,GMTSNX,X,DIC,X,Y,DTOUT
 N DUOUT,DLAYGO,DINUM S GMTSI=$$PKGI Q:+GMTSI=0  S GMTSV=2.7
 S GMTSVI=$$VERI(GMTSI,GMTSV) Q:GMTSVI=0
 S GMTSIENS=GMTSVI_","_GMTSI_","
 S GMTSVDE=$$GET1^DIQ(9.49,GMTSIENS,2,"I")
 S GMTSVDS=$$GET1^DIQ(9.49,GMTSIENS,1,"I")
 S GMTSVD="" S:+GMTSVDE>0 GMTSVD=+GMTSVDE
 S:+GMTSVD=0&(+GMTSVDS>0) GMTSVD=+GMTSVDS S:+GMTSVD>0&(+GMTSVDE>+GMTSVD) GMTSVD=+GMTSVDE Q:+GMTSVD=0
 S GMTSVDE=$$EDT^GMTSXPS1($P(GMTSVD,".",1)) K GMTSVDS S GMTSIN(1,1)="Health Summary "_GMTSV_"^"_GMTSVDE
 S GMTSPI=0 F  S GMTSPI=$O(^DIC(9.4,GMTSI,22,GMTSVI,"PAH",GMTSPI)) Q:+GMTSPI=0  D
 . S GMTSIENS=GMTSPI_","_GMTSVI_","_GMTSI_","
 . S GMTSP=$$GET1^DIQ(9.4901,GMTSIENS,.01) Q:'$L(GMTSP)  Q:+GMTSP=0
 . S GMTSPD=$$GET1^DIQ(9.4901,GMTSIENS,.02,"I") Q:+GMTSPD=0
 . S GMTSEQ="Test" S:GMTSP["SEQ #" GMTSEQ=+($P(GMTSP,"SEQ #",2)) S:+($G(GMTSEQ))=0 GMTSEQ="Test"
 . S GMTSPAT=+GMTSP,GMTSPDE=$$EDT^GMTSXPS1(GMTSPD) Q:'$L(GMTSPDE)
 . S GMTSIN(2,GMTSPAT,GMTSEQ)="GMTS*"_GMTSV_"*"_GMTSP_"^"_GMTSPDE
 . S:$L(GMTSEQ)&(+GMTSEQ>0) GMTSIN(2,"SEQ",GMTSEQ,GMTSPAT)="GMTS*"_GMTSV_"*"_GMTSP_"^"_GMTSPDE
 . S:$L(GMTSEQ)&(GMTSEQ["Test") GMTSIN(2,"SEQT",GMTSEQ,GMTSPAT)="GMTS*"_GMTSV_"*"_GMTSP_"^"_GMTSPDE
 ;   Package
 S GMTSN=GMTSIN(1,1),GMTSNM=$P(GMTSN,"^",1),GMTSDT=$P(GMTSN,"^",2),GMTSST="" D HD,SI
 ;   Patches Installed in Sequence
 S GMTSEQ=0 F  S GMTSEQ=$O(GMTSIN(2,"SEQ",GMTSEQ)) Q:+GMTSEQ=0  D
 . S GMTSP=0 F  S GMTSP=$O(GMTSIN(2,"SEQ",GMTSEQ,GMTSP)) Q:+GMTSP=0  D
 . . S GMTSN=$G(GMTSIN(2,GMTSP,GMTSEQ)) Q:'$L(GMTSN)
 . . S GMTSNM=$P(GMTSN,"^",1) Q:'$L(GMTSNM)
 . . S GMTSDT=$P(GMTSN,"^",2) Q:'$L(GMTSDT)
 . . S GMTSST=""
 . . I $D(GMTSIN(2,"SEQT","Test",GMTSP)) D
 . . . N GMTSTN,GMTSTNM,GMTSTDT S GMTSTN=$G(GMTSIN(2,GMTSP,"Test")) I '$L(GMTSTN) K GMTSIN(2,"SEQT","Test",GMTSP) Q
 . . . S GMTSTNM=$P(GMTSTN,"^",1) I '$L(GMTSTNM) K GMTSIN(2,"SEQT","Test",GMTSP) Q
 . . . S GMTSTDT=$P(GMTSTN,"^",2) I '$L(GMTSTDT) K GMTSIN(2,"SEQT","Test",GMTSP) Q
 . . . N GMTSNM,GMTSDT,GMTSST S GMTSNM=GMTSTNM,GMTSDT=GMTSTDT,GMTSST="Test"
 . . . D SI K GMTSIN(2,"SEQT","Test",GMTSP)
 . . D SI
 ;   Other Patches Installed (test patches)
 I $D(GMTSIN(2,"SEQT")) D
 . N GMTSP,GMTSTN,GMTSTNM,GMTSTDT
 . S GMTSP=0 F  S GMTSP=$O(GMTSIN(2,"SEQT","Test",GMTSP)) Q:+GMTSP=0  D
 . . S GMTSTN=$G(GMTSIN(2,GMTSP,"Test")) I '$L(GMTSTN) K GMTSIN(2,"SEQT","Test",GMTSP) Q
 . . S GMTSTNM=$P(GMTSTN,"^",1) I '$L(GMTSTNM) K GMTSIN(2,"SEQT","Test",GMTSP) Q
 . . S GMTSTDT=$P(GMTSTN,"^",2) I '$L(GMTSTDT) K GMTSIN(2,"SEQT","Test",GMTSP) Q
 . . S GMTSNM=GMTSTNM,GMTSDT=GMTSTDT,GMTSST="Test"
 . . D SI K GMTSIN(2,"SEQT","Test",GMTSP)
 D BL^GMTSXPS1
 Q
PKGI(X) ; Package
 N D,Y,DIC,DTOUT,DUOUT S DIC(0)="I",D="C"
 S X="GMTS",DIC="^DIC(9.4,"
 D IX^DIC S X=0 S:+Y>0 X=+Y Q X
VERI(X,Y) ; Version
 N DA,D,DIC,DTOUT,DUOUT S DIC(0)="I",D="B" S DA(1)=+($G(X))
 Q:DA(1)=0 0 S X=+($G(Y)) Q:X=0 0 S DIC="^DIC(9.4,"_DA(1)_",22,"
 D IX^DIC S X=0 S:+Y>0 X=+Y Q X
 ; Report
HD ;   Header
 N X S X="  Install Name",X=X_$J("",28-$L(X))_"Date" D TL^GMTSXPS1(X) S X="" S $P(X,"-",42)="-",X="  "_X D TL^GMTSXPS1(X)
 Q
SI ;   Site Installs
 S GMTSNM=$G(GMTSNM) Q:'$L(GMTSNM)  S GMTSDT=$G(GMTSDT) Q:'$L(GMTSDT)  S GMTSST=$G(GMTSST)
 N X S X="  "_GMTSNM,X=X_$J("",28-$L(X))_GMTSDT S:$L(GMTSST) X=X_$J("",40-$L(X))_GMTSST D TL^GMTSXPS1(X)
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMTSXPS2   3769     printed  Sep 23, 2025@19:37:07                                                                                                                                                                                                    Page 2
GMTSXPS2  ; SLC/KER - Health Summary Status     ; 08/27/2002
 +1       ;;2.7;Health Summary;**35,56**;Oct 20, 1995
 +2       ;
 +3       ; External References
 +4       ;   DBIA 10048  ^DIC(9.4,
 +5       ;   DBIA 10006  IX^DIC
 +6       ;   DBIA  2056  $$GET1^DIQ (file 9.4)
 +7       ;                     
 +8        QUIT 
INS       ; Get Installations
 +1        NEW GMTS0,GMTSDT,GMTSEQ,GMTSI,GMTSIENS,GMTSIN,GMTSN,GMTSNM,GMTSP
 +2        NEW GMTSPAT,GMTSPD,GMTSPDE,GMTSPI,GMTSST,GMTSTDT,GMTSTN,GMTSTNM
 +3        NEW GMTSV,GMTSVD,GMTSVDE,GMTSVDS,GMTSVI,GMTSNX,X,DIC,X,Y,DTOUT
 +4        NEW DUOUT,DLAYGO,DINUM
           SET GMTSI=$$PKGI
           if +GMTSI=0
               QUIT 
           SET GMTSV=2.7
 +5        SET GMTSVI=$$VERI(GMTSI,GMTSV)
           if GMTSVI=0
               QUIT 
 +6        SET GMTSIENS=GMTSVI_","_GMTSI_","
 +7        SET GMTSVDE=$$GET1^DIQ(9.49,GMTSIENS,2,"I")
 +8        SET GMTSVDS=$$GET1^DIQ(9.49,GMTSIENS,1,"I")
 +9        SET GMTSVD=""
           if +GMTSVDE>0
               SET GMTSVD=+GMTSVDE
 +10       if +GMTSVD=0&(+GMTSVDS>0)
               SET GMTSVD=+GMTSVDS
           if +GMTSVD>0&(+GMTSVDE>+GMTSVD)
               SET GMTSVD=+GMTSVDE
           if +GMTSVD=0
               QUIT 
 +11       SET GMTSVDE=$$EDT^GMTSXPS1($PIECE(GMTSVD,".",1))
           KILL GMTSVDS
           SET GMTSIN(1,1)="Health Summary "_GMTSV_"^"_GMTSVDE
 +12       SET GMTSPI=0
           FOR 
               SET GMTSPI=$ORDER(^DIC(9.4,GMTSI,22,GMTSVI,"PAH",GMTSPI))
               if +GMTSPI=0
                   QUIT 
               Begin DoDot:1
 +13               SET GMTSIENS=GMTSPI_","_GMTSVI_","_GMTSI_","
 +14               SET GMTSP=$$GET1^DIQ(9.4901,GMTSIENS,.01)
                   if '$LENGTH(GMTSP)
                       QUIT 
                   if +GMTSP=0
                       QUIT 
 +15               SET GMTSPD=$$GET1^DIQ(9.4901,GMTSIENS,.02,"I")
                   if +GMTSPD=0
                       QUIT 
 +16               SET GMTSEQ="Test"
                   if GMTSP["SEQ #"
                       SET GMTSEQ=+($PIECE(GMTSP,"SEQ #",2))
                   if +($GET(GMTSEQ))=0
                       SET GMTSEQ="Test"
 +17               SET GMTSPAT=+GMTSP
                   SET GMTSPDE=$$EDT^GMTSXPS1(GMTSPD)
                   if '$LENGTH(GMTSPDE)
                       QUIT 
 +18               SET GMTSIN(2,GMTSPAT,GMTSEQ)="GMTS*"_GMTSV_"*"_GMTSP_"^"_GMTSPDE
 +19               if $LENGTH(GMTSEQ)&(+GMTSEQ>0)
                       SET GMTSIN(2,"SEQ",GMTSEQ,GMTSPAT)="GMTS*"_GMTSV_"*"_GMTSP_"^"_GMTSPDE
 +20               if $LENGTH(GMTSEQ)&(GMTSEQ["Test")
                       SET GMTSIN(2,"SEQT",GMTSEQ,GMTSPAT)="GMTS*"_GMTSV_"*"_GMTSP_"^"_GMTSPDE
               End DoDot:1
 +21      ;   Package
 +22       SET GMTSN=GMTSIN(1,1)
           SET GMTSNM=$PIECE(GMTSN,"^",1)
           SET GMTSDT=$PIECE(GMTSN,"^",2)
           SET GMTSST=""
           DO HD
           DO SI
 +23      ;   Patches Installed in Sequence
 +24       SET GMTSEQ=0
           FOR 
               SET GMTSEQ=$ORDER(GMTSIN(2,"SEQ",GMTSEQ))
               if +GMTSEQ=0
                   QUIT 
               Begin DoDot:1
 +25               SET GMTSP=0
                   FOR 
                       SET GMTSP=$ORDER(GMTSIN(2,"SEQ",GMTSEQ,GMTSP))
                       if +GMTSP=0
                           QUIT 
                       Begin DoDot:2
 +26                       SET GMTSN=$GET(GMTSIN(2,GMTSP,GMTSEQ))
                           if '$LENGTH(GMTSN)
                               QUIT 
 +27                       SET GMTSNM=$PIECE(GMTSN,"^",1)
                           if '$LENGTH(GMTSNM)
                               QUIT 
 +28                       SET GMTSDT=$PIECE(GMTSN,"^",2)
                           if '$LENGTH(GMTSDT)
                               QUIT 
 +29                       SET GMTSST=""
 +30                       IF $DATA(GMTSIN(2,"SEQT","Test",GMTSP))
                               Begin DoDot:3
 +31                               NEW GMTSTN,GMTSTNM,GMTSTDT
                                   SET GMTSTN=$GET(GMTSIN(2,GMTSP,"Test"))
                                   IF '$LENGTH(GMTSTN)
                                       KILL GMTSIN(2,"SEQT","Test",GMTSP)
                                       QUIT 
 +32                               SET GMTSTNM=$PIECE(GMTSTN,"^",1)
                                   IF '$LENGTH(GMTSTNM)
                                       KILL GMTSIN(2,"SEQT","Test",GMTSP)
                                       QUIT 
 +33                               SET GMTSTDT=$PIECE(GMTSTN,"^",2)
                                   IF '$LENGTH(GMTSTDT)
                                       KILL GMTSIN(2,"SEQT","Test",GMTSP)
                                       QUIT 
 +34                               NEW GMTSNM,GMTSDT,GMTSST
                                   SET GMTSNM=GMTSTNM
                                   SET GMTSDT=GMTSTDT
                                   SET GMTSST="Test"
 +35                               DO SI
                                   KILL GMTSIN(2,"SEQT","Test",GMTSP)
                               End DoDot:3
 +36                       DO SI
                       End DoDot:2
               End DoDot:1
 +37      ;   Other Patches Installed (test patches)
 +38       IF $DATA(GMTSIN(2,"SEQT"))
               Begin DoDot:1
 +39               NEW GMTSP,GMTSTN,GMTSTNM,GMTSTDT
 +40               SET GMTSP=0
                   FOR 
                       SET GMTSP=$ORDER(GMTSIN(2,"SEQT","Test",GMTSP))
                       if +GMTSP=0
                           QUIT 
                       Begin DoDot:2
 +41                       SET GMTSTN=$GET(GMTSIN(2,GMTSP,"Test"))
                           IF '$LENGTH(GMTSTN)
                               KILL GMTSIN(2,"SEQT","Test",GMTSP)
                               QUIT 
 +42                       SET GMTSTNM=$PIECE(GMTSTN,"^",1)
                           IF '$LENGTH(GMTSTNM)
                               KILL GMTSIN(2,"SEQT","Test",GMTSP)
                               QUIT 
 +43                       SET GMTSTDT=$PIECE(GMTSTN,"^",2)
                           IF '$LENGTH(GMTSTDT)
                               KILL GMTSIN(2,"SEQT","Test",GMTSP)
                               QUIT 
 +44                       SET GMTSNM=GMTSTNM
                           SET GMTSDT=GMTSTDT
                           SET GMTSST="Test"
 +45                       DO SI
                           KILL GMTSIN(2,"SEQT","Test",GMTSP)
                       End DoDot:2
               End DoDot:1
 +46       DO BL^GMTSXPS1
 +47       QUIT 
PKGI(X)   ; Package
 +1        NEW D,Y,DIC,DTOUT,DUOUT
           SET DIC(0)="I"
           SET D="C"
 +2        SET X="GMTS"
           SET DIC="^DIC(9.4,"
 +3        DO IX^DIC
           SET X=0
           if +Y>0
               SET X=+Y
           QUIT X
VERI(X,Y) ; Version
 +1        NEW DA,D,DIC,DTOUT,DUOUT
           SET DIC(0)="I"
           SET D="B"
           SET DA(1)=+($GET(X))
 +2        if DA(1)=0
               QUIT 0
           SET X=+($GET(Y))
           if X=0
               QUIT 0
           SET DIC="^DIC(9.4,"_DA(1)_",22,"
 +3        DO IX^DIC
           SET X=0
           if +Y>0
               SET X=+Y
           QUIT X
 +4       ; Report
HD        ;   Header
 +1        NEW X
           SET X="  Install Name"
           SET X=X_$JUSTIFY("",28-$LENGTH(X))_"Date"
           DO TL^GMTSXPS1(X)
           SET X=""
           SET $PIECE(X,"-",42)="-"
           SET X="  "_X
           DO TL^GMTSXPS1(X)
 +2        QUIT 
SI        ;   Site Installs
 +1        SET GMTSNM=$GET(GMTSNM)
           if '$LENGTH(GMTSNM)
               QUIT 
           SET GMTSDT=$GET(GMTSDT)
           if '$LENGTH(GMTSDT)
               QUIT 
           SET GMTSST=$GET(GMTSST)
 +2        NEW X
           SET X="  "_GMTSNM
           SET X=X_$JUSTIFY("",28-$LENGTH(X))_GMTSDT
           if $LENGTH(GMTSST)
               SET X=X_$JUSTIFY("",40-$LENGTH(X))_GMTSST
           DO TL^GMTSXPS1(X)
 +3        QUIT