RALWKL1 ;HISC/GJC-Workload Reports By Functional Area ;4/12/96 10:18
;;5.0;Radiology/Nuclear Medicine;;Mar 16, 1998
EN1 ; Entry point
S X="NOW",%DT="T" D ^%DT K %DT D D^RAUTL S RATDY=Y,$P(RALN,"-",81)=""
S BEGDATE("X")=$$FMTE^XLFDT(BEGDATE,1)
S ENDDATE("X")=$$FMTE^XLFDT(ENDDATE,1),RAPG=0 W:$Y>0 @IOF
I RASUM D EN1^RALWKL4 Q ; Do summary report quit.
S RADIV=$O(^TMP($J,"RA","")),RAIMG=$O(^TMP($J,"RA",RADIV,""))
S RADIV="" F S RADIV=$O(^TMP($J,"RA",RADIV)) Q:RADIV']"" D Q:RAXIT
. S RAIMG="" F S RAIMG=$O(^TMP($J,"RA",RADIV,RAIMG)) Q:RAIMG']"" D Q:RAXIT
.. S RAFLD=""
.. F S RAFLD=$O(^TMP($J,"RA",RADIV,RAIMG,RAFLD)) Q:RAFLD']"" D Q:RAXIT
... S RATTL0=$G(^TMP($J,"RA",RADIV,RAIMG,RAFLD)),RAWWU1=$P(RATTL0,"^",5)
... S RATTL1=0 F I=1:1:4 S RATTL1=RATTL1+$P(RATTL0,"^",I)
... S RAMIS=0
... F S RAMIS=$O(^TMP($J,"RA",RADIV,RAIMG,RAFLD,RAMIS)) Q:RAMIS'>0 D Q:RAXIT
.... Q:RAMIS'<25&(RAMIS'=27)&(RAMIS'=99) S RAPRC=""
.... F S RAPRC=$O(^TMP($J,"RA",RADIV,RAIMG,RAFLD,RAMIS,RAPRC)) Q:RAPRC']"" D Q:RAXIT
..... D PRT1
..... Q
.... Q
... D:'RAXIT TOT
... Q
.. D:'RAXIT IMGCHK^RALWKL2
.. Q
. D:'RAXIT&(RADIFLG(RADIV)>1) DIVCHK^RALWKL2
. Q
Q
PRT1 ; Tabulate the data for non summary report, output the data.
S RATTL2=$G(^TMP($J,"RA",RADIV,RAIMG,RAFLD,RAMIS,RAPRC))
S RAWWU2=$P(RATTL2,"^",5),RATTL3=0 ; Total up the first four pieces.
F I=1:1:4 S RATTL3=RATTL3+$P(RATTL2,"^",I)
D:'RAPG HD Q:RAXIT
I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() D:'RAXIT HD Q:RAXIT
W !,$E(RAPRC,1,28),?30,$J(+$P(RATTL2,"^"),5),?36,$J(+$P(RATTL2,"^",2),5)
W ?42,$J(+$P(RATTL2,"^",3),5),?48,$J(+$P(RATTL2,"^",4),5)
W ?55,$J(RATTL3,5),?62,$J($S(RATTL1:(100*RATTL3)/RATTL1,1:0),5,1)
I $D(RAFL) D
. W ?68,$J(RAWWU2,5),?75,$J($S(RAWWU1:(RAWWU2*100)/RAWWU1,1:0),5,1)
. Q
Q
TOT ; Total within Service, Ward, Clinic, etc.
I 'RATTL1,('RAWWU1) Q
I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() D:'RAXIT HD Q:RAXIT
W !!,$G(RATITLE)_" Total"
W ?30,$J(+$P(RATTL0,"^"),5),?36,$J(+$P(RATTL0,"^",2),5)
W ?42,$J(+$P(RATTL0,"^",3),5),?48,$J(+$P(RATTL0,"^",4),5)
W ?55,$J(RATTL1,5)
W:$D(RAFL) ?68,$J(RAWWU1,5)
W !,RALN N RA1 S RA1=$O(^TMP($J,"RA",RADIV,RAIMG,RAFLD))
I RA1]"" N RAFLD S RAFLD=RA1,RAXIT=$$EOS^RAUTL5() D:'RAXIT HD
Q
HD ; Header
I RAPG!($E(IOST,1,2)="C-") W:$Y>0 @IOF
S RAPG=RAPG+1
W !?5,">>> "_RATITLE_" Workload Report <<<"
W ?70,"Page: ",RAPG
W !!?4,"Division: ",$S($D(^DIC(4,+RADIV,0)):$P(^(0),U,1),1:"UNKNOWN")
W:'$D(RADIVSUM) !,"Imaging Type: ",$S($D(^RA(79.2,+$P(RAIMG,"-",2),0)):$P(^(0),U,1),1:"UNKNOWN")
W ?52,"For period: ",?64,BEGDATE("X"),?77,"to"
W !?4,"Run Date: ",RATDY,?64,ENDDATE("X")
W !!?32,"-------Examinations------",!?62,"% of" W:$D(RAFL) ?75," % of"
W !,$S('RASUM:"Procedure",1:RATITLE),?30," Inpt",?36," Opt"
W ?42," Res",?48,"Other",?55,"Total",?62,"Exams"
W:$D(RAFL) ?68," WWU",?75," WWU"
W !,RALN
W:$D(RADIVSUM) !?10,"(Division Summary)" ; set in DIVCHK^RALWKL2
W:$D(RAIMGSUM) !?10,"(Imaging Type Summary)" ; set in IMGCHK^RALWKL2
W:'$D(RADIVSUM)&('$D(RAIMGSUM))&('RASUM) !?10,RATITLE,": ",$G(RAFLD)
I $D(ZTQUEUED) D STOPCHK^RAUTL9 S:$G(ZTSTOP)=1 RAXIT=1
Q
DISPXAM(A) ; Display Examination Statuses which meet certain criteria.
; 'A' is the equivalent of the variable 'RACRT'. This code is related
; to the 'CRIT^RAUTL1' subroutine. This sets up the RACRT local array
; according to I-Type.
N RA,RAHD,UNDRLN,X,Y,Z
S RAHD(0)="The entries printed for this report will be based only"
S RAHD(1)="on exams that are in one of the following statuses:"
W !!?(IOM-$L(RAHD(0))\2),RAHD(0),!?(IOM-$L(RAHD(1))\2),RAHD(1)
S X="" F S X=$O(^TMP($J,"RA I-TYPE",X)) Q:X']"" D Q:RAXIT
. I $D(^RA(72,"AA",X)) K UNDRLN S Y="" D
.. I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() Q:RAXIT W @IOF
.. S $P(UNDRLN,"-",($L(X)+1))="" W !!?10,X,!?10,UNDRLN
.. F S Y=$O(^RA(72,"AA",X,Y)) Q:Y']"" D Q:RAXIT
... S Z=0 F S Z=$O(^RA(72,"AA",X,Y,Z)) Q:'Z D Q:RAXIT
.... S RA(0)=$G(^RA(72,Z,0)),RA(.3)=$G(^RA(72,Z,.3))
.... S RA(.3,A)=$P(RA(.3),"^",A)
.... I RA(0)]"",(RA(.3)]""),(RA(.3,A)]""),("Yy"[RA(.3,A)) D
..... S RACRT(Z)=X ; Where 'X' is the I-Type
..... I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() Q:RAXIT D
...... W @IOF,!?10,X,!?10,UNDRLN
...... Q
..... W !?15,$P(RA(0),"^")
..... Q
.... Q
... Q
.. Q
. Q
Q
RALWKL1 ;HISC/GJC-Workload Reports By Functional Area ;4/12/96 10:18
+1 ;;5.0;Radiology/Nuclear Medicine;;Mar 16, 1998
EN1 ; Entry point
+1 SET X="NOW"
SET %DT="T"
DO ^%DT
KILL %DT
DO D^RAUTL
SET RATDY=Y
SET $PIECE(RALN,"-",81)=""
+2 SET BEGDATE("X")=$$FMTE^XLFDT(BEGDATE,1)
+3 SET ENDDATE("X")=$$FMTE^XLFDT(ENDDATE,1)
SET RAPG=0
IF $Y>0
WRITE @IOF
+4 ; Do summary report quit.
IF RASUM
DO EN1^RALWKL4
QUIT
+5 SET RADIV=$ORDER(^TMP($JOB,"RA",""))
SET RAIMG=$ORDER(^TMP($JOB,"RA",RADIV,""))
+6 SET RADIV=""
FOR
SET RADIV=$ORDER(^TMP($JOB,"RA",RADIV))
IF RADIV']""
QUIT
Begin DoDot:1
+7 SET RAIMG=""
FOR
SET RAIMG=$ORDER(^TMP($JOB,"RA",RADIV,RAIMG))
IF RAIMG']""
QUIT
Begin DoDot:2
+8 SET RAFLD=""
+9 FOR
SET RAFLD=$ORDER(^TMP($JOB,"RA",RADIV,RAIMG,RAFLD))
IF RAFLD']""
QUIT
Begin DoDot:3
+10 SET RATTL0=$GET(^TMP($JOB,"RA",RADIV,RAIMG,RAFLD))
SET RAWWU1=$PIECE(RATTL0,"^",5)
+11 SET RATTL1=0
FOR I=1:1:4
SET RATTL1=RATTL1+$PIECE(RATTL0,"^",I)
+12 SET RAMIS=0
+13 FOR
SET RAMIS=$ORDER(^TMP($JOB,"RA",RADIV,RAIMG,RAFLD,RAMIS))
IF RAMIS'>0
QUIT
Begin DoDot:4
+14 IF RAMIS'<25&(RAMIS'=27)&(RAMIS'=99)
QUIT
SET RAPRC=""
+15 FOR
SET RAPRC=$ORDER(^TMP($JOB,"RA",RADIV,RAIMG,RAFLD,RAMIS,RAPRC))
IF RAPRC']""
QUIT
Begin DoDot:5
+16 DO PRT1
+17 QUIT
End DoDot:5
IF RAXIT
QUIT
+18 QUIT
End DoDot:4
IF RAXIT
QUIT
+19 IF 'RAXIT
DO TOT
+20 QUIT
End DoDot:3
IF RAXIT
QUIT
+21 IF 'RAXIT
DO IMGCHK^RALWKL2
+22 QUIT
End DoDot:2
IF RAXIT
QUIT
+23 IF 'RAXIT&(RADIFLG(RADIV)>1)
DO DIVCHK^RALWKL2
+24 QUIT
End DoDot:1
IF RAXIT
QUIT
+25 QUIT
PRT1 ; Tabulate the data for non summary report, output the data.
+1 SET RATTL2=$GET(^TMP($JOB,"RA",RADIV,RAIMG,RAFLD,RAMIS,RAPRC))
+2 ; Total up the first four pieces.
SET RAWWU2=$PIECE(RATTL2,"^",5)
SET RATTL3=0
+3 FOR I=1:1:4
SET RATTL3=RATTL3+$PIECE(RATTL2,"^",I)
+4 IF 'RAPG
DO HD
IF RAXIT
QUIT
+5 IF $Y>(IOSL-4)
SET RAXIT=$$EOS^RAUTL5()
IF 'RAXIT
DO HD
IF RAXIT
QUIT
+6 WRITE !,$EXTRACT(RAPRC,1,28),?30,$JUSTIFY(+$PIECE(RATTL2,"^"),5),?36,$JUSTIFY(+$PIECE(RATTL2,"^",2),5)
+7 WRITE ?42,$JUSTIFY(+$PIECE(RATTL2,"^",3),5),?48,$JUSTIFY(+$PIECE(RATTL2,"^",4),5)
+8 WRITE ?55,$JUSTIFY(RATTL3,5),?62,$JUSTIFY($SELECT(RATTL1:(100*RATTL3)/RATTL1,1:0),5,1)
+9 IF $DATA(RAFL)
Begin DoDot:1
+10 WRITE ?68,$JUSTIFY(RAWWU2,5),?75,$JUSTIFY($SELECT(RAWWU1:(RAWWU2*100)/RAWWU1,1:0),5,1)
+11 QUIT
End DoDot:1
+12 QUIT
TOT ; Total within Service, Ward, Clinic, etc.
+1 IF 'RATTL1
IF ('RAWWU1)
QUIT
+2 IF $Y>(IOSL-4)
SET RAXIT=$$EOS^RAUTL5()
IF 'RAXIT
DO HD
IF RAXIT
QUIT
+3 WRITE !!,$GET(RATITLE)_" Total"
+4 WRITE ?30,$JUSTIFY(+$PIECE(RATTL0,"^"),5),?36,$JUSTIFY(+$PIECE(RATTL0,"^",2),5)
+5 WRITE ?42,$JUSTIFY(+$PIECE(RATTL0,"^",3),5),?48,$JUSTIFY(+$PIECE(RATTL0,"^",4),5)
+6 WRITE ?55,$JUSTIFY(RATTL1,5)
+7 IF $DATA(RAFL)
WRITE ?68,$JUSTIFY(RAWWU1,5)
+8 WRITE !,RALN
NEW RA1
SET RA1=$ORDER(^TMP($JOB,"RA",RADIV,RAIMG,RAFLD))
+9 IF RA1]""
NEW RAFLD
SET RAFLD=RA1
SET RAXIT=$$EOS^RAUTL5()
IF 'RAXIT
DO HD
+10 QUIT
HD ; Header
+1 IF RAPG!($EXTRACT(IOST,1,2)="C-")
IF $Y>0
WRITE @IOF
+2 SET RAPG=RAPG+1
+3 WRITE !?5,">>> "_RATITLE_" Workload Report <<<"
+4 WRITE ?70,"Page: ",RAPG
+5 WRITE !!?4,"Division: ",$SELECT($DATA(^DIC(4,+RADIV,0)):$PIECE(^(0),U,1),1:"UNKNOWN")
+6 IF '$DATA(RADIVSUM)
WRITE !,"Imaging Type: ",$SELECT($DATA(^RA(79.2,+$PIECE(RAIMG,"-",2),0)):$PIECE(^(0),U,1),1:"UNKNOWN")
+7 WRITE ?52,"For period: ",?64,BEGDATE("X"),?77,"to"
+8 WRITE !?4,"Run Date: ",RATDY,?64,ENDDATE("X")
+9 WRITE !!?32,"-------Examinations------",!?62,"% of"
IF $DATA(RAFL)
WRITE ?75," % of"
+10 WRITE !,$SELECT('RASUM:"Procedure",1:RATITLE),?30," Inpt",?36," Opt"
+11 WRITE ?42," Res",?48,"Other",?55,"Total",?62,"Exams"
+12 IF $DATA(RAFL)
WRITE ?68," WWU",?75," WWU"
+13 WRITE !,RALN
+14 ; set in DIVCHK^RALWKL2
IF $DATA(RADIVSUM)
WRITE !?10,"(Division Summary)"
+15 ; set in IMGCHK^RALWKL2
IF $DATA(RAIMGSUM)
WRITE !?10,"(Imaging Type Summary)"
+16 IF '$DATA(RADIVSUM)&('$DATA(RAIMGSUM))&('RASUM)
WRITE !?10,RATITLE,": ",$GET(RAFLD)
+17 IF $DATA(ZTQUEUED)
DO STOPCHK^RAUTL9
IF $GET(ZTSTOP)=1
SET RAXIT=1
+18 QUIT
DISPXAM(A) ; Display Examination Statuses which meet certain criteria.
+1 ; 'A' is the equivalent of the variable 'RACRT'. This code is related
+2 ; to the 'CRIT^RAUTL1' subroutine. This sets up the RACRT local array
+3 ; according to I-Type.
+4 NEW RA,RAHD,UNDRLN,X,Y,Z
+5 SET RAHD(0)="The entries printed for this report will be based only"
+6 SET RAHD(1)="on exams that are in one of the following statuses:"
+7 WRITE !!?(IOM-$LENGTH(RAHD(0))\2),RAHD(0),!?(IOM-$LENGTH(RAHD(1))\2),RAHD(1)
+8 SET X=""
FOR
SET X=$ORDER(^TMP($JOB,"RA I-TYPE",X))
IF X']""
QUIT
Begin DoDot:1
+9 IF $DATA(^RA(72,"AA",X))
KILL UNDRLN
SET Y=""
Begin DoDot:2
+10 IF $Y>(IOSL-4)
SET RAXIT=$$EOS^RAUTL5()
IF RAXIT
QUIT
WRITE @IOF
+11 SET $PIECE(UNDRLN,"-",($LENGTH(X)+1))=""
WRITE !!?10,X,!?10,UNDRLN
+12 FOR
SET Y=$ORDER(^RA(72,"AA",X,Y))
IF Y']""
QUIT
Begin DoDot:3
+13 SET Z=0
FOR
SET Z=$ORDER(^RA(72,"AA",X,Y,Z))
IF 'Z
QUIT
Begin DoDot:4
+14 SET RA(0)=$GET(^RA(72,Z,0))
SET RA(.3)=$GET(^RA(72,Z,.3))
+15 SET RA(.3,A)=$PIECE(RA(.3),"^",A)
+16 IF RA(0)]""
IF (RA(.3)]"")
IF (RA(.3,A)]"")
IF ("Yy"[RA(.3,A))
Begin DoDot:5
+17 ; Where 'X' is the I-Type
SET RACRT(Z)=X
+18 IF $Y>(IOSL-4)
SET RAXIT=$$EOS^RAUTL5()
IF RAXIT
QUIT
Begin DoDot:6
+19 WRITE @IOF,!?10,X,!?10,UNDRLN
+20 QUIT
End DoDot:6
+21 WRITE !?15,$PIECE(RA(0),"^")
+22 QUIT
End DoDot:5
+23 QUIT
End DoDot:4
IF RAXIT
QUIT
+24 QUIT
End DoDot:3
IF RAXIT
QUIT
+25 QUIT
End DoDot:2
+26 QUIT
End DoDot:1
IF RAXIT
QUIT
+27 QUIT