| 1 | RAWRVUP ;HISC/GJC-Display procedures with their wRVU values  ;10/26/05  14:57
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**64,77**;Mar 16, 1998;Build 7
 | 
|---|
| 3 |  ;09/25/06 KAM/BAY Remedy Call 154793 PATCH *77 RVU with 0 value
 | 
|---|
| 4 |  ;         and changed CPT calls from ^ICPTCOD to ^RACPTMSC
 | 
|---|
| 5 |  ;         eliminating the need for IA's 1995 amd 1996
 | 
|---|
| 6 |  ;03/28/07 KAM/BAY Remedy Call 179232 Patch RA*5*77
 | 
|---|
| 7 |  ;         Add check to see if current RVU data is available and if 
 | 
|---|
| 8 |  ;         not use previous year RVU data and added default scaling
 | 
|---|
| 9 |  ;         factors
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;DBIA#:4799 ($$RVU^FBRVU) return wRVU value for CPT, CPT Mod, & exam
 | 
|---|
| 12 |  ;      date/time
 | 
|---|
| 13 |  ;DBIA#:10060 EN1^RASELCT enacts 10060 which allows lookups on the NEW
 | 
|---|
| 14 |  ;            PERSON (#200) file
 | 
|---|
| 15 |  ;DBIA#:10063 ($$S^%ZTLOAD)
 | 
|---|
| 16 |  ;DBIA#:10103 ($$FMTE^XLFDT) & ($$NOW^XLFDT)
 | 
|---|
| 17 |  ;DBIA#:10104 ($$CJ^XLFSTR)
 | 
|---|
| 18 |  ;DBIA#:1519  ($$EN^XUTMDEVQ)
 | 
|---|
| 19 |  ;DBIA#:4432  (LASTCY^FBAAFSR) return last calendar year file
 | 
|---|
| 20 |  ;            162.99 was updated
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | EN(RASCLD) ;entry point
 | 
|---|
| 23 |  ;input: RASCLD=one if scaled, 0 if un-scaled
 | 
|---|
| 24 |  K ^TMP($J,"RA PROCEDURES")
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | PROC ;allow the user to select one/many/all Rad/Nuc Med procedures
 | 
|---|
| 27 |  S RADIC="^RAMIS(71,",RADIC(0)="QEAMZ",RAUTIL="RA PROCEDURES"
 | 
|---|
| 28 |  S RADIC("A")="Select Procedures: ",RADIC("B")="All",RAXIT=0
 | 
|---|
| 29 |  ;screen: based on user selection of procedure activity and that the
 | 
|---|
| 30 |  ;procedure must have a CPT code (only detailed and series procedures)
 | 
|---|
| 31 |  S RADIC("S")="I $P(^(0),U,9)" ;must have a CPT code (detailed/series)
 | 
|---|
| 32 |  W !! D EN1^RASELCT(.RADIC,RAUTIL)
 | 
|---|
| 33 |  S RAXIT=RAQUIT K %W,%Y1,DIC,RADIC,RAQUIT,RAUTIL,X,Y
 | 
|---|
| 34 |  ;did the user select physicians to compile data on? if not, quit
 | 
|---|
| 35 |  I $O(^TMP($J,"RA PROCEDURES",""))="" D  D XIT Q
 | 
|---|
| 36 |  .W !!?3,$C(7),"Rad/Nuc Med Procedures were not selected."
 | 
|---|
| 37 |  .Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  F I="RASCLD","^TMP($J,""RA PROCEDURES""," S ZTSAVE(I)=""
 | 
|---|
| 40 |  S I="RA print wRVUs for Rad/Nuc Med procedures"
 | 
|---|
| 41 |  D EN^XUTMDEVQ("START^RAWRVUP",I,.ZTSAVE,,1)
 | 
|---|
| 42 |  I +$G(ZTSK)>0 W !!,"Task Number: "_ZTSK,!
 | 
|---|
| 43 |  K I,ZTSAVE,ZTSK
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | START ;
 | 
|---|
| 47 |  S:$D(ZTQUEUED)#2 ZTREQ="@"
 | 
|---|
| 48 |  ; 03/29/07 KAM/BAY Patch RA*5*77/179232 Added RACYFLG to next line
 | 
|---|
| 49 |  S $P(RALN,"-",IOM+1)="",(RACNT,RAPG,RAXIT,RACYFLG)=0
 | 
|---|
| 50 |  ;03/29/07 KAM/BAY RA*5*77/179232 Added Fee Basis Data Check
 | 
|---|
| 51 |  D CHKCY
 | 
|---|
| 52 |  S RARUNDT=$$FMTE^XLFDT(DT,"1P")
 | 
|---|
| 53 |  S RAHDR="PROCEDURE CPT CODE AND"_$S(RASCLD=1:" SCALED",1:"")_" WORK RELATIVE VALUE UNITS (wRVU)"
 | 
|---|
| 54 |  S RAX="" D HDR
 | 
|---|
| 55 |  F  S RAX=$O(^TMP($J,"RA PROCEDURES",RAX)) Q:RAX=""  D  Q:RAXIT
 | 
|---|
| 56 |  .S RAY=0
 | 
|---|
| 57 |  .F  S RAY=$O(^TMP($J,"RA PROCEDURES",RAX,RAY)) Q:'RAY  D  Q:RAXIT
 | 
|---|
| 58 |  ..S RACNT=RACNT+1 S:RACNT#500=0 (RAXIT,ZTSTOP)=$$S^%ZTLOAD() Q:RAXIT
 | 
|---|
| 59 |  ..S RAMIS(0)=$G(^RAMIS(71,RAY,0))
 | 
|---|
| 60 |  ..S RAPROC=$E($P(RAMIS(0),U),1,35) ;truncate to thirty-five chars 
 | 
|---|
| 61 |  ..S RAPTYPE=$S($P(RAMIS(0),U,6)="D":"Detailed",1:"Series")
 | 
|---|
| 62 |  ..S RAITYPE=$P($G(^RA(79.2,+$P(RAMIS(0),U,12),0)),U,3)
 | 
|---|
| 63 |  ..;09/27/2006 KAM/BAY RA*5*77 Changed next line to use ^RACPTMSC
 | 
|---|
| 64 |  ..S RACPT=$P(RAMIS(0),U,9),RACPT=$P($$NAMCODE^RACPTMSC(RACPT,DT),U,1)
 | 
|---|
| 65 |  ..;determine if there are default CPT modifiers for this procedure; if
 | 
|---|
| 66 |  ..;so, does one indicate 'bilateral'? If bilateral multiply wRVU by two.
 | 
|---|
| 67 |  ..S RACPTMOD="",RABILAT=0
 | 
|---|
| 68 |  ..I $O(^RAMIS(71,RAY,"DCM",0))>0 S RAI=0 D
 | 
|---|
| 69 |  ...F  S RAI=$O(^RAMIS(71,RAY,"DCM",RAI)) Q:'RAI  D
 | 
|---|
| 70 |  ....S RACPTMOD(0)=+$G(^RAMIS(71,RAY,"DCM",RAI,0))
 | 
|---|
| 71 |  ....;09/27/2006 KAM/BAY RA*5*77 Changed next line to use ^RACPTMSC
 | 
|---|
| 72 |  ....S RA813(0)=$$BASICMOD^RACPTMSC(RACPTMOD(0),DT)
 | 
|---|
| 73 |  ....I 'RABILAT,$P(RA813(0),U,2)=50 S RABILAT=1 ;bilateral multiplier=2
 | 
|---|
| 74 |  ....S RACPTMOD=RACPTMOD_$P(RA813(0),U,2)_","
 | 
|---|
| 75 |  ....Q
 | 
|---|
| 76 |  ...Q
 | 
|---|
| 77 |  ..;get wRVU value from FEE BASIS; returns a string: status^value^message
 | 
|---|
| 78 |  ..;where status'=1 means "in error"
 | 
|---|
| 79 |  .. ;03/29/07 KAM/BAY RA*5*77/179232 Added $S to next line
 | 
|---|
| 80 |  ..S RAWRVU=$$RVU^FBRVU(RACPT,RACPTMOD,$S(RACYFLG:DT-10000,1:DT))
 | 
|---|
| 81 |  .. ; 09/25/2006 Remedy call 154793 Correct 0 RVUs
 | 
|---|
| 82 |  .. I $P(RAWRVU,U,2)=0,RACPTMOD="" D
 | 
|---|
| 83 |  ... ;03/29/07 KAM/BAY RA*5*77/179232 Added $S to next line
 | 
|---|
| 84 |  ... S RAWRVU=$$RVU^FBRVU(RACPT,26,$S(RACYFLG:DT-10000,1:DT))
 | 
|---|
| 85 |  .. ; 
 | 
|---|
| 86 |  ..I $P(RAWRVU,U)=1 D
 | 
|---|
| 87 |  ...;apply bilateral multiplier if appropriate
 | 
|---|
| 88 |  ...S:RABILAT RAWRVU=$P(RAWRVU,U,2)*2
 | 
|---|
| 89 |  ...;or not...
 | 
|---|
| 90 |  ...S:'RABILAT RAWRVU=$P(RAWRVU,U,2)
 | 
|---|
| 91 |  ...Q
 | 
|---|
| 92 |  ..E  S RAWRVU=0 ;status some other value than 1; "in error"
 | 
|---|
| 93 |  ..;
 | 
|---|
| 94 |  ..S:RAWRVU>0 RAWRVU=$J(RAWRVU,1,2)
 | 
|---|
| 95 |  ..;
 | 
|---|
| 96 | SCALED ..;when scaled find scaled wRVU value
 | 
|---|
| 97 |  ..I RASCLD=1,(RAWRVU>0) D
 | 
|---|
| 98 |  ...S RASFACTR=$$SFCTR(+$P(RAMIS(0),U,12)) ;pass i-type ptr
 | 
|---|
| 99 |  ...S RASWRVU=$J((RAWRVU*RASFACTR),1,2)
 | 
|---|
| 100 |  ...Q
 | 
|---|
| 101 |  ..E  S RASWRVU=0 ;mult by zero
 | 
|---|
| 102 |  ..;
 | 
|---|
| 103 |  ..W !,RAPROC,?37,RAPTYPE,?48,RAITYPE,?58,RACPT,?68,$S(RASCLD=1:$J(RASWRVU,7,2),1:$J(RAWRVU,7,2))
 | 
|---|
| 104 |  ..I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() D:'RAXIT HDR
 | 
|---|
| 105 |  ..Q
 | 
|---|
| 106 |  .Q
 | 
|---|
| 107 |  I 'RAXIT,(RASCLD) S RASFACTR(0)="" D
 | 
|---|
| 108 |  .I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() Q:RAXIT  D HDR
 | 
|---|
| 109 |  .W !!,"For calendar year "_($E(DT,1,3)+1700)_" the following scaling factors apply:"
 | 
|---|
| 110 |  .S I=0
 | 
|---|
| 111 |  . ;04/13/07 KAM/BAY RA*5*77 Modified next line to loop thru all imaging types
 | 
|---|
| 112 |  .F  S I=$O(^RA(79.2,I)) Q:'I  D  Q:RAXIT
 | 
|---|
| 113 |  ..S I(0)=$G(^RA(79.2,I,0))
 | 
|---|
| 114 |  ..I $Y>(IOSL-4) S RAXIT=$$EOS^RAUTL5() Q:RAXIT  D HDR
 | 
|---|
| 115 |  ..; 04/13/07 KAM/BAY RA*5*77 Added $S to next line
 | 
|---|
| 116 |  .. W !,$P(I(0),U),?34,$P(I(0),U,3),?49,$S($O(^RA(79.2,I,"CY",0))>0:$$SFCTR^RAWRVUP(I,DT),1:"1.00 (default)")
 | 
|---|
| 117 |  ..Q
 | 
|---|
| 118 |  .S RAXIT=$$EOS^RAUTL5()
 | 
|---|
| 119 |  .Q
 | 
|---|
| 120 |  D XIT
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 | HDR ; Header for our report
 | 
|---|
| 124 |  W:RAPG!($E(IOST,1,2)="C-") @IOF
 | 
|---|
| 125 |  S RAPG=RAPG+1 W !?(IOM-$L(RAHDR)\2),RAHDR
 | 
|---|
| 126 |  W !,"Run Date: ",RARUNDT,?68,"Page: ",RAPG
 | 
|---|
| 127 |  ;03/28/07 KAM/BAY RA*5*77/179232 Added next 2 lines
 | 
|---|
| 128 |  I $G(RACYFLG) D
 | 
|---|
| 129 |  . W !,?7,"***This report was prepared with "_$$LASTCY^FBAAFSR()_" Calendar Year RVU Data***"
 | 
|---|
| 130 |  W:'$D(RASFACTR(0))#2 !!,"Procedure",?37,"Proc Type",?48,"Img Type",?58,"CPT Code",?68,$S(RASCLD=1:"  S",1:"   ")_"wRVU"
 | 
|---|
| 131 |  W:$D(RASFACTR(0))#2 !!,"Imaging Type",?34,"Abbreviation",?51,"wRVU scaling factor"
 | 
|---|
| 132 |  W !,RALN
 | 
|---|
| 133 |  Q
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 | XIT ;kill variables and exit
 | 
|---|
| 136 |  I 'RAXIT W:'RACNT !,$$CJ^XLFSTR("No data found for this report",IOM)
 | 
|---|
| 137 |  K DILN,DTOUT,DUOUT,I,POP,RA813,RABILAT,RACNT,RACPT,RACPTMOD,RAHDR,RAI
 | 
|---|
| 138 |  K RAITYPE,RALN,RAMIS,RAPTYPE,RAPG,RAPROC,RARUNDT,RASCLD,RASFACTR
 | 
|---|
| 139 |  K RASWRVU,RAWRVU,RAX,RAXIT,RAY,RAYEAR,X,Y,RACYFLG
 | 
|---|
| 140 |  K ^TMP($J,"RA PROCEDURES")
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 | SFCTR(RAITYP,RAYEAR) ;return the calendar year specific scaling factor for a
 | 
|---|
| 144 |  ;specific imaging type
 | 
|---|
| 145 |  ;input: RAITYP=imaging type
 | 
|---|
| 146 |  ;       RAYEAR=internal FM date/time format; resolves to current year
 | 
|---|
| 147 |  ;return: calendar year specific scaling factor
 | 
|---|
| 148 |  N RASF,RAYR S RAYEAR=$G(RAYEAR,DT) ;default to DT (current year)
 | 
|---|
| 149 |  S (RAYEAR,RAYR)=$E(RAYEAR,1,3)+1700
 | 
|---|
| 150 |  S RASF=+$O(^RA(79.2,RAITYP,"CY","B",RAYEAR,0))
 | 
|---|
| 151 |  ;if RASF=0 for the current year, check for the most recent year
 | 
|---|
| 152 |  I RASF=0 D
 | 
|---|
| 153 |  .S RAYEAR=+$O(^RA(79.2,1,"CY","B",RAYEAR),-1)
 | 
|---|
| 154 |  .S RASF=+$O(^RA(79.2,RAITYP,"CY","B",RAYEAR,0))
 | 
|---|
| 155 |  .Q
 | 
|---|
| 156 |  S RASF=+$P($G(^RA(79.2,RAITYP,"CY",RASF,0)),U,2)
 | 
|---|
| 157 |  S:RASF=0 RASF=1 ;defaults to one
 | 
|---|
| 158 |  Q $J(RASF,$L(RASF),2)_$S(RAYEAR:" ("_RAYR_")",1:"")
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 | CHKCY ;03/28/2007 KAM/BAY RA*5*77 Remedy Call 179232 Check for latest RVU
 | 
|---|
| 161 |  ;data from Fee Basis
 | 
|---|
| 162 |  S RACYFLG=0,Y=$G(DT) D DD^%DT
 | 
|---|
| 163 |  I $$LASTCY^FBAAFSR()<$P(Y," ",3) S RACYFLG=1
 | 
|---|
| 164 |  Q
 | 
|---|