RAWKLU ;HISC/GJC-physician workload statistics by wRVU or CPT ;10/26/05 14:57 ;;5.0;Radiology/Nuclear Medicine;**64,77**;Mar 16, 1998;Build 7 ;09/25/06 KAM/BAY Remedy Call 154793 PATCH *77 RVU with 0 value ; and changed CPT calls from ^ICPTCOD to ^RACPTMSC ; eliminating the need for IA's 1995 amd 1996 ;03/28/07 KAM/BAY Remedy Call 179232 Patch RA*5*77 ; Add check to see if current RVU data is available and if ; not use previous year RVU data ; ;DBIA#:4799 ($$RVU^FBRVU) return wRVU value for CPT, CPT Mod, & exam ; date/time ;DBIA#:10060 EN1^RASELCT enacts 10060 which allows lookups on the NEW ; PERSON (#200) file ;DBIA#:10063 ($$S^%ZTLOAD) ;DBIA#:10103 ($$FMTE^XLFDT) & ($$NOW^XLFDT) ;DBIA#:10104 ($$CJ^XLFSTR) ;DBIA#:1519 ($$EN^XUTMDEVQ) ; EN(RARPTYP,RASCLD) ;Identifies the option that the user wishes to execute. ;input: RARPTYP="CPT" for the CPT workload report -or- "RVU" for ; wRVU workload report. Exit if the value is neither 'CPT' ; or 'RVU'. ; RASCLD=null for the CPT report, zero for non-scaled wRVU, & one ; for the scaled wRVU report. ; I RARPTYP'="CPT",(RARPTYP'="RVU") Q I RARPTYP="CPT",(RASCLD'="") Q K ^TMP($J,"RA STFPHYS"),^TMP("RA STFPHYS-IEN",$J) I RARPTYP="RVU" W !!,"Please note that this report is best suited for display on a 132 column device." ; PHYST ;allow the user to select one/many/all physicians ;(w/ staff classification) ;DBIA#: 10060 S RADIC="^VA(200,",RADIC(0)="QEAMZ",RAUTIL="RA STFPHYS" S RADIC("A")="Select Physician: ",RADIC("B")="All" S RADIC("S")="I $D(^VA(200,""ARC"",""S"",+Y))\10" W !! D EN1^RASELCT(.RADIC,RAUTIL) K %W,%Y1,DIC,RADIC,RAQUIT,RAUTIL,X,Y ;did the user select physicians to compile data on? if not, quit I $O(^TMP($J,"RA STFPHYS",""))="" D Q .W !!?3,$C(7),"Staff Physician data was not selected." .Q ; ;build a new staff physician array (the other array is subscripted by ;physician name then IEN) subscripting by staff physician IEN this ;allows us to check the IEN of the staff physician selected by the ;user against the IEN of the staff physician on the exam record S X="" F S X=$O(^TMP($J,"RA STFPHYS",X)) Q:X="" D .S Y=0 .F S Y=$O(^TMP($J,"RA STFPHYS",X,Y)) Q:'Y S ^TMP("RA STFPHYS-IEN",$J,Y)="" .Q ; K ^TMP($J,"RA STFPHYS") S RADATE=$$FMTE^XLFDT($$NOW^XLFDT\1,1) ; STRTDT ;Prompt the user for a starting date (VERIFIED DATE) S RASTART=$$STRTDT^RAWKLU1(RADATE,2110101) I RASTART=-1 D XIT Q S RABGDTI=$P(RASTART,U),RABGDTX=$P(RASTART,U,2),RAMBGDT=RABGDTI-.0001 ;need inv. verified date to search ^RARPT("AA", S RAMBGDT=9999999.9999-RAMBGDT K RASTART ; ENDDT ;Prompt the user for an ending date (VERIFIED DATE) S RAEND=$$ENDDT^RAWKLU1(RABGDTI,RABGDTX) I RAEND=-1 D XIT Q S RAENDTI=$P(RAEND,U),RAENDTX=$P(RAEND,U,2),RAMENDT=RAENDTI+.9999 ;need inv. verified date to search ^RARPT("AA", S RAMENDT=9999999.9999-RAMENDT K RAEND ; F I="RARPTYP","^TMP(""RA STFPHYS-IEN"",$J,","RADATE","RAB*","RAM*","RAE*","RASCLD" S ZTSAVE(I)="" S I="RA print "_$S(RARPTYP="CPT":"CPTs",1:"wRVUs")_" totals for physicians within imaging type" D EN^XUTMDEVQ("START^RAWKLU",I,.ZTSAVE,,1) I +$G(ZTSK)>0 W !!,"Task Number: "_ZTSK,! K I,ZTSAVE,ZTSK Q ; START ;check exams based on criteria input by user; physician & exam D/T ;eliminate the exam record is one of the following conditions is true: ;1-the status of the exam is 'Cancelled' ;2-the physician(s) selected are not the primary staff for the exam ; ;03/28/07 KAM/BAY Remedy Call 179232 Added next line S RACYFLG=0 ;03/28/07 KAM/BAY RA*5*77/179232 Added Fee Basis Data Check D CHKCY^RAWKLU2 S:$D(ZTQUEUED)#2 ZTREQ="@" K ^TMP($J,"RA BY STFPHYS"),^TMP($J,"RA BY I-TYPE") S ^TMP($J,"RA BY I-TYPE")="0^0^0^0^0^0^0^0^0",CNT=0 ;define where the totals for imaging type will reside on the globals F RAI="RAD","MRI","CT","US","NM","VAS","ANI","CARD","MAM" S CNT=CNT+1,RAIAB(RAI)=CNT K RAI,CNT S RARPTVDT=RAMBGDT,(RACNT,RAXIT)=0 F S RARPTVDT=$O(^RARPT("AA",RARPTVDT),-1) Q:'RARPTVDT!(RARPTVDT0 S RAI=0 D .F S RAI=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"CMOD",RAI)) Q:'RAI D ..S RACPTMOD(0)=+$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"CMOD",RAI,0)) ..;09/27/2006 KAM/BAY RA*5*77 Changed next line to use ^RACPTMSC ..S RA813(0)=$$BASICMOD^RACPTMSC(RACPTMOD(0),RAXAMDT) ..I 'RABILAT,$P(RA813(0),U,2)=50 S RABILAT=1 ;bilateral multiplier=2 ..S RACPTMOD=RACPTMOD_$P(RA813(0),U,2)_"," ..Q .Q ;get wRVU value from FEE BASIS; returns a string: status^value^message ;where status'=1 means "in error". All exams prior to 1/1/1999 will ;use 1999 wRVU values for their calculations. ;03/28/2007 KAM/BAY Rem Call 179232 Added RACYFLG to $S in next line S RAWRVU=$$RVU^FBRVU(RACPT,RACPTMOD,$S(RAXAMDT<2990101:2990101,RACYFLG:RAXAMDT-10000,1:RAXAMDT)) ; 09/25/2006 KAM/BAY Remedy Call 154793 Correct 0 RVUs I $P(RAWRVU,U,2)=0,RACPTMOD="" D . S RAWRVU=$$RVU^FBRVU(RACPT,26,$S(RAXAMDT<2990101:2990101,RACYFLG:RAXAMDT-10000,1:RAXAMDT)) ; I $P(RAWRVU,U)=1 D .;apply bilateral multiplier if appropriate .S:RABILAT RAWRVU=$P(RAWRVU,U,2)*2 .;or not... .S:'RABILAT RAWRVU=$P(RAWRVU,U,2) .I RASCLD S RAWRVU=RAWRVU*$$SFCTR^RAWRVUP($P(RA7002,U,2),RAXAMDT) .Q ; E S RAWRVU=0 ;status some other value than 1; "in error" S:RAWRVU>0 RAWRVU=$J(RAWRVU,1,2) ;do not round the value... D ARY(RAWRVU) K RA813,RABILAT,RACPT,RACPTMOD,RAI,RAWRVU Q ; XIT ;kill variables and exit W:$G(ZTSTOP)=1 !,$$CJ^XLFSTR("USER STOPPED PROCESS THROUGH TASKMAN",IOM) K DIRUT,DTOUT,DUOUT,RA7002,RA7003,RABGDTI,RABGDTX,RACNI,RADATE K RADFN,RADTE,RADTI,RAENDTI,RAENDTX,RAIAB,RAITYP,RAMBGDT,RAMENDT K RARPT,RARPTIEN,RARPTVDT,RASTAFF,RAXIT,X,Y,^TMP("RA STFPHYS-IEN",$J) K ^TMP($J,"RA BY STFPHYS"),^TMP($J,"RA BY I-TYPE"),RACYFLG Q