| 1 | RAPMW2 ;HOIFO/SWM-Radiology Wait Time reports ;12/05/05 13:41
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**67,79,83**;Mar 16, 1998;Build 4
 | 
|---|
| 3 |  ; IA 10063 allows check for Task Stop Request
 | 
|---|
| 4 |  ; detail
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 | STORDET ;
 | 
|---|
| 7 |  S RAREC=""
 | 
|---|
| 8 |  S RACNL=$E(RAXDT,4,5)_$E(RAXDT,6,7)_$E(RAXDT,2,3)_"-"_+RACN0 ;long CN
 | 
|---|
| 9 |  S RA71REC=$G(^RAMIS(71,+$P(RACN0,U,2),0))
 | 
|---|
| 10 |  S RAXMST=$P(RA72,U) ;exam status name
 | 
|---|
| 11 |  S RACPT=$P($$NAMCODE^RACPTMSC($P(RA71REC,U,9),RAXDT),U) ;CPT code
 | 
|---|
| 12 |  S RAPROCNM=$P(RA71REC,U) ;procedure name
 | 
|---|
| 13 |  S RAPATNM=$$GET1^DIQ(2,RADFN,.01) S:RAPATNM="" RAPATNM=" " ;pt.name
 | 
|---|
| 14 |  S RAPATNM=$E(RAPATNM,1,12) ;use 1st 12 chars of pat name
 | 
|---|
| 15 |  S RAPATND=RAPATNM_"-"_RADFN ;patname-DFN
 | 
|---|
| 16 |  S RADTORD=$P($P(RAOREC,U,16),".") ;date ordered
 | 
|---|
| 17 |  ; store items in this order -- piece no.;field descrp/
 | 
|---|
| 18 |  ; 1;pt.name/ 2;long case no./ 3;dt ordered/ 4;dt desired/ 5;exam dt/
 | 
|---|
| 19 |  ; 6;no. days wait/ 7;exm stat name/ 8;CPT code/ 9; proc name/
 | 
|---|
| 20 |  ; 10;img typ name/ 11;* if canc & re-ord same day/ 12;Proc Typ Name/
 | 
|---|
| 21 |  ; 13;"p" if case from print set (highest ranked proc type)
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  S RAREC=RAPATNM_U_RACNL_U_$E(RADTORD,1,7)_U_$E(RADSDT,1,7)
 | 
|---|
| 24 |  S RAREC=RAREC_U_$E(RAXDT,1,7)_U_RAWAITD_U_$E(RAXMST,1,11)_U_RACPT
 | 
|---|
| 25 |  S RAREC=RAREC_U_$E(RAPROCNM,1,45)_U_$E(RAIMGTYP,1,3)_U_$S(RASAME2:"*",1:"")_U_RAPTA
 | 
|---|
| 26 |  S RAREC=RAREC_U_$S(RACNI=99999:"p",1:"") ;flag printset case picked
 | 
|---|
| 27 |  ; subscript 3 is the sort value
 | 
|---|
| 28 |  ; subscripts 4-6 combined should be unique to a case, prevent over-
 | 
|---|
| 29 |  ;    writing subscript 3 when >1 case has same sort value 
 | 
|---|
| 30 |  ; subscript 4 is the exam date in Fileman notation
 | 
|---|
| 31 |  ; subcript 5 is the patient name (1st 12 chars) and DFN
 | 
|---|
| 32 |  ; subscript 6 is the "P" level ien of file 70
 | 
|---|
| 33 |  I RASORT="CN" S ^TMP($J,"RA WAIT3",RACNL,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 34 |  I RASORT="CPT" S ^TMP($J,"RA WAIT3",RACPT,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 35 |  I RASORT="DD" S ^TMP($J,"RA WAIT3",RADSDT,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 36 |  I RASORT="D" S ^TMP($J,"RA WAIT3",RAWAITD,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 37 |  I RASORT="DO" S ^TMP($J,"RA WAIT3",RADTORD,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 38 |  I RASORT="DR" S ^TMP($J,"RA WAIT3",RAXDT,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 39 |  I RASORT="I" S ^TMP($J,"RA WAIT3",RAIMGTYP,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 40 |  I RASORT="PT" S ^TMP($J,"RA WAIT3",RAPTA,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 41 |  I RASORT="PN" S ^TMP($J,"RA WAIT3",RAPATNM,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 42 |  I RASORT="PROC" S ^TMP($J,"RA WAIT3",RAPROCNM,RADTE,RAPATND,RACNISAV)=RAREC
 | 
|---|
| 43 |  Q
 | 
|---|
| 44 | WRTDET ;
 | 
|---|
| 45 |  S RAHD0="Detail",RAPG=1
 | 
|---|
| 46 |  D SETHD^RAPMW1
 | 
|---|
| 47 |  D PRTD Q:RAXIT
 | 
|---|
| 48 |  D FOOTD
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | HDDET ;
 | 
|---|
| 51 |  W !!,"Sorted by: ",RASORTNM,?38,"Print only cases with minimum Days Wait of: ",RASINCE
 | 
|---|
| 52 |  W !,"Total number of procedures registered during specified exam date range: ",RATOTAL
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | COLHDD ;
 | 
|---|
| 55 |  I RAPG>1 W @IOF,!,"Page: ",RAPG
 | 
|---|
| 56 |  S RAPG=RAPG+1
 | 
|---|
| 57 |  W !!?27,"Date",?36,"Date",?45,"Date",?54,"Days",?59,"Exam",?71,"CPT",?122,"Img",?127,"PROC."
 | 
|---|
| 58 |  W !,"Patient Name",?14,"Case #",?27,"Ordered",?36,"Desired",?45,"Register",?54,"Wait",?59,"Status",?71,"Code",?77,"Name of Procedure",?122,"Type",?127,"TYPE"
 | 
|---|
| 59 |  W !,$E(RADASH,1,12),?14,$E(RADASH,1,12),?27,$E(RADASH,1,8),?36,$E(RADASH,1,8),?45,$E(RADASH,1,8),?54,$E(RADASH,1,4),?59,$E(RADASH,1,11),?71,$E(RADASH,1,5),?77,RADASH,?123,$E(RADASH,1,4),?127,$E(RADASH,1,5)
 | 
|---|
| 60 |  I $D(ZTQUEUED) D STOPCHK^RAUTL9 S:$G(ZTSTOP)=1 RAXIT=1 ;user stopped task
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | PRTD ;
 | 
|---|
| 63 |  I RATYP="B" D PRESS^RAPMW1 Q:RAXIT
 | 
|---|
| 64 |  N X
 | 
|---|
| 65 |  D HD^RAPMW1 Q:RAXIT  D HDDET,COLHDD
 | 
|---|
| 66 |  S RA0="",RAXIT=0
 | 
|---|
| 67 |  F  S RA0=$O(^TMP($J,"RA WAIT3",RA0)) Q:RA0=""  Q:RAXIT  S RA1=0 D
 | 
|---|
| 68 |  .F  S RA1=$O(^TMP($J,"RA WAIT3",RA0,RA1)) Q:'RA1  Q:RAXIT  S RA2=0 D
 | 
|---|
| 69 |  ..F  S RA2=$O(^TMP($J,"RA WAIT3",RA0,RA1,RA2)) Q:RA2=""  Q:RAXIT  S RA3=0 D
 | 
|---|
| 70 |  ...F  S RA3=$O(^TMP($J,"RA WAIT3",RA0,RA1,RA2,RA3)) Q:'RA3  Q:RAXIT  S X=^(RA3) D
 | 
|---|
| 71 |  ....D CKLINE Q:RAXIT
 | 
|---|
| 72 |  ....W !,$P(X,U),?13,$P(X,U,13),?14,$P(X,U,2),?27,$$FMTE^XLFDT($P(X,U,3),2),?36,$$FMTE^XLFDT($P(X,U,4),2),?45,$$FMTE^XLFDT($P(X,U,5),2),$P(X,U,11),?54,$J($P(X,U,6),4),?59,$P(X,U,7)
 | 
|---|
| 73 |  ....W ?71,$P(X,U,8),?77,$P(X,U,9),?123,$P(X,U,10),?127,$E($P(X,U,12),1,5)
 | 
|---|
| 74 |  ....Q
 | 
|---|
| 75 |  ...Q
 | 
|---|
| 76 |  ..Q
 | 
|---|
| 77 |  .Q
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | CKLINE ;
 | 
|---|
| 80 |  I ($Y+5)>IOSL D
 | 
|---|
| 81 |  . S RAXIT=$$S^%ZTLOAD("This task was in routine RAPMW2 when it was stopped.") I RAXIT S ZTSTOP=1 Q  ;IA10063
 | 
|---|
| 82 |  .D PRESS^RAPMW1
 | 
|---|
| 83 |  .Q:RAXIT
 | 
|---|
| 84 |  .D COLHDD
 | 
|---|
| 85 |  .Q
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 | FOOTD ;
 | 
|---|
| 88 |  D PRESS^RAPMW1 Q:RAXIT  W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
| 89 |  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 listing.)",!
 | 
|---|
| 90 |  F I=1:1:28 Q:RAXIT  W !?4,$P($T(FOOTD2+I),";;",2) I ($Y+5)>IOSL D PRESS^RAPMW1 Q:RAXIT  W:$E(IOST,1,2)="C-" @IOF
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 | CALC ;
 | 
|---|
| 93 |  S RASAME2=0 ;=1 if exm's order was cancelled & reordered same day
 | 
|---|
| 94 |  S RAORIEN=$P(RACN0,U,11)
 | 
|---|
| 95 |  S RAOREC=$G(^RAO(75.1,+RAORIEN,0))
 | 
|---|
| 96 |  I RAOREC="" S ^TMP($J,"RA WAIT NO ORD",RADFN,RADTI,RACNI)=RAORIEN Q
 | 
|---|
| 97 |  S RAXDT=9999999.9999-RADTI ; exam date FM format
 | 
|---|
| 98 |  S RADSDT=$P(RAOREC,U,21) ; Date Desired
 | 
|---|
| 99 |  I RADSDT="" S ^TMP($J,"RA WAIT NO DSR DT",RADFN,RADTI,RACNI)=RAORIEN Q
 | 
|---|
| 100 |  S RAWAITD=$$FMDIFF^XLFDT(RAXDT,RADSDT) ;Wait days btw exm & desired dt
 | 
|---|
| 101 |  S:RAWAITD<0 RANEG=RANEG+1
 | 
|---|
| 102 |  D STORSUM^RAPMW1 ;store summary counts for Summary, Detail, Both
 | 
|---|
| 103 |  S RA16=$P(RAOREC,U,16) ; request entered dt/tm
 | 
|---|
| 104 |  ; count if same proc cancelled and reordered same day
 | 
|---|
| 105 |  S RA1=$E(RA16,1,7)
 | 
|---|
| 106 |  ; loop start w Last Activity same date as order's entry date
 | 
|---|
| 107 |  F  S RA1=$O(^RAO(75.1,"AO",RA1)) Q:'RA1  Q:RA1>RA16  D
 | 
|---|
| 108 |  .S RA2=0  F  S RA2=$O(^RAO(75.1,"AO",RA1,RA2)) Q:'RA2  Q:RA2=RAORIEN  D
 | 
|---|
| 109 |  ..S RA3=^RAO(75.1,RA2,0) ;skip exm's order
 | 
|---|
| 110 |  ..; other order is discontinued,same patient,same ordered procedure
 | 
|---|
| 111 |  ..I $P(RA3,U,5)=1,$P(RA3,U,1)=RADFN,$P(RA3,U,2)=$P(RAOREC,U,2) S RASAME=RASAME+1,RASAME2=1
 | 
|---|
| 112 |  ..Q
 | 
|---|
| 113 |  .Q
 | 
|---|
| 114 |  ; store detail rows for Detail,Both IF days wait at least = RASINCE
 | 
|---|
| 115 |  I "B^D"[RATYP,((RAWAITD<0)!(RAWAITD'<RASINCE)) D STORDET
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 | PTA ; *79
 | 
|---|
| 118 |  S RAPRC=$P(RACN0,U,2)
 | 
|---|
| 119 |  I RAPRC="" S RAPTA="unknown" Q
 | 
|---|
| 120 |  S RACPTI=+$P($G(^RAMIS(71,+RAPRC,0)),U,9)
 | 
|---|
| 121 |  S RACPTC=$P($$NAMCODE^RACPTMSC(RACPTI,DT),U)
 | 
|---|
| 122 |  S RAPTA=$S(RACPTI:$O(^RA(73.2,"B",RACPTC,0)),1:"")
 | 
|---|
| 123 |  S RAPTA=$P($G(^RA(73.2,+RAPTA,0)),U,2)
 | 
|---|
| 124 |  S RAPTA=$S(RAPTA="":"unknown",'$D(RACOL(RAPTA)):"unknown",1:RAPTA)
 | 
|---|
| 125 |  ; RAPTA should match one of the RATOTAL(rapta)
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 | COLHDS(X) ; moved from RAPMW1
 | 
|---|
| 128 |  I X=1 D
 | 
|---|
| 129 |  .W !,"PROCEDURE",?31,"<=30",?40,"31-60",?50,"61-90",?59,"91-120",?71,">120"
 | 
|---|
| 130 |  .W !,"TYPE",?31,"Days",?41,"Days",?51,"Days",?61,"Days",?71,"Days"
 | 
|---|
| 131 |  .W !,"--------------------------",?29,"------",?39,"------",?49,"------",?59,"------",?69,"------"
 | 
|---|
| 132 |  .Q
 | 
|---|
| 133 |  I X=2 D
 | 
|---|
| 134 |  .W !,"PROCEDURE",?30,"<=30",?36,"31-60",?43,"61-90",?50,"91-120",?58,">120",?66,"ROW",?73,"Avg."
 | 
|---|
| 135 |  .W !,"TYPE",?30,"Days",?37,"Days",?44,"Days",?51,"Days",?58,"Days",?65,"TOTAL",?73,"Days"
 | 
|---|
| 136 |  .W !,"--------------------------",?28,"------",?35,"------",?42,"------",?49,"------",?56,"------",?64,"------",?72,"-----"
 | 
|---|
| 137 |  .Q
 | 
|---|
| 138 |  Q
 | 
|---|
| 139 | FOOTD2 ;
 | 
|---|
| 140 |  ;;
 | 
|---|
| 141 |  ;;1. Cancelled, "No Credit", inpatient cases, and not the highest modality of a printset are excluded from this report.
 | 
|---|
| 142 |  ;;   (See 3. below.)
 | 
|---|
| 143 |  ;;
 | 
|---|
| 144 |  ;;2. The "Days Wait" represent # of days from the Registered date (the date/time entered at the "Imaging Exam Date/Time:" prompt)
 | 
|---|
| 145 |  ;;   backwards to the Date Desired for the ordered procedure.  The calculation is based on the number of different days and 
 | 
|---|
| 146 |  ;;   not rounded off by hours.
 | 
|---|
| 147 |  ;;
 | 
|---|
| 148 |  ;;3. If the user did not select a specific CPT Code or Procedure Name, then the cases from a printset (group of cases that 
 | 
|---|
| 149 |  ;;   share the same report) will have only the case with the highest ranked modality printed.  Modalities are ranked 
 | 
|---|
| 150 |  ;;   in this order, (1) being the highest:
 | 
|---|
| 151 |  ;;   (1) Interventional, (2) MRI, (3) CT, (4) Cardiac Stress test, (5) Nuc Med, (6) US, (7) Mammo, (8) General Rad (9) Other
 | 
|---|
| 152 |  ;;   However, all the cases from an examset (group of cases that have separate reports) will all be listed.
 | 
|---|
| 153 |  ;;
 | 
|---|
| 154 |  ;;4. "Procedure Types" are assigned by a national CPT code look-up table and may differ from locally defined "Imaging Types."  
 | 
|---|
| 155 |  ;;   Therefore the number of procedures in each category may not be the same as other radiology management reports.
 | 
|---|
| 156 |  ;;
 | 
|---|
| 157 |  ;;5. Procedure Type of "unknown" refers to either cases that have no matching procedure type in the spreadsheet of CPT Codes
 | 
|---|
| 158 |  ;;   provided by the Office of Patient Care Services, or cases that are missing data for the procedure.
 | 
|---|
| 159 |  ;;
 | 
|---|
| 160 |  ;;6. CPT Code is not available for parent and broad procedures in the header section.  CPT Code of the parent order's highest
 | 
|---|
| 161 |  ;;   ranked modality case will be printed in the line by line section.  (See 3. above.)
 | 
|---|
| 162 |  ;;
 | 
|---|
| 163 |  ;;7. Date/Time Registered is the "Imaging Exam Date/Time" entered by the user during Registration.
 | 
|---|
| 164 |  ;;
 | 
|---|
| 165 |  ;;8. "*" under the "Date Register" column denotes the request was cancelled and re-ordered on the same day that it was cancelled.
 | 
|---|
| 166 |  ;;
 | 
|---|
| 167 |  ;;9. "p" under the "Case #" column, before the case number, denotes printset case with the highest ranked Procedure Type.
 | 
|---|