- LR7OGMC ;DALOI/STAFF- Interim report rpc memo chem ;July 29, 2019@10:00
- ;;5.2;LAB SERVICE;**187,230,312,286,356,372,395,350,516,523,527**;Sep 27, 1994;Build 16
- ;Per VHA Directive 2004-038, this routine should not be modified.
- ;
- ; sets lab data into ^TMP("LR7OG",$J,"TP"
- ; ^TMP("LR7OG",$J,"G")=dfn^pnm^lrdfn^age^sex^lrcw
- ; ^TMP("LR7OG",$J,"TMP",LR Subscript)=ifn of test from 60
- ; ^TMP("LR7OG",$J,"T",ifn 60)=^LAB(60,IFN,0)
- ; ^TMP("LR7OG",$J,"TP",collect date/time)=zero node from data
- ; ^TMP("LR7OG",$J,"TP",collect date/time,printorder)=test#^name^printname^^printcode^dataname^result^flag^units^range^performing site
- ; ^TMP("LR7OG",$J,"TP",collect date/time,printorder,#)=interpretation
- ; ^TMP("LR7OG",$J,"TP",collect date/time,"C",#)=comment
- ; ALL = 1 when coming from INTERIMG^LR7OGM (Most Recent)
- ;
- ;
- CH(LRDFN,IDT,ALL,OUTCNT,FORMAT,DONE,SKIP) ; from LR7OGM
- N ACC,AREA,ACDT,CDT,CHSUB,CMNT,GOTNP,INTP,LABSUB,LRAAT,LRAD,NUM,PNODE
- N PORDER,SPEC,TCNT,TESTNUM,TESTSUB,UID,ZERO,LRORUT
- ;
- S GOTNP=0,ZERO=$G(^LR(LRDFN,"CH",IDT,0)),UID=$P($G(^("ORU")),"^")
- I UID'="" S UID=$$CHECKUID^LRWU4(UID)
- S AREA=$P(UID,"^",2),ACDT=$P(UID,"^",3),NUM=$P(UID,"^",4)
- S CDT=+ZERO,LABSUB="CH",TCNT=0,SPEC=$P(ZERO,U,5)
- ;
- D GETNP ;Check for NP comments
- ;LR*5.2*527: commenting out line below so that "not performed" ordered
- ; tests will display.
- ;I FORMAT,GOTNP S SKIP=1 Q
- I GOTNP,'$P(ZERO,U,3) D Q
- . N LRXQUIT
- . S LRXQUIT=1
- . D ACC:UID
- . ;LR*5.2*527: The line below would not have been called in the
- . ; pre-LR 527 version of this routine because GOTNP=1
- . ; and FORMAT=1.
- . ; Leaving it here commented out in case it is needed
- . ; in the future for some reason.
- . ;I $O(^TMP("LR7OG",$J,"TP",CDT,0)) K:FORMAT ^TMP("LR7OG",$J,"TP",CDT) D CHKNP Q
- . ;LR*5.2*527: adding logic to retrieve information for ordered tests
- . ; which have been marked "not performed".
- . S LRORUT=0
- . F S LRORUT=$O(^LR(LRDFN,"CH",IDT,"ORUT",LRORUT)) Q:'LRORUT D
- . . S TESTNUM=$P($G(^LR(LRDFN,"CH",IDT,"ORUT",LRORUT,0)),U,13)
- . . Q:'TESTNUM
- . . I '("BO"[$P($G(^LAB(60,TESTNUM,0)),U,3)) Q
- . . Q:'$D(^LAB(60,TESTNUM,.1)) S PNODE=^(.1)
- . . ;Checking for existence of "ALL" as well as value in case this option is called
- . . ;from an option which only selects certain tests and is not the CPRS Labs Tab
- . . ;"Selected Tests by Date" report.
- . . ;Selected tests will be in ^TMP("LR7OG" and TESTS(TESTNUM)
- . . ;Setting flag to check whether at least this test was selected.
- . . I $D(ALL),'$G(ALL),$D(^TMP("LR7OG",$J,"T",TESTNUM)),$D(TESTS(TESTNUM)) S LRXQUIT=0
- . . ;Do not display this test if it was not selected.
- . . I $D(ALL),'$G(ALL),'$D(^TMP("LR7OG",$J,"T",TESTNUM)),'$D(TESTS(TESTNUM)) Q
- . . S PORDER=$P(PNODE,U,6),PORDER=$S(PORDER:PORDER,1:1/1000000)
- . . F Q:'$D(^TMP("LR7OG",$J,"TP",CDT,PORDER)) Q:TESTNUM=+^(PORDER) S PORDER=PORDER+1
- . . I $D(^TMP("LR7OG",$J,"TP",CDT,PORDER)) Q
- . . S ^TMP("LR7OG",$J,"TP",CDT,PORDER)=TESTNUM_U_$P(^LAB(60,TESTNUM,0),U)_U_$P(PNODE,U)_U_$P(PNODE,U,2)_U_"X"_U_$P(^(0),U,5)_U_"Test Not Performed"
- . ;Quit if no "not performed" tests were selected
- . I $D(ALL),'$G(ALL),LRXQUIT Q
- . S ^TMP("LR7OG",$J,"TP",CDT)=ZERO
- . D CMT
- . I 'FORMAT D PRINT^LR7OGMP(.OUTCNT)
- . I FORMAT D
- . . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)="0^CH^"_(9999999-IDT)
- . . S OUTCNT=OUTCNT+1,DONE=1
- . . D GRID^LR7OGMG(.OUTCNT)
- . K ^TMP("LR7OG",$J,"TP")
- ;LR*5.2*527: end of added lines in this section
- ;
- D ACC:UID,VER
- I '$O(^TMP("LR7OG",$J,"TP",CDT,0)) S SKIP=1 Q
- ;LR*5.2*527: Line below not changed. But this logic doesn't seem
- ; to cause an output because the same sort of check was
- ; done previously in this section at GETNP.
- I '$O(^LR(LRDFN,"CH",IDT,1)) D CHKNP
- ;
- ;LR 523 quit out when only calling for info only for LR7OGM
- I FORMAT=4 Q
- ;
- I FORMAT D
- . S ^TMP("LR7OGX",$J,"OUTPUT",OUTCNT)="0^CH^"_(9999999-IDT)
- . S OUTCNT=OUTCNT+1,DONE=1
- . ;LR*5.2*527: changing line below to not check for GOTNP
- . ;I 'GOTNP D GRID^LR7OGMG(.OUTCNT)
- . D GRID^LR7OGMG(.OUTCNT)
- ;
- I 'FORMAT D PRINT^LR7OGMP(.OUTCNT)
- ;
- K ^TMP("LR7OG",$J,"TP")
- ;
- Q
- ;
- ;
- ACC ;Check Accession
- N ANODE,X0,LRODT,LRSN,LROD0,LROD1,X,STATUS,LROS
- ;
- K ^TMP("LR7OG",$J,"ACC")
- ;
- I '$D(^LRO(68,+AREA,1,+ACDT,1,+NUM)) Q
- ;
- S X0=$G(^LRO(68,+AREA,1,+ACDT,1,+NUM,0)),LRODT=$P(X0,"^",4),LRSN=$P(X0,"^",5),LROD0=$G(^LRO(69,+LRODT,1,LRSN,0)),LROD1=$G(^(1))
- ;
- S TESTNUM=0
- F S TESTNUM=$O(^LRO(68,+AREA,1,+ACDT,1,+NUM,4,TESTNUM)) Q:'TESTNUM S ANODE=^(TESTNUM,0) D
- . I $P(ANODE,U,6)'="*Not Performed" Q:$P(ANODE,U,5) ;complete date
- . ;LR*5.2*527: commenting out line below so that NP'd tests will display
- . ;I FORMAT,$P(ANODE,U,6)="*Not Performed" Q ;Don't show NP'd results on Most Recent Report
- . I 'ALL,'$D(^TMP("LR7OG",$J,"T",TESTNUM)),'$D(TESTS(TESTNUM)) Q ;Selected test not in accession
- . ;LR*5.2*527: adding"*Not Performed" check so that NP'd tests will display
- . ; ^TMP("LR7OG",$J,"TP" will be set up below for NP'd tests.
- . ; ^TMP("LR7OG",$J,"TP" is set up at VER for other tests.
- . I $P(ANODE,U,6)'="*Not Performed",TESTNUM'=$P(ANODE,"^",9),$P($G(^LRO(68,+AREA,1,+ACDT,1,+NUM,4,+$P(ANODE,"^",9),0)),"^",5) Q ;complete date on parent
- . S ^TMP("LR7OG",$J,"ACC",TESTNUM)=ANODE
- ;
- I '$O(^TMP("LR7OG",$J,"ACC",0)) Q
- ;
- S TESTNUM=0
- F S TESTNUM=$O(^TMP("LR7OG",$J,"ACC",TESTNUM)) Q:'TESTNUM S ANODE=^(TESTNUM) D
- . Q:'$D(^LAB(60,TESTNUM,.1)) S PNODE=^(.1) I '("BO"[$P($G(^(0)),U,3)) Q
- . S PORDER=$P(PNODE,U,6),PORDER=$S(PORDER:PORDER,1:1/1000000)
- . F Q:'$D(^TMP("LR7OG",$J,"TP",CDT,PORDER)) Q:TESTNUM=+^(PORDER) S PORDER=PORDER+1
- . I $D(^TMP("LR7OG",$J,"TP",CDT,PORDER)) Q
- . S LROS="Collected - Specimen In Lab"
- . I LROD1'="" S X=$P(LROD1,U,4),LROS=$S(X="C":"Collected - Specimen In Lab",X="U":"Uncollected, cancelled",1:"On Collection List")
- . S STATUS=$S($P(ANODE,"^",6)="*Not Performed":"Test Not Performed",1:LROS)
- . S ^TMP("LR7OG",$J,"TP",CDT,PORDER)=TESTNUM_U_$P(^LAB(60,TESTNUM,0),U)_U_$P(PNODE,U)_U_$P(PNODE,U,2)_U_"X"_U_$P(^(0),U,5)_U_STATUS
- . S TCNT=TCNT+1
- ;
- K ^TMP("LR7OG",$J,"ACC")
- I TCNT S ^TMP("LR7OG",$J,"TP",CDT)=ZERO
- ;
- Q
- ;
- ;
- VER ; Check Verified Results
- Q:'$P(ZERO,U,3)
- ;
- I ALL D
- . S TESTSUB=1
- . F S TESTSUB=$O(^LR(LRDFN,"CH",IDT,TESTSUB)) Q:TESTSUB<1 S TESTNUM=$O(^LAB(60,"C","CH;"_TESTSUB_";1",0)) D CHSETUP
- ;
- I 'ALL D
- . S TESTSUB=1
- . F S TESTSUB=$O(^TMP("LR7OG",$J,"TMP",TESTSUB)) Q:TESTSUB<1 S TESTNUM=+^(TESTSUB) D CHSETUP
- ;
- I TCNT D
- . S ^TMP("LR7OG",$J,"TP",CDT)=ZERO,CMNT=0
- . F S CMNT=+$O(^LR(LRDFN,LABSUB,IDT,1,CMNT)) Q:CMNT<1 S ^TMP("LR7OG",$J,"TP",CDT,"C",CMNT)=^(CMNT,0) S TCNT=TCNT+1
- Q
- ;
- ;
- CHSETUP ; within scope of CH
- ;
- N LRX
- I 'TESTNUM Q
- Q:'$D(^LAB(60,TESTNUM,.1)) S PNODE=^(.1) I '("BO"[$P($G(^(0)),U,3)) Q
- Q:'$D(^LR(LRDFN,LABSUB,IDT,TESTSUB)) Q:'$L($P(^(TESTSUB),U))
- ;
- S PORDER=$P(PNODE,U,6),PORDER=$S(PORDER:PORDER,1:TESTSUB/1000000)
- F Q:'$D(^TMP("LR7OG",$J,"TP",CDT,PORDER)) Q:TESTNUM=+^(PORDER) S PORDER=PORDER+1
- ;
- I $D(^TMP("LR7OG",$J,"TP",CDT,PORDER)) Q
- ;
- S LRX=$$TSTRES^LRRPU(LRDFN,LABSUB,IDT,TESTSUB,TESTNUM)
- S ^TMP("LR7OG",$J,"TP",CDT,PORDER)=TESTNUM_U_$P(^LAB(60,TESTNUM,0),U)_U_$P(PNODE,U)_U_$P(PNODE,U,2)_U_$P(PNODE,U,3)_U_$P(^(0),U,5)_U_$P(LRX,U)_U_$P(LRX,U,2)_U_$P(LRX,U,5)_U_$$EN^LRLRRVF($P(LRX,U,3),$P(LRX,U,4))_U_$P(LRX,U,6)
- ;
- ; Save performing lab ien in list
- I $P(LRX,U,6) S ^TMP("LRPLS",$J,$P(LRX,U,6))=""
- ;
- S TCNT=TCNT+1
- I $D(^LAB(60,TESTNUM,1,SPEC,1,0)) D
- . S INTP=0
- . F S INTP=+$O(^LAB(60,TESTNUM,1,SPEC,1,INTP)) Q:INTP<1 D
- . . S ^TMP("LR7OG",$J,"TP",CDT,PORDER,INTP)=^(INTP,0)
- . . S TCNT=TCNT+1
- Q
- ;
- ;
- CMT ; Retrieve specimen comments
- ;
- S ^TMP("LR7OG",$J,"TP",CDT)=ZERO,CMNT=0
- F S CMNT=+$O(^LR(LRDFN,LABSUB,IDT,1,CMNT)) Q:CMNT<1 S ^TMP("LR7OG",$J,"TP",CDT,"C",CMNT)=^(CMNT,0) S TCNT=TCNT+1
- ;
- Q
- ;
- ;
- CHKNP ; Check for NP comments and no verified results.
- ;
- N LRCAN,X
- S LRCAN=0
- F S LRCAN=+$O(^LR(LRDFN,"CH",IDT,1,LRCAN)) Q:LRCAN<1 S X=^(LRCAN,0) Q:(($E(X)="*")&(X["Not Performed:"))
- ;
- ; Print if cancel comment and no unverified results.
- I LRCAN<1 Q
- D CMT
- D PRINT^LR7OGMP(.OUTCNT)
- K ^TMP("LR7OG",$J,"TP")
- Q
- ;
- ;
- GETNP ;Set NP flag (Not Performed)
- N LRCAN,X,LRNPCNT
- S LRCAN=0
- F S LRCAN=+$O(^LR(LRDFN,"CH",IDT,1,LRCAN)) Q:LRCAN<1 S X=^(LRCAN,0) Q:(($E(X)="*")&(X["Not Performed:"))
- Q:LRCAN<1
- ;LR*5.2*527: Commenting out line below so that not performed comments
- ; will display if test results are entered but not yet
- ; verified. The non-verified results will not display.
- ;I $G(FORMAT) Q:$O(^LR(LRDFN,"CH",IDT,1))
- S GOTNP=1
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HLR7OGMC 8845 printed Feb 18, 2025@23:31:02 Page 2
- LR7OGMC ;DALOI/STAFF- Interim report rpc memo chem ;July 29, 2019@10:00
- +1 ;;5.2;LAB SERVICE;**187,230,312,286,356,372,395,350,516,523,527**;Sep 27, 1994;Build 16
- +2 ;Per VHA Directive 2004-038, this routine should not be modified.
- +3 ;
- +4 ; sets lab data into ^TMP("LR7OG",$J,"TP"
- +5 ; ^TMP("LR7OG",$J,"G")=dfn^pnm^lrdfn^age^sex^lrcw
- +6 ; ^TMP("LR7OG",$J,"TMP",LR Subscript)=ifn of test from 60
- +7 ; ^TMP("LR7OG",$J,"T",ifn 60)=^LAB(60,IFN,0)
- +8 ; ^TMP("LR7OG",$J,"TP",collect date/time)=zero node from data
- +9 ; ^TMP("LR7OG",$J,"TP",collect date/time,printorder)=test#^name^printname^^printcode^dataname^result^flag^units^range^performing site
- +10 ; ^TMP("LR7OG",$J,"TP",collect date/time,printorder,#)=interpretation
- +11 ; ^TMP("LR7OG",$J,"TP",collect date/time,"C",#)=comment
- +12 ; ALL = 1 when coming from INTERIMG^LR7OGM (Most Recent)
- +13 ;
- +14 ;
- CH(LRDFN,IDT,ALL,OUTCNT,FORMAT,DONE,SKIP) ; from LR7OGM
- +1 NEW ACC,AREA,ACDT,CDT,CHSUB,CMNT,GOTNP,INTP,LABSUB,LRAAT,LRAD,NUM,PNODE
- +2 NEW PORDER,SPEC,TCNT,TESTNUM,TESTSUB,UID,ZERO,LRORUT
- +3 ;
- +4 SET GOTNP=0
- SET ZERO=$GET(^LR(LRDFN,"CH",IDT,0))
- SET UID=$PIECE($GET(^("ORU")),"^")
- +5 IF UID'=""
- SET UID=$$CHECKUID^LRWU4(UID)
- +6 SET AREA=$PIECE(UID,"^",2)
- SET ACDT=$PIECE(UID,"^",3)
- SET NUM=$PIECE(UID,"^",4)
- +7 SET CDT=+ZERO
- SET LABSUB="CH"
- SET TCNT=0
- SET SPEC=$PIECE(ZERO,U,5)
- +8 ;
- +9 ;Check for NP comments
- DO GETNP
- +10 ;LR*5.2*527: commenting out line below so that "not performed" ordered
- +11 ; tests will display.
- +12 ;I FORMAT,GOTNP S SKIP=1 Q
- +13 IF GOTNP
- IF '$PIECE(ZERO,U,3)
- Begin DoDot:1
- +14 NEW LRXQUIT
- +15 SET LRXQUIT=1
- +16 if UID
- DO ACC
- +17 ;LR*5.2*527: The line below would not have been called in the
- +18 ; pre-LR 527 version of this routine because GOTNP=1
- +19 ; and FORMAT=1.
- +20 ; Leaving it here commented out in case it is needed
- +21 ; in the future for some reason.
- +22 ;I $O(^TMP("LR7OG",$J,"TP",CDT,0)) K:FORMAT ^TMP("LR7OG",$J,"TP",CDT) D CHKNP Q
- +23 ;LR*5.2*527: adding logic to retrieve information for ordered tests
- +24 ; which have been marked "not performed".
- +25 SET LRORUT=0
- +26 FOR
- SET LRORUT=$ORDER(^LR(LRDFN,"CH",IDT,"ORUT",LRORUT))
- if 'LRORUT
- QUIT
- Begin DoDot:2
- +27 SET TESTNUM=$PIECE($GET(^LR(LRDFN,"CH",IDT,"ORUT",LRORUT,0)),U,13)
- +28 if 'TESTNUM
- QUIT
- +29 IF '("BO"[$PIECE($GET(^LAB(60,TESTNUM,0)),U,3))
- QUIT
- +30 if '$DATA(^LAB(60,TESTNUM,.1))
- QUIT
- SET PNODE=^(.1)
- +31 ;Checking for existence of "ALL" as well as value in case this option is called
- +32 ;from an option which only selects certain tests and is not the CPRS Labs Tab
- +33 ;"Selected Tests by Date" report.
- +34 ;Selected tests will be in ^TMP("LR7OG" and TESTS(TESTNUM)
- +35 ;Setting flag to check whether at least this test was selected.
- +36 IF $DATA(ALL)
- IF '$GET(ALL)
- IF $DATA(^TMP("LR7OG",$JOB,"T",TESTNUM))
- IF $DATA(TESTS(TESTNUM))
- SET LRXQUIT=0
- +37 ;Do not display this test if it was not selected.
- +38 IF $DATA(ALL)
- IF '$GET(ALL)
- IF '$DATA(^TMP("LR7OG",$JOB,"T",TESTNUM))
- IF '$DATA(TESTS(TESTNUM))
- QUIT
- +39 SET PORDER=$PIECE(PNODE,U,6)
- SET PORDER=$SELECT(PORDER:PORDER,1:1/1000000)
- +40 FOR
- if '$DATA(^TMP("LR7OG",$JOB,"TP",CDT,PORDER))
- QUIT
- if TESTNUM=+^(PORDER)
- QUIT
- SET PORDER=PORDER+1
- +41 IF $DATA(^TMP("LR7OG",$JOB,"TP",CDT,PORDER))
- QUIT
- +42 SET ^TMP("LR7OG",$JOB,"TP",CDT,PORDER)=TESTNUM_U_$PIECE(^LAB(60,TESTNUM,0),U)_U_$PIECE(PNODE,U)_U_$PIECE(PNODE,U,2)_U_"X"_U_$PIECE(^(0),U,5)_U_"Test Not Performed"
- End DoDot:2
- +43 ;Quit if no "not performed" tests were selected
- +44 IF $DATA(ALL)
- IF '$GET(ALL)
- IF LRXQUIT
- QUIT
- +45 SET ^TMP("LR7OG",$JOB,"TP",CDT)=ZERO
- +46 DO CMT
- +47 IF 'FORMAT
- DO PRINT^LR7OGMP(.OUTCNT)
- +48 IF FORMAT
- Begin DoDot:2
- +49 SET ^TMP("LR7OGX",$JOB,"OUTPUT",OUTCNT)="0^CH^"_(9999999-IDT)
- +50 SET OUTCNT=OUTCNT+1
- SET DONE=1
- +51 DO GRID^LR7OGMG(.OUTCNT)
- End DoDot:2
- +52 KILL ^TMP("LR7OG",$JOB,"TP")
- End DoDot:1
- QUIT
- +53 ;LR*5.2*527: end of added lines in this section
- +54 ;
- +55 if UID
- DO ACC
- DO VER
- +56 IF '$ORDER(^TMP("LR7OG",$JOB,"TP",CDT,0))
- SET SKIP=1
- QUIT
- +57 ;LR*5.2*527: Line below not changed. But this logic doesn't seem
- +58 ; to cause an output because the same sort of check was
- +59 ; done previously in this section at GETNP.
- +60 IF '$ORDER(^LR(LRDFN,"CH",IDT,1))
- DO CHKNP
- +61 ;
- +62 ;LR 523 quit out when only calling for info only for LR7OGM
- +63 IF FORMAT=4
- QUIT
- +64 ;
- +65 IF FORMAT
- Begin DoDot:1
- +66 SET ^TMP("LR7OGX",$JOB,"OUTPUT",OUTCNT)="0^CH^"_(9999999-IDT)
- +67 SET OUTCNT=OUTCNT+1
- SET DONE=1
- +68 ;LR*5.2*527: changing line below to not check for GOTNP
- +69 ;I 'GOTNP D GRID^LR7OGMG(.OUTCNT)
- +70 DO GRID^LR7OGMG(.OUTCNT)
- End DoDot:1
- +71 ;
- +72 IF 'FORMAT
- DO PRINT^LR7OGMP(.OUTCNT)
- +73 ;
- +74 KILL ^TMP("LR7OG",$JOB,"TP")
- +75 ;
- +76 QUIT
- +77 ;
- +78 ;
- ACC ;Check Accession
- +1 NEW ANODE,X0,LRODT,LRSN,LROD0,LROD1,X,STATUS,LROS
- +2 ;
- +3 KILL ^TMP("LR7OG",$JOB,"ACC")
- +4 ;
- +5 IF '$DATA(^LRO(68,+AREA,1,+ACDT,1,+NUM))
- QUIT
- +6 ;
- +7 SET X0=$GET(^LRO(68,+AREA,1,+ACDT,1,+NUM,0))
- SET LRODT=$PIECE(X0,"^",4)
- SET LRSN=$PIECE(X0,"^",5)
- SET LROD0=$GET(^LRO(69,+LRODT,1,LRSN,0))
- SET LROD1=$GET(^(1))
- +8 ;
- +9 SET TESTNUM=0
- +10 FOR
- SET TESTNUM=$ORDER(^LRO(68,+AREA,1,+ACDT,1,+NUM,4,TESTNUM))
- if 'TESTNUM
- QUIT
- SET ANODE=^(TESTNUM,0)
- Begin DoDot:1
- +11 ;complete date
- IF $PIECE(ANODE,U,6)'="*Not Performed"
- if $PIECE(ANODE,U,5)
- QUIT
- +12 ;LR*5.2*527: commenting out line below so that NP'd tests will display
- +13 ;I FORMAT,$P(ANODE,U,6)="*Not Performed" Q ;Don't show NP'd results on Most Recent Report
- +14 ;Selected test not in accession
- IF 'ALL
- IF '$DATA(^TMP("LR7OG",$JOB,"T",TESTNUM))
- IF '$DATA(TESTS(TESTNUM))
- QUIT
- +15 ;LR*5.2*527: adding"*Not Performed" check so that NP'd tests will display
- +16 ; ^TMP("LR7OG",$J,"TP" will be set up below for NP'd tests.
- +17 ; ^TMP("LR7OG",$J,"TP" is set up at VER for other tests.
- +18 ;complete date on parent
- IF $PIECE(ANODE,U,6)'="*Not Performed"
- IF TESTNUM'=$PIECE(ANODE,"^",9)
- IF $PIECE($GET(^LRO(68,+AREA,1,+ACDT,1,+NUM,4,+$PIECE(ANODE,"^",9),0)),"^",5)
- QUIT
- +19 SET ^TMP("LR7OG",$JOB,"ACC",TESTNUM)=ANODE
- End DoDot:1
- +20 ;
- +21 IF '$ORDER(^TMP("LR7OG",$JOB,"ACC",0))
- QUIT
- +22 ;
- +23 SET TESTNUM=0
- +24 FOR
- SET TESTNUM=$ORDER(^TMP("LR7OG",$JOB,"ACC",TESTNUM))
- if 'TESTNUM
- QUIT
- SET ANODE=^(TESTNUM)
- Begin DoDot:1
- +25 if '$DATA(^LAB(60,TESTNUM,.1))
- QUIT
- SET PNODE=^(.1)
- IF '("BO"[$PIECE($GET(^(0)),U,3))
- QUIT
- +26 SET PORDER=$PIECE(PNODE,U,6)
- SET PORDER=$SELECT(PORDER:PORDER,1:1/1000000)
- +27 FOR
- if '$DATA(^TMP("LR7OG",$JOB,"TP",CDT,PORDER))
- QUIT
- if TESTNUM=+^(PORDER)
- QUIT
- SET PORDER=PORDER+1
- +28 IF $DATA(^TMP("LR7OG",$JOB,"TP",CDT,PORDER))
- QUIT
- +29 SET LROS="Collected - Specimen In Lab"
- +30 IF LROD1'=""
- SET X=$PIECE(LROD1,U,4)
- SET LROS=$SELECT(X="C":"Collected - Specimen In Lab",X="U":"Uncollected, cancelled",1:"On Collection List")
- +31 SET STATUS=$SELECT($PIECE(ANODE,"^",6)="*Not Performed":"Test Not Performed",1:LROS)
- +32 SET ^TMP("LR7OG",$JOB,"TP",CDT,PORDER)=TESTNUM_U_$PIECE(^LAB(60,TESTNUM,0),U)_U_$PIECE(PNODE,U)_U_$PIECE(PNODE,U,2)_U_"X"_U_$PIECE(^(0),U,5)_U_STATUS
- +33 SET TCNT=TCNT+1
- End DoDot:1
- +34 ;
- +35 KILL ^TMP("LR7OG",$JOB,"ACC")
- +36 IF TCNT
- SET ^TMP("LR7OG",$JOB,"TP",CDT)=ZERO
- +37 ;
- +38 QUIT
- +39 ;
- +40 ;
- VER ; Check Verified Results
- +1 if '$PIECE(ZERO,U,3)
- QUIT
- +2 ;
- +3 IF ALL
- Begin DoDot:1
- +4 SET TESTSUB=1
- +5 FOR
- SET TESTSUB=$ORDER(^LR(LRDFN,"CH",IDT,TESTSUB))
- if TESTSUB<1
- QUIT
- SET TESTNUM=$ORDER(^LAB(60,"C","CH;"_TESTSUB_";1",0))
- DO CHSETUP
- End DoDot:1
- +6 ;
- +7 IF 'ALL
- Begin DoDot:1
- +8 SET TESTSUB=1
- +9 FOR
- SET TESTSUB=$ORDER(^TMP("LR7OG",$JOB,"TMP",TESTSUB))
- if TESTSUB<1
- QUIT
- SET TESTNUM=+^(TESTSUB)
- DO CHSETUP
- End DoDot:1
- +10 ;
- +11 IF TCNT
- Begin DoDot:1
- +12 SET ^TMP("LR7OG",$JOB,"TP",CDT)=ZERO
- SET CMNT=0
- +13 FOR
- SET CMNT=+$ORDER(^LR(LRDFN,LABSUB,IDT,1,CMNT))
- if CMNT<1
- QUIT
- SET ^TMP("LR7OG",$JOB,"TP",CDT,"C",CMNT)=^(CMNT,0)
- SET TCNT=TCNT+1
- End DoDot:1
- +14 QUIT
- +15 ;
- +16 ;
- CHSETUP ; within scope of CH
- +1 ;
- +2 NEW LRX
- +3 IF 'TESTNUM
- QUIT
- +4 if '$DATA(^LAB(60,TESTNUM,.1))
- QUIT
- SET PNODE=^(.1)
- IF '("BO"[$PIECE($GET(^(0)),U,3))
- QUIT
- +5 if '$DATA(^LR(LRDFN,LABSUB,IDT,TESTSUB))
- QUIT
- if '$LENGTH($PIECE(^(TESTSUB),U))
- QUIT
- +6 ;
- +7 SET PORDER=$PIECE(PNODE,U,6)
- SET PORDER=$SELECT(PORDER:PORDER,1:TESTSUB/1000000)
- +8 FOR
- if '$DATA(^TMP("LR7OG",$JOB,"TP",CDT,PORDER))
- QUIT
- if TESTNUM=+^(PORDER)
- QUIT
- SET PORDER=PORDER+1
- +9 ;
- +10 IF $DATA(^TMP("LR7OG",$JOB,"TP",CDT,PORDER))
- QUIT
- +11 ;
- +12 SET LRX=$$TSTRES^LRRPU(LRDFN,LABSUB,IDT,TESTSUB,TESTNUM)
- +13 SET ^TMP("LR7OG",$JOB,"TP",CDT,PORDER)=TESTNUM_U_$PIECE(^LAB(60,TESTNUM,0),U)_U_$PIECE(PNODE,U)_U_$PIECE(PNODE,U,2)_U_$PIECE(PNODE,U,3)_U_$PIECE(^(0),U,5)_U_$PIECE(LRX,U)_U_...
- ... $PIECE(LRX,U,2)_U_$PIECE(LRX,U,5)_U_$$EN^LRLRRVF($PIECE(LRX,U,3),$PIECE(LRX,U,4))_U_$PIECE(LRX,U,6)
- +14 ;
- +15 ; Save performing lab ien in list
- +16 IF $PIECE(LRX,U,6)
- SET ^TMP("LRPLS",$JOB,$PIECE(LRX,U,6))=""
- +17 ;
- +18 SET TCNT=TCNT+1
- +19 IF $DATA(^LAB(60,TESTNUM,1,SPEC,1,0))
- Begin DoDot:1
- +20 SET INTP=0
- +21 FOR
- SET INTP=+$ORDER(^LAB(60,TESTNUM,1,SPEC,1,INTP))
- if INTP<1
- QUIT
- Begin DoDot:2
- +22 SET ^TMP("LR7OG",$JOB,"TP",CDT,PORDER,INTP)=^(INTP,0)
- +23 SET TCNT=TCNT+1
- End DoDot:2
- End DoDot:1
- +24 QUIT
- +25 ;
- +26 ;
- CMT ; Retrieve specimen comments
- +1 ;
- +2 SET ^TMP("LR7OG",$JOB,"TP",CDT)=ZERO
- SET CMNT=0
- +3 FOR
- SET CMNT=+$ORDER(^LR(LRDFN,LABSUB,IDT,1,CMNT))
- if CMNT<1
- QUIT
- SET ^TMP("LR7OG",$JOB,"TP",CDT,"C",CMNT)=^(CMNT,0)
- SET TCNT=TCNT+1
- +4 ;
- +5 QUIT
- +6 ;
- +7 ;
- CHKNP ; Check for NP comments and no verified results.
- +1 ;
- +2 NEW LRCAN,X
- +3 SET LRCAN=0
- +4 FOR
- SET LRCAN=+$ORDER(^LR(LRDFN,"CH",IDT,1,LRCAN))
- if LRCAN<1
- QUIT
- SET X=^(LRCAN,0)
- if (($EXTRACT(X)="*")&(X["Not Performed
- QUIT
- +5 ;
- +6 ; Print if cancel comment and no unverified results.
- +7 IF LRCAN<1
- QUIT
- +8 DO CMT
- +9 DO PRINT^LR7OGMP(.OUTCNT)
- +10 KILL ^TMP("LR7OG",$JOB,"TP")
- +11 QUIT
- +12 ;
- +13 ;
- GETNP ;Set NP flag (Not Performed)
- +1 NEW LRCAN,X,LRNPCNT
- +2 SET LRCAN=0
- +3 FOR
- SET LRCAN=+$ORDER(^LR(LRDFN,"CH",IDT,1,LRCAN))
- if LRCAN<1
- QUIT
- SET X=^(LRCAN,0)
- if (($EXTRACT(X)="*")&(X["Not Performed
- QUIT
- +4 if LRCAN<1
- QUIT
- +5 ;LR*5.2*527: Commenting out line below so that not performed comments
- +6 ; will display if test results are entered but not yet
- +7 ; verified. The non-verified results will not display.
- +8 ;I $G(FORMAT) Q:$O(^LR(LRDFN,"CH",IDT,1))
- +9 SET GOTNP=1
- +10 QUIT