RAPROS ;HISC/GJC AISC/MJK,RMO-Exam Profile (sort) ;6/19/97 09:12
;;5.0;Radiology/Nuclear Medicine;**47**;Mar 16, 1998;Build 21
PAT S DIC(0)="AQEM" D ^RADPA K DIC G Q:Y<0 S RADFN=+Y G Q:'$D(^DPT(RADFN,0)) S RANME=^(0),RASSN=$$SSN^RAUTL,RANME=$P(RANME,"^")
SORT R !!,"Sort by one of the following:",!?10,"P ==> Procedure",!?10,"D ==> Date of Exam",!?30,"Procedure// ",RAXX:DTIME
G Q:'$T!(RAXX["^") S RAXX=$E(RAXX) S:RAXX="" RAXX="P" G SORT:RAXX="?" S RAXX=$$UP^XLFSTR(RAXX) I "PD"'[RAXX W *7," ??" G SORT
I RAXX="D" S RASORT="RADTI" D DATE^RAUTL G Q:RAPOP S BEG=9999999-ENDDATE,END=9999999.9999-BEGDATE G ZIS
ASKSRT S RASORT="RAPRI"
W ! K DIR S DIR(0)="YA",DIR("B")="Yes"
S DIR("?")="Enter 'Y' to select a specific procedure, or 'No' not to."
S DIR("A")="Do you wish to look for a specific procedure? "
D ^DIR K DIR G:$D(DIRUT) Q
S:'+Y BEG=0,END=999999 D:+Y PROC G:+Y=-1 Q
ZIS ; Device selection
W ! S RAPRT=1,ZTRTN="START^RAPROS" F RASV="RANME","RASSN","BEG","END","RADFN","RASORT","RAPRT","^TMP($J,""RA I-TYPE"",","RAXX" S ZTSAVE(RASV)=""
S ZTDESC="Rad/Nuc Med Exam Profile" D ZIS^RAUTL G Q:RAPOP
S:IO=IO(0) RAPRT=0
START S RAX="" K ^TMP($J,"RASORT"),^("RASEQ") S (RAPAG,RASEQ)=0
F RADTI=0:0 S RADTI=$O(^RADPT(RADFN,"DT",RADTI)) Q:RADTI'>0 D
. I $D(^RADPT(RADFN,"DT",RADTI,0)) S RAZERO=$G(^(0)) D
.. S RAELOC=$P($G(^SC(+$P($G(^RA(79.1,+$P($G(^RADPT(RADFN,"DT",RADTI,0)),U,4),0)),U),0)),U)
.. S RADTPRT=+$P(RAZERO,U),RADTPRT=$E(RADTPRT,4,5)_"/"_$E(RADTPRT,6,7)_"/"_$E(RADTPRT,2,3)
.. S (RADTE,Y)=+$P(RAZERO,"^") D D^RAUTL S RADATE=Y
.. D RACN
.. Q
. Q
I '$D(^TMP($J,"RASORT")) W !!?5,"For the above criteria, no registered exams filed for patient...",!?30,"...",RANME," ",RASSN,".",! G Q1
U IO D PRT D CLOSE^RAUTL I RAX'=""!(RAPRT) D Q G ST2
ST1 W !,"CHOOSE FROM 1-",RASEQ,": " R RAX:DTIME I RAX["?" D HLP G ST1
I RAX,'$D(^TMP($J,"RASEQ",RAX)) W !,*7,"You may only select one exam at a time. Choose a number between 1 and ",RASEQ,"." G ST1
ST2 G Q1:'RAX S Y=^TMP($J,"RASEQ",RAX) F I=1:1:11 S @$P("RACN^RAPRC^RADATE^RAST^RADFN^RADTI^RACNI^RANME^RASSN^RADTE^RARPT","^",I)=$P(Y,"^",I)
S Y(0)=^RADPT(RADFN,"DT",RADTI,"P",RACNI,0) D ^RAPROD D Q1 G PAT
Q1 K RAX,^TMP($J,"RASORT"),^("RASEQ")
Q ; Kill and quit
K %,%W,%Y,%Y1,BEG,BEGDATE,C,DIROUT,DIRUT,DTOUT,DUOUT,END,ENDDATE,POP
K RAPOP,RAA,RACN,RACNI,RADATE,RADFN,RADTE,RADTI,RAI,RAII,RANME,RASSN
K RAPRC,RAPRT,RARPT,RASEQ,RASORT,RAST,RAPAG,RAZERO,RAXX,RAY,RAPRI,RASV
K RADTPRT,RAELOC,X,Y,ZTDESC,ZTRTN,ZTSAVE
K RAXIT,RAMES
Q
RACN ; Get the case numbers.
F RACNI=0:0 S RACNI=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI)) Q:RACNI'>0 I $D(^(RACNI,0)) S Y=^(0) D STORE
Q
STORE ; Store data in the ^TMP global
S RAPRI=+$P(Y,"^",2),RAPRC=99 S:$D(^RAMIS(71,RAPRI,0)) RAPRC=$P(^(0),"^")
S RAST=+$P(Y,"^",3),RACN=+Y,RARPT=+$P(Y,"^",17)
I @RASORT>BEG,@RASORT<END F RAI=1:1 I '$D(^TMP($J,"RASORT",$S(RAXX="P":RAPRC,1:@RASORT),RAI)) S ^(RAI)=RACN_"^"_RAPRC_"^"_RADATE_"^"_RAST_"^"_RADFN_"^"_RADTI_"^"_RACNI_"^"_RANME_"^"_RASSN_"^"_RADTE_"^"_RARPT_"^"_RADTPRT_"^"_RAELOC Q
Q
PRT ; Begin output
S RAA="" D HD F RAI=0:0 Q:RAX["^"!(RAX>0) S RAA=$O(^TMP($J,"RASORT",RAA)) Q:RAA="" F RAII=0:0 S RAII=$O(^TMP($J,"RASORT",RAA,RAII)) Q:RAII'>0 S RAY=^(RAII) D PRT1 Q:RAX="^"!(RAX>0)
Q
PRT1 G PRT2:RAPRT!(RASEQ#15)!('RASEQ) I '(RASEQ#15) W !,"Type '^' to STOP, or",!,"CHOOSE FROM 1-",RASEQ,": " R RAX:DTIME G PRT3:RAX="" Q:RAX["^" I RAX["?" D HLP G PRT1
I '$D(^TMP($J,"RASEQ",RAX)) W !,*7,"You may only select one exam at a time. Choose a number between 1 and ",RASEQ,"." G PRT1
S RAX=+RAX Q
PRT2 I ($Y+4)>IOSL,RAPRT D HD
PRT3 S RASEQ=RASEQ+1,^TMP($J,"RASEQ",RASEQ)=RAY
N RADFN,RADTI,RACNI
S RADFN=$P(RAY,"^",5),RADTI=$P(RAY,"^",6),RACNI=$P(RAY,"^",7)
N RAPRTSET,RAMEMLOW D EN1^RAUTL20
N RASSAN,RACNDSP S RASSAN=$$SSANVAL^RAHLRU1(RADFN,RADTI,RACNI)
S RACNDSP=$S((RASSAN'=""):RASSAN,1:$P(RAY,"^"))
I $$USESSAN^RAHLRU1() D
.W !,RASEQ W:RASORT="RADTI" ?4,$S(RAMEMLOW:"+",RAPRTSET:".",1:" ")
.W ?5,RACNDSP,?10,$$IMGDISP^RAPTLU(+$P(RAY,"^",11))
.W ?22,$E($P(RAY,"^",2),1,26),?49,$P(RAY,U,12)
.W ?58,$S($D(^RA(72,$P(RAY,"^",4),0)):$E($P(^(0),"^"),1,11),1:"Unknown")
.W ?70,$E($P(RAY,U,13),1,10)
I '$$USESSAN^RAHLRU1() D
.W !,RASEQ W:RASORT="RADTI" ?5,$S(RAMEMLOW:"+",RAPRTSET:".",1:" ")
.W ?6,$P(RAY,"^"),?11,$$IMGDISP^RAPTLU(+$P(RAY,"^",11))
.W ?13,$E($P(RAY,"^",2),1,26),?41,$P(RAY,U,12)
.W ?52,$S($D(^RA(72,$P(RAY,"^",4),0)):$E($P(^(0),"^"),1,16),1:"Unknown")
.W ?69,$E($P(RAY,U,13),1,11)
Q
HD ; Generic header output
W:$E(IOST,1,2)="C-"!(RAPAG) @IOF
W "Profile for ",RANME," ",RASSN,?55,"Run Date: " S Y=DT D DT^DIO2 W !!,?20,"***** Registered Exams Profile *****"
I $$USESSAN^RAHLRU1() W !?4,"Case No.",?22,"Procedure",?49,"Exam Dt",?58,"Exam Status",?70,"Img Loc",!?4,"-----------------",?22,"-------------",?49,"--------",?58,"-----------",?70,"----------" Q
I '$$USESSAN^RAHLRU1() W !?3,"Case No.",?13,"Procedure",?41,"Exam Date",?52,"Status of Exam",?69,"Imaging Loc",!?3,"--------",?13,"-------------",?41,"---------",?52,"------------",?69,"-----------" Q
HLP ; Generic help
W !!?3,"Enter the number corresponding to the exam you wish to select.",!
Q
PROC ; Select Procedure
N %,%Y,C,DA,DDH,DIC,X
S DIC="^RAMIS(71,",DIC(0)="QEAMZ",DIC("A")="Select Procedure: "
W !! D ^DIC
S:+Y>0 BEG=Y-1,END=Y+1
Q
RAPROS ;HISC/GJC AISC/MJK,RMO-Exam Profile (sort) ;6/19/97 09:12
+1 ;;5.0;Radiology/Nuclear Medicine;**47**;Mar 16, 1998;Build 21
PAT SET DIC(0)="AQEM"
DO ^RADPA
KILL DIC
IF Y<0
GOTO Q
SET RADFN=+Y
IF '$DATA(^DPT(RADFN,0))
GOTO Q
SET RANME=^(0)
SET RASSN=$$SSN^RAUTL
SET RANME=$PIECE(RANME,"^")
SORT READ !!,"Sort by one of the following:",!?10,"P ==> Procedure",!?10,"D ==> Date of Exam",!?30,"Procedure// ",RAXX:DTIME
+1 IF '$TEST!(RAXX["^")
GOTO Q
SET RAXX=$EXTRACT(RAXX)
IF RAXX=""
SET RAXX="P"
IF RAXX="?"
GOTO SORT
SET RAXX=$$UP^XLFSTR(RAXX)
IF "PD"'[RAXX
WRITE *7," ??"
GOTO SORT
+2 IF RAXX="D"
SET RASORT="RADTI"
DO DATE^RAUTL
IF RAPOP
GOTO Q
SET BEG=9999999-ENDDATE
SET END=9999999.9999-BEGDATE
GOTO ZIS
ASKSRT SET RASORT="RAPRI"
+1 WRITE !
KILL DIR
SET DIR(0)="YA"
SET DIR("B")="Yes"
+2 SET DIR("?")="Enter 'Y' to select a specific procedure, or 'No' not to."
+3 SET DIR("A")="Do you wish to look for a specific procedure? "
+4 DO ^DIR
KILL DIR
IF $DATA(DIRUT)
GOTO Q
+5 IF '+Y
SET BEG=0
SET END=999999
IF +Y
DO PROC
IF +Y=-1
GOTO Q
ZIS ; Device selection
+1 WRITE !
SET RAPRT=1
SET ZTRTN="START^RAPROS"
FOR RASV="RANME","RASSN","BEG","END","RADFN","RASORT","RAPRT","^TMP($J,""RA I-TYPE"",","RAXX"
SET ZTSAVE(RASV)=""
+2 SET ZTDESC="Rad/Nuc Med Exam Profile"
DO ZIS^RAUTL
IF RAPOP
GOTO Q
+3 IF IO=IO(0)
SET RAPRT=0
START SET RAX=""
KILL ^TMP($JOB,"RASORT"),^("RASEQ")
SET (RAPAG,RASEQ)=0
+1 FOR RADTI=0:0
SET RADTI=$ORDER(^RADPT(RADFN,"DT",RADTI))
IF RADTI'>0
QUIT
Begin DoDot:1
+2 IF $DATA(^RADPT(RADFN,"DT",RADTI,0))
SET RAZERO=$GET(^(0))
Begin DoDot:2
+3 SET RAELOC=$PIECE($GET(^SC(+$PIECE($GET(^RA(79.1,+$PIECE($GET(^RADPT(RADFN,"DT",RADTI,0)),U,4),0)),U),0)),U)
+4 SET RADTPRT=+$PIECE(RAZERO,U)
SET RADTPRT=$EXTRACT(RADTPRT,4,5)_"/"_$EXTRACT(RADTPRT,6,7)_"/"_$EXTRACT(RADTPRT,2,3)
+5 SET (RADTE,Y)=+$PIECE(RAZERO,"^")
DO D^RAUTL
SET RADATE=Y
+6 DO RACN
+7 QUIT
End DoDot:2
+8 QUIT
End DoDot:1
+9 IF '$DATA(^TMP($JOB,"RASORT"))
WRITE !!?5,"For the above criteria, no registered exams filed for patient...",!?30,"...",RANME," ",RASSN,".",!
GOTO Q1
+10 USE IO
DO PRT
DO CLOSE^RAUTL
IF RAX'=""!(RAPRT)
DO Q
GOTO ST2
ST1 WRITE !,"CHOOSE FROM 1-",RASEQ,": "
READ RAX:DTIME
IF RAX["?"
DO HLP
GOTO ST1
+1 IF RAX
IF '$DATA(^TMP($JOB,"RASEQ",RAX))
WRITE !,*7,"You may only select one exam at a time. Choose a number between 1 and ",RASEQ,"."
GOTO ST1
ST2 IF 'RAX
GOTO Q1
SET Y=^TMP($JOB,"RASEQ",RAX)
FOR I=1:1:11
SET @$PIECE("RACN^RAPRC^RADATE^RAST^RADFN^RADTI^RACNI^RANME^RASSN^RADTE^RARPT","^",I)=$PIECE(Y,"^",I)
+1 SET Y(0)=^RADPT(RADFN,"DT",RADTI,"P",RACNI,0)
DO ^RAPROD
DO Q1
GOTO PAT
Q1 KILL RAX,^TMP($JOB,"RASORT"),^("RASEQ")
Q ; Kill and quit
+1 KILL %,%W,%Y,%Y1,BEG,BEGDATE,C,DIROUT,DIRUT,DTOUT,DUOUT,END,ENDDATE,POP
+2 KILL RAPOP,RAA,RACN,RACNI,RADATE,RADFN,RADTE,RADTI,RAI,RAII,RANME,RASSN
+3 KILL RAPRC,RAPRT,RARPT,RASEQ,RASORT,RAST,RAPAG,RAZERO,RAXX,RAY,RAPRI,RASV
+4 KILL RADTPRT,RAELOC,X,Y,ZTDESC,ZTRTN,ZTSAVE
+5 KILL RAXIT,RAMES
+6 QUIT
RACN ; Get the case numbers.
+1 FOR RACNI=0:0
SET RACNI=$ORDER(^RADPT(RADFN,"DT",RADTI,"P",RACNI))
IF RACNI'>0
QUIT
IF $DATA(^(RACNI,0))
SET Y=^(0)
DO STORE
+2 QUIT
STORE ; Store data in the ^TMP global
+1 SET RAPRI=+$PIECE(Y,"^",2)
SET RAPRC=99
IF $DATA(^RAMIS(71,RAPRI,0))
SET RAPRC=$PIECE(^(0),"^")
+2 SET RAST=+$PIECE(Y,"^",3)
SET RACN=+Y
SET RARPT=+$PIECE(Y,"^",17)
+3 IF @RASORT>BEG
IF @RASORT<END
FOR RAI=1:1
IF '$DATA(^TMP($JOB,"RASORT",$SELECT(RAXX="P":RAPRC,1:@RASORT),RAI))
SET ^(RAI)=RACN_"^"_RAPRC_"^"_RADATE_"^"_RAST_"^"_RADFN_"^"_RADTI_"^"_RACNI_"^"_RANME_"^"_RASSN_"^"_RADTE_"^"_RARPT_"^"_RADTPRT_"^"_RAELOC
QUIT
+4 QUIT
PRT ; Begin output
+1 SET RAA=""
DO HD
FOR RAI=0:0
IF RAX["^"!(RAX>0)
QUIT
SET RAA=$ORDER(^TMP($JOB,"RASORT",RAA))
IF RAA=""
QUIT
FOR RAII=0:0
SET RAII=$ORDER(^TMP($JOB,"RASORT",RAA,RAII))
IF RAII'>0
QUIT
SET RAY=^(RAII)
DO PRT1
IF RAX="^"!(RAX>0)
QUIT
+2 QUIT
PRT1 IF RAPRT!(RASEQ#15)!('RASEQ)
GOTO PRT2
IF '(RASEQ#15)
WRITE !,"Type '^' to STOP, or",!,"CHOOSE FROM 1-",RASEQ,": "
READ RAX:DTIME
IF RAX=""
GOTO PRT3
IF RAX["^"
QUIT
IF RAX["?"
DO HLP
GOTO PRT1
+1 IF '$DATA(^TMP($JOB,"RASEQ",RAX))
WRITE !,*7,"You may only select one exam at a time. Choose a number between 1 and ",RASEQ,"."
GOTO PRT1
+2 SET RAX=+RAX
QUIT
PRT2 IF ($Y+4)>IOSL
IF RAPRT
DO HD
PRT3 SET RASEQ=RASEQ+1
SET ^TMP($JOB,"RASEQ",RASEQ)=RAY
+1 NEW RADFN,RADTI,RACNI
+2 SET RADFN=$PIECE(RAY,"^",5)
SET RADTI=$PIECE(RAY,"^",6)
SET RACNI=$PIECE(RAY,"^",7)
+3 NEW RAPRTSET,RAMEMLOW
DO EN1^RAUTL20
+4 NEW RASSAN,RACNDSP
SET RASSAN=$$SSANVAL^RAHLRU1(RADFN,RADTI,RACNI)
+5 SET RACNDSP=$SELECT((RASSAN'=""):RASSAN,1:$PIECE(RAY,"^"))
+6 IF $$USESSAN^RAHLRU1()
Begin DoDot:1
+7 WRITE !,RASEQ
IF RASORT="RADTI"
WRITE ?4,$SELECT(RAMEMLOW:"+",RAPRTSET:".",1:" ")
+8 WRITE ?5,RACNDSP,?10,$$IMGDISP^RAPTLU(+$PIECE(RAY,"^",11))
+9 WRITE ?22,$EXTRACT($PIECE(RAY,"^",2),1,26),?49,$PIECE(RAY,U,12)
+10 WRITE ?58,$SELECT($DATA(^RA(72,$PIECE(RAY,"^",4),0)):$EXTRACT($PIECE(^(0),"^"),1,11),1:"Unknown")
+11 WRITE ?70,$EXTRACT($PIECE(RAY,U,13),1,10)
End DoDot:1
+12 IF '$$USESSAN^RAHLRU1()
Begin DoDot:1
+13 WRITE !,RASEQ
IF RASORT="RADTI"
WRITE ?5,$SELECT(RAMEMLOW:"+",RAPRTSET:".",1:" ")
+14 WRITE ?6,$PIECE(RAY,"^"),?11,$$IMGDISP^RAPTLU(+$PIECE(RAY,"^",11))
+15 WRITE ?13,$EXTRACT($PIECE(RAY,"^",2),1,26),?41,$PIECE(RAY,U,12)
+16 WRITE ?52,$SELECT($DATA(^RA(72,$PIECE(RAY,"^",4),0)):$EXTRACT($PIECE(^(0),"^"),1,16),1:"Unknown")
+17 WRITE ?69,$EXTRACT($PIECE(RAY,U,13),1,11)
End DoDot:1
+18 QUIT
HD ; Generic header output
+1 IF $EXTRACT(IOST,1,2)="C-"!(RAPAG)
WRITE @IOF
+2 WRITE "Profile for ",RANME," ",RASSN,?55,"Run Date: "
SET Y=DT
DO DT^DIO2
WRITE !!,?20,"***** Registered Exams Profile *****"
+3 IF $$USESSAN^RAHLRU1()
WRITE !?4,"Case No.",?22,"Procedure",?49,"Exam Dt",?58,"Exam Status",?70,"Img Loc",!?4,"-----------------",?22,"-------------",?49,"--------",?58,"-----------",?70,"----------"
QUIT
+4 IF '$$USESSAN^RAHLRU1()
WRITE !?3,"Case No.",?13,"Procedure",?41,"Exam Date",?52,"Status of Exam",?69,"Imaging Loc",!?3,"--------",?13,"-------------",?41,"---------",?52,"------------",?69,"-----------"
QUIT
HLP ; Generic help
+1 WRITE !!?3,"Enter the number corresponding to the exam you wish to select.",!
+2 QUIT
PROC ; Select Procedure
+1 NEW %,%Y,C,DA,DDH,DIC,X
+2 SET DIC="^RAMIS(71,"
SET DIC(0)="QEAMZ"
SET DIC("A")="Select Procedure: "
+3 WRITE !!
DO ^DIC
+4 IF +Y>0
SET BEG=Y-1
SET END=Y+1
+5 QUIT