- LR7OSUM6 ;VA/DALOI/dcm - Silent Patient cum cont. ;JUL 06, 2010 3:14 PM
- ;;5.2;LAB SERVICE;**121,201,187,286,356,372,1027**;NOV 01, 1997;Build 11
- ;
- LRUDT(X) ;Get output date/time
- N LRTIM,I
- S LRTIM=$E(X,9,12) F I=0:0 Q:$L(LRTIM)=4 S LRTIM=LRTIM_0
- S LRTIM=$S(LRTIM?4"0":" ",1:$E(LRTIM,1,2)_":"_$E(LRTIM,3,4)),LRUDT=$$FMTE^XLFDT($P(X,"."),"5Z")_" "_$J(LRTIM,5)_" "
- Q LRUDT
- ;
- ;
- HEAD ;from LR7OSUM3, LR7OSUM4, LR7OSUM5
- D LRBOT,TOP
- Q
- ;
- ;
- LRBOT ;from LR7OSUM3
- N L1 D LINE^LR7OSUM4
- Y D LINE^LR7OSUM4
- Q
- ;
- ;
- TOP ;from LR7OSUM3
- S LRAG=0
- Q
- ;
- ;
- KILL D HEAD Q
- Q
- ;
- ;
- LRMISC S LRFDT=0,LRPG=1 D TOP
- ;
- MHI S LRMHN=$P(^TMP($J,LRDFN,LRMH),U,1),LRCNT=12 D WR
- ;
- MDT S LRFDT=$O(^TMP($J,LRDFN,"MISC",LRFDT)) G:LRFDT<1 END
- S LRUDT=$$LRUDT(9999999-LRFDT) D LRCNT S LRMIT=0
- ;
- LRMIT S LRMIT=$O(^TMP($J,LRDFN,"MISC",LRFDT,LRMIT)) G:LRMIT="TX" TXT G:LRMIT="" MDT S X=^(LRMIT) G:LRMIT=.1 MSG
- ;
- S LRVAL=$P(X,U,1),LRSPE=$P(X,U,2),LRTEST=$P(X,U,3),X1=$P(X,U,4)
- ;S LRLO="",LRHI=","LRUNT=""
- S LRLO=$P(X,"^",6),LRHI=$P(X,"^",7),LRUNT=$P(X,"^",8)
- S LRSPEM=$S($L(LRSPE):$P(^LAB(61,LRSPE,0),U,1),1:"")
- G:'LRTEST COMM
- S LRNAME=$P(^LAB(60,LRTEST,.1),U,1)
- ;S:$L(LRSPE)&($D(^LAB(60,LRTEST,1,LRSPE,0))) X=^(0),@("LRLO="_$S($L($P(X,U,2)):$P(X,U,2),1:"""""")),@("LRHI="_$S($L($P(X,U,3)):$P(X,U,3),1:"""""")),LRUNT=$P(X,U,7)
- ;
- WR1 D LINE^LR7OSUM4
- S LRREF=$$EN^LRLRRVF(LRLO,LRHI)
- S ^TMP("LRC",$J,GCNT,0)=$$S^LR7OS(1,CCNT,LRUDT)_$$S^LR7OS(19,CCNT,$E(LRSPEM,1,16))_$$S^LR7OS(37,CCNT,LRNAME_":")_$$S^LR7OS(50,CCNT,LRVAL_" "_X1_" "_LRUNT)_$$S^LR7OS(67,CCNT,LRREF)
- S:'$P($G(^TMP("LRT",$J,LRNAME)),"^",2) $P(^(LRNAME),"^",2)=GCNT
- K LRREF
- G LRMIT
- ;
- ;
- MSG D LINE^LR7OSUM4,LINE^LR7OSUM4
- X X ;Need to see what is in X
- G LRMIT
- ;
- ;
- COMM D LN
- S ^TMP("LRC",$J,GCNT,0)=$$S^LR7OS(1,CCNT,"COMMENT: "_LRVAL)
- G LRMIT
- ;
- ;
- WR ;
- D LINE^LR7OSUM4
- S X=GIOM/2-($L(LRMHN)/2+5)
- S ^TMP("LRC",$J,GCNT,0)=$$S^LR7OS(X,CCNT,"---- "_LRMHN_" ----"),^TMP("LRH",$J,LRMHN)=GCNT
- D LINE^LR7OSUM4
- D LN S ^TMP("LRC",$J,GCNT,0)=$$S^LR7OS(4,CCNT,"DATE TIME SPECIMEN")_$$S^LR7OS(37,CCNT,"TEST")_$$S^LR7OS(50,CCNT,"VALUE")_$$S^LR7OS(64,CCNT,"Ref ranges")
- D LN S X="",$P(X,"-",GIOM)="",^TMP("LRC",$J,GCNT,0)=X
- Q
- ;
- ;
- TXT S I=0
- F S I=$O(^TMP($J,LRDFN,"MISC",LRFDT,"TX",I)) Q:I<1 S GCNT=GCNT+1,^TMP("LRC",$J,GCNT,0)=^(I,0)
- G LRMIT
- ;
- ;
- END S X="",$P(X,"=",GIOM)="",GCNT=GCNT+1,^TMP("LRC",$J,GCNT,0)=X
- D LRBOT S LRLO=""
- K LRSB,LRMISC
- Q
- ;
- ;
- PRE ;from LR7OSUM3
- Q:$D(^TMP($J,LRDFN,"MISC"))'=11
- S LRMISC=1,LRPG=0,LRMH="MISC"
- G LRMISC
- ;
- ;
- LRCNT ;
- S LRCNT=0,I=0
- F S I=$O(^TMP($J,LRDFN,LRMH,LRFDT,I)) Q:I<1 S LRCNT=LRCNT+1
- S LRCTN=0
- I $D(^TMP($J,LRDFN,LRMH,LRFDT,"TX")) D
- . S J=0
- . F S J=$O(^TMP($J,LRDFN,LRMH,LRFDT,"TX",J)) Q:J<1 S LRCTN=LRCTN+1
- S LRCNT=LRCNT*2+5+LRCTN
- Q
- ;
- ;
- LN ;
- S CCNT=1,GCNT=GCNT+1
- Q
- LR7OSUM6 ;VA/DALOI/dcm - Silent Patient cum cont. ;JUL 06, 2010 3:14 PM
- +1 ;;5.2;LAB SERVICE;**121,201,187,286,356,372,1027**;NOV 01, 1997;Build 11
- +2 ;
- LRUDT(X) ;Get output date/time
- +1 NEW LRTIM,I
- +2 SET LRTIM=$EXTRACT(X,9,12)
- FOR I=0:0
- IF $LENGTH(LRTIM)=4
- QUIT
- SET LRTIM=LRTIM_0
- +3 SET LRTIM=$SELECT(LRTIM?4"0":" ",1:$EXTRACT(LRTIM,1,2)_":"_$EXTRACT(LRTIM,3,4))
- SET LRUDT=$$FMTE^XLFDT($PIECE(X,"."),"5Z")_" "_$JUSTIFY(LRTIM,5)_" "
- +4 QUIT LRUDT
- +5 ;
- +6 ;
- HEAD ;from LR7OSUM3, LR7OSUM4, LR7OSUM5
- +1 DO LRBOT
- DO TOP
- +2 QUIT
- +3 ;
- +4 ;
- LRBOT ;from LR7OSUM3
- +1 NEW L1
- DO LINE^LR7OSUM4
- Y DO LINE^LR7OSUM4
- +1 QUIT
- +2 ;
- +3 ;
- TOP ;from LR7OSUM3
- +1 SET LRAG=0
- +2 QUIT
- +3 ;
- +4 ;
- KILL DO HEAD
- QUIT
- +1 QUIT
- +2 ;
- +3 ;
- LRMISC SET LRFDT=0
- SET LRPG=1
- DO TOP
- +1 ;
- MHI SET LRMHN=$PIECE(^TMP($JOB,LRDFN,LRMH),U,1)
- SET LRCNT=12
- DO WR
- +1 ;
- MDT SET LRFDT=$ORDER(^TMP($JOB,LRDFN,"MISC",LRFDT))
- IF LRFDT<1
- GOTO END
- +1 SET LRUDT=$$LRUDT(9999999-LRFDT)
- DO LRCNT
- SET LRMIT=0
- +2 ;
- LRMIT SET LRMIT=$ORDER(^TMP($JOB,LRDFN,"MISC",LRFDT,LRMIT))
- IF LRMIT="TX"
- GOTO TXT
- IF LRMIT=""
- GOTO MDT
- SET X=^(LRMIT)
- IF LRMIT=.1
- GOTO MSG
- +1 ;
- +2 SET LRVAL=$PIECE(X,U,1)
- SET LRSPE=$PIECE(X,U,2)
- SET LRTEST=$PIECE(X,U,3)
- SET X1=$PIECE(X,U,4)
- +3 ;S LRLO="",LRHI=","LRUNT=""
- +4 SET LRLO=$PIECE(X,"^",6)
- SET LRHI=$PIECE(X,"^",7)
- SET LRUNT=$PIECE(X,"^",8)
- +5 SET LRSPEM=$SELECT($LENGTH(LRSPE):$PIECE(^LAB(61,LRSPE,0),U,1),1:"")
- +6 IF 'LRTEST
- GOTO COMM
- +7 SET LRNAME=$PIECE(^LAB(60,LRTEST,.1),U,1)
- +8 ;S:$L(LRSPE)&($D(^LAB(60,LRTEST,1,LRSPE,0))) X=^(0),@("LRLO="_$S($L($P(X,U,2)):$P(X,U,2),1:"""""")),@("LRHI="_$S($L($P(X,U,3)):$P(X,U,3),1:"""""")),LRUNT=$P(X,U,7)
- +9 ;
- WR1 DO LINE^LR7OSUM4
- +1 SET LRREF=$$EN^LRLRRVF(LRLO,LRHI)
- +2 SET ^TMP("LRC",$JOB,GCNT,0)=$$S^LR7OS(1,CCNT,LRUDT)_$$S^LR7OS(19,CCNT,$EXTRACT(LRSPEM,1,16))_$$S^LR7OS(37,CCNT,LRNAME_":")_$$S^LR7OS(50,CCNT,LRVAL_" "_X1_" "_LRUNT)_$$S^LR7OS(67,CCNT,LRREF)
- +3 IF '$PIECE($GET(^TMP("LRT",$JOB,LRNAME)),"^",2)
- SET $PIECE(^(LRNAME),"^",2)=GCNT
- +4 KILL LRREF
- +5 GOTO LRMIT
- +6 ;
- +7 ;
- MSG DO LINE^LR7OSUM4
- DO LINE^LR7OSUM4
- +1 ;Need to see what is in X
- XECUTE X
- +2 GOTO LRMIT
- +3 ;
- +4 ;
- COMM DO LN
- +1 SET ^TMP("LRC",$JOB,GCNT,0)=$$S^LR7OS(1,CCNT,"COMMENT: "_LRVAL)
- +2 GOTO LRMIT
- +3 ;
- +4 ;
- WR ;
- +1 DO LINE^LR7OSUM4
- +2 SET X=GIOM/2-($LENGTH(LRMHN)/2+5)
- +3 SET ^TMP("LRC",$JOB,GCNT,0)=$$S^LR7OS(X,CCNT,"---- "_LRMHN_" ----")
- SET ^TMP("LRH",$JOB,LRMHN)=GCNT
- +4 DO LINE^LR7OSUM4
- +5 DO LN
- SET ^TMP("LRC",$JOB,GCNT,0)=$$S^LR7OS(4,CCNT,"DATE TIME SPECIMEN")_$$S^LR7OS(37,CCNT,"TEST")_$$S^LR7OS(50,CCNT,"VALUE")_$$S^LR7OS(64,CCNT,"Ref ranges")
- +6 DO LN
- SET X=""
- SET $PIECE(X,"-",GIOM)=""
- SET ^TMP("LRC",$JOB,GCNT,0)=X
- +7 QUIT
- +8 ;
- +9 ;
- TXT SET I=0
- +1 FOR
- SET I=$ORDER(^TMP($JOB,LRDFN,"MISC",LRFDT,"TX",I))
- IF I<1
- QUIT
- SET GCNT=GCNT+1
- SET ^TMP("LRC",$JOB,GCNT,0)=^(I,0)
- +2 GOTO LRMIT
- +3 ;
- +4 ;
- END SET X=""
- SET $PIECE(X,"=",GIOM)=""
- SET GCNT=GCNT+1
- SET ^TMP("LRC",$JOB,GCNT,0)=X
- +1 DO LRBOT
- SET LRLO=""
- +2 KILL LRSB,LRMISC
- +3 QUIT
- +4 ;
- +5 ;
- PRE ;from LR7OSUM3
- +1 IF $DATA(^TMP($JOB,LRDFN,"MISC"))'=11
- QUIT
- +2 SET LRMISC=1
- SET LRPG=0
- SET LRMH="MISC"
- +3 GOTO LRMISC
- +4 ;
- +5 ;
- LRCNT ;
- +1 SET LRCNT=0
- SET I=0
- +2 FOR
- SET I=$ORDER(^TMP($JOB,LRDFN,LRMH,LRFDT,I))
- IF I<1
- QUIT
- SET LRCNT=LRCNT+1
- +3 SET LRCTN=0
- +4 IF $DATA(^TMP($JOB,LRDFN,LRMH,LRFDT,"TX"))
- Begin DoDot:1
- +5 SET J=0
- +6 FOR
- SET J=$ORDER(^TMP($JOB,LRDFN,LRMH,LRFDT,"TX",J))
- IF J<1
- QUIT
- SET LRCTN=LRCTN+1
- End DoDot:1
- +7 SET LRCNT=LRCNT*2+5+LRCTN
- +8 QUIT
- +9 ;
- +10 ;
- LN ;
- +1 SET CCNT=1
- SET GCNT=GCNT+1
- +2 QUIT