[613] | 1 | RAPMW1 ;HOIFO/SWM-Radiology Wait Time reports ;12/05/05 13:40
|
---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;**67,79,83**;Mar 16, 1998;Build 4
|
---|
| 3 | ; IA 10090 allows Read w/Fileman for entire file 4
|
---|
| 4 | ; summary
|
---|
| 5 | Q
|
---|
| 6 | FILTER1 ;
|
---|
| 7 | S RABAD=0
|
---|
| 8 | I '$D(^RADPT(RADFN,"DT",RADTI)) S RABAD=1 Q ;no exam data
|
---|
| 9 | ;division
|
---|
| 10 | S RASELDIV=$P($G(^RADPT(RADFN,"DT",RADTI,0)),U,3)
|
---|
| 11 | S RACHKDIV=$P($G(^DIC(4,+RASELDIV,0)),U)
|
---|
| 12 | I RACHKDIV'="",'$D(^TMP($J,"RA D-TYPE",RACHKDIV)) S RABAD=1 Q
|
---|
| 13 | ;imaging type
|
---|
| 14 | S RAITYP=$P($G(^RADPT(RADFN,"DT",RADTI,0)),U,2)
|
---|
| 15 | S RAIMGTYP=$P($G(^RA(79.2,+RAITYP,0)),U)
|
---|
| 16 | ; *79 removed check for imaging type
|
---|
| 17 | I RAIMGTYP="" S RAIMGTYP="(unk)"
|
---|
| 18 | Q
|
---|
| 19 | FILTER2 ;
|
---|
| 20 | S RABAD=0
|
---|
| 21 | S RACN0=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
|
---|
| 22 | I RACN0="" S RABAD=1 Q ;no case level data
|
---|
| 23 | I RANX="C",'$D(^TMP($J,"RA WAIT2",+$P(RACN0,U,2))) S RABAD=1 Q
|
---|
| 24 | S RACNISAV=RACNI ; save orig. before it's changed due printset
|
---|
| 25 | I RANX="P",$P(RACN0,U,25)>1 D G EXCL
|
---|
| 26 | .; If selecting by Proc Type, and case is from printset --
|
---|
| 27 | .; pick case with highest ranked Procedure Type
|
---|
| 28 | .; then skip remaining cases by setting a high RACNI
|
---|
| 29 | .S I=0
|
---|
| 30 | .K RARY ;array of cases and rank number
|
---|
| 31 | .F S I=$O(^RADPT(RADFN,"DT",RADTI,"P",I)) Q:'I S RACN0=$G(^(I,0)) D:RACN0'=""
|
---|
| 32 | ..S RABAD=0 D CHECK3 Q:RABAD ;skip case if it meets 1 of 3 exclusions
|
---|
| 33 | ..D PTA^RAPMW2
|
---|
| 34 | ..;eg. rary(6,racni)=racn0 for Ultrasound
|
---|
| 35 | ..S RARY(RAHIER(RAPTA),I)=RACN0
|
---|
| 36 | ..Q
|
---|
| 37 | .S RAHI=$O(RARY("")) ;highest rank number from prtset cases
|
---|
| 38 | .I RAHI="" D Q ; no case in prtset can be used
|
---|
| 39 | ..S RABAD=1,RACNI=99999
|
---|
| 40 | ..Q
|
---|
| 41 | .S RACNI=$O(RARY(RAHI,0))
|
---|
| 42 | .I RACNI="" D Q ;should not happen
|
---|
| 43 | ..S RABAD=1,RACNI=99999
|
---|
| 44 | ..Q
|
---|
| 45 | .S RACN0=RARY(RAHI,RACNI) ;reset racn0
|
---|
| 46 | .S RA72=^RA(72,+$P(RACN0,U,3),0) ;reset ra72
|
---|
| 47 | .S RACNISAV=RACNI ; save orig. before it's changed due printset
|
---|
| 48 | .S RACNI=99999 ;set to 99999 so GETDATA loop would skip rest of prtset
|
---|
| 49 | .Q
|
---|
| 50 | D CHECK3
|
---|
| 51 | EXCL ; skip case if its proc isn't among user-selected procs
|
---|
| 52 | D PTA^RAPMW2 ; *79, Procedure Type via CPT Code & Sherrill's Xcel sheet
|
---|
| 53 | I $D(RAXCLUDE(RAPTA)) S RABAD=1 Q
|
---|
| 54 | Q
|
---|
| 55 | CHECK3 ; check inpatient, no credit, cancelled exam
|
---|
| 56 | ; CATEGORY OF EXAM is inpatient
|
---|
| 57 | I $P(RACN0,U,4)="I" S RABAD=1 Q
|
---|
| 58 | ; exam's credit method is 2 (no credit)
|
---|
| 59 | I $P(RACN0,U,26)=2 S RABAD=1 Q
|
---|
| 60 | ; exam status is cancelled
|
---|
| 61 | I $P(RACN0,U,3)="" S RABAD=1 Q ;no exam status
|
---|
| 62 | S RA72=^RA(72,+$P(RACN0,U,3),0) ;file 72 node 0
|
---|
| 63 | I $P(RA72,U,3)=0 S RABAD=1 Q ;skip cancelled exam
|
---|
| 64 | Q
|
---|
| 65 | STORSUM ;
|
---|
| 66 | S RACOL=$S(RAWAITD'>30:1,RAWAITD'>60:2,RAWAITD'>90:3,RAWAITD'>120:4,1:5)
|
---|
| 67 | S RACOL(RAPTA,RACOL)=RACOL(RAPTA,RACOL)+1
|
---|
| 68 | S RATOTAL(RAPTA)=RATOTAL(RAPTA)+1,RATOTAL=RATOTAL+1
|
---|
| 69 | ; count negative Wait Days as 0
|
---|
| 70 | S RAWAITD(RAPTA)=RAWAITD(RAPTA)+$S(RAWAITD<0:0,1:RAWAITD)
|
---|
| 71 | Q
|
---|
| 72 | WRTSUM ;
|
---|
| 73 | S RAHD0="Summary",RAPG=1
|
---|
| 74 | D SETHD
|
---|
| 75 | D PRTS Q:RAXIT
|
---|
| 76 | D FOOTS
|
---|
| 77 | Q
|
---|
| 78 | SETHD ; Set up header & dev vars for identical parts of summary and detail reports
|
---|
| 79 | S RAIOM=$S(RATYP="S":80,1:IOM),$P(RADASH,"-",46)=""
|
---|
| 80 | S RAH1=RAHD0_" Radiology Outpatient Procedure Wait Time Report"
|
---|
| 81 | ; Hdr Line 3 -- Facility, Station, VISN
|
---|
| 82 | D GETS^DIQ(4,DUZ(2),".01;14*;99","E","RAR","RAMSG")
|
---|
| 83 | K X
|
---|
| 84 | S X(1)=RAR(4,DUZ(2)_",",.01,"E") ; Name of facility
|
---|
| 85 | S X(2)=RAR(4,DUZ(2)_",",99,"E") ; Station Number
|
---|
| 86 | I $D(RAR(4.014)) D
|
---|
| 87 | . S X(3)=RAR(4.014,"1,"_DUZ(2)_",",.01,"E") ; Association
|
---|
| 88 | . S X(4)=RAR(4.014,"1,"_DUZ(2)_",",1,"E") ; Parent of Association
|
---|
| 89 | . S X(5)=$S(X(3)="VISN":X(4),1:"") ; should be VISN number
|
---|
| 90 | E S X(5)=""
|
---|
| 91 | ;
|
---|
| 92 | S $P(X(6)," ",79)=""
|
---|
| 93 | S $E(X(6),1,(10+$L(X(1))))="Facility: "_X(1)
|
---|
| 94 | S $E(X(6),41,(50+$L(X(2))))="Station: "_X(2)
|
---|
| 95 | S $E(X(6),60,(66+$L(X(5))))="VISN: "_X(5)
|
---|
| 96 | S RAH3=X(6) ;Facility, Station, VISN
|
---|
| 97 | ; Hdr Line 4 -- Division(s)
|
---|
| 98 | K RAH4
|
---|
| 99 | I '$D(^TMP($J,"RA D-TYPE")) S RAH4(1)="No division selected"
|
---|
| 100 | E D
|
---|
| 101 | .S RA1=1,RADIV="" S RAH4(1)="Division(s): "
|
---|
| 102 | .F S RADIV=$O(^TMP($J,"RA D-TYPE",RADIV)) Q:RADIV="" D
|
---|
| 103 | ..S:$L(RAH4(RA1))+$L(RADIV)>RAIOM RA1=RA1+1,$P(RAH4(RA1)," ",14)=""
|
---|
| 104 | ..S RAH4(RA1)=RAH4(RA1)_RADIV_$S($O(^TMP($J,"RA D-TYPE",RADIV))]"":", ",1:"")
|
---|
| 105 | ..Q
|
---|
| 106 | .Q
|
---|
| 107 | ; Hdr line 5 -- Exam Date Range
|
---|
| 108 | S RAH5="Exam Date Range: "_$$FMTE^XLFDT(RABDATE,"2D")_"-"_$$FMTE^XLFDT(RAEDATE,"2D")
|
---|
| 109 | ; Hdr line 6 -- Imaging Type(s) selected
|
---|
| 110 | K RAH6
|
---|
| 111 | I RANX="P" D
|
---|
| 112 | .S RAH6(1)="PROCEDURE TYPES: All" ;*79
|
---|
| 113 | .I $O(RAXCLUDE(""))]"" D
|
---|
| 114 | ..S RAH6(1)=RAH6(1)_", except "
|
---|
| 115 | ..S I="" F S I=$O(RAXCLUDE(I)) Q:I="" S RAH6(1)=RAH6(1)_I S:$O(RAXCLUDE(I))]"" RAH6(1)=RAH6(1)_", "
|
---|
| 116 | ..Q
|
---|
| 117 | .Q
|
---|
| 118 | ; Hdr line 7 -- CPT and Proc names
|
---|
| 119 | K RAH7 I RANX="C" D ; *79
|
---|
| 120 | .S RAH7(0)="CPT CODES and PROCEDURES: "
|
---|
| 121 | .S RA1=1,RA2="",RAH7(1)=RAH7(0)
|
---|
| 122 | .F S RA2=$O(^TMP($J,"RA WAIT1",RA2)) Q:RA2="" D
|
---|
| 123 | ..S RA1=RA1+1
|
---|
| 124 | ..S RAH7(RA1)=" "_^TMP($J,"RA WAIT1",RA2)_" "_RA2
|
---|
| 125 | ..Q
|
---|
| 126 | .Q
|
---|
| 127 | ;Hdr line 8 -- Run Date/Time
|
---|
| 128 | S RANOW=$$NOW^XLFDT,RANOW=$E(RANOW,1,12)
|
---|
| 129 | S RAH8="Run Date/Time: "_$$FMTE^XLFDT(RANOW,"2P")
|
---|
| 130 | Q
|
---|
| 131 | HD ;
|
---|
| 132 | W:$E(IOST,1,2)="C-" @IOF W !?(RAIOM-$L(RAH1)\2),RAH1
|
---|
| 133 | W !,"Page: ",RAPG,!
|
---|
| 134 | W !,RAH3
|
---|
| 135 | S I=0 F S I=$O(RAH4(I)) Q:'I W !,RAH4(I)
|
---|
| 136 | W !,RAH5
|
---|
| 137 | S I=0 F S I=$O(RAH6(I)) Q:'I W !,RAH6(I)
|
---|
| 138 | S I=0 F S I=$O(RAH7(I)) Q:'I W !,RAH7(I) I ($Y+5)>IOSL D PRESS Q:RAXIT W:$E(IOST,1,2)="C-" @IOF
|
---|
| 139 | Q:RAXIT
|
---|
| 140 | W !,RAH8
|
---|
| 141 | Q
|
---|
| 142 | HDSUM ;
|
---|
| 143 | W !!,"Total number of procedures registered during specified exam date range: ",RATOTAL,!
|
---|
| 144 | Q
|
---|
| 145 | PRTS ;
|
---|
| 146 | I RAPG=1 D HD Q:RAXIT D HDSUM S RAPG=RAPG+1
|
---|
| 147 | S I="" F S I=$O(RACOL(I)) Q:I="" D
|
---|
| 148 | .F J=1:1:5 S RAPCT(I,J)=$S(RATOTAL(I)>0:$J(RACOL(I,J)/RATOTAL(I)*100,5,1),1:$J(0,5,1)),RACOL(I,J)=$J(RACOL(I,J),7)
|
---|
| 149 | .S RAAVG(I)=$S(RATOTAL(I)>0:$J(RAWAITD(I)/RATOTAL(I),7,0),1:"")
|
---|
| 150 | .I I="unknown",RATOTAL(I)=0 K RATOTAL(I),RACOL(I) Q ;remove "unknown" row if 0s
|
---|
| 151 | .I RANX="C",RATOTAL(I)=0 K RATOTAL(I),RACOL(I) Q ;remov 0 row if by CPT
|
---|
| 152 | .I $D(RAXCLUDE(I)) K RATOTAL(I),RACOL(I) Q ;remove excluded Proc Type
|
---|
| 153 | .S RATOTAL(I)=$J(RATOTAL(I),8)
|
---|
| 154 | .Q
|
---|
| 155 | W !?30,"DAYS WAIT -- PERCENTAGES",! D COLHDS^RAPMW2(1)
|
---|
| 156 | S I="" F S I=$O(RACOL(I)) Q:I="" D
|
---|
| 157 | .W !,$E($S(I="unknown":""""_I_"""",1:I),1,26),?30,RAPCT(I,1),?40,RAPCT(I,2),?50,RAPCT(I,3),?60,RAPCT(I,4),?70,RAPCT(I,5)
|
---|
| 158 | .Q
|
---|
| 159 | D PRESS Q:RAXIT
|
---|
| 160 | W !!!!?30,"DAYS WAIT -- COUNTS",! D COLHDS^RAPMW2(2)
|
---|
| 161 | S I="" F S I=$O(RACOL(I)) Q:I="" D
|
---|
| 162 | .W !,$E($S(I="unknown":""""_I_"""",1:I),1,26),?27,RACOL(I,1),?34,RACOL(I,2),?41,RACOL(I,3),?48,RACOL(I,4),?55,RACOL(I,5),?62,RATOTAL(I),?69,$S(RAAVG(I)="":" -",1:RAAVG(I))
|
---|
| 163 | .Q
|
---|
| 164 | W !!,"Number of procedures cancelled and re-ordered on the same day = ",RASAME
|
---|
| 165 | ; *79, deleted display of average wait days
|
---|
| 166 | Q
|
---|
| 167 | FOOTS ;
|
---|
| 168 | I RANEG W !!?3,"(There ",$S(RANEG=1:"is",1:"are")," ",RANEG," case",$S(RANEG=1:"",1:"s")," with negative days wait included in the first column.)",!
|
---|
| 169 | D PRESS Q:RAXIT W:$E(IOST,1,2)="C-" @IOF
|
---|
| 170 | S RAMAX=$S($D(RATOTAL("unknown")):33,1:28)
|
---|
| 171 | F I=1:1:RAMAX Q:RAXIT W !?4,$P($T(FOOTS2+I),";;",2) I ($Y+5)>IOSL D PRESS Q:RAXIT W:$E(IOST,1,2)="C-" @IOF
|
---|
| 172 | Q
|
---|
| 173 | PRESS ;
|
---|
| 174 | Q:$D(ZTQUEUED)
|
---|
| 175 | I IO=IO(0) D
|
---|
| 176 | .I $E(IOST,1,2)="C-" R !,"Press RETURN to continue, ""^"" to exit:",RAKEY:DTIME
|
---|
| 177 | .S:$G(RAKEY)="^" RAXIT=1
|
---|
| 178 | .Q
|
---|
| 179 | Q
|
---|
| 180 | FOOTS2 ;
|
---|
| 181 | ;;
|
---|
| 182 | ;;1. Cancelled, "No Credit", inpatient cases, and not the highest modality
|
---|
| 183 | ;; of a printset are excluded from this report. (See 3. below.)
|
---|
| 184 | ;;
|
---|
| 185 | ;;2. Columns represent # of days wait from the Registered date (the date/
|
---|
| 186 | ;; time entered at the "Imaging Exam Date/Time:" prompt) backwards to the
|
---|
| 187 | ;; Date Desired for the ordered procedure. The calculation is based on
|
---|
| 188 | ;; the number of different days and not rounded off by hours. The "31-60"
|
---|
| 189 | ;; column represents those orders that were registered 31 days or more but
|
---|
| 190 | ;; less than 61 days after the Date Desired.
|
---|
| 191 | ;;
|
---|
| 192 | ;;3. If the user did not select a specific CPT Code or Procedure Name,
|
---|
| 193 | ;; then the cases from a printset (group of cases that share the same
|
---|
| 194 | ;; report) will have only the case with the highest modality printed.
|
---|
| 195 | ;; The modalities have this hierarchical order, where (1) is the highest:
|
---|
| 196 | ;; (1) Interventional, (2) MRI, (3) CT, (4) Cardiac Stress test,
|
---|
| 197 | ;; (5) Nuc Med, (6) US, (7) Mammo, (8) General Rad (9) Other
|
---|
| 198 | ;;
|
---|
| 199 | ;;4. "Procedure Types" are assigned by a national CPT code look-up table
|
---|
| 200 | ;; and may differ from locally defined "Imaging Types." Therefore the
|
---|
| 201 | ;; number of procedures in each category may not be the same as other
|
---|
| 202 | ;; radiology management reports.
|
---|
| 203 | ;;
|
---|
| 204 | ;;5. "Avg. Days" is the average days wait. It is calculated from the sum
|
---|
| 205 | ;; of the days wait for that Procedure Type, divided by the count of cases
|
---|
| 206 | ;; included in this report for that Procedure Type. Negative days wait
|
---|
| 207 | ;; is counted as 0. A "-" means an average cannot be calculated.
|
---|
| 208 | ;;
|
---|
| 209 | ;;6. Procedure Type of "unknown" refers to either cases that have no
|
---|
| 210 | ;; matching procedure type in the spreadsheet of CPT Codes provided
|
---|
| 211 | ;; by the Office of Patient Care Services, or cases that are missing
|
---|
| 212 | ;; data for the procedure.
|
---|
| 213 | ;;
|
---|