ORPR01 ; slc/dcm/rv - Some day my prints will come ;09/13/06 13:30
;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69,92,260**;Dec 17, 1997;Build 26
LBL ;Print Labels
W !,"Print how many labels? 1// "
R X:DTIME
S:X="" X=1
Q:X["^"
I X'?1N.N!(X>10!(X<1)) W !,"Enter a number between 1 and 10" G LBL
D P2("L",X)
Q
LBL1(SNUM,ORTIMES) ;
;SNUM=1 to suppress form feed, passed to PRINT^ORPR00
;ORTIMES=# of copies
N ORX,OR3,ORPK,ORTCNT,ORPKG
D GET(ORIFN),R1(3,$G(ORTIMES))
Q
CHT ;Print Chart copies
I '$L(ORL) N OR4 S OR4="" D LOC^ORUTL I +$G(OREND) S OREND="" Q
D P2("C")
Q
WRK ;Print Work copies
I '$L(ORL) N OR4 S OR4="" D LOC^ORUTL I +$G(OREND) S OREND="" Q
D P2("W")
Q
SRV ;Print Service copies
D P2("S")
Q
REQ ;Print Requisitions
D P2("R")
Q
REQ1(SNUM,ORSCREEN) ;
;SNUM=1 to suppress form feed, passed to PRINT^ORPR00
N ORX,OR3,ORPK,ORTCNT,ORPKG
D GET(ORIFN),R1(4,,$G(ORSCREEN))
Q
R1(PIECE,ORTIMES,ORSCREEN) ;
;PIECE=4 for requisitions
;PIECE=3 for labels
;ORTIMES=# of copies
;ORSCREEN=Mumps screen to pass to PRINT^ORPR00
N P,ORFMT,ORIGVIEW,ORDLG
Q:'$G(PIECE)
S P=$P(ORX,"^",14),ORDLG=+$P(ORX,"^",5)
I 'P Q
S ORIGVIEW=1,ORFMT=$$GET^XPAR("SYS",$S(PIECE=3:"ORPF WARD LABEL FORMAT",PIECE=4:"ORPF WARD REQUISITION FORMAT",1:""),P,"I")
I PIECE=4,(P=$O(^DIC(9.4,"B","DIETETICS",0))),(ORDLG'=$O(^ORD(101.41,"B","FHW SPECIAL MEAL",0))) S ORFMT=0
I ORFMT<1 W !?2,$C(7),"Cannot print",!?2,$S(PIECE=3:"Labels",PIECE=4:"Requisitions",1:"")_" not set up for orders in the "_$P(^DIC(9.4,P,0),"^")_" package." D READ^ORUTL Q
D CPRINT(ORIFN,$G(ORTIMES),$G(ORSCREEN))
Q
CPRINT(ORIFN,ORTIMES,ORSCREEN) ; Printit
N X
I +$G(ORFMT)'>0 Q
I $G(ORTCNT) D
. I $P($G(^ORD(100.23,ORFMT,0)),"^",4) S ORTCNT=ORTCNT\$P(^(0),"^",4)+1 Q
. S ORTCNT=ORTCNT\75+1
S X=($P(^ORD(100.23,ORFMT,0),"^",2)+$P($G(^OR(100,+ORIFN,2,0)),U,4))
I '$G(ORFIRST1),($Y+X+$S($G(ORTCNT)>0:ORTCNT-1,1:0)>(ORIOSL-3)) D Q:+$G(OREND)
. I $G(ORFOOT) D FOOT(ORFOOT)
. I $G(ORHEAD) D HEAD(ORHEAD)
. I '$G(ORHEAD),'$G(ORFOOT) W @ORIOF
D PRINT^ORPR00(ORFMT,$S($G(ORTIMES):ORTIMES,1:1),0,$G(SNUM),$G(ORSCREEN))
Q
HEAD(FMT) ;
Q:+$G(OREND)
S IOF=ORIOF
D PRINT^ORPR00(FMT,1)
S IOF="!"
Q
Q:+$G(OREND)
S:IOF?1"!"."!" $P(IOF,"!",$S(ORIOSL>200:200,ORIOSL-$Y>1:ORIOSL-$Y,1:2))=""
D PRINT^ORPR00(FMT,1)
I $E(IOST)="C" D
. N DIR
. S DIR(0)="FO^1:1",DIR("A")="Press RETURN to continue or '^' to exit"
. S DIR("?")="Enter '^' to quit present report or '^^' to quit to menu"
. D ^DIR
. I $S($D(DIROUT):1,$D(DUOUT):1,$D(DTOUT):1,1:0) S OREND=1
S IOF=ORIOF
Q
GET(ORIFN) ;Get stuff
N I,ORTX,X
S ORX=^OR(100,ORIFN,0),OR3=$G(^(3)),ORPK=$G(^(4)),ORPKG=$P(ORX,"^",14)
S ORTCNT=0,I=0
D TEXT^ORQ12(.ORTX,ORIFN) F S I=$O(ORTX(I)) Q:I<1 S X=ORTX(I),ORTCNT=ORTCNT+$L(X)
Q
P2(REPORT,ORTIMES) ;Sort 'n print
;REPORT=type of report (L=labels, R=requisitions, S=service copies,
; C=chart copies, W=work copies)
;ORTIMES=# of copies
Q:'$L($G(REPORT))
N NQUE
S NQUE=$S(REPORT="S":1,1:""),REPORT=$S(REPORT="C":"1^^^^",REPORT="L":"^1^^^",REPORT="R":"^^1^^",REPORT="S":"^^^1^",REPORT="W":"^^^^1",1:"")
Q:'$L(REPORT)
I '$G(ORNMBR) S ORNMBR=$$ORDERS^ORCHART("jive") I 'ORNMBR S VALMBCK="" Q
Q:'$O(^TMP("OR",$J,"CURRENT","IDX",0))
N ORAL,ORIFN,ORSEQ,OACTION,ORIDX
K ^TMP("OREPRINT",$J)
D FULL^VALM1
S VALMBCK="R"
F ORIDX=1:1:($L(ORNMBR,",")-1) S ORSEQ=$P(ORNMBR,",",ORIDX) Q:+$G(OREND) D
. I +ORSEQ>0,$D(^TMP("OR",$J,"CURRENT","IDX",ORSEQ)) S ORIFN=+^TMP("OR",$J,"CURRENT","IDX",ORSEQ),OACTION=$P($P(^(ORSEQ),"^"),";",2),^TMP("OREPRINT",$J,ORIDX)=ORIFN_";"_OACTION
I $O(^TMP("OREPRINT",$J,0)) D PRINT^ORPR02(ORVP,"^TMP(""OREPRINT"",$J)",,ORL,REPORT,"1^^^^1^1^1",NQUE,$G(ORTIMES))
K ^TMP("OREPRINT",$J)
Q
ORPR01 ; slc/dcm/rv - Some day my prints will come ;09/13/06 13:30
+1 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**11,69,92,260**;Dec 17, 1997;Build 26
LBL ;Print Labels
+1 WRITE !,"Print how many labels? 1// "
+2 READ X:DTIME
+3 IF X=""
SET X=1
+4 IF X["^"
QUIT
+5 IF X'?1N.N!(X>10!(X<1))
WRITE !,"Enter a number between 1 and 10"
GOTO LBL
+6 DO P2("L",X)
+7 QUIT
LBL1(SNUM,ORTIMES) ;
+1 ;SNUM=1 to suppress form feed, passed to PRINT^ORPR00
+2 ;ORTIMES=# of copies
+3 NEW ORX,OR3,ORPK,ORTCNT,ORPKG
+4 DO GET(ORIFN)
DO R1(3,$GET(ORTIMES))
+5 QUIT
CHT ;Print Chart copies
+1 IF '$LENGTH(ORL)
NEW OR4
SET OR4=""
DO LOC^ORUTL
IF +$GET(OREND)
SET OREND=""
QUIT
+2 DO P2("C")
+3 QUIT
WRK ;Print Work copies
+1 IF '$LENGTH(ORL)
NEW OR4
SET OR4=""
DO LOC^ORUTL
IF +$GET(OREND)
SET OREND=""
QUIT
+2 DO P2("W")
+3 QUIT
SRV ;Print Service copies
+1 DO P2("S")
+2 QUIT
REQ ;Print Requisitions
+1 DO P2("R")
+2 QUIT
REQ1(SNUM,ORSCREEN) ;
+1 ;SNUM=1 to suppress form feed, passed to PRINT^ORPR00
+2 NEW ORX,OR3,ORPK,ORTCNT,ORPKG
+3 DO GET(ORIFN)
DO R1(4,,$GET(ORSCREEN))
+4 QUIT
R1(PIECE,ORTIMES,ORSCREEN) ;
+1 ;PIECE=4 for requisitions
+2 ;PIECE=3 for labels
+3 ;ORTIMES=# of copies
+4 ;ORSCREEN=Mumps screen to pass to PRINT^ORPR00
+5 NEW P,ORFMT,ORIGVIEW,ORDLG
+6 IF '$GET(PIECE)
QUIT
+7 SET P=$PIECE(ORX,"^",14)
SET ORDLG=+$PIECE(ORX,"^",5)
+8 IF 'P
QUIT
+9 SET ORIGVIEW=1
SET ORFMT=$$GET^XPAR("SYS",$SELECT(PIECE=3:"ORPF WARD LABEL FORMAT",PIECE=4:"ORPF WARD REQUISITION FORMAT",1:""),P,"I")
+10 IF PIECE=4
IF (P=$ORDER(^DIC(9.4,"B","DIETETICS",0)))
IF (ORDLG'=$ORDER(^ORD(101.41,"B","FHW SPECIAL MEAL",0)))
SET ORFMT=0
+11 IF ORFMT<1
WRITE !?2,$CHAR(7),"Cannot print",!?2,$SELECT(PIECE=3:"Labels",PIECE=4:"Requisitions",1:"")_" not set up for orders in the "_$PIECE(^DIC(9.4,P,0),"^")_" package."
DO READ^ORUTL
QUIT
+12 DO CPRINT(ORIFN,$GET">GET(ORTIMES),$GET">GET(ORSCREEN))
+13 QUIT
CPRINT(ORIFN,ORTIMES,ORSCREEN) ; Printit
+1 NEW X
+2 IF +$GET(ORFMT)'>0
QUIT
+3 IF $GET(ORTCNT)
Begin DoDot:1
+4 IF $PIECE($GET(^ORD(100.23,ORFMT,0)),"^",4)
SET ORTCNT=ORTCNT\$PIECE(^(0),"^",4)+1
QUIT
+5 SET ORTCNT=ORTCNT\75+1
End DoDot:1
+6 SET X=($PIECE(^ORD(100.23,ORFMT,0),"^",2)+$PIECE($GET(^OR(100,+ORIFN,2,0)),U,4))
+7 IF '$GET(ORFIRST1)
IF ($Y+X+$SELECT($GET(ORTCNT)>0:ORTCNT-1,1:0)>(ORIOSL-3))
Begin DoDot:1
+8 IF $GET(ORFOOT)
DO FOOT(ORFOOT)
+9 IF $GET(ORHEAD)
DO HEAD(ORHEAD)
+10 IF '$GET(ORHEAD)
IF '$GET(ORFOOT)
WRITE @ORIOF
End DoDot:1
IF +$GET(OREND)
QUIT
+11 DO PRINT^ORPR00(ORFMT,$SELECT($GET">GET">GET">GET(ORTIMES):ORTIMES,1:1),0,$GET">GET">GET">GET(SNUM),$GET">GET">GET">GET(ORSCREEN))
+12 QUIT
HEAD(FMT) ;
+1 IF +$GET(OREND)
QUIT
+2 SET IOF=ORIOF
+3 DO PRINT^ORPR00(FMT,1)
+4 SET IOF="!"
+5 QUIT
+1 IF +$GET(OREND)
QUIT
+2 IF IOF?1"!"."!"
SET $PIECE(IOF,"!",$SELECT(ORIOSL>200:200,ORIOSL-$Y>1:ORIOSL-$Y,1:2))=""
+3 DO PRINT^ORPR00(FMT,1)
+4 IF $EXTRACT(IOST)="C"
Begin DoDot:1
+5 NEW DIR
+6 SET DIR(0)="FO^1:1"
SET DIR("A")="Press RETURN to continue or '^' to exit"
+7 SET DIR("?")="Enter '^' to quit present report or '^^' to quit to menu"
+8 DO ^DIR
+9 IF $SELECT($DATA(DIROUT):1,$DATA(DUOUT):1,$DATA(DTOUT):1,1:0)
SET OREND=1
End DoDot:1
+10 SET IOF=ORIOF
+11 QUIT
GET(ORIFN) ;Get stuff
+1 NEW I,ORTX,X
+2 SET ORX=^OR(100,ORIFN,0)
SET OR3=$GET(^(3))
SET ORPK=$GET(^(4))
SET ORPKG=$PIECE(ORX,"^",14)
+3 SET ORTCNT=0
SET I=0
+4 DO TEXT^ORQ12(.ORTX,ORIFN)
FOR
SET I=$ORDER(ORTX(I))
IF I<1
QUIT
SET X=ORTX(I)
SET ORTCNT=ORTCNT+$LENGTH(X)
+5 QUIT
P2(REPORT,ORTIMES) ;Sort 'n print
+1 ;REPORT=type of report (L=labels, R=requisitions, S=service copies,
+2 ; C=chart copies, W=work copies)
+3 ;ORTIMES=# of copies
+4 IF '$LENGTH($GET(REPORT))
QUIT
+5 NEW NQUE
+6 SET NQUE=$SELECT(REPORT="S":1,1:"")
SET REPORT=$SELECT(REPORT="C":"1^^^^",REPORT="L":"^1^^^",REPORT="R":"^^1^^",REPORT="S":"^^^1^",REPORT="W":"^^^^1",1:"")
+7 IF '$LENGTH(REPORT)
QUIT
+8 IF '$GET(ORNMBR)
SET ORNMBR=$$ORDERS^ORCHART("jive")
IF 'ORNMBR
SET VALMBCK=""
QUIT
+9 IF '$ORDER(^TMP("OR",$JOB,"CURRENT","IDX",0))
QUIT
+10 NEW ORAL,ORIFN,ORSEQ,OACTION,ORIDX
+11 KILL ^TMP("OREPRINT",$JOB)
+12 DO FULL^VALM1
+13 SET VALMBCK="R"
+14 FOR ORIDX=1:1:($LENGTH(ORNMBR,",")-1)
SET ORSEQ=$PIECE(ORNMBR,",",ORIDX)
IF +$GET(OREND)
QUIT
Begin DoDot:1
+15 IF +ORSEQ>0
IF $DATA(^TMP("OR",$JOB,"CURRENT","IDX",ORSEQ))
SET ORIFN=+^TMP("OR",$JOB,"CURRENT","IDX",ORSEQ)
SET OACTION=$PIECE($PIECE(^(ORSEQ),"^"),";",2)
SET ^TMP("OREPRINT",$JOB,ORIDX)=ORIFN_";"_OACTION
End DoDot:1
+16 IF $ORDER(^TMP("OREPRINT",$JOB,0))
DO PRINT^ORPR02(ORVP,"^TMP(""OREPRINT"",$J)",,ORL,REPORT,"1^^^^1^1^1",NQUE,$GET(ORTIMES))
+17 KILL ^TMP("OREPRINT",$JOB)
+18 QUIT