RACPT ;HISC/GJC AISC/DMK-Procedure/CPT Stats Report ;12/29/00 11:27
;;5.0;Radiology/Nuclear Medicine;**26**;Mar 16, 1998
CHK D CHK^RACPT1 I $G(RAQUIT)!$G(RAPOP) G Q
START ; start processing
U IO K ^TMP($J,"RA")
S BEGDATE(0)=$E(BEGDATE,4,5)_"/"_$E(BEGDATE,6,7)_"/"_$E(BEGDATE,2,3)
S ENDDATE(0)=$E(ENDDATE,4,5)_"/"_$E(ENDDATE,6,7)_"/"_$E(ENDDATE,2,3)
S X="NOW",%DT="T" D ^%DT K %DT D D^RAUTL S RARUNDTE=Y
S QQ="",$P(QQ,"=",80)="=",X=""
S RASORT=$S(RASORT="B":"I,O",1:RASORT)
F I=RABEG-.0001:0 S I=$O(^RADPT("AR",I)) Q:'I!(I>RAEND) S RADFN="" F S RADFN=$O(^RADPT("AR",I,RADFN)) Q:RADFN'>0 S RADTI=9999999.9999-I I $D(^RADPT(RADFN,"DT",RADTI,0)) S RAY=^(0) D MORE
DIV K RAIMAG
F II=1:1 S RAI=$P(RASORT,",",II) Q:RAI="" S RADIVN(0)="" F S RADIVN(0)=$O(^TMP($J,"RA D-TYPE",RADIVN(0))) Q:RADIVN(0)="" S RADIVN=0 F S RADIVN=$O(^TMP($J,"RA D-TYPE",RADIVN(0),RADIVN)) Q:RADIVN'>0 D
. S RAIMAG(0)=""
. F S RAIMAG(0)=$O(^TMP($J,"RA I-TYPE",RAIMAG(0))) Q:RAIMAG(0)="" S RAIMAG=0 F S RAIMAG=$O(^TMP($J,"RA I-TYPE",RAIMAG(0),RAIMAG)) Q:RAIMAG'>0 D
.. S RAIMAG(1)=$E(RAIMAG(0),1,3)_"-"_RAIMAG
.. I $O(^TMP($J,"RA",RAI,RADIVN,RAIMAG(1),""))="" S ^TMP($J,"RA",RAI,RADIVN,RAIMAG(1))="" Q ;un-used Div-Img combin.
.. S L="" F S L=$O(^TMP($J,"RA",RAI,RADIVN,RAIMAG(1),L)) Q:L="" S K="" F S K=$O(^TMP($J,"RA",RAI,RADIVN,RAIMAG(1),L,K)) Q:K="" D
... S ^TMP($J,"RA",RAI,RADIVN,RAIMAG(1),"COST")=^TMP($J,"RA",RAI,RADIVN,RAIMAG(1),L,K)*$P($G(^RAMIS(71,K,0)),U,10)+$G(^TMP($J,"RA",RAI,RADIVN,RAIMAG(1),"COST"))
... Q
.. Q
. Q
S (RADIV,X,RAI)="",RAEXIT=0,PAGE=1
F II=1:1 S RAI=$P(RASORT,",",II) Q:RAI=""!RAEXIT D HANG^RACPT1:$$SRTPA^RACPT1(II) Q:RAEXIT S RADIV="" F S RADIV=$O(^TMP($J,"RA",RAI,RADIV)) Q:RADIV=""!RAEXIT D GET
Q ;
F I="RA","RA D-TYPE","RA I-TYPE","RA P-TYPE" K ^TMP($J,I)
K BEGDATE,C,ENDDATE,I,II,J,K,L,PAGE,QQ,RABEG,RACAT,RACN,RACNI,CPT,RADFN
K RADIV,RADIV1,RADIVN,RADTI,RAEND,RAEOPFLG,RAEXIT,RAI,RAIMAG,RAINPUT
K RAPOP,RAPROC,RAQUIT,RARUNDTE,RASORT,RASW,RATOT,RAUT,RAX,RAY,RASV
K %DT,DIR,DIROUT,DIRUT,DTOUT,DUOUT,RAMES,RANUMPRC,RAUTIL,X,Y,Z,ZTDESC
K RACAN,ZTRTN,ZTSAVE,ZTSK,RACMLIST
K:$D(RAPSTX) RACCESS,RAPSTX
W ! D CLOSE^RAUTL
K DDH,POP
Q
; data storage description :
; ^tmp($j,"ra","o",499,"gen-1",36200,751)=2 ; two of this proc was done
; ^tmp($j,"ra","o",499,"gen-1",71021,59)=5 ; five of this proc was done
; ... etc.
; ^tmp($j,"ra","o",499,"gen-1","cost")=sum cost all procs this img typ
; ^tmp($j,"ra","o",499,"gen-1","done")=sum total no. procs this img typ
MORE ;
S (RAIMAG,Y)=$P(RAY,U,2),C=$P(^DD(70.02,2,0),U,2) Q:RAIMAG'>0
D Y^DIQ S RAIMAG(0)=Y,RAIMAG(1)=$E(RAIMAG(0),1,3)_"-"_RAIMAG
I $D(^TMP($J,"RA I-TYPE",RAIMAG(0),RAIMAG))[0 Q ;img loc not selected
S (RADIVN,Y)=$P(RAY,U,3),C=$P(^DD(70.02,3,0),U,2) Q:RADIVN'>0
D Y^DIQ S RADIVN(0)=Y
I $D(^TMP($J,"RA D-TYPE",RADIVN(0),RADIVN))[0 Q ;div not selected
S RACNI=0 F S RACNI=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI)) Q:'RACNI I $D(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)) S RAX=^(0) D SET
Q
SET ;
Q:'RACAN&($P($G(^RA(72,+$P(RAX,"^",3),0)),"^",3)=0) ; quit if
; cancelled exams are not to be included & our exam is indeed cancelled
S RADIV=$P(RAY,"^",3) Q:RADIV=""
S (RAPROC,Y)=+$P(RAX,"^",2),C=$P(^DD(70.03,2,0),U,2) Q:RAPROC'>0
D Y^DIQ S RAPROC(0)=Y
I $D(^TMP($J,"RA P-TYPE",RAPROC(0),RAPROC))[0,RAINPUT=0 Q ;proc not sel
S RACAT=$S($D(^DIC(42,+$P(RAX,"^",6),0)):"I",1:"O")
Q:RASORT'[RACAT ;category of in/outpatient status not selected
S CPT=$S($D(^RAMIS(71,RAPROC,0)):$P(^(0),"^",9),1:"") Q:CPT=""
D:$G(RACMLIST) CMLIST^RAWKL1(.CPT)
S ^TMP($J,"RA",RACAT,RADIV,RAIMAG(1),CPT,RAPROC)=$G(^TMP($J,"RA",RACAT,RADIV,RAIMAG(1),CPT,RAPROC))+1
S ^TMP($J,"RA",RACAT,RADIV,RAIMAG(1),"DONE")=$G(^TMP($J,"RA",RACAT,RADIV,RAIMAG(1),"DONE"))+1
Q
GET ;
S RAIMAG(1)="",RAEOPFLG=0
F S RAIMAG(1)=$O(^TMP($J,"RA",RAI,RADIV,RAIMAG(1))) Q:RAIMAG(1)=""!RAEXIT S RATOT(3)=0 D
. S RAIMAG=+$P(RAIMAG(1),"-",2)
. S RAIMAG(0)=$P($G(^RA(79.2,RAIMAG,0)),U)
. I RAIMAG(0)="" S RAIMAG(0)="UNKNOWN"
. D HED^RACPT1
. I $O(^TMP($J,"RA",RAI,RADIV,RAIMAG(1),""))="" D Q
.. W !!,"No reports entered for the selected time frame."
.. I ($O(^TMP($J,"RA",RAI,RADIV,RAIMAG(1)))]"")!($O(^TMP($J,"RA",RAI,RADIV))]"")!($O(^TMP($J,"RA",RAI))]"") S RAEOPFLG=1 D HANG^RACPT1
.. Q
. S CPT=""
. F S CPT=$O(^TMP($J,"RA",RAI,RADIV,RAIMAG(1),CPT)) Q:CPT=""!RAEXIT S J=0 D
.. F S J=$O(^TMP($J,"RA",RAI,RADIV,RAIMAG(1),CPT,J)) Q:J'>0!RAEXIT S RATOT=^(J) D PRINT^RACPT1 Q:RAEXIT
.. Q
. W !?12,"Total for this imaging type -->",?45,$J(^TMP($J,"RA",RAI,RADIV,RAIMAG(1),"DONE"),5),?63,$J(^("COST"),12,2)
. I ($O(^TMP($J,"RA",RAI,RADIV,RAIMAG(1)))]"")!($O(^TMP($J,"RA",RAI,RADIV))]"") S RAEOPFLG=1 D HANG^RACPT1
. Q
Q
RACPT ;HISC/GJC AISC/DMK-Procedure/CPT Stats Report ;12/29/00 11:27
+1 ;;5.0;Radiology/Nuclear Medicine;**26**;Mar 16, 1998
CHK DO CHK^RACPT1
IF $GET">GET(RAQUIT)!$GET">GET(RAPOP)
GOTO Q
START ; start processing
+1 USE IO
KILL ^TMP($JOB,"RA")
+2 SET BEGDATE(0)=$EXTRACT(BEGDATE,4,5)_"/"_$EXTRACT(BEGDATE,6,7)_"/"_$EXTRACT(BEGDATE,2,3)
+3 SET ENDDATE(0)=$EXTRACT(ENDDATE,4,5)_"/"_$EXTRACT(ENDDATE,6,7)_"/"_$EXTRACT(ENDDATE,2,3)
+4 SET X="NOW"
SET %DT="T"
DO ^%DT
KILL %DT
DO D^RAUTL
SET RARUNDTE=Y
+5 SET QQ=""
SET $PIECE(QQ,"=",80)="="
SET X=""
+6 SET RASORT=$SELECT(RASORT="B":"I,O",1:RASORT)
+7 FOR I=RABEG-.0001:0
SET I=$ORDER(^RADPT("AR",I))
IF 'I!(I>RAEND)
QUIT
SET RADFN=""
FOR
SET RADFN=$ORDER(^RADPT("AR",I,RADFN))
IF RADFN'>0
QUIT
SET RADTI=9999999.9999-I
IF $DATA(^RADPT(RADFN,"DT",RADTI,0))
SET RAY=^(0)
DO MORE
DIV KILL RAIMAG
+1 FOR II=1:1
SET RAI=$PIECE(RASORT,",",II)
IF RAI=""
QUIT
SET RADIVN(0)=""
FOR
SET RADIVN(0)=$ORDER(^TMP($JOB,"RA D-TYPE",RADIVN(0)))
IF RADIVN(0)=""
QUIT
SET RADIVN=0
FOR
SET RADIVN=$ORDER(^TMP($JOB,"RA D-TYPE",RADIVN(0),RADIVN))
IF RADIVN'>0
QUIT
Begin DoDot:1
+2 SET RAIMAG(0)=""
+3 FOR
SET RAIMAG(0)=$ORDER(^TMP($JOB,"RA I-TYPE",RAIMAG(0)))
IF RAIMAG(0)=""
QUIT
SET RAIMAG=0
FOR
SET RAIMAG=$ORDER(^TMP($JOB,"RA I-TYPE",RAIMAG(0),RAIMAG))
IF RAIMAG'>0
QUIT
Begin DoDot:2
+4 SET RAIMAG(1)=$EXTRACT(RAIMAG(0),1,3)_"-"_RAIMAG
+5 ;un-used Div-Img combin.
IF $ORDER(^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1),""))=""
SET ^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1))=""
QUIT
+6 SET L=""
FOR
SET L=$ORDER(^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1),L))
IF L=""
QUIT
SET K=""
FOR
SET K=$ORDER(^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1),L,K))
IF K=""
QUIT
Begin DoDot:3
+7 SET ^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1),"COST")=^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1),L,K)*$PIECE($GET">GET(^RAMIS(71,K,0)),U,10)+$GET">GET(^TMP($JOB,"RA",RAI,RADIVN,RAIMAG(1),"COST"))
+8 QUIT
End DoDot:3
+9 QUIT
End DoDot:2
+10 QUIT
End DoDot:1
+11 SET (RADIV,X,RAI)=""
SET RAEXIT=0
SET PAGE=1
+12 FOR II=1:1
SET RAI=$PIECE(RASORT,",",II)
IF RAI=""!RAEXIT
QUIT
IF $$SRTPA^RACPT1(II)
DO HANG^RACPT1
IF RAEXIT
QUIT
SET RADIV=""
FOR
SET RADIV=$ORDER(^TMP($JOB,"RA",RAI,RADIV))
IF RADIV=""!RAEXIT
QUIT
DO GET
Q ;
+1 FOR I="RA","RA D-TYPE","RA I-TYPE","RA P-TYPE"
KILL ^TMP($JOB,I)
+2 KILL BEGDATE,C,ENDDATE,I,II,J,K,L,PAGE,QQ,RABEG,RACAT,RACN,RACNI,CPT,RADFN
+3 KILL RADIV,RADIV1,RADIVN,RADTI,RAEND,RAEOPFLG,RAEXIT,RAI,RAIMAG,RAINPUT
+4 KILL RAPOP,RAPROC,RAQUIT,RARUNDTE,RASORT,RASW,RATOT,RAUT,RAX,RAY,RASV
+5 KILL %DT,DIR,DIROUT,DIRUT,DTOUT,DUOUT,RAMES,RANUMPRC,RAUTIL,X,Y,Z,ZTDESC
+6 KILL RACAN,ZTRTN,ZTSAVE,ZTSK,RACMLIST
+7 IF $DATA(RAPSTX)
KILL RACCESS,RAPSTX
+8 WRITE !
DO CLOSE^RAUTL
+9 KILL DDH,POP
+10 QUIT
+11 ; data storage description :
+12 ; ^tmp($j,"ra","o",499,"gen-1",36200,751)=2 ; two of this proc was done
+13 ; ^tmp($j,"ra","o",499,"gen-1",71021,59)=5 ; five of this proc was done
+14 ; ... etc.
+15 ; ^tmp($j,"ra","o",499,"gen-1","cost")=sum cost all procs this img typ
+16 ; ^tmp($j,"ra","o",499,"gen-1","done")=sum total no. procs this img typ
MORE ;
+1 SET (RAIMAG,Y)=$PIECE(RAY,U,2)
SET C=$PIECE(^DD(70.02,2,0),U,2)
IF RAIMAG'>0
QUIT
+2 DO Y^DIQ
SET RAIMAG(0)=Y
SET RAIMAG(1)=$EXTRACT(RAIMAG(0),1,3)_"-"_RAIMAG
+3 ;img loc not selected
IF $DATA(^TMP($JOB,"RA I-TYPE",RAIMAG(0),RAIMAG))[0
QUIT
+4 SET (RADIVN,Y)=$PIECE(RAY,U,3)
SET C=$PIECE(^DD(70.02,3,0),U,2)
IF RADIVN'>0
QUIT
+5 DO Y^DIQ
SET RADIVN(0)=Y
+6 ;div not selected
IF $DATA(^TMP($JOB,"RA D-TYPE",RADIVN(0),RADIVN))[0
QUIT
+7 SET RACNI=0
FOR
SET RACNI=$ORDER(^RADPT(RADFN,"DT",RADTI,"P",RACNI))
IF 'RACNI
QUIT
IF $DATA(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
SET RAX=^(0)
DO SET
+8 QUIT
SET ;
+1 ; quit if
IF 'RACAN&($PIECE($GET(^RA(72,+$PIECE(RAX,"^",3),0)),"^",3)=0)
QUIT
+2 ; cancelled exams are not to be included & our exam is indeed cancelled
+3 SET RADIV=$PIECE(RAY,"^",3)
IF RADIV=""
QUIT
+4 SET (RAPROC,Y)=+$PIECE(RAX,"^",2)
SET C=$PIECE(^DD(70.03,2,0),U,2)
IF RAPROC'>0
QUIT
+5 DO Y^DIQ
SET RAPROC(0)=Y
+6 ;proc not sel
IF $DATA(^TMP($JOB,"RA P-TYPE",RAPROC(0),RAPROC))[0
IF RAINPUT=0
QUIT
+7 SET RACAT=$SELECT($DATA(^DIC(42,+$PIECE(RAX,"^",6),0)):"I",1:"O")
+8 ;category of in/outpatient status not selected
IF RASORT'[RACAT
QUIT
+9 SET CPT=$SELECT($DATA(^RAMIS(71,RAPROC,0)):$PIECE(^(0),"^",9),1:"")
IF CPT=""
QUIT
+10 IF $GET(RACMLIST)
DO CMLIST^RAWKL1(.CPT)
+11 SET ^TMP($JOB,"RA",RACAT,RADIV,RAIMAG(1),CPT,RAPROC)=$GET(^TMP($JOB,"RA",RACAT,RADIV,RAIMAG(1),CPT,RAPROC))+1
+12 SET ^TMP($JOB,"RA",RACAT,RADIV,RAIMAG(1),"DONE")=$GET(^TMP($JOB,"RA",RACAT,RADIV,RAIMAG(1),"DONE"))+1
+13 QUIT
GET ;
+1 SET RAIMAG(1)=""
SET RAEOPFLG=0
+2 FOR
SET RAIMAG(1)=$ORDER(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1)))
IF RAIMAG(1)=""!RAEXIT
QUIT
SET RATOT(3)=0
Begin DoDot:1
+3 SET RAIMAG=+$PIECE(RAIMAG(1),"-",2)
+4 SET RAIMAG(0)=$PIECE($GET(^RA(79.2,RAIMAG,0)),U)
+5 IF RAIMAG(0)=""
SET RAIMAG(0)="UNKNOWN"
+6 DO HED^RACPT1
+7 IF $ORDER(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1),""))=""
Begin DoDot:2
+8 WRITE !!,"No reports entered for the selected time frame."
+9 IF ($ORDER(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1)))]"")!($ORDER(^TMP($JOB,"RA",RAI,RADIV))]"")!($ORDER(^TMP($JOB,"RA",RAI))]"")
SET RAEOPFLG=1
DO HANG^RACPT1
+10 QUIT
End DoDot:2
QUIT
+11 SET CPT=""
+12 FOR
SET CPT=$ORDER(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1),CPT))
IF CPT=""!RAEXIT
QUIT
SET J=0
Begin DoDot:2
+13 FOR
SET J=$ORDER(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1),CPT,J))
IF J'>0!RAEXIT
QUIT
SET RATOT=^(J)
DO PRINT^RACPT1
IF RAEXIT
QUIT
+14 QUIT
End DoDot:2
+15 WRITE !?12,"Total for this imaging type -->",?45,$JUSTIFY(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1),"DONE"),5),?63,$JUSTIFY(^("COST"),12,2)
+16 IF ($ORDER(^TMP($JOB,"RA",RAI,RADIV,RAIMAG(1)))]"")!($ORDER(^TMP($JOB,"RA",RAI,RADIV))]"")
SET RAEOPFLG=1
DO HANG^RACPT1
+17 QUIT
End DoDot:1
+18 QUIT