IBCEU5 ;ALB/TMP - EDI UTILITIES (continued) FOR CMS-1500 ;13-DEC-99
;;2.0;INTEGRATED BILLING;**51,137,232,348,349,432,592,608**;21-MAR-94;Build 90
;;Per VA Directive 6402, this routine should not be modified.
Q
;
EXTCR(IBPRV) ; Called by trigger on field .02 of file 399.0222
; Also called by trigger on field .02 of file 399.0404 (DEM;432).
; Function returns the first 3 digits of the provider's degree if
; a VA provider or the credentials in file 355.9 if non-VA provider
; IBPRV = vp to file 200 or 355.93
Q $E($$CRED^IBCEU(IBPRV),1,3)
;
FTPRV(IBIFN,NOASK) ; If form type changes from UB-04 to CMS-1500 or vice
; versa, ask to change provider function to appropriate function for
; form type (ATTENDING = UB-04, RENDERING = CMS-1500)
; IBIFN = ien of bill in file 399
; NOASK (flag) = 1 if change should happen without asking first
N ATT,REN,FT
S FT=$$FT^IBCEF(IBIFN)
S REN=$$CKPROV^IBCEU(IBIFN,3,1)
S ATT=$$CKPROV^IBCEU(IBIFN,4,1)
;JWS;IB*2.0*592;add Dental form check
I $S(FT=2:'REN&ATT,FT=3:'ATT&REN,FT=7:'REN&ATT,1:0) D
. I '$G(NOASK) D TXFERPRV(IBIFN,FT) Q
. D PRVCHG(IBIFN,FT)
D CLEANUP(IBIFN,FT)
Q
;
TXFERPRV(IBIFN,FT) ; Ask to change the function of the main provider on
; bill IBIFN to the function appropriate to the form type FT
;
N DIR,X,Y,Z,DIE,DA,DR,HAVE,NEED,IBZ
; DEM;432 - Changed the prompt from uppercase to mixed case.
W ! S DIR("A")=" Change the Claim Level "_$S(FT=3:"Rendering",1:"Attending")_" provider's function to "_$S(FT=3:"Attending",1:"Rendering")_"?: "
S DIR(0)="YA",DIR("B")="NO",DIR("?",1)="If you answer YES here, you will make the claim level provider functions",DIR("?")=" consistent with the form type of the bill"
D ^DIR K DIR
I Y'=1 Q
D PRVCHG(IBIFN,FT)
Q
;
PRVCHG(IBIFN,IBFT) ; Change provider type to type consistent with current
; data on bill
N Z,IBZ,HAVE,NEED,DIE,DA,X,Y
S HAVE=$S(IBFT=3:3,1:4)
S NEED=$S(IBFT=3:4,1:3)
S Z=$O(^DGCR(399,IBIFN,"PRV","B",HAVE,0))
I Z D
. S DA(1)=IBIFN,DA=+Z
. D FDA^DILF(399.0222,.DA,.01,,NEED,"IBZ")
. D FILE^DIE(,"IBZ")
;I Z S DA(1)=IBIFN,DIE="^DGCR(399,"_DA(1)_",""PRV"",",DA=+Z,DR=".01////"_NEED D FILE^DIE(,DIE
Q
;
CLEANUP(IBIFN,FT) ; If form type changes remove any extra provider FUNCTIONS.
N X,PRV,CLEAN,DA,DIE
;
;JWS;IB*2.0*592 US1108 - If form type changes to (7) J430D - Dental, default Bill Charge Type
I FT=7 S CLEAN(399,IBIFN_",",.27)=2
; (3) If form type changes from CMS-1500 to UB-04, remove any extra provider FUNCTIONS.
;JWS;IB*2.0*592 US1108 - added 6-ASSISTANT SURGEON
I FT=3 F X=5,6 D ; 5-SUPERVISING, 6-ASSISTANT SURGEON
. I $D(^DGCR(399,IBIFN,"PRV","B",X)) D
.. S PRV=0 F S PRV=$O(^DGCR(399,IBIFN,"PRV","B",X,PRV)) Q:+PRV=0 D
... S DA(1)=IBIFN,DA=PRV D FDA^DILF(399.0222,.DA,.01,,"@","CLEAN")
;
; (2) If form type changes from UB-04 to CMS-1500, remove any extra provider FUNCTIONS.
;JWS;IB*2.0*592 US1108 - added 6-ASSISTANT SURGEON
I FT=2 F X=2,4,6,9 D ; 2-OPERATING, 4-ATTENDING, 6-ASSISTANT SURGEON, 9-OTHER
. I $D(^DGCR(399,IBIFN,"PRV","B",X)) D
.. S PRV=0 F S PRV=$O(^DGCR(399,IBIFN,"PRV","B",X,PRV)) Q:+PRV=0 D
... S DA(1)=IBIFN,DA=PRV D FDA^DILF(399.0222,.DA,.01,,"@","CLEAN")
;
I $D(CLEAN) D FILE^DIE(,"CLEAN")
Q
;
PRVHELP ; Text for the provider function help
Q:$G(X)'="??"
N IBZ,IBQUIT,IB,IB1,DIR,Z
S IBQUIT=0
S Z=""
I '$D(IOSL)!'$D(IOST) D HOME^%ZIS
Q:IOST'["C-"
D:$G(D0) SPECIFIC(D0)
N DIR,X,Y S DIR(0)="E" D ^DIR K DIR W @IOF
S:$G(D0) Z=$$FT^IBCEF(D0)
S IB=IOSL,IB1=1
F IBZ=1:1 S:$P($T(HLPTXT+IBZ),";;",2)="" IBQUIT=1 Q:IBQUIT S IB1=1 D
. I $Y>(IB-3) N DIR,X,Y S IB1=0,DIR(0)="E" D ^DIR K DIR S IB=IB+IOSL I Y'=1 S IBQUIT=1 Q
. W !,$P($T(HLPTXT+IBZ),";;",2)
I IB1 D
. N DIR,X,Y S DIR(0)="E" D ^DIR K DIR
W @IOF
Q
;
SPECIFIC(IBIFN) ; Display specific provider requirements for the bill IBIFN
N IBFT,IBPRV,IBR,ONBILL,Z,IBZ
S IBFT=$$FT^IBCEF(IBIFN)
D GETPRV^IBCEU(IBIFN,"ALL",.IBPRV) ;Returns needed providers
;JWS;IB*2.0*592 US1108 - added Dental form #7
W !,"This bill is ",$S(IBFT=7:"J430D",IBFT=3:"UB-04",1:"CMS-1500"),"/",$S($$INPAT^IBCEF(IBIFN):"Inpatient",1:"Outpatient")
W !!,"The valid provider functions for this bill are:"
;JWS;IB*2.0*592 US1108 - changed loop from :5 to :6 for Assistant Surgeon
F IBZ=1:1:6,9 I $$PRVOK^IBCEU(IBZ,IBIFN) D
. S ONBILL=$$CKPROV^IBCEU(IBIFN,IBZ)
. S IBR=$S($G(IBPRV(IBZ,"NOTOPT")):1,$G(IBPRV(IBZ,"SITUATIONAL")):2,1:0) ; DEM;432 added "SITUATIONAL" check.
. ;JWS;IB*2.0*592 US1108 - dental form#7
. I IBFT=7 S IBR=2
. ; ib2.0*432
. ; W !,IBZ," ",$$EXPAND^IBTRE(399.0222,.01,IBZ),?18,$S(IBR&'ONBILL:"**",1:""),?20,$S(IBR:"REQUIRED",1:"OPTIONAL"),$S(ONBILL:" - ALREADY ON BILL",1:" - NOT ON BILL")
. W !,IBZ," ",$$EXPAND^IBTRE(399.0222,.01,IBZ),?18,$S(IBR&'ONBILL:"**",1:""),?23,$S(IBR=1:"REQUIRED",IBR=2:"SITUATIONAL",1:"OPTIONAL")
W !
Q
;
HLPTXT ; Helptext for provider function
;;
;;PROVIDER FUNCTION requirements:
;;
;;RENDERING: UB-04 Situational, CMS-1500 Situational, or J430D Situational
;; This is the provider who performed a service.
;;
;;ATTENDING: UB-04 REQUIRED
;; The physician who has primary responsibility
;; for the patient's medical care and treatment.
;;
;;OPERATING: UB-04 SITUATIONAL
;; The provider who performed the principal procedure(s)
;; being billed.
;; UB-04 (inpatient): Situational IF type of bill has first 2
;; digits of 11, and there is a principal
;; procedure that will print in Form
;; Locator 74 of the claim, there must be
;; an Operating or Rendering Provider.
;; UB-04 (outpatient):REQUIRED IF type of bill has first 2
;; digits of 83, and there is a principal
;; procedure that will print in Form
;; Locator 74 of the claim.
;;
;;REFERRING: UB-04, CMS-1500, or J430D SITUATIONAL
;; The provider who referred the patient for the services being billed.
;;
;;SUPERVISING: CMS-1500 OPTIONAL or J430D SITUATIONAL
;; Required when the rendering provider is supervised
;; by another provider. Data will not be printed.
;;
;;OTHER OPERATING: UB-04 SITUATIONAL
;; Used to report another Operating Physician. There must
;; also be an Operating Physician on the claim.
;;
;;ASSISTANT SURGEON: J430D SITUATIONAL
;; Use when the Rendering Provider provided these services in the role
;; of the Assisting Surgeon.
;;
;; There are providers who performed specific functions for
;; the services on this bill. These providers are needed to
;; enable the V.A. to collect reimbursement when more than
;; one provider function is involved in the billable episode
;; (like an operating physician or referring provider).
;;
;; This data identifies the type of function that was performed
;; by a provider.
;;
;
LINKRX(IBIFN,IBREV) ; Ask for revenue code's RX if not already there
N DIR,X,Y,IBZ,IBRX,Z,Z0,DA
Q:$P($G(^DGCR(399,IBIFN,"RC",IBREV,0)),U,11)!($P($G(^(0)),U,10)'=3)
S Z=0 F S Z=$O(^DGCR(399,IBIFN,"RC",Z)) Q:'Z I Z'=IBREV S Z0=$G(^(Z,0)) I $P(Z0,U,10)=3,$P(Z0,U,11) S IBRX(+$P(Z0,U,11))=""
S DIR(0)="PAO^IBA(362.4,:AEMQ",DIR("S")="I $P(^(0),U,2)=IBIFN,'$D(IBRX(+Y))"
S DIR("A")="Select Rx for this charge: "
S DIR("?",1)="Enter an Rx# for this revenue code"
S DIR("?")=" The Rx must not already have an associated revenue code"
D ^DIR K DIR
I Y>0 D
. S DA(1)=IBIFN,DA=IBREV,IBZ=""
. D FDA^DILF(399.042,.DA,.11,"R",+Y,"IBZ")
. D FILE^DIE(,"IBZ")
Q
;
LINKCPT(IBIFN,IBREV) ; Ask for revenue code's CPT
N DIR,X,Y,IBZ,IBCP,Z,Z0,Z1,DA,IBRC,IBP
S IBRC=$G(^DGCR(399,IBIFN,"RC",IBREV,0))
Q:$P(IBRC,U,8)!($P(IBRC,U,10)'=4)
S IBP=+$P(IBRC,U,6)
I $P(IBRC,U,11) W !,"PROCEDURE #"_$P(IBRC,U,11)_" HAS BEEN ASSOCIATED WITH THIS MANUAL CHARGE"
I '$P(IBRC,U,11) D Q:IBRC=""
. S DIR("?",1)="Respond YES if this revenue code charge specifically references the data for"
. S DIR("?",2)=" a particular procedure that was manually entered on the previous screen."
. S DIR("?",3)=" For outpatient UB-04 bills, associating a manual revenue code charge with",DIR("?")=" a procedure is the only way to print a modifier in box 44"
. S DIR(0)="YA",DIR("A")="SHOULD A PROCEDURE ENTRY BE ASSOCIATED WITH THIS CHARGE?: ",DIR("B")=$S(IBP:"YES",1:"NO") W ! D ^DIR K DIR W !
. I Y'=1 S IBRC="" Q
I $P(IBRC,U,11) D
. S DIR("?",1)="Respond YES if you no longer want this revenue code charge to reference a",DIR("?")=" specific manually entered procedure"
. S DIR(0)="YA",DIR("A")="DELETE THE EXISTING PROCEDURE ASSOCIATION?: ",DIR("B")="NO" W ! D ^DIR K DIR
. I Y=1 D UPDPTR(IBIFN,IBREV,"") S $P(IBRC,U,11)=""
S Z=0 F S Z=$O(^DGCR(399,IBIFN,"RC",Z)) Q:'Z S Z0=$G(^(Z,0)) I IBREV'=Z,$P(Z0,U,11) D
. ; Don't allow to link to 'used' proc
. I $P(Z0,U,10)=4 S IBCP($P(Z0,U,11))="" Q
. I $P(Z0,U,10)=3,$P(Z0,U,15) S IBCP($P(Z0,U,15))=""
S DIR(0)="PAO^DGCR(399,"_IBIFN_",""CP"",:AEMQ",DIR("S")="I '$D(IBCP(+Y)),$P(^(0),U)[""CPT"",+^(0)="_+$P($G(^DGCR(399,IBIFN,"RC",IBREV,0)),U,6)
S DIR("A")="SELECT A PROCEDURE ENTRY: "_$S($P(IBRC,U,11):"#"_$P(IBRC,U,11)_" - "_$$EXPAND^IBTRE(399.0304,.01,$P($G(^DGCR(399,IBIFN,"CP",$P(IBRC,U,11),0)),U))_"// ",1:"")
S DIR("?")="Enter a manually-added CPT procedure to associate with this charge"
S DA(1)=IBIFN
D ^DIR K DIR W !
I Y>0 D UPDPTR(IBIFN,IBREV,+Y)
Q
;
UPDPTR(IBIFN,IBREV,Y) ;
N IBZ,DA
S DA(1)=IBIFN,DA=IBREV,IBZ=""
D FDA^DILF(399.042,.DA,.11,"R",$S(Y:+Y,1:""),"IBZ")
D FILE^DIE(,"IBZ")
Q
;
INSFT(IBIFN) ; Returns 1 if form type is UB-04, 0 if CMS-1500 or J430D
Q ($$FT^IBCEF(IBIFN)=3)
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCEU5 9956 printed Dec 13, 2024@02:12:36 Page 2
IBCEU5 ;ALB/TMP - EDI UTILITIES (continued) FOR CMS-1500 ;13-DEC-99
+1 ;;2.0;INTEGRATED BILLING;**51,137,232,348,349,432,592,608**;21-MAR-94;Build 90
+2 ;;Per VA Directive 6402, this routine should not be modified.
+3 QUIT
+4 ;
EXTCR(IBPRV) ; Called by trigger on field .02 of file 399.0222
+1 ; Also called by trigger on field .02 of file 399.0404 (DEM;432).
+2 ; Function returns the first 3 digits of the provider's degree if
+3 ; a VA provider or the credentials in file 355.9 if non-VA provider
+4 ; IBPRV = vp to file 200 or 355.93
+5 QUIT $EXTRACT($$CRED^IBCEU(IBPRV),1,3)
+6 ;
FTPRV(IBIFN,NOASK) ; If form type changes from UB-04 to CMS-1500 or vice
+1 ; versa, ask to change provider function to appropriate function for
+2 ; form type (ATTENDING = UB-04, RENDERING = CMS-1500)
+3 ; IBIFN = ien of bill in file 399
+4 ; NOASK (flag) = 1 if change should happen without asking first
+5 NEW ATT,REN,FT
+6 SET FT=$$FT^IBCEF(IBIFN)
+7 SET REN=$$CKPROV^IBCEU(IBIFN,3,1)
+8 SET ATT=$$CKPROV^IBCEU(IBIFN,4,1)
+9 ;JWS;IB*2.0*592;add Dental form check
+10 IF $SELECT(FT=2:'REN&ATT,FT=3:'ATT&REN,FT=7:'REN&ATT,1:0)
Begin DoDot:1
+11 IF '$GET(NOASK)
DO TXFERPRV(IBIFN,FT)
QUIT
+12 DO PRVCHG(IBIFN,FT)
End DoDot:1
+13 DO CLEANUP(IBIFN,FT)
+14 QUIT
+15 ;
TXFERPRV(IBIFN,FT) ; Ask to change the function of the main provider on
+1 ; bill IBIFN to the function appropriate to the form type FT
+2 ;
+3 NEW DIR,X,Y,Z,DIE,DA,DR,HAVE,NEED,IBZ
+4 ; DEM;432 - Changed the prompt from uppercase to mixed case.
+5 WRITE !
SET DIR("A")=" Change the Claim Level "_$SELECT(FT=3:"Rendering",1:"Attending")_" provider's function to "_$SELECT(FT=3:"Attending",1:"Rendering")_"?: "
+6 SET DIR(0)="YA"
SET DIR("B")="NO"
SET DIR("?",1)="If you answer YES here, you will make the claim level provider functions"
SET DIR("?")=" consistent with the form type of the bill"
+7 DO ^DIR
KILL DIR
+8 IF Y'=1
QUIT
+9 DO PRVCHG(IBIFN,FT)
+10 QUIT
+11 ;
PRVCHG(IBIFN,IBFT) ; Change provider type to type consistent with current
+1 ; data on bill
+2 NEW Z,IBZ,HAVE,NEED,DIE,DA,X,Y
+3 SET HAVE=$SELECT(IBFT=3:3,1:4)
+4 SET NEED=$SELECT(IBFT=3:4,1:3)
+5 SET Z=$ORDER(^DGCR(399,IBIFN,"PRV","B",HAVE,0))
+6 IF Z
Begin DoDot:1
+7 SET DA(1)=IBIFN
SET DA=+Z
+8 DO FDA^DILF(399.0222,.DA,.01,,NEED,"IBZ")
+9 DO FILE^DIE(,"IBZ")
End DoDot:1
+10 ;I Z S DA(1)=IBIFN,DIE="^DGCR(399,"_DA(1)_",""PRV"",",DA=+Z,DR=".01////"_NEED D FILE^DIE(,DIE
+11 QUIT
+12 ;
CLEANUP(IBIFN,FT) ; If form type changes remove any extra provider FUNCTIONS.
+1 NEW X,PRV,CLEAN,DA,DIE
+2 ;
+3 ;JWS;IB*2.0*592 US1108 - If form type changes to (7) J430D - Dental, default Bill Charge Type
+4 IF FT=7
SET CLEAN(399,IBIFN_",",.27)=2
+5 ; (3) If form type changes from CMS-1500 to UB-04, remove any extra provider FUNCTIONS.
+6 ;JWS;IB*2.0*592 US1108 - added 6-ASSISTANT SURGEON
+7 ; 5-SUPERVISING, 6-ASSISTANT SURGEON
IF FT=3
FOR X=5,6
Begin DoDot:1
+8 IF $DATA(^DGCR(399,IBIFN,"PRV","B",X))
Begin DoDot:2
+9 SET PRV=0
FOR
SET PRV=$ORDER(^DGCR(399,IBIFN,"PRV","B",X,PRV))
if +PRV=0
QUIT
Begin DoDot:3
+10 SET DA(1)=IBIFN
SET DA=PRV
DO FDA^DILF(399.0222,.DA,.01,,"@","CLEAN")
End DoDot:3
End DoDot:2
End DoDot:1
+11 ;
+12 ; (2) If form type changes from UB-04 to CMS-1500, remove any extra provider FUNCTIONS.
+13 ;JWS;IB*2.0*592 US1108 - added 6-ASSISTANT SURGEON
+14 ; 2-OPERATING, 4-ATTENDING, 6-ASSISTANT SURGEON, 9-OTHER
IF FT=2
FOR X=2,4,6,9
Begin DoDot:1
+15 IF $DATA(^DGCR(399,IBIFN,"PRV","B",X))
Begin DoDot:2
+16 SET PRV=0
FOR
SET PRV=$ORDER(^DGCR(399,IBIFN,"PRV","B",X,PRV))
if +PRV=0
QUIT
Begin DoDot:3
+17 SET DA(1)=IBIFN
SET DA=PRV
DO FDA^DILF(399.0222,.DA,.01,,"@","CLEAN")
End DoDot:3
End DoDot:2
End DoDot:1
+18 ;
+19 IF $DATA(CLEAN)
DO FILE^DIE(,"CLEAN")
+20 QUIT
+21 ;
PRVHELP ; Text for the provider function help
+1 if $GET(X)'="??"
QUIT
+2 NEW IBZ,IBQUIT,IB,IB1,DIR,Z
+3 SET IBQUIT=0
+4 SET Z=""
+5 IF '$DATA(IOSL)!'$DATA(IOST)
DO HOME^%ZIS
+6 if IOST'["C-"
QUIT
+7 if $GET(D0)
DO SPECIFIC(D0)
+8 NEW DIR,X,Y
SET DIR(0)="E"
DO ^DIR
KILL DIR
WRITE @IOF
+9 if $GET(D0)
SET Z=$$FT^IBCEF(D0)
+10 SET IB=IOSL
SET IB1=1
+11 FOR IBZ=1:1
if $PIECE($TEXT(HLPTXT+IBZ),";;",2)=""
SET IBQUIT=1
if IBQUIT
QUIT
SET IB1=1
Begin DoDot:1
+12 IF $Y>(IB-3)
NEW DIR,X,Y
SET IB1=0
SET DIR(0)="E"
DO ^DIR
KILL DIR
SET IB=IB+IOSL
IF Y'=1
SET IBQUIT=1
QUIT
+13 WRITE !,$PIECE($TEXT(HLPTXT+IBZ),";;",2)
End DoDot:1
+14 IF IB1
Begin DoDot:1
+15 NEW DIR,X,Y
SET DIR(0)="E"
DO ^DIR
KILL DIR
End DoDot:1
+16 WRITE @IOF
+17 QUIT
+18 ;
SPECIFIC(IBIFN) ; Display specific provider requirements for the bill IBIFN
+1 NEW IBFT,IBPRV,IBR,ONBILL,Z,IBZ
+2 SET IBFT=$$FT^IBCEF(IBIFN)
+3 ;Returns needed providers
DO GETPRV^IBCEU(IBIFN,"ALL",.IBPRV)
+4 ;JWS;IB*2.0*592 US1108 - added Dental form #7
+5 WRITE !,"This bill is ",$SELECT(IBFT=7:"J430D",IBFT=3:"UB-04",1:"CMS-1500"),"/",$SELECT($$INPAT^IBCEF(IBIFN):"Inpatient",1:"Outpatient")
+6 WRITE !!,"The valid provider functions for this bill are:"
+7 ;JWS;IB*2.0*592 US1108 - changed loop from :5 to :6 for Assistant Surgeon
+8 FOR IBZ=1:1:6,9
IF $$PRVOK^IBCEU(IBZ,IBIFN)
Begin DoDot:1
+9 SET ONBILL=$$CKPROV^IBCEU(IBIFN,IBZ)
+10 ; DEM;432 added "SITUATIONAL" check.
SET IBR=$SELECT($GET(IBPRV(IBZ,"NOTOPT")):1,$GET(IBPRV(IBZ,"SITUATIONAL")):2,1:0)
+11 ;JWS;IB*2.0*592 US1108 - dental form#7
+12 IF IBFT=7
SET IBR=2
+13 ; ib2.0*432
+14 ; W !,IBZ," ",$$EXPAND^IBTRE(399.0222,.01,IBZ),?18,$S(IBR&'ONBILL:"**",1:""),?20,$S(IBR:"REQUIRED",1:"OPTIONAL"),$S(ONBILL:" - ALREADY ON BILL",1:" - NOT ON BILL")
+15 WRITE !,IBZ," ",$$EXPAND^IBTRE(399.0222,.01,IBZ),?18,$SELECT(IBR&'ONBILL:"**",1:""),?23,$SELECT(IBR=1:"REQUIRED",IBR=2:"SITUATIONAL",1:"OPTIONAL")
End DoDot:1
+16 WRITE !
+17 QUIT
+18 ;
HLPTXT ; Helptext for provider function
+1 ;;
+2 ;;PROVIDER FUNCTION requirements:
+3 ;;
+4 ;;RENDERING: UB-04 Situational, CMS-1500 Situational, or J430D Situational
+5 ;; This is the provider who performed a service.
+6 ;;
+7 ;;ATTENDING: UB-04 REQUIRED
+8 ;; The physician who has primary responsibility
+9 ;; for the patient's medical care and treatment.
+10 ;;
+11 ;;OPERATING: UB-04 SITUATIONAL
+12 ;; The provider who performed the principal procedure(s)
+13 ;; being billed.
+14 ;; UB-04 (inpatient): Situational IF type of bill has first 2
+15 ;; digits of 11, and there is a principal
+16 ;; procedure that will print in Form
+17 ;; Locator 74 of the claim, there must be
+18 ;; an Operating or Rendering Provider.
+19 ;; UB-04 (outpatient):REQUIRED IF type of bill has first 2
+20 ;; digits of 83, and there is a principal
+21 ;; procedure that will print in Form
+22 ;; Locator 74 of the claim.
+23 ;;
+24 ;;REFERRING: UB-04, CMS-1500, or J430D SITUATIONAL
+25 ;; The provider who referred the patient for the services being billed.
+26 ;;
+27 ;;SUPERVISING: CMS-1500 OPTIONAL or J430D SITUATIONAL
+28 ;; Required when the rendering provider is supervised
+29 ;; by another provider. Data will not be printed.
+30 ;;
+31 ;;OTHER OPERATING: UB-04 SITUATIONAL
+32 ;; Used to report another Operating Physician. There must
+33 ;; also be an Operating Physician on the claim.
+34 ;;
+35 ;;ASSISTANT SURGEON: J430D SITUATIONAL
+36 ;; Use when the Rendering Provider provided these services in the role
+37 ;; of the Assisting Surgeon.
+38 ;;
+39 ;; There are providers who performed specific functions for
+40 ;; the services on this bill. These providers are needed to
+41 ;; enable the V.A. to collect reimbursement when more than
+42 ;; one provider function is involved in the billable episode
+43 ;; (like an operating physician or referring provider).
+44 ;;
+45 ;; This data identifies the type of function that was performed
+46 ;; by a provider.
+47 ;;
+48 ;
LINKRX(IBIFN,IBREV) ; Ask for revenue code's RX if not already there
+1 NEW DIR,X,Y,IBZ,IBRX,Z,Z0,DA
+2 if $PIECE($GET(^DGCR(399,IBIFN,"RC",IBREV,0)),U,11)!($PIECE($GET(^(0)),U,10)'=3)
QUIT
+3 SET Z=0
FOR
SET Z=$ORDER(^DGCR(399,IBIFN,"RC",Z))
if 'Z
QUIT
IF Z'=IBREV
SET Z0=$GET(^(Z,0))
IF $PIECE(Z0,U,10)=3
IF $PIECE(Z0,U,11)
SET IBRX(+$PIECE(Z0,U,11))=""
+4 SET DIR(0)="PAO^IBA(362.4,:AEMQ"
SET DIR("S")="I $P(^(0),U,2)=IBIFN,'$D(IBRX(+Y))"
+5 SET DIR("A")="Select Rx for this charge: "
+6 SET DIR("?",1)="Enter an Rx# for this revenue code"
+7 SET DIR("?")=" The Rx must not already have an associated revenue code"
+8 DO ^DIR
KILL DIR
+9 IF Y>0
Begin DoDot:1
+10 SET DA(1)=IBIFN
SET DA=IBREV
SET IBZ=""
+11 DO FDA^DILF(399.042,.DA,.11,"R",+Y,"IBZ")
+12 DO FILE^DIE(,"IBZ")
End DoDot:1
+13 QUIT
+14 ;
LINKCPT(IBIFN,IBREV) ; Ask for revenue code's CPT
+1 NEW DIR,X,Y,IBZ,IBCP,Z,Z0,Z1,DA,IBRC,IBP
+2 SET IBRC=$GET(^DGCR(399,IBIFN,"RC",IBREV,0))
+3 if $PIECE(IBRC,U,8)!($PIECE(IBRC,U,10)'=4)
QUIT
+4 SET IBP=+$PIECE(IBRC,U,6)
+5 IF $PIECE(IBRC,U,11)
WRITE !,"PROCEDURE #"_$PIECE(IBRC,U,11)_" HAS BEEN ASSOCIATED WITH THIS MANUAL CHARGE"
+6 IF '$PIECE(IBRC,U,11)
Begin DoDot:1
+7 SET DIR("?",1)="Respond YES if this revenue code charge specifically references the data for"
+8 SET DIR("?",2)=" a particular procedure that was manually entered on the previous screen."
+9 SET DIR("?",3)=" For outpatient UB-04 bills, associating a manual revenue code charge with"
SET DIR("?")=" a procedure is the only way to print a modifier in box 44"
+10 SET DIR(0)="YA"
SET DIR("A")="SHOULD A PROCEDURE ENTRY BE ASSOCIATED WITH THIS CHARGE?: "
SET DIR("B")=$SELECT(IBP:"YES",1:"NO")
WRITE !
DO ^DIR
KILL DIR
WRITE !
+11 IF Y'=1
SET IBRC=""
QUIT
End DoDot:1
if IBRC=""
QUIT
+12 IF $PIECE(IBRC,U,11)
Begin DoDot:1
+13 SET DIR("?",1)="Respond YES if you no longer want this revenue code charge to reference a"
SET DIR("?")=" specific manually entered procedure"
+14 SET DIR(0)="YA"
SET DIR("A")="DELETE THE EXISTING PROCEDURE ASSOCIATION?: "
SET DIR("B")="NO"
WRITE !
DO ^DIR
KILL DIR
+15 IF Y=1
DO UPDPTR(IBIFN,IBREV,"")
SET $PIECE(IBRC,U,11)=""
End DoDot:1
+16 SET Z=0
FOR
SET Z=$ORDER(^DGCR(399,IBIFN,"RC",Z))
if 'Z
QUIT
SET Z0=$GET(^(Z,0))
IF IBREV'=Z
IF $PIECE(Z0,U,11)
Begin DoDot:1
+17 ; Don't allow to link to 'used' proc
+18 IF $PIECE(Z0,U,10)=4
SET IBCP($PIECE(Z0,U,11))=""
QUIT
+19 IF $PIECE(Z0,U,10)=3
IF $PIECE(Z0,U,15)
SET IBCP($PIECE(Z0,U,15))=""
End DoDot:1
+20 SET DIR(0)="PAO^DGCR(399,"_IBIFN_",""CP"",:AEMQ"
SET DIR("S")="I '$D(IBCP(+Y)),$P(^(0),U)[""CPT"",+^(0)="_+$PIECE($GET(^DGCR(399,IBIFN,"RC",IBREV,0)),U,6)
+21 SET DIR("A")="SELECT A PROCEDURE ENTRY: "_$SELECT($PIECE(IBRC,U,11):"#"_$PIECE(IBRC,U,11)_" - "_$$EXPAND^IBTRE(399.0304,.01,$PIECE($GET(^DGCR(399,IBIFN,"CP",$PIECE(IBRC,U,11),0)),U))_"// ",1:"")
+22 SET DIR("?")="Enter a manually-added CPT procedure to associate with this charge"
+23 SET DA(1)=IBIFN
+24 DO ^DIR
KILL DIR
WRITE !
+25 IF Y>0
DO UPDPTR(IBIFN,IBREV,+Y)
+26 QUIT
+27 ;
UPDPTR(IBIFN,IBREV,Y) ;
+1 NEW IBZ,DA
+2 SET DA(1)=IBIFN
SET DA=IBREV
SET IBZ=""
+3 DO FDA^DILF(399.042,.DA,.11,"R",$SELECT(Y:+Y,1:""),"IBZ")
+4 DO FILE^DIE(,"IBZ")
+5 QUIT
+6 ;
INSFT(IBIFN) ; Returns 1 if form type is UB-04, 0 if CMS-1500 or J430D
+1 QUIT ($$FT^IBCEF(IBIFN)=3)