IBCU62 ;ALB/AAS - UTILITY ROUTINE TO SET BEDSECTION/REVENUE CODES FROM PTF DATA ; 29-OCT-90
;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
;;Per VHA Directive 10-93-142, this routine should not be modified.
;
;MAP TO DGCRU62
;
SETREV ;find current active revenue codes for bedsection
S (DGREV,DGBR)=0,DGACTDT=-(IBIDS(151)+.01) K DGFND
F S DGACTDT=$O(^DGCR(399.5,"AIVDT",DGBSI,DGACTDT)) Q:'DGACTDT!($D(DGFND)) D
. F S DGREV=$O(^DGCR(399.5,"AIVDT",DGBSI,DGACTDT,DGREV)) Q:'DGREV D
.. F S DGBR=$O(^DGCR(399.5,"AIVDT",DGBSI,DGACTDT,DGREV,DGBR)) Q:'DGBR D CHKREV,STORREV:IBCHK
Q
CHKREV ;check if billing rate (dgbr) is active, and use with payer.
S IBCHK=0
S DGBRN=^DGCR(399.5,DGBR,0) I '$P(DGBRN,"^",5) Q ;quit if inactive
I IBIDS(.11)="i",$P(DGINPAR,"^",2)="",+$P(DGBRN,"^",7) Q ;quit if non-standard rate
I IBIDS(.11)'="i",+$P(DGBRN,"^",7) Q ;non-standard rates only for ins.
S DGREV00="00"_DGREV I IBIDS(.11)="i",$P(DGINPAR,"^",2)]"",$P(DGINPAR,"^",2)'[$E(DGREV00,$L(DGREV00)-2,$L(DGREV00)) Q ;quit if revenue code not in exception list
I $P(DGBRN,U,6)[IBIDS(.11) S:'$D(DGFND) DGFND="" S IBCHK=1 Q
Q
STORREV ;store revenue code in revenue code file
S X=$P(^DGCR(399.5,DGBR,0),"^",3),DGAMNT=$P(^(0),"^",4),DA(1)=IBIFN,DIC(0)="L",DIC="^DGCR(399,IBIFN,""RC"",",DGFUNC="Adding"
I $D(^DGCR(399,IBIFN,"RC","ABS",X,DGBSI)) S DA=$O(^DGCR(399,IBIFN,"RC","ABS",X,DGBSI,0)),DGFUNC="Editing" G EDITREV
D FILE,WRT
Q
;
FILE ;manually file entry, index with ix1^dik to use compiled x-ref
I '$D(DGREVHDR) D REVHDR
I IBIDS(.11)="c",IBIDS(.05)<3 S DGBSLOS=1
L ^DGCR(399,IBIFN):1
S DA=$P(^DGCR(399,IBIFN,"RC",0),"^",3)
F DGLL=0:0 S DA=DA+1 Q:'$D(^DGCR(399,IBIFN,"RC",DA,0))
;S ^DGCR(399,IBIFN,"RC",DA,0)=X_"^"_DGAMNT_"^"_DGBSLOS_"^^"_DGBSI_$S($D(DGPROC)&($D(DGDIV)):"^"_DGPROC_"^"_DGDIV,1:"")
S ^DGCR(399,IBIFN,"RC",DA,0)=X_"^"_DGAMNT_"^"_DGBSLOS_"^^"_DGBSI_"^"_$G(DGPROC)_"^"_$G(DGDIV)_"^"_1
S ^DGCR(399,IBIFN,"RC",0)=$P(^DGCR(399,IBIFN,"RC",0),"^",1,2)_"^"_DA_"^"_($P(^DGCR(399,IBIFN,"RC",0),"^",4)+1)
S DIK="^DGCR(399,"_DA(1)_",""RC""," D IX1^DIK L ^DGCR(399,IBIFN):1
Q
;
EDITREV ;edit revenue code data.
I '$D(DGREVHDR) D REVHDR
I IBIDS(.11)="c",IBIDS(.05)<3 S DGBSLOS=1
S DIE=DIC,DA(1)=IBIFN,DR=".02///"_DGAMNT_";.03///"_DGBSLOS_";.05///"_DGBS D ^DIE
;
WRT ;S Z="00"_$P(^DGCR(399.5,DGBR,0),"^",3) W:'$G(IBAUTO) !,DGFUNC,?12,$E(Z,($L(Z)-2),$L(Z)),?24,DGBSLOS,?31,"$",$J(DGAMNT,8,2),?44,DGBS
S Z="00"_$P(^DGCR(399.5,DGBR,0),"^",3) W:'$G(IBAUTO) !,DGFUNC,?12,$E(Z,($L(Z)-2),$L(Z)),?24,DGBSLOS,?31,"$",$J(DGAMNT,8,2),?44,DGBS,?65,$P($G(^ICPT(+$G(DGPROC),0)),U,1)
Q
REVHDR S DGREVHDR=1 W:'$G(IBAUTO) !,"Updating Revenue Codes",!?10,"REV. CODE",?22,"UNITS",?31,"CHARGE",?44,"BEDSECTION" I $D(DGPROC) W:'$G(IBAUTO) ?65,"PROCEDURE"
IBCU62 ;ALB/AAS - UTILITY ROUTINE TO SET BEDSECTION/REVENUE CODES FROM PTF DATA ; 29-OCT-90
+1 ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
+2 ;;Per VHA Directive 10-93-142, this routine should not be modified.
+3 ;
+4 ;MAP TO DGCRU62
+5 ;
SETREV ;find current active revenue codes for bedsection
+1 SET (DGREV,DGBR)=0
SET DGACTDT=-(IBIDS(151)+.01)
KILL DGFND
+2 FOR
SET DGACTDT=$ORDER(^DGCR(399.5,"AIVDT",DGBSI,DGACTDT))
IF 'DGACTDT!($DATA(DGFND))
QUIT
Begin DoDot:1
+3 FOR
SET DGREV=$ORDER(^DGCR(399.5,"AIVDT",DGBSI,DGACTDT,DGREV))
IF 'DGREV
QUIT
Begin DoDot:2
+4 FOR
SET DGBR=$ORDER(^DGCR(399.5,"AIVDT",DGBSI,DGACTDT,DGREV,DGBR))
IF 'DGBR
QUIT
DO CHKREV
IF IBCHK
DO STORREV
End DoDot:2
End DoDot:1
+5 QUIT
CHKREV ;check if billing rate (dgbr) is active, and use with payer.
+1 SET IBCHK=0
+2 ;quit if inactive
SET DGBRN=^DGCR(399.5,DGBR,0)
IF '$PIECE(DGBRN,"^",5)
QUIT
+3 ;quit if non-standard rate
IF IBIDS(.11)="i"
IF $PIECE(DGINPAR,"^",2)=""
IF +$PIECE(DGBRN,"^",7)
QUIT
+4 ;non-standard rates only for ins.
IF IBIDS(.11)'="i"
IF +$PIECE(DGBRN,"^",7)
QUIT
+5 ;quit if revenue code not in exception list
SET DGREV00="00"_DGREV
IF IBIDS(.11)="i"
IF $PIECE(DGINPAR,"^",2)]""
IF $PIECE(DGINPAR,"^",2)'[$EXTRACT(DGREV00,$LENGTH(DGREV00)-2,$LENGTH(DGREV00))
QUIT
+6 IF $PIECE(DGBRN,U,6)[IBIDS(.11)
IF '$DATA(DGFND)
SET DGFND=""
SET IBCHK=1
QUIT
+7 QUIT
STORREV ;store revenue code in revenue code file
+1 SET X=$PIECE(^DGCR(399.5,DGBR,0),"^",3)
SET DGAMNT=$PIECE(^(0),"^",4)
SET DA(1)=IBIFN
SET DIC(0)="L"
SET DIC="^DGCR(399,IBIFN,""RC"","
SET DGFUNC="Adding"
+2 IF $DATA(^DGCR(399,IBIFN,"RC","ABS",X,DGBSI))
SET DA=$ORDER(^DGCR(399,IBIFN,"RC","ABS",X,DGBSI,0))
SET DGFUNC="Editing"
GOTO EDITREV
+3 DO FILE
DO WRT
+4 QUIT
+5 ;
FILE ;manually file entry, index with ix1^dik to use compiled x-ref
+1 IF '$DATA(DGREVHDR)
DO REVHDR
+2 IF IBIDS(.11)="c"
IF IBIDS(.05)<3
SET DGBSLOS=1
+3 LOCK ^DGCR(399,IBIFN):1
+4 SET DA=$PIECE(^DGCR(399,IBIFN,"RC",0),"^",3)
+5 FOR DGLL=0:0
SET DA=DA+1
IF '$DATA(^DGCR(399,IBIFN,"RC",DA,0))
QUIT
+6 ;S ^DGCR(399,IBIFN,"RC",DA,0)=X_"^"_DGAMNT_"^"_DGBSLOS_"^^"_DGBSI_$S($D(DGPROC)&($D(DGDIV)):"^"_DGPROC_"^"_DGDIV,1:"")
+7 SET ^DGCR(399,IBIFN,"RC",DA,0)=X_"^"_DGAMNT_"^"_DGBSLOS_"^^"_DGBSI_"^"_$GET(DGPROC)_"^"_$GET(DGDIV)_"^"_1
+8 SET ^DGCR(399,IBIFN,"RC",0)=$PIECE(^DGCR(399,IBIFN,"RC",0),"^",1,2)_"^"_DA_"^"_($PIECE(^DGCR(399,IBIFN,"RC",0),"^",4)+1)
+9 SET DIK="^DGCR(399,"_DA(1)_",""RC"","
DO IX1^DIK
LOCK ^DGCR(399,IBIFN):1
+10 QUIT
+11 ;
EDITREV ;edit revenue code data.
+1 IF '$DATA(DGREVHDR)
DO REVHDR
+2 IF IBIDS(.11)="c"
IF IBIDS(.05)<3
SET DGBSLOS=1
+3 SET DIE=DIC
SET DA(1)=IBIFN
SET DR=".02///"_DGAMNT_";.03///"_DGBSLOS_";.05///"_DGBS
DO ^DIE
+4 ;
WRT ;S Z="00"_$P(^DGCR(399.5,DGBR,0),"^",3) W:'$G(IBAUTO) !,DGFUNC,?12,$E(Z,($L(Z)-2),$L(Z)),?24,DGBSLOS,?31,"$",$J(DGAMNT,8,2),?44,DGBS
+1 SET Z="00"_$PIECE(^DGCR(399.5,DGBR,0),"^",3)
IF '$GET(IBAUTO)
WRITE !,DGFUNC,?12,$EXTRACT(Z,($LENGTH(Z)-2),$LENGTH(Z)),?24,DGBSLOS,?31,"$",$JUSTIFY(DGAMNT,8,2),?44,DGBS,?65,$PIECE($GET(^ICPT(+$GET(DGPROC),0)),U,1)
+2 QUIT
REVHDR SET DGREVHDR=1
IF '$GET(IBAUTO)
WRITE !,"Updating Revenue Codes",!?10,"REV. CODE",?22,"UNITS",?31,"CHARGE",?44,"BEDSECTION"
IF $DATA(DGPROC)
IF '$GET(IBAUTO)
WRITE ?65,"PROCEDURE"