| 1 | IBOCNC1 ;ALB/ARH - CPT USAGE IN CLINICS (SEARCH); 1/23/92 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**91,133**;21-MAR-94 | 
|---|
| 3 | ; | 
|---|
| 4 | ;entry pt. for tasked jobs | 
|---|
| 5 | FIND ;find, save, and print the data that satisfies the search parameters, save clinic/division names | 
|---|
| 6 | ;I $D(XRT0) S:'$D(XRTN) XRTN="IBOCNC" D T1^%ZOSV ;stop rt clock | 
|---|
| 7 | ;S XRTL=$ZU(0),XRTN="IBOCNC-2" D T0^%ZOSV ;start rt clock | 
|---|
| 8 | I VAUTC,VAUTD S ^TMP("IBCU",$J,"D","ALL")="",IBPRC(1)="ALL DIVISIONS AND CLINICS" | 
|---|
| 9 | S X=0 | 
|---|
| 10 | I VAUTC,'VAUTD S X=X+1,IBC="",IBPRC(X)="DIVISIONS: ",IBDIV="" F IBI=1:1 S IBDIV=$O(VAUTD(IBDIV)) Q:IBDIV=""  D | 
|---|
| 11 | . S ^TMP("IBCU",$J,"D",IBDIV)="" | 
|---|
| 12 | . I ($L(IBPRC(X))+$L(VAUTD(IBDIV))+2)>IOM S X=X+1,IBPRC(X)="           ",IBC="" | 
|---|
| 13 | . S IBPRC(X)=IBPRC(X)_IBC_VAUTD(IBDIV),IBC=", " | 
|---|
| 14 | I 'VAUTC S X=X+1,IBC="",IBPRC(X)="CLINICS: ",IBCLN="" F IBI=1:1 S IBCLN=$O(VAUTC(IBCLN)) Q:IBCLN=""  D | 
|---|
| 15 | . S ^TMP("IBCU",$J,"C",IBCLN)="" | 
|---|
| 16 | . I ($L(IBPRC(X))+$L(VAUTC(IBCLN))+2)>IOM S X=X+1,IBPRC(X)="         ",IBC="" | 
|---|
| 17 | . S IBPRC(X)=IBPRC(X)_IBC_VAUTC(IBCLN),IBC=", " | 
|---|
| 18 | K VAUTD,VAUTC,IBC,X | 
|---|
| 19 | ;entire divisions were chosen, find all clinics | 
|---|
| 20 | I $D(^TMP("IBCU",$J,"D","ALL")) S IBDIV="" F  S IBDIV=$O(^DG(40.8,IBDIV)) Q:IBDIV'?1N.N  S ^TMP("IBCU",$J,"D",IBDIV)="" | 
|---|
| 21 | I $D(^TMP("IBCU",$J,"D")) S IBCLN="" F IBI=1:1 S IBCLN=$O(^SC(IBCLN)) Q:IBCLN'?1N.N  D | 
|---|
| 22 | . S IBLN=$G(^SC(IBCLN,0))  Q:$P(IBLN,"^",3)'="C"!('$D(^TMP("IBCU",$J,"D",+$P(IBLN,"^",15)))) | 
|---|
| 23 | . S ^TMP("IBCU",$J,"C",IBCLN)="" | 
|---|
| 24 | K IBLN,IBCLN,IBDIV,IBI,^TMP("IBCU",$J,"D") | 
|---|
| 25 | ;I $D(XRT0),'$D(^TMP("IBCU",$J,"C")) S:'$D(XRTN) XRTN="IBOCNC" D T1^%ZOSV ;stop rt clock | 
|---|
| 26 | Q:'$D(^TMP("IBCU",$J,"C")) | 
|---|
| 27 | ; | 
|---|
| 28 | SAVE ;for each clinic chosen collect counts on CPTs used and save in sorted tmp file | 
|---|
| 29 | N IBVAL,IBCBK,IBFILTER | 
|---|
| 30 | S IBVAL("BDT")=IBBDT,IBVAL("EDT")=IBEDT+.3 | 
|---|
| 31 | ; Must be an encounter for one of the clinics chosen, | 
|---|
| 32 | ;   only count each visit (in v-file) once | 
|---|
| 33 | S IBFILTER="" | 
|---|
| 34 | S IBCBK="I '$P(Y0,U,6),$D(^TMP(""IBCU"",$J,""C"",+$P(Y0,U,4))),'$D(^TMP(""VIS"",$J,+$P(Y0,U,5))) S ^TMP(""VIS"",$J,+$P(Y0,U,5))="""" D CKENC^IBOCNC1(Y,Y0,.SDSTOP) S:$G(SDSTOP) IBQ=1" | 
|---|
| 35 | S IBQ=0 | 
|---|
| 36 | K ^TMP("VIS",$J) | 
|---|
| 37 | D SCAN^IBSDU("DATE/TIME",.IBVAL,IBFILTER,IBCBK) | 
|---|
| 38 | ; | 
|---|
| 39 | K IBB,IBE,IBX,IBCLN,IBCLNN,IBCPT,IBLN,IBI,^TMP("IBCU",$J,"C"),^TMP("VIS",$J) | 
|---|
| 40 | D:IBSRT BILL | 
|---|
| 41 | PRINT I 'IBQ D ^IBOCNC2 | 
|---|
| 42 | K IBPRC,IBSRT,IBQ,^TMP("IBCU",$J) | 
|---|
| 43 | I $D(ZTQUEUED) S ZTREQ="@" | 
|---|
| 44 | ;I $D(XRT0) S:'$D(XRTN) XRTN="IBOCNC" D T1^%ZOSV ;stop rt clock | 
|---|
| 45 | Q | 
|---|
| 46 | ; | 
|---|
| 47 | BILL ;when sorting by CPT, get count on CPT's entered in billing for the date range | 
|---|
| 48 | ;count number of CPTs in old format, using event date as procedure date | 
|---|
| 49 | Q:IBQ  S IBEVDT=IBBDT-.001,IBE=IBEDT+.3 | 
|---|
| 50 | F  S IBEVDT=$O(^DGCR(399,"D",IBEVDT)) Q:IBEVDT=""!(IBEVDT>IBE)!IBQ  D  S IBQ=$$STOP | 
|---|
| 51 | . S IBN="" F  S IBN=$O(^DGCR(399,"D",IBEVDT,IBN)) Q:IBN=""  D | 
|---|
| 52 | .. Q:$P($G(^DGCR(399,IBN,0)),"^",9)'=4!('$D(^DGCR(399,IBN,"C")))!($P($G(^DGCR(399,IBN,0)),"^",13)=7)  S IBX=$G(^DGCR(399,IBN,"C")) | 
|---|
| 53 | .. F IBI=1,2,3,7,8,9 S IBCPT=$P(IBX,"^",IBI) I $$CPT^ICPTCOD(+IBCPT)>0 S ^TMP("IBCU",$J,+IBCPT,"B")=$G(^TMP("IBCU",$J,+IBCPT,"B"))+1,^TMP("IBCU",$J,"B")=$G(^TMP("IBCU",$J,"B"))+1 | 
|---|
| 54 | ;count number of CPTs in "CP" multiple using the cross-reference and the correct procedure date | 
|---|
| 55 | Q:IBQ  S IBPDT=-(IBEDT+.3) | 
|---|
| 56 | F  S IBPDT=$O(^DGCR(399,"ASD",IBPDT)) Q:IBPDT=""!(-IBPDT<IBBDT)!IBQ  D  S IBQ=$$STOP | 
|---|
| 57 | . S IBCPT="" F  S IBCPT=$O(^DGCR(399,"ASD",IBPDT,IBCPT)) Q:IBCPT=""  D | 
|---|
| 58 | .. S IBN="" F  S IBN=$O(^DGCR(399,"ASD",IBPDT,IBCPT,IBN)) Q:IBN=""  D | 
|---|
| 59 | ... Q:$P($G(^DGCR(399,IBN,0)),U,13)=7 | 
|---|
| 60 | ... S IBX="" F  S IBX=$O(^DGCR(399,"ASD",IBPDT,IBCPT,IBN,IBX)) Q:IBX=""  D | 
|---|
| 61 | .... S ^TMP("IBCU",$J,+IBCPT,"B")=$G(^TMP("IBCU",$J,+IBCPT,"B"))+1,^TMP("IBCU",$J,"B")=$G(^TMP("IBCU",$J,"B"))+1 | 
|---|
| 62 | K IBEVDT,IBPDT,IBN,IBE,IBI,IBCPT,IBX | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | CKENC(IBOE,IBOE0,SDSTOP) ; | 
|---|
| 66 | N PARRAY,P,IBZERR,IBQUANTY | 
|---|
| 67 | I $$STOP S SDSTOP=1 Q | 
|---|
| 68 | D GETCPT^SDOE(IBOE,"PARRAY","IBZERR") | 
|---|
| 69 | Q:'$O(PARRAY(0)) | 
|---|
| 70 | S IBCLN=$P(IBOE0,U,4) | 
|---|
| 71 | S P=0 F  S P=$O(PARRAY(P)) Q:'P  S IBCPT=+PARRAY(P) D | 
|---|
| 72 | . S IBQUANTY=$P($G(PARRAY(P)),U,16) | 
|---|
| 73 | . I IBSRT S ^TMP("IBCU",$J,IBCPT)=$G(^TMP("IBCU",$J,IBCPT))+IBQUANTY,^TMP("IBCU",$J)=$G(^TMP("IBCU",$J))+IBQUANTY Q | 
|---|
| 74 | . S IBCLNN=$P($G(^SC(IBCLN,0)),U),^TMP("IBCU",$J,IBCLNN,"N")=IBCLN | 
|---|
| 75 | . S ^TMP("IBCU",$J,IBCLNN)=$G(^TMP("IBCU",$J,IBCLNN))+IBQUANTY | 
|---|
| 76 | . S ^TMP("IBCU",$J,IBCLNN,IBCPT)=$G(^TMP("IBCU",$J,IBCLNN,IBCPT))+IBQUANTY | 
|---|
| 77 | Q | 
|---|
| 78 | ; | 
|---|
| 79 | STOP() ;check for user requested stop when queued | 
|---|
| 80 | I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1 K ZTREQ I +$G(IBPGN) W !!,"TASK STOPPED BY USER",!! | 
|---|
| 81 | Q +$G(ZTSTOP) | 
|---|