| [613] | 1 | IBCU63 ;ALB/AAS - BILLING UTILITY TO SET AMB SURG REV CODES ; 20-NOV-91 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**21,133,349**;21-MAR-94;Build 46 | 
|---|
|  | 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ;MAP TO DGCRU63 | 
|---|
|  | 6 | % ; BASC | 
|---|
|  | 7 | Q:IBIDS(.11)'="i" | 
|---|
|  | 8 | K ^UTILITY($J,"IB-ASC") | 
|---|
|  | 9 | S DGRVCOD=$S($P($G(DGINPAR),"^",4):$P(DGINPAR,"^",4),$P($G(^IBE(350.9,1,1)),"^",18):$P(^(1),"^",18),1:"") Q:DGRVCOD="" | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | BLD S DGASC=0 F  S DGASC=$O(^DGCR(399,IBIFN,"CP","ASC",1,DGASC)) Q:'DGASC  S DGPROC=$G(^DGCR(399,IBIFN,"CP",DGASC,0)) I DGPROC D | 
|---|
|  | 12 | .S DGDIV=$P(DGPROC,"^",6),DGDAT=$P(DGPROC,"^",2) | 
|---|
|  | 13 | .Q:'DGDIV | 
|---|
|  | 14 | .Q:DGDAT+.9<$$STDATE | 
|---|
|  | 15 | .S:'$D(^UTILITY($J,"IB-ASC",+DGPROC,+DGDAT,+DGDIV)) ^(+DGDIV)=0 | 
|---|
|  | 16 | .S ^(+DGDIV)=^UTILITY($J,"IB-ASC",+DGPROC,+DGDAT,+DGDIV)+1 | 
|---|
|  | 17 | ; | 
|---|
|  | 18 | STORREV ;build revenue codes in bill | 
|---|
|  | 19 | I '$D(^DGCR(399,IBIFN,"RC",0)) S ^DGCR(399,IBIFN,"RC",0)="^399.042PA" | 
|---|
|  | 20 | S DGPROC=0 F  S DGPROC=$O(^UTILITY($J,"IB-ASC",DGPROC)) Q:'DGPROC  S DGDAT=0 F  S DGDAT=$O(^UTILITY($J,"IB-ASC",DGPROC,DGDAT)) Q:'DGDAT  S DGDIV=0 F  S DGDIV=$O(^UTILITY($J,"IB-ASC",DGPROC,DGDAT,DGDIV)) Q:'DGDIV  S DGBSLOS=^(DGDIV) D | 
|---|
|  | 21 | .S X=DGDAT_"^"_DGDIV_"^"_DGPROC D ^IBAUTL1 S DGAMNT=Y Q:Y<1 | 
|---|
|  | 22 | .S X=DGRVCOD,DGBSI=$O(^DGCR(399.1,"B",DGBILLBS,0)) | 
|---|
|  | 23 | .D FILE | 
|---|
|  | 24 | .Q | 
|---|
|  | 25 | K DGDAT,DGPROC,DGDIV,DGRVCOD,DGASC | 
|---|
|  | 26 | Q | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | FILE ; | 
|---|
|  | 29 | S DA(1)=IBIFN | 
|---|
|  | 30 | D FILE^IBCU62 | 
|---|
|  | 31 | W:'$G(IBAUTO) !,"Adding",?12,$E(00_DGRVCOD,($L(DGRVCOD)-1),($L(DGRVCOD)+1)),?24,DGBSLOS,?31,"$",$J(DGAMNT,8,2),?44,DGBILLBS I +$G(DGPROC) W ?65,$P($$CPT^ICPTCOD(+DGPROC),"^",2) | 
|---|
|  | 32 | Q | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | STDATE() ;  -start date for basc billing | 
|---|
|  | 35 | Q $S($P($G(^IBE(350.9,1,1)),"^",24):$P(^(1),"^",24),1:9999999) | 
|---|
|  | 36 | ; | 
|---|
|  | 37 | RX ;add rx refill charges (adds default rx cpt for cms-1500) | 
|---|
|  | 38 | ;tries to use ins rx rev code, then site rx rev code finally standard revcode all with $20 | 
|---|
|  | 39 | I '$D(^DGCR(399,IBIFN,"RC",0)) S ^DGCR(399,IBIFN,"RC",0)="^399.042PA" | 
|---|
|  | 40 | S DGBSLOS=IBCNT | 
|---|
|  | 41 | S DGBS="PRESCRIPTION",DGBSI=$O(^DGCR(399.1,"B",DGBS,0)) Q:'DGBSI | 
|---|
|  | 42 | I $$FT^IBCU3(IBIFN)=2 S DGPROC=$P($G(^IBE(350.9,1,1)),"^",30),DGDIV="" | 
|---|
|  | 43 | S DGRVCOD=$P($G(DGINPAR),"^",10) ; ins rev cd | 
|---|
|  | 44 | I DGRVCOD="" S DGRVCOD=$P($G(^IBE(350.9,1,1)),"^",28) ; site rev cd | 
|---|
|  | 45 | I DGRVCOD="" D SETREV^IBCU62 G END ; standard rev cd | 
|---|
|  | 46 | S DGAMNT=$$CHG(DGBSI,IBIDS(151),DGRVCOD) Q:'DGAMNT  S X=DGRVCOD | 
|---|
|  | 47 | D FILE | 
|---|
|  | 48 | END K DGPROC,DGDIV,DGRVCOD | 
|---|
|  | 49 | Q | 
|---|
|  | 50 | ;MAP TO DGCRU61 | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | ALL ;delete all revenue codes that may have been set up automatically | 
|---|
|  | 53 | ;ie = $d(^IB(399.5,"d",code ifn)) | 
|---|
|  | 54 | K DA S DA(1)=IBIFN,DA=0 I '$G(IBAUTO) W !,"Removing old Revenue Codes." | 
|---|
|  | 55 | F DGII=0:0 S DA=$O(^DGCR(399,IBIFN,"RC",DA)) Q:DA<1  S X=$G(^DGCR(399,IBIFN,"RC",DA,0)) D | 
|---|
|  | 56 | . ;remove revenue codes pre-defined for automatic use AND revenue codes for BASC charges (are automatically created) | 
|---|
|  | 57 | . W:'$G(IBAUTO) "." D DEL | 
|---|
|  | 58 | Q | 
|---|
|  | 59 | DEL S DIK="^DGCR(399,"_DA(1)_",""RC""," D ^DIK L ^DGCR(399,IBIFN):1 | 
|---|
|  | 60 | Q | 
|---|
|  | 61 | ; | 
|---|
|  | 62 | ; | 
|---|
|  | 63 | CHG(IBSI,IBDT,IBRVCD) ; returns charge for bedsection and date, rev cd optional | 
|---|
|  | 64 | N IBAMNT,IBACTDT,IBRC,IBDA,IBRT,IBQUIT,X S IBAMNT=0 | 
|---|
|  | 65 | ; | 
|---|
|  | 66 | S IBACTDT=-(IBDT+.01) F  S IBACTDT=$O(^DGCR(399.5,"AIVDT",+IBSI,IBACTDT)) Q:'IBACTDT!+IBAMNT  D | 
|---|
|  | 67 | . S IBRC=+IBRVCD,IBDA=0 F  S IBDA=$O(^DGCR(399.5,"AIVDT",+IBSI,IBACTDT,IBRC,IBDA)) Q:'IBDA!+IBAMNT  D | 
|---|
|  | 68 | .. S IBRT=$G(^DGCR(399.5,+IBDA,0)) | 
|---|
|  | 69 | .. I $P(IBRT,U,6)["i",+$P(IBRT,U,5) S IBAMNT=$P(IBRT,U,4) | 
|---|
|  | 70 | ; | 
|---|
|  | 71 | I 'IBAMNT S IBACTDT=-(IBDT+.01) F  S IBACTDT=$O(^DGCR(399.5,"AIVDT",+IBSI,IBACTDT)) Q:'IBACTDT!+IBAMNT  D | 
|---|
|  | 72 | . S IBRC="" F  S IBRC=$O(^DGCR(399.5,"AIVDT",+IBSI,IBACTDT,IBRC)) Q:'IBRC!+IBAMNT  D | 
|---|
|  | 73 | .. S IBDA=0 F  S IBDA=$O(^DGCR(399.5,"AIVDT",+IBSI,IBACTDT,IBRC,IBDA)) Q:'IBDA!+IBAMNT  D | 
|---|
|  | 74 | ... S IBRT=$G(^DGCR(399.5,+IBDA,0)) | 
|---|
|  | 75 | ... I $P(IBRT,U,6)["i",+$P(IBRT,U,5) S IBAMNT=$P(IBRT,U,4) | 
|---|
|  | 76 | Q IBAMNT | 
|---|