GMTSLRS7 ; SLC/JER,KER - Sel Cum Lab Comp w/Sel Items ; 01/06/2003
 ;;2.7;Health Summary;**28,47,58**;Oct 20, 1995
 ;
 ; External References
 ;    DBIA    67  ^LAB(60
 ;    DBIA   525  ^LR( all fields
 ;    DBIA 10035  ^DPT( field 63 Read w/Fileman
 ;    DBIA  2056  $$GET1^DIQ (file 2)
 ;                        
MAIN ; Selected Cumulative Lab w/Selection Items
 N GMTSI,GMW,HDR,LRDFN,MAX,TEST,RWIDTH,GMCMNT,COMMNBR,GMCOM,TAB
 S LRDFN=+($$GET1^DIQ(2,(+($G(DFN))_","),63,"I")) Q:+LRDFN=0  Q:'$D(^LR(LRDFN))
 S MAX=$S(+($G(GMTSNDM))>0:+($G(GMTSNDM)),1:999) Q:'$O(GMTSEG(GMTSEGN,60,0))
 S RWIDTH=4,GMTSI=0 F  S GMTSI=$O(GMTSEG(GMTSEGN,60,GMTSI)) Q:GMTSI'>0  D  Q:$D(GMTSQIT)
 . S TEST=GMTSEG(GMTSEGN,60,GMTSI) D ^GMTSLRSE
 Q:'$D(^TMP("LRS",$J))  S GMCMNT=$S($P($G(^GMT(142.99,1,0)),U,3)="Y":1,1:0),COMMNBR=0
 D DISPLAY I GMCMNT,'$D(GMTSQIT) D WRTCOMM
 K ^TMP("LRS",$J),^TMP("LRSR",$J)
 Q
DISPLAY ; Displays up to 7 tests across page
 N HDR,TST,GMI,GMX,GMW,IT,IX D INVRT S IT=""
 F GMI=0:1:6 S IT=$O(^TMP("LRS",$J,IT)) Q:'IT  D  Q:$D(GMTSQIT)
 . S IX="" F  S IX=$O(^(IT,IX)) Q:IX'>0  D  Q:$D(GMTSQIT)
 . . S TST=+$P(^(IX),U,3)
 . . S HDR(GMI)=$S(TST'="":$E($P($G(^LAB(60,TST,.1)),U),1,7),1:"")
 . . K ^TMP("LRS",$J,IT)
 Q:$D(GMTSQIT)  D WRTHDR S IX=""
 F GMW=1:1:MAX S IX=$O(^TMP("LRSR",$J,IX)) Q:+IX'>0  D  Q:$D(GMTSQIT)
 . D CKP^GMTSUP Q:$D(GMTSQIT)  D:GMTSNPG WRTHDR
 . S IT="" F GMI=0:1:6 S IT=$O(^TMP("LRSR",$J,IX,IT)) Q:IT=""  D  Q:$D(GMTSQIT)
 . . D WRT I '$O(^TMP("LRSR",$J,IX,IT)) W !
 Q:$D(GMTSQIT)
 I '$D(GMTSOBJ),(+$G(GMW)=+$G(MAX)),(+IX>0),$O(^TMP("LRSR",$J,IX)) D  Q:$D(GMTSQIT)
 . D CKP^GMTSUP Q:$D(GMTSQIT)
 . W $C(7),!?10,"** Additional Results available outside occurrence limit **",!
 Q
WRTHDR ; Writes Column Header
 N GMI D CKP^GMTSUP Q:$D(GMTSQIT)  W "Collection DT"
 W ?19,$S(+$G(GMCMNT):" ",1:""),"Spec"
 F GMI=0:1:6 D  Q:$D(GMTSQIT)
 . D CKP^GMTSUP Q:'$D(HDR(GMI))!($D(GMTSQIT))
 . W ?(((8*GMI+25)+(7-$L(HDR(GMI))\2))),$E(HDR(GMI),1,7)
 Q:$D(GMTSQIT)  D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 I '$D(GMTSOBJ) D CKP^GMTSUP Q:$D(GMTSQIT)  W !
 Q
WRT ; Writes the Lab Record
 S GMX=^TMP("LRSR",$J,IX,IT),TAB=$P(GMX,U)
 I GMI=0!(GMTSNPG) D
 . I +$G(GMCMNT),$D(^TMP("LRS",$J,"C",IX))>0,$D(GMCOM("DT",IX))'>0,COMMNBR<26 D
 . . S GMLTR=$C(97+COMMNBR) S COMMNBR=COMMNBR+1
 . . S GMCOM("DT",IX)=GMLTR,GMCOM("LTR",GMLTR)=IX
 . I +$G(GMCMNT) W $E($G(GMCOM("DT",IX)),1),?2,$P(GMX,U,2),?19,$E($P($P(GMX,U,3),";",2),1,5) Q
 . W $P(GMX,U,2),?19,$E($P($P(GMX,U,3),";",2),1,5)
 W ?(8*TAB+25),$P(GMX,U,4)," ",$P(GMX,U,5)
 Q
WRTCOMM ; Writes the lab Comments
 N GMLTR,GMLINE
 Q:$D(GMCOM)'>0
 D CKP^GMTSUP Q:$D(GMTSQIT)  W "COMMENTS:",!
 S GMLTR=""
 F  S GMLTR=$O(GMCOM("LTR",GMLTR)) Q:GMLTR']""  D  Q:$D(GMTSQIT)
 . S IX=$G(GMCOM("LTR",GMLTR)),GMLINE=0
 . F  S GMLINE=$O(^TMP("LRS",$J,"C",+IX,GMLINE)) Q:GMLINE'>0  D  Q:$D(GMTSQIT)
 . . D CKP^GMTSUP Q:$D(GMTSQIT)  I GMTSNPG W "COMMENTS:",!
 . . W:GMLINE=1!GMTSNPG GMLTR_"."
 . . W ?3,$G(^TMP("LRS",$J,"C",+IX,GMLINE)),!
 Q
 ;                   
INVRT ; Inverts Global Array
 ;                     
 ; From: ^TMP("LRS",$J,IT,IX)=CDT^SPC^TNM^RSLT^FLAG^UNIT^LO^HI
 ; To:   ^TMP("LRSR",$J,IX,IT)=GMI,CDT,SPC,RSLT,FLAG
 ;
 N GMI,GMW,IT,IX S IT=""
 F GMI=0:1:6 S IT=$O(^TMP("LRS",$J,IT)) Q:IT'>0  S IX="" F  S IX=$O(^TMP("LRS",$J,IT,IX)) Q:IX=""  S ^TMP("LRSR",$J,IX,IT)=GMI_U_$P(^TMP("LRS",$J,IT,IX),U,1,2)_U_$P(^TMP("LRS",$J,IT,IX),U,4,5)
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMTSLRS7   3459     printed  Sep 23, 2025@19:34:01                                                                                                                                                                                                    Page 2
GMTSLRS7  ; SLC/JER,KER - Sel Cum Lab Comp w/Sel Items ; 01/06/2003
 +1       ;;2.7;Health Summary;**28,47,58**;Oct 20, 1995
 +2       ;
 +3       ; External References
 +4       ;    DBIA    67  ^LAB(60
 +5       ;    DBIA   525  ^LR( all fields
 +6       ;    DBIA 10035  ^DPT( field 63 Read w/Fileman
 +7       ;    DBIA  2056  $$GET1^DIQ (file 2)
 +8       ;                        
MAIN      ; Selected Cumulative Lab w/Selection Items
 +1        NEW GMTSI,GMW,HDR,LRDFN,MAX,TEST,RWIDTH,GMCMNT,COMMNBR,GMCOM,TAB
 +2        SET LRDFN=+($$GET1^DIQ(2,(+($GET(DFN))_","),63,"I"))
           if +LRDFN=0
               QUIT 
           if '$DATA(^LR(LRDFN))
               QUIT 
 +3        SET MAX=$SELECT(+($GET(GMTSNDM))>0:+($GET(GMTSNDM)),1:999)
           if '$ORDER(GMTSEG(GMTSEGN,60,0))
               QUIT 
 +4        SET RWIDTH=4
           SET GMTSI=0
           FOR 
               SET GMTSI=$ORDER(GMTSEG(GMTSEGN,60,GMTSI))
               if GMTSI'>0
                   QUIT 
               Begin DoDot:1
 +5                SET TEST=GMTSEG(GMTSEGN,60,GMTSI)
                   DO ^GMTSLRSE
               End DoDot:1
               if $DATA(GMTSQIT)
                   QUIT 
 +6        if '$DATA(^TMP("LRS",$JOB))
               QUIT 
           SET GMCMNT=$SELECT($PIECE($GET(^GMT(142.99,1,0)),U,3)="Y":1,1:0)
           SET COMMNBR=0
 +7        DO DISPLAY
           IF GMCMNT
               IF '$DATA(GMTSQIT)
                   DO WRTCOMM
 +8        KILL ^TMP("LRS",$JOB),^TMP("LRSR",$JOB)
 +9        QUIT 
DISPLAY   ; Displays up to 7 tests across page
 +1        NEW HDR,TST,GMI,GMX,GMW,IT,IX
           DO INVRT
           SET IT=""
 +2        FOR GMI=0:1:6
               SET IT=$ORDER(^TMP("LRS",$JOB,IT))
               if 'IT
                   QUIT 
               Begin DoDot:1
 +3                SET IX=""
                   FOR 
                       SET IX=$ORDER(^(IT,IX))
                       if IX'>0
                           QUIT 
                       Begin DoDot:2
 +4                        SET TST=+$PIECE(^(IX),U,3)
 +5                        SET HDR(GMI)=$SELECT(TST'="":$EXTRACT($PIECE($GET(^LAB(60,TST,.1)),U),1,7),1:"")
 +6                        KILL ^TMP("LRS",$JOB,IT)
                       End DoDot:2
                       if $DATA(GMTSQIT)
                           QUIT 
               End DoDot:1
               if $DATA(GMTSQIT)
                   QUIT 
 +7        if $DATA(GMTSQIT)
               QUIT 
           DO WRTHDR
           SET IX=""
 +8        FOR GMW=1:1:MAX
               SET IX=$ORDER(^TMP("LRSR",$JOB,IX))
               if +IX'>0
                   QUIT 
               Begin DoDot:1
 +9                DO CKP^GMTSUP
                   if $DATA(GMTSQIT)
                       QUIT 
                   if GMTSNPG
                       DO WRTHDR
 +10               SET IT=""
                   FOR GMI=0:1:6
                       SET IT=$ORDER(^TMP("LRSR",$JOB,IX,IT))
                       if IT=""
                           QUIT 
                       Begin DoDot:2
 +11                       DO WRT
                           IF '$ORDER(^TMP("LRSR",$JOB,IX,IT))
                               WRITE !
                       End DoDot:2
                       if $DATA(GMTSQIT)
                           QUIT 
               End DoDot:1
               if $DATA(GMTSQIT)
                   QUIT 
 +12       if $DATA(GMTSQIT)
               QUIT 
 +13       IF '$DATA(GMTSOBJ)
               IF (+$GET(GMW)=+$GET(MAX))
                   IF (+IX>0)
                       IF $ORDER(^TMP("LRSR",$JOB,IX))
                           Begin DoDot:1
 +14                           DO CKP^GMTSUP
                               if $DATA(GMTSQIT)
                                   QUIT 
 +15                           WRITE $CHAR(7),!?10,"** Additional Results available outside occurrence limit **",!
                           End DoDot:1
                           if $DATA(GMTSQIT)
                               QUIT 
 +16       QUIT 
WRTHDR    ; Writes Column Header
 +1        NEW GMI
           DO CKP^GMTSUP
           if $DATA(GMTSQIT)
               QUIT 
           WRITE "Collection DT"
 +2        WRITE ?19,$SELECT(+$GET(GMCMNT):" ",1:""),"Spec"
 +3        FOR GMI=0:1:6
               Begin DoDot:1
 +4                DO CKP^GMTSUP
                   if '$DATA(HDR(GMI))!($DATA(GMTSQIT))
                       QUIT 
 +5                WRITE ?(((8*GMI+25)+(7-$LENGTH(HDR(GMI))\2))),$EXTRACT(HDR(GMI),1,7)
               End DoDot:1
               if $DATA(GMTSQIT)
                   QUIT 
 +6        if $DATA(GMTSQIT)
               QUIT 
           DO CKP^GMTSUP
           if $DATA(GMTSQIT)
               QUIT 
           WRITE !
 +7        IF '$DATA(GMTSOBJ)
               DO CKP^GMTSUP
               if $DATA(GMTSQIT)
                   QUIT 
               WRITE !
 +8        QUIT 
WRT       ; Writes the Lab Record
 +1        SET GMX=^TMP("LRSR",$JOB,IX,IT)
           SET TAB=$PIECE(GMX,U)
 +2        IF GMI=0!(GMTSNPG)
               Begin DoDot:1
 +3                IF +$GET(GMCMNT)
                       IF $DATA(^TMP("LRS",$JOB,"C",IX))>0
                           IF $DATA(GMCOM("DT",IX))'>0
                               IF COMMNBR<26
                                   Begin DoDot:2
 +4                                    SET GMLTR=$CHAR(97+COMMNBR)
                                       SET COMMNBR=COMMNBR+1
 +5                                    SET GMCOM("DT",IX)=GMLTR
                                       SET GMCOM("LTR",GMLTR)=IX
                                   End DoDot:2
 +6                IF +$GET(GMCMNT)
                       WRITE $EXTRACT($GET(GMCOM("DT",IX)),1),?2,$PIECE(GMX,U,2),?19,$EXTRACT($PIECE($PIECE(GMX,U,3),";",2),1,5)
                       QUIT 
 +7                WRITE $PIECE(GMX,U,2),?19,$EXTRACT($PIECE($PIECE(GMX,U,3),";",2),1,5)
               End DoDot:1
 +8        WRITE ?(8*TAB+25),$PIECE(GMX,U,4)," ",$PIECE(GMX,U,5)
 +9        QUIT 
WRTCOMM   ; Writes the lab Comments
 +1        NEW GMLTR,GMLINE
 +2        if $DATA(GMCOM)'>0
               QUIT 
 +3        DO CKP^GMTSUP
           if $DATA(GMTSQIT)
               QUIT 
           WRITE "COMMENTS:",!
 +4        SET GMLTR=""
 +5        FOR 
               SET GMLTR=$ORDER(GMCOM("LTR",GMLTR))
               if GMLTR']""
                   QUIT 
               Begin DoDot:1
 +6                SET IX=$GET(GMCOM("LTR",GMLTR))
                   SET GMLINE=0
 +7                FOR 
                       SET GMLINE=$ORDER(^TMP("LRS",$JOB,"C",+IX,GMLINE))
                       if GMLINE'>0
                           QUIT 
                       Begin DoDot:2
 +8                        DO CKP^GMTSUP
                           if $DATA(GMTSQIT)
                               QUIT 
                           IF GMTSNPG
                               WRITE "COMMENTS:",!
 +9                        if GMLINE=1!GMTSNPG
                               WRITE GMLTR_"."
 +10                       WRITE ?3,$GET(^TMP("LRS",$JOB,"C",+IX,GMLINE)),!
                       End DoDot:2
                       if $DATA(GMTSQIT)
                           QUIT 
               End DoDot:1
               if $DATA(GMTSQIT)
                   QUIT 
 +11       QUIT 
 +12      ;                   
INVRT     ; Inverts Global Array
 +1       ;                     
 +2       ; From: ^TMP("LRS",$J,IT,IX)=CDT^SPC^TNM^RSLT^FLAG^UNIT^LO^HI
 +3       ; To:   ^TMP("LRSR",$J,IX,IT)=GMI,CDT,SPC,RSLT,FLAG
 +4       ;
 +5        NEW GMI,GMW,IT,IX
           SET IT=""
 +6        FOR GMI=0:1:6
               SET IT=$ORDER(^TMP("LRS",$JOB,IT))
               if IT'>0
                   QUIT 
               SET IX=""
               FOR 
                   SET IX=$ORDER(^TMP("LRS",$JOB,IT,IX))
                   if IX=""
                       QUIT 
                   SET ^TMP("LRSR",$JOB,IX,IT)=GMI_U_$PIECE(^TMP("LRS",$JOB,IT,IX),U,1,2)_U_$PIECE(^TMP("LRS",$JOB,IT,IX),U,4,5)
 +7        QUIT