LRRP1 ;DALOI/STAFF - PRINT THE DATA FOR INTERIM REPORTS ;11/18/11  16:33
 ;;5.2;LAB SERVICE;**153,221,283,286,356,372,350**;Sep 27, 1994;Build 230
 ;
 ; from LRRP, LRRP2, LRRP3, LRMIPSU
 ;
PRINT ;
 S:$G(SEX)="" SEX="M" S:$G(DOB)="" DOB="UNKNOWN"
 S LRAAO=0 F  S LRAAO=$O(^TMP("LR",$J,"TP",LRAAO)) Q:LRAAO<1  D ORDER Q:LRSTOP
 K ^TMP("LR",$J,"TP")
 Q
 ;
 ;
ORDER ;
 N LRCAN
 S LRCDT=0
 F  S LRCDT=$O(^TMP("LR",$J,"TP",LRAAO,LRCDT)) Q:LRCDT<1  D
 . S LRCAN=0
 . I LRSS="CH" D
 . . S LRIDT=+^TMP("LR",$J,"TP",LRAAO,LRCDT,-2)
 . . F  S LRCAN=+$O(^LR(LRDFN,"CH",LRIDT,1,LRCAN)) Q:LRCAN<1  Q:$E($G(^(LRCAN,0)))="*"
 . D TEST Q:LRSTOP
 Q
 ;
 ;
TEST ;
 N LRRELDT,LRX
 S LRIDT=+^TMP("LR",$J,"TP",LRAAO,LRCDT,-2)
 S LRSS=$P(^TMP("LR",$J,"TP",LRAAO),U,2)
 S LR0=$S($D(^(LRAAO,LRCDT))#2:^(LRCDT),1:""),LRTC=$P(LR0,U,12)
 I LRSS="MI" D  Q
 . S LRH=1 D:LRFOOT FOOT Q:LRSTOP
 . D EN1^LRMIPC
 . S LRHF=1,LRFOOT=0
 . K A,Z,LRH
 . S:LREND LREND=0,LRSTOP=1
 ;
 ; Protect against results for AP subscripts being processed from file #69 orders.
 I LRSS'="CH" Q
 ;
 Q:'$G(LRCAN)&('$P(LR0,U,3))  D @$S(LRHF:"HDR",1:"CHECK") Q:LRSTOP
 S LRSPEC=+$P(LR0,U,5),X=$P(LR0,U,10) D DOC^LRX
 ;
 ; Display reporting lab
 I $$GET^XPAR("DIV^PKG","LR REPORTS FACILITY PRINT",1,"Q")#2 D
 . S LRX=+$G(^LR(LRDFN,LRSS,LRIDT,"RF"))
 . I LRX D RL(LRX)
 ;
 I LRDOC?1"REF:"1.AN D
 . S LRX=$$REFDOC^LRRP1(LRDFN,LRSS,LRIDT)
 . I LRX'="" S LRDOC=LRX
 W !!,?7,"Provider: ",LRDOC
 W !,?7,"Specimen: ",$P($G(^LAB(61,LRSPEC,0),"<no specimen on file>"),U)
 D ORU
 S LRRELDT=$P(^TMP("LR",$J,"TP",LRAAO,LRCDT),U,3)
 W !,"Report Released: ",$$FMTE^XLFDT(LRRELDT,"M")
 W !!,?30,"Specimen Collection Date: ",$$FMTE^XLFDT(LRCDT,"M")
 W !?5,"Test name",?30,"Result    units",?51,"Ref.   range",?66,"Site Code"
 S LRPO=0
 F  S LRPO=$O(^TMP("LR",$J,"TP",LRAAO,LRCDT,LRPO)) Q:LRPO'>0  S LRDATA=^(LRPO) D DATA Q:LRSTOP
 Q:LRSTOP
 ;
 I $D(^TMP("LR",$J,"TP",LRAAO,LRCDT,"C")) D
 . W !,"Comment: " S LRCMNT=0
 . F  S LRCMNT=+$O(^TMP("LR",$J,"TP",LRAAO,LRCDT,"C",LRCMNT)) Q:LRCMNT<1  D  Q:LRSTOP
 . . W ^TMP("LR",$J,"TP",LRAAO,LRCDT,"C",LRCMNT)
 . . D CONT Q:LRSTOP
 . . W:$O(^TMP("LR",$J,"TP",LRAAO,LRCDT,"C",LRCMNT)) !?9
 Q:LRSTOP  D EQUALS^LRX
 W !?7,"KEY: ""L""=Abnormal low, ""H""=Abnormal high, ""*""=Critical value"
 S LRFOOT=1
 Q
 ;
 ;
DATA ;
 N LR63DATA,LRREFS,LRX
 ;
 S LRTSTS=+LRDATA,LRPC=$P(LRDATA,U,5),LRSUB=$P(LRDATA,U,6)
 S X=$P(LRDATA,U,7) Q:X=""
 S LR63DATA=$$TSTRES^LRRPU(LRDFN,LRSS,LRIDT,$P(LRDATA,U,10),LRTSTS)
 S LRLO=$P(LR63DATA,"^",3),LRHI=$P(LR63DATA,"^",4),LRREFS=$$EN^LRLRRVF(LRLO,LRHI),LRPLS=$P(LR63DATA,"^",6),LRTHER=$P(LR63DATA,"^",7)
 I LRPLS S LRPLS(LRPLS)=LRPLS
 ;
 ; Find reference lab filler order number
 S LREPR=LRDFN_","_LRSS_","_LRIDT_","_$P(LRDATA,"^",10)
 S LRX=$O(^LR(LRDFN,"EPR","AD",LREPR,4,""))
 I LRX S LREPR(4,LREPR,LRX)=""
 ;
 ;W !?5,$S($L($P(LRDATA,U,2))>20:$P(LRDATA,U,3),1:$P(LRDATA,U,2))
 ; Insure something is printed as test name - either print name or #.01 field
 I $L($P(LRDATA,U,2))>25,$P(LRDATA,U,3)'="" W !,$P(LRDATA,U,3)
 E  W !,$E($P(LRDATA,U,2),1,25)
 S X=$P(LR63DATA,"^")
 W ?27,@$S(LRPC="":"$J(X,LRCW)",1:LRPC)," ",$P(LR63DATA,"^",2)
 I $X>39 W !
 W ?40,$P(LR63DATA,U,5)
 I $X>50 W !
 W ?51,LRREFS
 ;
 I LRPLS'="" D
 . I $X>67 W !
 . W ?68,"[",LRPLS,"]"
 D CONT Q:LRSTOP
 ;
 I $O(^TMP("LR",$J,"TP",LRAAO,LRCDT,LRPO,0))>0 D  Q:LRSTOP
 . S LRINTP=0
 . F  S LRINTP=+$O(^TMP("LR",$J,"TP",LRAAO,LRCDT,LRPO,LRINTP)) Q:LRINTP<1  W !?7,"Eval: ",^(LRINTP) D CONT Q:LRSTOP
 ;
 Q
 ;
 ;
CHECK I LRTC+11>(IOSL-$Y) D FOOT Q:LRSTOP  D HDR
 Q
 ;
 ;
CONT I $Y+5>IOSL D FOOT Q:LRSTOP  D HDR W !?20,">> CONTINUATION OF ",$P(LR0,U,6)," <<",!
 Q
 ;
 ;
 ;
 N I
 Q:LRSTOP
 F I=$Y:1:IOSL-4 W !
 ;
 I $E(IOST,1,2)'="C-" D  Q
 . W !,PNM,?40,"  ",SSN,"  ",$$HTE^XLFDT($H,"1M"),!
 ;
 W !,PNM,?25,"  ",SSN,"  ",$$HTE^XLFDT($H,"1M"),?59," PRESS '^' TO STOP "
 R X:DTIME S:X="" X=1 S:(".^"[X)!('$T) LRSTOP=1
 Q
 ;
 ;
HDR ; Add Printed at, page #, change age to dob 7/2002 cka
 W:($G(LRJ02))!($G(LRJ0))!($E(IOST,1,2)="C-") @IOF
 S LRHF=0,LRJ02=1,LRPG=$G(LRPG)+1
 I $E(IOST,1)="P" W !!,$$CJ^XLFSTR("CLINICAL LABORATORY REPORT",IOM),!
 ;
 I $$GET^XPAR("DIV^PKG","LR REPORTS FACILITY PRINT",1,"Q")>1 D PFAC(DUZ(2),LRPG)
 ;
 W !!,PNM,?44,"Report date: ",$$HTE^XLFDT($H,"M")
 W !?1,"Pat ID: ",SSN,"    SEX: ",SEX,"    DOB: ",$$FMTE^XLFDT(DOB),"    LOC: ",LROC
 Q
 ;
 ;
ORU ; Display remote ordering info if available
 ; Handle calls that don't pass parameters.
 D ORUA("",LRDFN,LRSS,LRIDT,0)
 Q
 ;
 ;
ORUA(LRARRAY,LRDFN,LRSS,LRIDT,LRFLAG) ; Display remote ordering info if available
 ; Call with LRARRAY = array with name/address info
 ;             LRDFN = file #63 ien
 ;              LRSS = file #63 subscript
 ;             LRIDT = file #63 internal data/time of specimen
 ;            LRFLAG = 0 (print facility info)
 ;                     1 (return facility info in LRARRAY)
 ;
 N A,IENS,LRFILE,LRX,LRY
 ;
 S LRFLAG=$G(LRFLAG,0)
 S LRFILE=$S(LRSS="CH":63.04,LRSS="MI":63.05,LRSS="SP":63.08,LRSS="CY":63.09,LRSS="EM":63.02,LRSS="BB":63.01,1:0)
 S LRX(0)=$G(^LR(LRDFN,LRSS,LRIDT,0))
 S LRX("ORU")=$G(^LR(LRDFN,LRSS,LRIDT,"ORU")),IENS=LRIDT_","_LRDFN_","
 ;
 S LRY="Accession [UID]: "_$P(LRX(0),"^",6)_" ["_$P(LRX("ORU"),"^")_"]"
 I LRSS="MI",$P(LRX(0),"^",10) S LRY=$$LJ^XLFSTR(LRY,43," ")_" Received: "_$$FMTE^XLFDT($P(LRX(0),"^",10),"M")
 I LRFLAG S A(1)=LRY
 E  D EN^DDIOL(LRY,"","!")
 ;
 I $P(LRX("ORU"),"^",3) D
 . S LRY=$$LJ^XLFSTR("Ordering Site: "_$$GET1^DIQ(LRFILE,IENS,.33,""),43," ")_" Ordering Site UID: "_$P(LRX("ORU"),"^",5)
 . I LRFLAG S A(2)=LRY
 . E  D EN^DDIOL(LRY,"","!?2")
 ;
 I $P(LRX("ORU"),"^",2) D
 . S LRY="Collecting Site: "_$$GET1^DIQ(LRFILE,IENS,.32,"")
 . I LRFLAG=1 S A(3)=LRY
 . E  D EN^DDIOL(LRY,"","!")
 ;
 I LRFLAG M LRARRAY=A
 ;
 Q
 ;
 ;
PFAC(LR4,LRPG,LRFLAG,LRARRAY) ; Display name/address of printing facility
 ; Call with LR4 = File #4 IEN
 ;          LRPG = current page number to print
 ;        LRFLAG = 0 (print facility info)
 ;                 1 (return facility info in LRARRAY)
 ;       LRARRAY = array with name/address info
 ;
 N A,CLIA,LRX,X
 S LRX=$$NAME^XUAF4(LR4),CLIA=$$ID^XUAF4("CLIA",LR4),LRFLAG=$G(LRFLAG,0)
 S A(1)="Printed at:"
 I $G(LRPG) S A(1)=$$LJ^XLFSTR(A(1),$G(IOM,80)-15)_"page "_LRPG
 S A(2)=LRX
 I CLIA'="" D
 . S X="[CLIA# "_CLIA_"]"
 . I $L(A(2))+$L(X)+1>$G(IOM,80) S A(2.5)=X
 . E  S A(2)=A(2)_" "_X
 S LRX=$$PADD^XUAF4(LR4),LRX(1)=$$WHAT^XUAF4(LR4,1.02)
 S A(3)=$P(LRX,U)_" "_$S(LRX(1)'="":LRX(1)_" ",1:"")_$P(LRX,U,2)_$S($P(LRX,U,3)'="":", ",1:"")_$P(LRX,U,3)_" "_$P(LRX,U,4)
 I 'LRFLAG D
 . S A(4)=" "
 . S A(1,"F")="?2",A(2,"F")="!?2",A(3,"F")="!?2",A(4,"F")="!"
 . I $D(A(2.5)) S A(2.5,"F")="!?2"
 . D EN^DDIOL(.A)
 I LRFLAG M LRARRAY=A
 ;
 Q
 ;
 ;
RL(LR4,LRFLAG,OUT) ; Display name/address of reporting laboratory
 ; Call with LR4: File #4 IEN
 ;        LRFLAG: <opt> 1=save to OUT array
 ;           OUT: <byref><opt>
 ;
 N A,CLIA,LRX,X,I
 S LRFLAG=$G(LRFLAG)
 K OUT
 S LRX=$$NAME^XUAF4(LR4),CLIA=$$ID^XUAF4("CLIA",LR4)
 S A(1)="Reporting Lab:" ;_LRX
 S A(2)=LRX
 I 'LRFLAG S A(1,"F")="!!?2",A(2,"F")="!?2"
 I CLIA'="" D
 . S X="[CLIA# "_CLIA_"]"
 . I $L(A(2))+$L(X)+1>$G(IOM,80) S A(2.5)=X S:'LRFLAG A(2.5,"F")="!?17"
 . E  S A(2)=A(2)_" "_X
 S LRX=$$PADD^XUAF4(LR4),LRX(1)=$$WHAT^XUAF4(LR4,1.02)
 S A(3)=$P(LRX,U)_" "_$P(LRX,U,2)_", "_$P(LRX,U,3)_" "_$P(LRX,U,4)
 S A(3)=$P(LRX,U)_" "_$S(LRX(1)'="":LRX(1)_" ",1:"")_$P(LRX,U,2)_$S($P(LRX,U,3)'="":", ",1:"")_$P(LRX,U,3)_" "_$P(LRX,U,4)
 I 'LRFLAG D
 . S A(4)=" ",A(3,"F")="!?2",A(4,"F")="!"
 . I $D(A(2.5)) S A(2.5,"F")="!?2"
 . D EN^DDIOL(.A)
 I LRFLAG M OUT=A
 ;
 Q
 ;
 ;
REFDOC(LRDFN,LRSS,LRIDT) ; Lookup LEDI referral free text provider name in file #63 on "ORUT" subscript
 ; Call with LRDFN = ien on entry in file #63
 ;            LRSS = file #63 subscript
 ;           LRIDT = inverse specimen date/time
 ;
 ; Returns     LRY = free text provider found on first test in file #63
 ;
 N LRI,LRX,LRY
 S LRI=0,(LRX,LRY)=""
 F  S LRI=$O(^LR(LRDFN,LRSS,LRIDT,"ORUT",LRI)) Q:'LRI  S LRX=$P(^(LRI,0),"^",7) Q:LRX'=""
 I LRX'="" S LRY=LRX
 Q LRY
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLRRP1   8321     printed  Sep 23, 2025@19:55:30                                                                                                                                                                                                       Page 2
LRRP1     ;DALOI/STAFF - PRINT THE DATA FOR INTERIM REPORTS ;11/18/11  16:33
 +1       ;;5.2;LAB SERVICE;**153,221,283,286,356,372,350**;Sep 27, 1994;Build 230
 +2       ;
 +3       ; from LRRP, LRRP2, LRRP3, LRMIPSU
 +4       ;
PRINT     ;
 +1        if $GET(SEX)=""
               SET SEX="M"
           if $GET(DOB)=""
               SET DOB="UNKNOWN"
 +2        SET LRAAO=0
           FOR 
               SET LRAAO=$ORDER(^TMP("LR",$JOB,"TP",LRAAO))
               if LRAAO<1
                   QUIT 
               DO ORDER
               if LRSTOP
                   QUIT 
 +3        KILL ^TMP("LR",$JOB,"TP")
 +4        QUIT 
 +5       ;
 +6       ;
ORDER     ;
 +1        NEW LRCAN
 +2        SET LRCDT=0
 +3        FOR 
               SET LRCDT=$ORDER(^TMP("LR",$JOB,"TP",LRAAO,LRCDT))
               if LRCDT<1
                   QUIT 
               Begin DoDot:1
 +4                SET LRCAN=0
 +5                IF LRSS="CH"
                       Begin DoDot:2
 +6                        SET LRIDT=+^TMP("LR",$JOB,"TP",LRAAO,LRCDT,-2)
 +7                        FOR 
                               SET LRCAN=+$ORDER(^LR(LRDFN,"CH",LRIDT,1,LRCAN))
                               if LRCAN<1
                                   QUIT 
                               if $EXTRACT($GET(^(LRCAN,0)))="*"
                                   QUIT 
                       End DoDot:2
 +8                DO TEST
                   if LRSTOP
                       QUIT 
               End DoDot:1
 +9        QUIT 
 +10      ;
 +11      ;
TEST      ;
 +1        NEW LRRELDT,LRX
 +2        SET LRIDT=+^TMP("LR",$JOB,"TP",LRAAO,LRCDT,-2)
 +3        SET LRSS=$PIECE(^TMP("LR",$JOB,"TP",LRAAO),U,2)
 +4        SET LR0=$SELECT($DATA(^(LRAAO,LRCDT))#2:^(LRCDT),1:"")
           SET LRTC=$PIECE(LR0,U,12)
 +5        IF LRSS="MI"
               Begin DoDot:1
 +6                SET LRH=1
                   if LRFOOT
                       DO FOOT
                   if LRSTOP
                       QUIT 
 +7                DO EN1^LRMIPC
 +8                SET LRHF=1
                   SET LRFOOT=0
 +9                KILL A,Z,LRH
 +10               if LREND
                       SET LREND=0
                       SET LRSTOP=1
               End DoDot:1
               QUIT 
 +11      ;
 +12      ; Protect against results for AP subscripts being processed from file #69 orders.
 +13       IF LRSS'="CH"
               QUIT 
 +14      ;
 +15       if '$GET(LRCAN)&('$PIECE(LR0,U,3))
               QUIT 
           DO @$SELECT(LRHF:"HDR",1:"CHECK")
           if LRSTOP
               QUIT 
 +16       SET LRSPEC=+$PIECE(LR0,U,5)
           SET X=$PIECE(LR0,U,10)
           DO DOC^LRX
 +17      ;
 +18      ; Display reporting lab
 +19       IF $$GET^XPAR("DIV^PKG","LR REPORTS FACILITY PRINT",1,"Q")#2
               Begin DoDot:1
 +20               SET LRX=+$GET(^LR(LRDFN,LRSS,LRIDT,"RF"))
 +21               IF LRX
                       DO RL(LRX)
               End DoDot:1
 +22      ;
 +23       IF LRDOC?1"REF:"1.AN
               Begin DoDot:1
 +24               SET LRX=$$REFDOC^LRRP1(LRDFN,LRSS,LRIDT)
 +25               IF LRX'=""
                       SET LRDOC=LRX
               End DoDot:1
 +26       WRITE !!,?7,"Provider: ",LRDOC
 +27       WRITE !,?7,"Specimen: ",$PIECE($GET(^LAB(61,LRSPEC,0),"<no specimen on file>"),U)
 +28       DO ORU
 +29       SET LRRELDT=$PIECE(^TMP("LR",$JOB,"TP",LRAAO,LRCDT),U,3)
 +30       WRITE !,"Report Released: ",$$FMTE^XLFDT(LRRELDT,"M")
 +31       WRITE !!,?30,"Specimen Collection Date: ",$$FMTE^XLFDT(LRCDT,"M")
 +32       WRITE !?5,"Test name",?30,"Result    units",?51,"Ref.   range",?66,"Site Code"
 +33       SET LRPO=0
 +34       FOR 
               SET LRPO=$ORDER(^TMP("LR",$JOB,"TP",LRAAO,LRCDT,LRPO))
               if LRPO'>0
                   QUIT 
               SET LRDATA=^(LRPO)
               DO DATA
               if LRSTOP
                   QUIT 
 +35       if LRSTOP
               QUIT 
 +36      ;
 +37       IF $DATA(^TMP("LR",$JOB,"TP",LRAAO,LRCDT,"C"))
               Begin DoDot:1
 +38               WRITE !,"Comment: "
                   SET LRCMNT=0
 +39               FOR 
                       SET LRCMNT=+$ORDER(^TMP("LR",$JOB,"TP",LRAAO,LRCDT,"C",LRCMNT))
                       if LRCMNT<1
                           QUIT 
                       Begin DoDot:2
 +40                       WRITE ^TMP("LR",$JOB,"TP",LRAAO,LRCDT,"C",LRCMNT)
 +41                       DO CONT
                           if LRSTOP
                               QUIT 
 +42                       if $ORDER(^TMP("LR",$JOB,"TP",LRAAO,LRCDT,"C",LRCMNT))
                               WRITE !?9
                       End DoDot:2
                       if LRSTOP
                           QUIT 
               End DoDot:1
 +43       if LRSTOP
               QUIT 
           DO EQUALS^LRX
 +44       WRITE !?7,"KEY: ""L""=Abnormal low, ""H""=Abnormal high, ""*""=Critical value"
 +45       SET LRFOOT=1
 +46       QUIT 
 +47      ;
 +48      ;
DATA      ;
 +1        NEW LR63DATA,LRREFS,LRX
 +2       ;
 +3        SET LRTSTS=+LRDATA
           SET LRPC=$PIECE(LRDATA,U,5)
           SET LRSUB=$PIECE(LRDATA,U,6)
 +4        SET X=$PIECE(LRDATA,U,7)
           if X=""
               QUIT 
 +5        SET LR63DATA=$$TSTRES^LRRPU(LRDFN,LRSS,LRIDT,$PIECE(LRDATA,U,10),LRTSTS)
 +6        SET LRLO=$PIECE(LR63DATA,"^",3)
           SET LRHI=$PIECE(LR63DATA,"^",4)
           SET LRREFS=$$EN^LRLRRVF(LRLO,LRHI)
           SET LRPLS=$PIECE(LR63DATA,"^",6)
           SET LRTHER=$PIECE(LR63DATA,"^",7)
 +7        IF LRPLS
               SET LRPLS(LRPLS)=LRPLS
 +8       ;
 +9       ; Find reference lab filler order number
 +10       SET LREPR=LRDFN_","_LRSS_","_LRIDT_","_$PIECE(LRDATA,"^",10)
 +11       SET LRX=$ORDER(^LR(LRDFN,"EPR","AD",LREPR,4,""))
 +12       IF LRX
               SET LREPR(4,LREPR,LRX)=""
 +13      ;
 +14      ;W !?5,$S($L($P(LRDATA,U,2))>20:$P(LRDATA,U,3),1:$P(LRDATA,U,2))
 +15      ; Insure something is printed as test name - either print name or #.01 field
 +16       IF $LENGTH($PIECE(LRDATA,U,2))>25
               IF $PIECE(LRDATA,U,3)'=""
                   WRITE !,$PIECE(LRDATA,U,3)
 +17      IF '$TEST
               WRITE !,$EXTRACT($PIECE(LRDATA,U,2),1,25)
 +18       SET X=$PIECE(LR63DATA,"^")
 +19       WRITE ?27,@$SELECT(LRPC="":"$J(X,LRCW)",1:LRPC)," ",$PIECE(LR63DATA,"^",2)
 +20       IF $X>39
               WRITE !
 +21       WRITE ?40,$PIECE(LR63DATA,U,5)
 +22       IF $X>50
               WRITE !
 +23       WRITE ?51,LRREFS
 +24      ;
 +25       IF LRPLS'=""
               Begin DoDot:1
 +26               IF $X>67
                       WRITE !
 +27               WRITE ?68,"[",LRPLS,"]"
               End DoDot:1
 +28       DO CONT
           if LRSTOP
               QUIT 
 +29      ;
 +30       IF $ORDER(^TMP("LR",$JOB,"TP",LRAAO,LRCDT,LRPO,0))>0
               Begin DoDot:1
 +31               SET LRINTP=0
 +32               FOR 
                       SET LRINTP=+$ORDER(^TMP("LR",$JOB,"TP",LRAAO,LRCDT,LRPO,LRINTP))
                       if LRINTP<1
                           QUIT 
                       WRITE !?7,"Eval: ",^(LRINTP)
                       DO CONT
                       if LRSTOP
                           QUIT 
               End DoDot:1
               if LRSTOP
                   QUIT 
 +33      ;
 +34       QUIT 
 +35      ;
 +36      ;
CHECK      IF LRTC+11>(IOSL-$Y)
               DO FOOT
               if LRSTOP
                   QUIT 
               DO HDR
 +1        QUIT 
 +2       ;
 +3       ;
CONT       IF $Y+5>IOSL
               DO FOOT
               if LRSTOP
                   QUIT 
               DO HDR
               WRITE !?20,">> CONTINUATION OF ",$PIECE(LR0,U,6)," <<",!
 +1        QUIT 
 +2       ;
 +3       ;
 +1       ;
 +2        NEW I
 +3        if LRSTOP
               QUIT 
 +4        FOR I=$Y:1:IOSL-4
               WRITE !
 +5       ;
 +6        IF $EXTRACT(IOST,1,2)'="C-"
               Begin DoDot:1
 +7                WRITE !,PNM,?40,"  ",SSN,"  ",$$HTE^XLFDT($HOROLOG,"1M"),!
               End DoDot:1
               QUIT 
 +8       ;
 +9        WRITE !,PNM,?25,"  ",SSN,"  ",$$HTE^XLFDT($HOROLOG,"1M"),?59," PRESS '^' TO STOP "
 +10       READ X:DTIME
           if X=""
               SET X=1
           if (".^"[X)!('$TEST)
               SET LRSTOP=1
 +11       QUIT 
 +12      ;
 +13      ;
HDR       ; Add Printed at, page #, change age to dob 7/2002 cka
 +1        if ($GET(LRJ02))!($GET(LRJ0))!($EXTRACT(IOST,1,2)="C-")
               WRITE @IOF
 +2        SET LRHF=0
           SET LRJ02=1
           SET LRPG=$GET(LRPG)+1
 +3        IF $EXTRACT(IOST,1)="P"
               WRITE !!,$$CJ^XLFSTR("CLINICAL LABORATORY REPORT",IOM),!
 +4       ;
 +5        IF $$GET^XPAR("DIV^PKG","LR REPORTS FACILITY PRINT",1,"Q")>1
               DO PFAC(DUZ(2),LRPG)
 +6       ;
 +7        WRITE !!,PNM,?44,"Report date: ",$$HTE^XLFDT($HOROLOG,"M")
 +8        WRITE !?1,"Pat ID: ",SSN,"    SEX: ",SEX,"    DOB: ",$$FMTE^XLFDT(DOB),"    LOC: ",LROC
 +9        QUIT 
 +10      ;
 +11      ;
ORU       ; Display remote ordering info if available
 +1       ; Handle calls that don't pass parameters.
 +2        DO ORUA("",LRDFN,LRSS,LRIDT,0)
 +3        QUIT 
 +4       ;
 +5       ;
ORUA(LRARRAY,LRDFN,LRSS,LRIDT,LRFLAG) ; Display remote ordering info if available
 +1       ; Call with LRARRAY = array with name/address info
 +2       ;             LRDFN = file #63 ien
 +3       ;              LRSS = file #63 subscript
 +4       ;             LRIDT = file #63 internal data/time of specimen
 +5       ;            LRFLAG = 0 (print facility info)
 +6       ;                     1 (return facility info in LRARRAY)
 +7       ;
 +8        NEW A,IENS,LRFILE,LRX,LRY
 +9       ;
 +10       SET LRFLAG=$GET(LRFLAG,0)
 +11       SET LRFILE=$SELECT(LRSS="CH":63.04,LRSS="MI":63.05,LRSS="SP":63.08,LRSS="CY":63.09,LRSS="EM":63.02,LRSS="BB":63.01,1:0)
 +12       SET LRX(0)=$GET(^LR(LRDFN,LRSS,LRIDT,0))
 +13       SET LRX("ORU")=$GET(^LR(LRDFN,LRSS,LRIDT,"ORU"))
           SET IENS=LRIDT_","_LRDFN_","
 +14      ;
 +15       SET LRY="Accession [UID]: "_$PIECE(LRX(0),"^",6)_" ["_$PIECE(LRX("ORU"),"^")_"]"
 +16       IF LRSS="MI"
               IF $PIECE(LRX(0),"^",10)
                   SET LRY=$$LJ^XLFSTR(LRY,43," ")_" Received: "_$$FMTE^XLFDT($PIECE(LRX(0),"^",10),"M")
 +17       IF LRFLAG
               SET A(1)=LRY
 +18      IF '$TEST
               DO EN^DDIOL(LRY,"","!")
 +19      ;
 +20       IF $PIECE(LRX("ORU"),"^",3)
               Begin DoDot:1
 +21               SET LRY=$$LJ^XLFSTR("Ordering Site: "_$$GET1^DIQ(LRFILE,IENS,.33,""),43," ")_" Ordering Site UID: "_$PIECE(LRX("ORU"),"^",5)
 +22               IF LRFLAG
                       SET A(2)=LRY
 +23              IF '$TEST
                       DO EN^DDIOL(LRY,"","!?2")
               End DoDot:1
 +24      ;
 +25       IF $PIECE(LRX("ORU"),"^",2)
               Begin DoDot:1
 +26               SET LRY="Collecting Site: "_$$GET1^DIQ(LRFILE,IENS,.32,"")
 +27               IF LRFLAG=1
                       SET A(3)=LRY
 +28              IF '$TEST
                       DO EN^DDIOL(LRY,"","!")
               End DoDot:1
 +29      ;
 +30       IF LRFLAG
               MERGE LRARRAY=A
 +31      ;
 +32       QUIT 
 +33      ;
 +34      ;
PFAC(LR4,LRPG,LRFLAG,LRARRAY) ; Display name/address of printing facility
 +1       ; Call with LR4 = File #4 IEN
 +2       ;          LRPG = current page number to print
 +3       ;        LRFLAG = 0 (print facility info)
 +4       ;                 1 (return facility info in LRARRAY)
 +5       ;       LRARRAY = array with name/address info
 +6       ;
 +7        NEW A,CLIA,LRX,X
 +8        SET LRX=$$NAME^XUAF4(LR4)
           SET CLIA=$$ID^XUAF4("CLIA",LR4)
           SET LRFLAG=$GET(LRFLAG,0)
 +9        SET A(1)="Printed at:"
 +10       IF $GET(LRPG)
               SET A(1)=$$LJ^XLFSTR(A(1),$GET(IOM,80)-15)_"page "_LRPG
 +11       SET A(2)=LRX
 +12       IF CLIA'=""
               Begin DoDot:1
 +13               SET X="[CLIA# "_CLIA_"]"
 +14               IF $LENGTH(A(2))+$LENGTH(X)+1>$GET(IOM,80)
                       SET A(2.5)=X
 +15              IF '$TEST
                       SET A(2)=A(2)_" "_X
               End DoDot:1
 +16       SET LRX=$$PADD^XUAF4(LR4)
           SET LRX(1)=$$WHAT^XUAF4(LR4,1.02)
 +17       SET A(3)=$PIECE(LRX,U)_" "_$SELECT(LRX(1)'="":LRX(1)_" ",1:"")_$PIECE(LRX,U,2)_$SELECT($PIECE(LRX,U,3)'="":", ",1:"")_$PIECE(LRX,U,3)_" "_$PIECE(LRX,U,4)
 +18       IF 'LRFLAG
               Begin DoDot:1
 +19               SET A(4)=" "
 +20               SET A(1,"F")="?2"
                   SET A(2,"F")="!?2"
                   SET A(3,"F")="!?2"
                   SET A(4,"F")="!"
 +21               IF $DATA(A(2.5))
                       SET A(2.5,"F")="!?2"
 +22               DO EN^DDIOL(.A)
               End DoDot:1
 +23       IF LRFLAG
               MERGE LRARRAY=A
 +24      ;
 +25       QUIT 
 +26      ;
 +27      ;
RL(LR4,LRFLAG,OUT) ; Display name/address of reporting laboratory
 +1       ; Call with LR4: File #4 IEN
 +2       ;        LRFLAG: <opt> 1=save to OUT array
 +3       ;           OUT: <byref><opt>
 +4       ;
 +5        NEW A,CLIA,LRX,X,I
 +6        SET LRFLAG=$GET(LRFLAG)
 +7        KILL OUT
 +8        SET LRX=$$NAME^XUAF4(LR4)
           SET CLIA=$$ID^XUAF4("CLIA",LR4)
 +9       ;_LRX
           SET A(1)="Reporting Lab:"
 +10       SET A(2)=LRX
 +11       IF 'LRFLAG
               SET A(1,"F")="!!?2"
               SET A(2,"F")="!?2"
 +12       IF CLIA'=""
               Begin DoDot:1
 +13               SET X="[CLIA# "_CLIA_"]"
 +14               IF $LENGTH(A(2))+$LENGTH(X)+1>$GET(IOM,80)
                       SET A(2.5)=X
                       if 'LRFLAG
                           SET A(2.5,"F")="!?17"
 +15              IF '$TEST
                       SET A(2)=A(2)_" "_X
               End DoDot:1
 +16       SET LRX=$$PADD^XUAF4(LR4)
           SET LRX(1)=$$WHAT^XUAF4(LR4,1.02)
 +17       SET A(3)=$PIECE(LRX,U)_" "_$PIECE(LRX,U,2)_", "_$PIECE(LRX,U,3)_" "_$PIECE(LRX,U,4)
 +18       SET A(3)=$PIECE(LRX,U)_" "_$SELECT(LRX(1)'="":LRX(1)_" ",1:"")_$PIECE(LRX,U,2)_$SELECT($PIECE(LRX,U,3)'="":", ",1:"")_$PIECE(LRX,U,3)_" "_$PIECE(LRX,U,4)
 +19       IF 'LRFLAG
               Begin DoDot:1
 +20               SET A(4)=" "
                   SET A(3,"F")="!?2"
                   SET A(4,"F")="!"
 +21               IF $DATA(A(2.5))
                       SET A(2.5,"F")="!?2"
 +22               DO EN^DDIOL(.A)
               End DoDot:1
 +23       IF LRFLAG
               MERGE OUT=A
 +24      ;
 +25       QUIT 
 +26      ;
 +27      ;
REFDOC(LRDFN,LRSS,LRIDT) ; Lookup LEDI referral free text provider name in file #63 on "ORUT" subscript
 +1       ; Call with LRDFN = ien on entry in file #63
 +2       ;            LRSS = file #63 subscript
 +3       ;           LRIDT = inverse specimen date/time
 +4       ;
 +5       ; Returns     LRY = free text provider found on first test in file #63
 +6       ;
 +7        NEW LRI,LRX,LRY
 +8        SET LRI=0
           SET (LRX,LRY)=""
 +9        FOR 
               SET LRI=$ORDER(^LR(LRDFN,LRSS,LRIDT,"ORUT",LRI))
               if 'LRI
                   QUIT 
               SET LRX=$PIECE(^(LRI,0),"^",7)
               if LRX'=""
                   QUIT 
 +10       IF LRX'=""
               SET LRY=LRX
 +11       QUIT LRY