LRGEN1 ;SLC/RWF-GENERAL DATA DISPLAY ;2/19/91  10:35
 ;;5.2;LAB SERVICE;**201,221,438,471**;Sep 27, 1994;Build 1
DQ ;dequeued from LRGEN
 N LRPDT,LRPTF,LRPAGE
 S LRPDT=$$FMTE^XLFDT($$NOW^XLFDT,"5MZ")
 S LRPRTF="Report Range  [ "_$$FMTE^XLFDT($P(LRSDT,"."),"5MZ")_" - "_$$FMTE^XLFDT(9999999-$P(LREDT,"."),"5MZ")_" ]"
 K LRNOTE,LRSV S (LRPAGE,LRNOTE,LREND)=0,LRIOM=80
 S:'$G(LRIDT) LRIDT=1 W:$E(IOST,1,2)="C-" @IOF
 S $P(LRDASH,"-",(LRIOM-1))="",$P(LREQUAL,"=",(LRIOM-1))=""
 S LRWPL=IOSL-(3*LRIX)/LRIX
 S:$D(ZTQUEUED) ZTREQ="@" U IO
 S LRCW=LRCW-3,LRDPF=$P(^LR(LRDFN,0),U,2),DFN=$P(^(0),U,3)
 S LREDT=$$AEDT(LRDFN,LRSUB,LRIDT,LREDT,LRTP)
 D DT^LRX,PT^LRX,HEAD
 F  D NX Q:LREND!(LRIDT<1)!(LRIDT>LREDT)
 D WRTLN
 K LRDASH,LREQUAL,LRAGE,LRRB,LRTREAT,LRUNKNOW,SEX,AGE,LRLAST,LRIOM
 D KVAR^VADPT
 Q
WRTLN W ! W:$E(IOST,1,2)="P-" @IOF D ^%ZISC Q
AEDT(LRD,LRS,LRI,LRE,LRT) ;return Actual End DaTe
    ;(DFN,SUB{e.g.: "CH"},entered start date,entered end date,type)
    N LREA,LRX,LRZ,LRN,LRR S (LREA,LRX)=LRI
    F  S LRX=$O(^LR(LRD,LRS,LRX)) Q:LRX<1!(LRX>LRE)  D
    . S LRZ=$S($D(^LR(LRD,LRS,LRX,0)):^(0),1:"") Q:'$P(LRZ,U,3)  I LRT,LRT'=$P(LRZ,U,5) Q
    . S LRN=1,LRR=0 F  S LRR=+$O(LRND(LRR)) Q:LRR<1  S:$D(^LR(LRD,LRS,LRX,LRND(LRR))) LRN=0
    . Q:LRN  S LREA=LRX
    Q LREA  ;return last qualifying LRIDT
NX I LRY'<LRWPL D BOT:LRSC=LRIX,HEAD:'LREND Q:LREND  I LRSC>1,LRSUB(LRSC)=LRSUB(LRSC-1) D NSET Q
 I LRIDT>1,$S(+$O(^LR(LRDFN,LRSUB,LRIDT))<1:1,+$O(^(LRIDT))>LREDT:1,1:0),LRSC<LRIX S LRY=LRWPL Q
 S:LRIDT>1 LRIDT=+$O(^LR(LRDFN,LRSUB,LRIDT)) I LRIDT<1!(LRIDT>LREDT) D  Q
 . I LRSC>1,LRSUB(LRSC)=LRSUB(LRSC-1) D NSET
 . S LRY=LRWPL D BOT,LAST
 S Z=$S($D(^LR(LRDFN,LRSUB,LRIDT,0)):^(0),1:"") Q:'$P(Z,U,3)  I LRTP,LRTP'=$P(Z,U,5) Q
 S LRNOP=1,II=0 F  S II=+$O(LRND(II)) Q:II<1  S:$D(^LR(LRDFN,LRSUB,LRIDT,LRND(II))) LRNOP=0
 Q:LRNOP  I $D(LRSUB(LRSC+1)),LRSUB(LRSC+1)=LRSUB(LRSC) S LRSV(LRY)=LRIDT
 D LRPR
 Q
NSET S LRSSP=0 F  S LRSSP=+$O(LRSV(LRSSP)) Q:LRSSP<1  S LRIDT=LRSV(LRSSP),Z=^LR(LRDFN,LRSUB,LRIDT,0) D LRPR
 S LRIDT=LRIDT(LRSC-1),LRY=LRWPL
 Q
LRPR N LRSAMP
 S X=+Z,LRTN=$P(Z,U,5),LRSAMP="?" S:LRTN'="" LRSAMP=$S($D(^LAB(61,LRTN,0)):$E(^(0),1,3),1:"?")
 S LRDAT=$$FMTE^XLFDT(X,"5MZ")
 S T="      "
 S:X["." T=" "_$E(X_"00000",9,10)_":"_$E(X_"0000",11,12)_" "
 S LRFOOT=" "
 I $O(^LR(LRDFN,LRSUB,LRIDT,1,0))>0 D
 . S:'$D(LRNOTE(-1,LRIDT)) LRNOTE=$G(LRNOTE)+1,LRNOTE(LRNOTE)=LRIDT,LRNOTE(-1,LRIDT)=LRNOTE S LRFOOT=$C(LRNOTE(-1,LRIDT)+64)
 W !,LRFOOT," ",LRDAT S LRY=LRY+1
 W !,?13,LRSAMP,?20 S X=$D(^LR(LRDFN,LRSUB,LRIDT,0)),LRX=$X,LRY=LRY+1
 F I=S1:1:S2 D
 . S X=$S($D(^LR(LRDFN,LRSUB,LRIDT,LRND(I))):^(LRND(I)),1:""),LRFFLG=$P(X,U,2),X=$P(X,U)
 . W ?LRX,@$S(X'=""&$D(LRPR(I)):LRPR(I),1:"$J(X,LRCW)")," ",LRFFLG
 . S LRX=LRX+3+LRCW
 Q
HEAD Q:'$G(LRIDT)!($G(LREND))  I '$D(LRIOM) S LRIOM=80
 S:'$G(LRY) LRY=2 S:'$D(LRPRTF) $P(LRPRTF," ",20)=""
 S $P(LRDASH,"-",(LRIOM-1))="",$P(LREQUAL,"=",(LRIOM-1))=""
 S LREND=0 I '$G(LRBOT) F  Q:LREND  D HD1 Q:'(LRIDT<1!(LRIDT>LREDT))  S LREND=1 F II=1:1:LRIX I LRIDT(II)>0,LRIDT(II)<LREDT S LREND=0 Q
 Q:$G(LREND)
 S:'$D(LRPDT) LRPDT=$$FMTE^XLFDT($$NOW^XLFDT,"5MZ")
 I $G(LRSC)=1 D
 . S LRPAGE=$G(LRPAGE)+1,LRY=2 W @IOF
 . W !,"WORK COPY: ",PNM,"  ",SSN,"  Age:",AGE," ",?50,"Prt Date:",LRPDT
 . W !,$$CJ^XLFSTR(LRPRTF_"     Pg:"_LRPAGE,LRIOM) S LRY=LRY+1
 S X=9999999-$O(^LR(LRDFN,"CH",LRIDT)) W !! W:'$L($G(LRHDR(LRSC,1))) ?13,"SPEC" W ?20,LRHDR(LRSC) S LRY=LRY+2
 I $L(LRHDR(LRSC,2)) W !,$S($D(LRTHER):" Ther.",1:"  Ref")," Range",?17,LRHDR(LRSC,2) S LRY=LRY+1
 I $L(LRHDR(LRSC,1)) W !,?13,"SPEC",?20,LRHDR(LRSC,1) S LRY=LRY+1
 W !,LREQUAL S LRY=LRY+1
 Q
HD1 Q:$G(LREND)
 S LRIDT(LRSC)=LRIDT,LRSC=$S(LRSC<LRIX:LRSC+1,1:1),LRIDT=$G(LRIDT(LRSC)) Q:'LRIDT  S S1=LRIX(LRSC)+1,S2=LRIX(LRSC+1)
 I LRSC=1 K LRNOTE,LRSV S LRNOTE=0
 I LRSUB'=LRSUB(LRSC) S LRSUB=LRSUB(LRSC) K LRSV
 Q
LAST Q:$G(LRLAST)  W !,$$CJ^XLFSTR("[  *** End Of Report ***  ]",LRIOM),!
 S LREND=1,LRLAST=1 D B2
 Q
BOT ;D KEYCOM^LRX:$E(IOST,1,2)'="C-"
 I $E(IOST,1,2)'="C-" D
 . W !,LREQUAL
 . W !!,"  ------------------------------  COMMENTS  ------------------------------"
 . W !,"  Key:  'L' = reference Low,  'H' = reference Hi, '*' = critical range"
 N II
 W !,LRDASH
 I $G(LRNOTE) F II=1:1:LRNOTE  S LRIDT1=LRNOTE(II) D
 . ;I LRY'<LRWPL D B1 Q:$G(LREND)  S LRBOT=1 D HEAD K LRBOT
 . W !,$C(II+64) S J=0 F  S J=$O(^LR(LRDFN,LRSUB,LRIDT1,1,J)) Q:J<1  D
 . . W ?5,^(J,0) W:$O(^LR(LRDFN,LRSUB,LRIDT1,1,J)) !
 K LRNOTE S LRNOTE=0
 S LREND=$S(+$O(^LR(LRDFN,LRSUB,LRIDT))<1:1,+$O(^(LRIDT))>LREDT:1,1:0) I LREND D LAST Q
B1 W !,"WORK COPY - DO NOT FILE   ",PNM,?60,SSN S LRY=2
 I $E(IOST,1,2)="C-" W !?20," PRESS '^' TO STOP REPORT " R X:DTIME S:X="" X=1 S LREND=".^"[X Q:$G(LREND)
 Q
B2 ;Return to menu
 I $E(IOST,1,2)="C-" W !?20," PRESS 'Enter' TO RETURN TO THE MENU " R X:DTIME
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRGEN1   4891     printed  Sep 23, 2025@19:50:33                                                                                                                                                                                                      Page 2
LRGEN1    ;SLC/RWF-GENERAL DATA DISPLAY ;2/19/91  10:35
 +1       ;;5.2;LAB SERVICE;**201,221,438,471**;Sep 27, 1994;Build 1
DQ        ;dequeued from LRGEN
 +1        NEW LRPDT,LRPTF,LRPAGE
 +2        SET LRPDT=$$FMTE^XLFDT($$NOW^XLFDT,"5MZ")
 +3        SET LRPRTF="Report Range  [ "_$$FMTE^XLFDT($PIECE(LRSDT,"."),"5MZ")_" - "_$$FMTE^XLFDT(9999999-$PIECE(LREDT,"."),"5MZ")_" ]"
 +4        KILL LRNOTE,LRSV
           SET (LRPAGE,LRNOTE,LREND)=0
           SET LRIOM=80
 +5        if '$GET(LRIDT)
               SET LRIDT=1
           if $EXTRACT(IOST,1,2)="C-"
               WRITE @IOF
 +6        SET $PIECE(LRDASH,"-",(LRIOM-1))=""
           SET $PIECE(LREQUAL,"=",(LRIOM-1))=""
 +7        SET LRWPL=IOSL-(3*LRIX)/LRIX
 +8        if $DATA(ZTQUEUED)
               SET ZTREQ="@"
           USE IO
 +9        SET LRCW=LRCW-3
           SET LRDPF=$PIECE(^LR(LRDFN,0),U,2)
           SET DFN=$PIECE(^(0),U,3)
 +10       SET LREDT=$$AEDT(LRDFN,LRSUB,LRIDT,LREDT,LRTP)
 +11       DO DT^LRX
           DO PT^LRX
           DO HEAD
 +12       FOR 
               DO NX
               if LREND!(LRIDT<1)!(LRIDT>LREDT)
                   QUIT 
 +13       DO WRTLN
 +14       KILL LRDASH,LREQUAL,LRAGE,LRRB,LRTREAT,LRUNKNOW,SEX,AGE,LRLAST,LRIOM
 +15       DO KVAR^VADPT
 +16       QUIT 
WRTLN      WRITE !
           if $EXTRACT(IOST,1,2)="P-"
               WRITE @IOF
           DO ^%ZISC
           QUIT 
AEDT(LRD,LRS,LRI,LRE,LRT) ;return Actual End DaTe
 +1       ;(DFN,SUB{e.g.: "CH"},entered start date,entered end date,type)
 +2        NEW LREA,LRX,LRZ,LRN,LRR
           SET (LREA,LRX)=LRI
 +3        FOR 
               SET LRX=$ORDER(^LR(LRD,LRS,LRX))
               if LRX<1!(LRX>LRE)
                   QUIT 
               Begin DoDot:1
 +4                SET LRZ=$SELECT($DATA(^LR(LRD,LRS,LRX,0)):^(0),1:"")
                   if '$PIECE(LRZ,U,3)
                       QUIT 
                   IF LRT
                       IF LRT'=$PIECE(LRZ,U,5)
                           QUIT 
 +5                SET LRN=1
                   SET LRR=0
                   FOR 
                       SET LRR=+$ORDER(LRND(LRR))
                       if LRR<1
                           QUIT 
                       if $DATA(^LR(LRD,LRS,LRX,LRND(LRR)))
                           SET LRN=0
 +6                if LRN
                       QUIT 
                   SET LREA=LRX
               End DoDot:1
 +7       ;return last qualifying LRIDT
           QUIT LREA
NX         IF LRY'<LRWPL
               if LRSC=LRIX
                   DO BOT
               if 'LREND
                   DO HEAD
               if LREND
                   QUIT 
               IF LRSC>1
                   IF LRSUB(LRSC)=LRSUB(LRSC-1)
                       DO NSET
                       QUIT 
 +1        IF LRIDT>1
               IF $SELECT(+$ORDER(^LR(LRDFN,LRSUB,LRIDT))<1:1,+$ORDER(^(LRIDT))>LREDT:1,1:0)
                   IF LRSC<LRIX
                       SET LRY=LRWPL
                       QUIT 
 +2        if LRIDT>1
               SET LRIDT=+$ORDER(^LR(LRDFN,LRSUB,LRIDT))
           IF LRIDT<1!(LRIDT>LREDT)
               Begin DoDot:1
 +3                IF LRSC>1
                       IF LRSUB(LRSC)=LRSUB(LRSC-1)
                           DO NSET
 +4                SET LRY=LRWPL
                   DO BOT
                   DO LAST
               End DoDot:1
               QUIT 
 +5        SET Z=$SELECT($DATA(^LR(LRDFN,LRSUB,LRIDT,0)):^(0),1:"")
           if '$PIECE(Z,U,3)
               QUIT 
           IF LRTP
               IF LRTP'=$PIECE(Z,U,5)
                   QUIT 
 +6        SET LRNOP=1
           SET II=0
           FOR 
               SET II=+$ORDER(LRND(II))
               if II<1
                   QUIT 
               if $DATA(^LR(LRDFN,LRSUB,LRIDT,LRND(II)))
                   SET LRNOP=0
 +7        if LRNOP
               QUIT 
           IF $DATA(LRSUB(LRSC+1))
               IF LRSUB(LRSC+1)=LRSUB(LRSC)
                   SET LRSV(LRY)=LRIDT
 +8        DO LRPR
 +9        QUIT 
NSET       SET LRSSP=0
           FOR 
               SET LRSSP=+$ORDER(LRSV(LRSSP))
               if LRSSP<1
                   QUIT 
               SET LRIDT=LRSV(LRSSP)
               SET Z=^LR(LRDFN,LRSUB,LRIDT,0)
               DO LRPR
 +1        SET LRIDT=LRIDT(LRSC-1)
           SET LRY=LRWPL
 +2        QUIT 
LRPR       NEW LRSAMP
 +1        SET X=+Z
           SET LRTN=$PIECE(Z,U,5)
           SET LRSAMP="?"
           if LRTN'=""
               SET LRSAMP=$SELECT($DATA(^LAB(61,LRTN,0)):$EXTRACT(^(0),1,3),1:"?")
 +2        SET LRDAT=$$FMTE^XLFDT(X,"5MZ")
 +3        SET T="      "
 +4        if X["."
               SET T=" "_$EXTRACT(X_"00000",9,10)_":"_$EXTRACT(X_"0000",11,12)_" "
 +5        SET LRFOOT=" "
 +6        IF $ORDER(^LR(LRDFN,LRSUB,LRIDT,1,0))>0
               Begin DoDot:1
 +7                if '$DATA(LRNOTE(-1,LRIDT))
                       SET LRNOTE=$GET(LRNOTE)+1
                       SET LRNOTE(LRNOTE)=LRIDT
                       SET LRNOTE(-1,LRIDT)=LRNOTE
                   SET LRFOOT=$CHAR(LRNOTE(-1,LRIDT)+64)
               End DoDot:1
 +8        WRITE !,LRFOOT," ",LRDAT
           SET LRY=LRY+1
 +9        WRITE !,?13,LRSAMP,?20
           SET X=$DATA(^LR(LRDFN,LRSUB,LRIDT,0))
           SET LRX=$X
           SET LRY=LRY+1
 +10       FOR I=S1:1:S2
               Begin DoDot:1
 +11               SET X=$SELECT($DATA(^LR(LRDFN,LRSUB,LRIDT,LRND(I))):^(LRND(I)),1:"")
                   SET LRFFLG=$PIECE(X,U,2)
                   SET X=$PIECE(X,U)
 +12               WRITE ?LRX,@$SELECT(X'=""&$DATA(LRPR(I)):LRPR(I),1:"$J(X,LRCW)")," ",LRFFLG
 +13               SET LRX=LRX+3+LRCW
               End DoDot:1
 +14       QUIT 
HEAD       if '$GET(LRIDT)!($GET(LREND))
               QUIT 
           IF '$DATA(LRIOM)
               SET LRIOM=80
 +1        if '$GET(LRY)
               SET LRY=2
           if '$DATA(LRPRTF)
               SET $PIECE(LRPRTF," ",20)=""
 +2        SET $PIECE(LRDASH,"-",(LRIOM-1))=""
           SET $PIECE(LREQUAL,"=",(LRIOM-1))=""
 +3        SET LREND=0
           IF '$GET(LRBOT)
               FOR 
                   if LREND
                       QUIT 
                   DO HD1
                   if '(LRIDT<1!(LRIDT>LREDT))
                       QUIT 
                   SET LREND=1
                   FOR II=1:1:LRIX
                       IF LRIDT(II)>0
                           IF LRIDT(II)<LREDT
                               SET LREND=0
                               QUIT 
 +4        if $GET(LREND)
               QUIT 
 +5        if '$DATA(LRPDT)
               SET LRPDT=$$FMTE^XLFDT($$NOW^XLFDT,"5MZ")
 +6        IF $GET(LRSC)=1
               Begin DoDot:1
 +7                SET LRPAGE=$GET(LRPAGE)+1
                   SET LRY=2
                   WRITE @IOF
 +8                WRITE !,"WORK COPY: ",PNM,"  ",SSN,"  Age:",AGE," ",?50,"Prt Date:",LRPDT
 +9                WRITE !,$$CJ^XLFSTR(LRPRTF_"     Pg:"_LRPAGE,LRIOM)
                   SET LRY=LRY+1
               End DoDot:1
 +10       SET X=9999999-$ORDER(^LR(LRDFN,"CH",LRIDT))
           WRITE !!
           if '$LENGTH($GET(LRHDR(LRSC,1)))
               WRITE ?13,"SPEC"
           WRITE ?20,LRHDR(LRSC)
           SET LRY=LRY+2
 +11       IF $LENGTH(LRHDR(LRSC,2))
               WRITE !,$SELECT($DATA(LRTHER):" Ther.",1:"  Ref")," Range",?17,LRHDR(LRSC,2)
               SET LRY=LRY+1
 +12       IF $LENGTH(LRHDR(LRSC,1))
               WRITE !,?13,"SPEC",?20,LRHDR(LRSC,1)
               SET LRY=LRY+1
 +13       WRITE !,LREQUAL
           SET LRY=LRY+1
 +14       QUIT 
HD1        if $GET(LREND)
               QUIT 
 +1        SET LRIDT(LRSC)=LRIDT
           SET LRSC=$SELECT(LRSC<LRIX:LRSC+1,1:1)
           SET LRIDT=$GET(LRIDT(LRSC))
           if 'LRIDT
               QUIT 
           SET S1=LRIX(LRSC)+1
           SET S2=LRIX(LRSC+1)
 +2        IF LRSC=1
               KILL LRNOTE,LRSV
               SET LRNOTE=0
 +3        IF LRSUB'=LRSUB(LRSC)
               SET LRSUB=LRSUB(LRSC)
               KILL LRSV
 +4        QUIT 
LAST       if $GET(LRLAST)
               QUIT 
           WRITE !,$$CJ^XLFSTR("[  *** End Of Report ***  ]",LRIOM),!
 +1        SET LREND=1
           SET LRLAST=1
           DO B2
 +2        QUIT 
BOT       ;D KEYCOM^LRX:$E(IOST,1,2)'="C-"
 +1        IF $EXTRACT(IOST,1,2)'="C-"
               Begin DoDot:1
 +2                WRITE !,LREQUAL
 +3                WRITE !!,"  ------------------------------  COMMENTS  ------------------------------"
 +4                WRITE !,"  Key:  'L' = reference Low,  'H' = reference Hi, '*' = critical range"
               End DoDot:1
 +5        NEW II
 +6        WRITE !,LRDASH
 +7        IF $GET(LRNOTE)
               FOR II=1:1:LRNOTE
                   SET LRIDT1=LRNOTE(II)
                   Begin DoDot:1
 +8       ;I LRY'<LRWPL D B1 Q:$G(LREND)  S LRBOT=1 D HEAD K LRBOT
 +9                    WRITE !,$CHAR(II+64)
                       SET J=0
                       FOR 
                           SET J=$ORDER(^LR(LRDFN,LRSUB,LRIDT1,1,J))
                           if J<1
                               QUIT 
                           Begin DoDot:2
 +10                           WRITE ?5,^(J,0)
                               if $ORDER(^LR(LRDFN,LRSUB,LRIDT1,1,J))
                                   WRITE !
                           End DoDot:2
                   End DoDot:1
 +11       KILL LRNOTE
           SET LRNOTE=0
 +12       SET LREND=$SELECT(+$ORDER(^LR(LRDFN,LRSUB,LRIDT))<1:1,+$ORDER(^(LRIDT))>LREDT:1,1:0)
           IF LREND
               DO LAST
               QUIT 
B1         WRITE !,"WORK COPY - DO NOT FILE   ",PNM,?60,SSN
           SET LRY=2
 +1        IF $EXTRACT(IOST,1,2)="C-"
               WRITE !?20," PRESS '^' TO STOP REPORT "
               READ X:DTIME
               if X=""
                   SET X=1
               SET LREND=".^"[X
               if $GET(LREND)
                   QUIT 
 +2        QUIT 
B2        ;Return to menu
 +1        IF $EXTRACT(IOST,1,2)="C-"
               WRITE !?20," PRESS 'Enter' TO RETURN TO THE MENU "
               READ X:DTIME
 +2        QUIT