ORPRS03 ; slc/dcm - (@) Formerly known as prints ;12/7/00 13:15
;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69,92**;Dec 17, 1997
EN ;Print orders
I $$S^%ZTLOAD S (ZTSTOP,OREND,DIROUT)=1 W !!,"TASKED Report stopped by "_$P(^VA(200,DUZ,0),U) Q
N DIRUT,DUOUT,ORBOT,ORSPG,ORLINE,YENKO,SHELBY,ORLST,ORREQ
N ORAGE,ORDOB,ORL,ORNP,ORPNM,ORPV,ORSEX,ORSSN,ORTS,ORWARD
I $G(ORNO),'$O(^TMP("ORR",$J,ORLIST,0)) Q
S YENKO=$$GET^XPAR("ALL","OR PRINT NO ORDERS ON SUM",1,"I"),SHELBY=$O(^TMP("ORR",$J,ORLIST,0))
;YENKO=0 or "", if you don't want to print a page when no orders are present
; 1 to print the page with "NO ORDERS" on it.
I 'YENKO,'SHELBY Q
S $P(ORLINE,"=",IOM+1)="",ORBOT=$S(IOSL<254:IOSL,1:254),Y=+ORVP
D END^ORUDPA
S ORREQ("O")=""
I '$G(ORSPG) S ORSPG=1 D
. I $E(IOST)="C" D CTOP^ORPRS05(ORSPG,$G(ORSEND),$G(ORSPG("EOP")),ORTIT,ORSHORT,ORL(0),ORL(1),ORWARD,ORPNM,ORSSN,ORDOB,ORAGE,$G(ORPD)) Q
. D PTOP^ORPRS05(ORSPG,ORTIT,ORSHORT,ORSSTRT,ORSSTOP)
I '$O(^TMP("ORR",$J,ORLIST,0)) W !!?3,"No orders.",!!! D Q
. F I=$Y:1:ORBOT-5 W !
. I $E(IOST)="C" D Q
.. K Y F Q:$G(Y)["^"!($G(Y)=-1) K DIR S DIR(0)="FO^1;2",DIR("A")="Press RETURN to continue or '^' to exit" D ^DIR S:Y="" Y=-1 K DIR Q:Y<0 D
... I Y'["^" W $C(7),!!,"Enter '^' to stop listing for current patient",!,"and '^^' to stop the entire report, or RETURN to continue"
. D PBOT^ORPRS05(1,ORBOT,ORPNM,ORSSN,ORDOB,ORAGE,$G(ORPD),ORL(0),ORL(1))
. W @IOF
. I '$G(ORSEND) Q
. W !!!!!?(IOM-44)\2,"***** E N D O F R E P O R T ****",!
. W @IOF
. K ORSEND,ORSPG,ORCONT
S (ORLST,OREND)=0
F S ORLST=$O(^TMP("ORR",$J,ORLIST,ORLST)) Q:'ORLST!$D(DUOUT) D PRT^ORPRS04
K ORSEND,ORSPG,ORCONT
Q
ONE(ORIFN,ORSEQ,LENGTH) ;Single line format
N ORTX,OREL,ORSTS,ORASTS,ORSTRT,ORSTOP,ORFLAG,I,Z,X3
Q:'$D(^OR(100,ORIFN,3))
S ORSEQ=$G(ORSEQ),X3=^(3),ORSTS=$P(X3,"^",3),ORSTRT=$P(^(0),"^",8),ORSTOP=$P(^(0),"^",9),OREL=$S(ORSTS=11:1,1:"")
I $G(OACTION) I $D(^OR(100,ORIFN,8,OACTION,0)) S ORASTS=$P(^(0),"^",15)
D:'$D(ORTERM(5)) TERM^ORPRS01(IOST)
S ORFLAG=$$FLAG(ORIFN,ORTERM(5))
W !
S X=$P(ORTERM(5),"^")
S:ORFLAG X=$$INV^ORU
W ORSEQ_$S($L(ORSEQ)=1:" ",1:"")
S X=$P(ORTERM(5),"^",2)
S:ORFLAG X=$$INV^ORU
S X=$P(ORTERM(7),"^")
S:OREL X=$$INV^ORU
W $S($G(ORASTS)!(ORSTS):" "_$P(^ORD(100.01,$S($G(ORASTS):ORASTS,1:ORSTS),.1),"^"),1:" ")
S:'$G(LENGTH) LENGTH=45
D TEXT^ORQ12(.ORTX,$S($G(OACTION):ORIFN_";"_OACTION,1:ORIFN),LENGTH)
F I=0:0 S I=$O(ORTX(I)) Q:'I W:I>1 ! W ?14,ORTX(I)
S Z=$S($D(ORDAD):$S(ORDAD:2,1:1),1:1)
I Z=2 S ORSTRT=$$FMTE^XLFDT(ORSTRT,"2M"),ORSTOP=$$FMTE^XLFDT(ORSTOP,"2M") W:($X+9+$L(ORSTRT)+$S($L(ORSTOP):$L(ORSTOP)+8,1:0))>(LENGTH+14) !?14 W " Start: "_ORSTRT W:$L(ORSTOP) " Stop: "_ORSTOP
I OREL S X=$P(ORTERM(7),"^",3),X=$$INV^ORU
Q
PRT1(ORIFN,LENGTH) ;For kids sake
;ORIFN=Internal order # of parent order
;LENGTH=column width length
N ORCHLD
S ORCHLD=0
F S ORCHLD=$O(^OR(100,ORIFN,2,ORCHLD)) Q:ORCHLD<1 D:(($Y+5)>ORIOSL) WAIT Q:$G(OREND) D ONE(ORCHLD," ",$G(LENGTH))
Q
FLAG(ORIFN,INVERSE) ;Is order flagged?
S X=""
I $D(^OR(100,ORIFN,6)),$P(^(6),"^"),$L($P($G(INVERSE),"^")),$L($P($G(INVERSE),"^",2)) S X=1
Q X
WAIT ;
I $G(ORFOOT) D Q
. W ?(IOM-15),"(continued...)"
. D FOOT^ORPR01(ORFOOT)
. I '$G(OREND),$G(ORHEAD) D HEAD^ORPR01(ORHEAD) W !,"(...continued)"
Q:$E(IOST)'="C"
D PGBRK^ORUHDR,TIT^ORUHDR:$D(ORTIT)
W:'$D(ORTIT)&($G(ORIOF)]"") @ORIOF
Q
ORPRS03 ; slc/dcm - (@) Formerly known as prints ;12/7/00 13:15
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69,92**;Dec 17, 1997
EN ;Print orders
+1 IF $$S^%ZTLOAD
SET (ZTSTOP,OREND,DIROUT)=1
WRITE !!,"TASKED Report stopped by "_$PIECE(^VA(200,DUZ,0),U)
QUIT
+2 NEW DIRUT,DUOUT,ORBOT,ORSPG,ORLINE,YENKO,SHELBY,ORLST,ORREQ
+3 NEW ORAGE,ORDOB,ORL,ORNP,ORPNM,ORPV,ORSEX,ORSSN,ORTS,ORWARD
+4 IF $GET(ORNO)
IF '$ORDER(^TMP("ORR",$JOB,ORLIST,0))
QUIT
+5 SET YENKO=$$GET^XPAR("ALL","OR PRINT NO ORDERS ON SUM",1,"I")
SET SHELBY=$ORDER(^TMP("ORR",$JOB,ORLIST,0))
+6 ;YENKO=0 or "", if you don't want to print a page when no orders are present
+7 ; 1 to print the page with "NO ORDERS" on it.
+8 IF 'YENKO
IF 'SHELBY
QUIT
+9 SET $PIECE(ORLINE,"=",IOM+1)=""
SET ORBOT=$SELECT(IOSL<254:IOSL,1:254)
SET Y=+ORVP
+10 DO END^ORUDPA
+11 SET ORREQ("O")=""
+12 IF '$GET(ORSPG)
SET ORSPG=1
Begin DoDot:1
+13 IF $EXTRACT(IOST)="C"
DO CTOP^ORPRS05(ORSPG,$GET(ORSEND),$GET(ORSPG("EOP")),ORTIT,ORSHORT,ORL(0),ORL(1),ORWARD,ORPNM,ORSSN,ORDOB,ORAGE,$GET(ORPD))
QUIT
+14 DO PTOP^ORPRS05(ORSPG,ORTIT,ORSHORT,ORSSTRT,ORSSTOP)
End DoDot:1
+15 IF '$ORDER(^TMP("ORR",$JOB,ORLIST,0))
WRITE !!?3,"No orders.",!!!
Begin DoDot:1
+16 FOR I=$Y:1:ORBOT-5
WRITE !
+17 IF $EXTRACT(IOST)="C"
Begin DoDot:2
+18 KILL Y
FOR
IF $GET(Y)["^"!($GET(Y)=-1)
QUIT
KILL DIR
SET DIR(0)="FO^1;2"
SET DIR("A")="Press RETURN to continue or '^' to exit"
DO ^DIR
IF Y=""
SET Y=-1
KILL DIR
IF Y<0
QUIT
Begin DoDot:3
+19 IF Y'["^"
WRITE $CHAR(7),!!,"Enter '^' to stop listing for current patient",!,"and '^^' to stop the entire report, or RETURN to continue"
End DoDot:3
End DoDot:2
QUIT
+20 DO PBOT^ORPRS05(1,ORBOT,ORPNM,ORSSN,ORDOB,ORAGE,$GET(ORPD),ORL(0),ORL(1))
+21 WRITE @IOF
+22 IF '$GET(ORSEND)
QUIT
+23 WRITE !!!!!?(IOM-44)\2,"***** E N D O F R E P O R T ****",!
+24 WRITE @IOF
+25 KILL ORSEND,ORSPG,ORCONT
End DoDot:1
QUIT
+26 SET (ORLST,OREND)=0
+27 FOR
SET ORLST=$ORDER(^TMP("ORR",$JOB,ORLIST,ORLST))
IF 'ORLST!$DATA(DUOUT)
QUIT
DO PRT^ORPRS04
+28 KILL ORSEND,ORSPG,ORCONT
+29 QUIT
ONE(ORIFN,ORSEQ,LENGTH) ;Single line format
+1 NEW ORTX,OREL,ORSTS,ORASTS,ORSTRT,ORSTOP,ORFLAG,I,Z,X3
+2 IF '$DATA(^OR(100,ORIFN,3))
QUIT
+3 SET ORSEQ=$GET(ORSEQ)
SET X3=^(3)
SET ORSTS=$PIECE(X3,"^",3)
SET ORSTRT=$PIECE(^(0),"^",8)
SET ORSTOP=$PIECE(^(0),"^",9)
SET OREL=$SELECT(ORSTS=11:1,1:"")
+4 IF $GET(OACTION)
IF $DATA(^OR(100,ORIFN,8,OACTION,0))
SET ORASTS=$PIECE(^(0),"^",15)
+5 IF '$DATA(ORTERM(5))
DO TERM^ORPRS01(IOST)
+6 SET ORFLAG=$$FLAG(ORIFN,ORTERM(5))
+7 WRITE !
+8 SET X=$PIECE(ORTERM(5),"^")
+9 IF ORFLAG
SET X=$$INV^ORU
+10 WRITE ORSEQ_$SELECT($LENGTH(ORSEQ)=1:" ",1:"")
+11 SET X=$PIECE(ORTERM(5),"^",2)
+12 IF ORFLAG
SET X=$$INV^ORU
+13 SET X=$PIECE(ORTERM(7),"^")
+14 IF OREL
SET X=$$INV^ORU
+15 WRITE $SELECT($GET(ORASTS)!(ORSTS):" "_$PIECE(^ORD(100.01,$SELECT($GET(ORASTS):ORASTS,1:ORSTS),.1),"^"),1:" ")
+16 IF '$GET(LENGTH)
SET LENGTH=45
+17 DO TEXT^ORQ12(.ORTX,$SELECT($GET(OACTION):ORIFN_";"_OACTION,1:ORIFN),LENGTH)
+18 FOR I=0:0
SET I=$ORDER(ORTX(I))
IF 'I
QUIT
IF I>1
WRITE !
WRITE ?14,ORTX(I)
+19 SET Z=$SELECT($DATA(ORDAD):$SELECT(ORDAD:2,1:1),1:1)
+20 IF Z=2
SET ORSTRT=$$FMTE^XLFDT(ORSTRT,"2M")
SET ORSTOP=$$FMTE^XLFDT(ORSTOP,"2M")
IF ($X+9+$LENGTH(ORSTRT)+$SELECT($LENGTH(ORSTOP)
WRITE !?14
WRITE " Start: "_ORSTRT
IF $LENGTH(ORSTOP)
WRITE " Stop: "_ORSTOP
+21 IF OREL
SET X=$PIECE(ORTERM(7),"^",3)
SET X=$$INV^ORU
+22 QUIT
PRT1(ORIFN,LENGTH) ;For kids sake
+1 ;ORIFN=Internal order # of parent order
+2 ;LENGTH=column width length
+3 NEW ORCHLD
+4 SET ORCHLD=0
+5 FOR
SET ORCHLD=$ORDER(^OR(100,ORIFN,2,ORCHLD))
IF ORCHLD<1
QUIT
IF (($Y+5)>ORIOSL)
DO WAIT
IF $GET(OREND)
QUIT
DO ONE(ORCHLD," ",$GET(LENGTH))
+6 QUIT
FLAG(ORIFN,INVERSE) ;Is order flagged?
+1 SET X=""
+2 IF $DATA(^OR(100,ORIFN,6))
IF $PIECE(^(6),"^")
IF $LENGTH($PIECE($GET(INVERSE),"^"))
IF $LENGTH($PIECE($GET(INVERSE),"^",2))
SET X=1
+3 QUIT X
WAIT ;
+1 IF $GET(ORFOOT)
Begin DoDot:1
+2 WRITE ?(IOM-15),"(continued...)"
+3 DO FOOT^ORPR01(ORFOOT)
+4 IF '$GET(OREND)
IF $GET(ORHEAD)
DO HEAD^ORPR01(ORHEAD)
WRITE !,"(...continued)"
End DoDot:1
QUIT
+5 IF $EXTRACT(IOST)'="C"
QUIT
+6 DO PGBRK^ORUHDR
IF $DATA(ORTIT)
DO TIT^ORUHDR
+7 IF '$DATA(ORTIT)&($GET(ORIOF)]"")
WRITE @ORIOF
+8 QUIT