| 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 |  ;;
 | 
|---|