[613] | 1 | IBCREQ ;ALB/ARH-RATES: CM FAST ENTER/EDIT OPTION ;22-MAY-1996
|
---|
| 2 | ;;2.0;INTEGRATED BILLING;**52,153,167,187**;21-MAR-94
|
---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ;
|
---|
| 5 | ENTER ; OPTION: fast enter Tort or Interagency rates - this option requires charge sets defined as released,
|
---|
| 6 | ; name not changed and a standard set of charges
|
---|
| 7 | N DIR,DIRUT,DTOUT,DUOUT,X,Y,IBARR,IBRATE,IBEFDT,IBRVCD
|
---|
| 8 | W @IOF W !!,?10,"Fast Enter of Tortiously Liable and Interagency Rates",!!
|
---|
| 9 | ;
|
---|
| 10 | S DIR(0)="SO^T:Tortiously Liable;I:Interagency",DIR("A")="Enter which rates" D ^DIR K DIR
|
---|
| 11 | S IBRATE=$S(Y="T":"1^TORTIOUSLY LIABLE",Y="I":"2^INTERAGENCY",1:"") Q:'IBRATE
|
---|
| 12 | ;
|
---|
| 13 | S IBEFDT=$$GETDT^IBCRU1() I IBEFDT'?7N Q
|
---|
| 14 | I +IBRATE=1 S IBRVCD=$$NPFRC Q:'IBRVCD I '$$TORT(IBRATE,IBEFDT,.IBARR,IBRVCD) Q
|
---|
| 15 | I +IBRATE=2 I '$$IA(IBRATE,IBEFDT,.IBARR) Q
|
---|
| 16 | ;
|
---|
| 17 | D DISP(IBRATE,.IBARR) Q:$D(DIRUT)
|
---|
| 18 | I +IBRATE=2 D SET(IBRATE,.IBARR)
|
---|
| 19 | E D SET(IBRATE,.IBARR):'$$MT
|
---|
| 20 | ;
|
---|
| 21 | I IBRATE=1 D ENR^IBEMTO K IBRUN ; bill MT OPT charges awaiting the new copay rate
|
---|
| 22 | ;
|
---|
| 23 | Q
|
---|
| 24 | ;
|
---|
| 25 | TORT(IBRATE,EFDT,ARR,IBRVCD) ; find the standard charge sets for Tort rates
|
---|
| 26 | N IBCSN,IBX K ARR S ARR=$G(EFDT),IBRVCD=$G(IBRVCD),IBX=0
|
---|
| 27 | S ARR(1)="INPATIENT^INPT",ARR(2)="OUTPATIENT VISIT^OPT VISIT",ARR(3)="PRESCRIPTION REFILL^RX REFILL"
|
---|
| 28 | S ARR(4)="OUTPATIENT DENTAL^OPT DENTAL" ;ARR(5)="MT OUTPATIENT COPAYMENT^MT OPT COPAY"
|
---|
| 29 | S IBCSN="TL-INPT (INCLUSIVE)" I '$$CS(IBRATE,IBCSN,1,1,"","(All Inclusive)",.ARR) G TORTQ
|
---|
| 30 | S IBCSN="TL-INPT (NPF)" I '$$CS(IBRATE,IBCSN,1,2,$P(IBRVCD,U,1),"(Room,board)",.ARR) G TORTQ
|
---|
| 31 | S IBCSN="TL-INPT (NPF)" I '$$CS(IBRATE,IBCSN,1,3,$P(IBRVCD,U,2),"(Ancillary)",.ARR) G TORTQ
|
---|
| 32 | S IBCSN="TL-INPT (PF)" I '$$CS(IBRATE,IBCSN,1,4,"","(Physician)",.ARR) G TORTQ
|
---|
| 33 | S IBCSN="TL-OPT VST" I '$$CS(IBRATE,IBCSN,2,1,"","",.ARR) G TORTQ
|
---|
| 34 | S IBCSN="TL-RX FILL" I '$$CS(IBRATE,IBCSN,3,1,"","",.ARR) G TORTQ
|
---|
| 35 | S IBCSN="TL-OPT DENTAL" I '$$CS(IBRATE,IBCSN,4,1,"","",.ARR) G TORTQ
|
---|
| 36 | ;S IBCSN="TL-MT OPT COPAY" I '$$CS(IBRATE,IBCSN,5,1,"","",.ARR) G TORTQ
|
---|
| 37 | S IBX=1
|
---|
| 38 | TORTQ I 'IBX W !!,"The Fast Enter of rates expects to find the standard rates and sets released",!,"nationally, if these are not found this option can not be used."
|
---|
| 39 | Q IBX
|
---|
| 40 | ;
|
---|
| 41 | IA(IBRATE,EFDT,ARR) ; find the standard charge sets for Interagency rates
|
---|
| 42 | N IBCSN,IBX K ARR S ARR=$G(EFDT),IBX=0
|
---|
| 43 | S ARR(1)="INPATIENT",ARR(2)="OUTPATIENT VISIT",ARR(3)="PRESCRIPTION REFILL",ARR(4)="OUTPATIENT DENTAL"
|
---|
| 44 | S ARR(1)="INPATIENT^INPT",ARR(2)="OUTPATIENT VISIT^OPT VISIT",ARR(3)="PRESCRIPTION REFILL^RX REFILL",ARR(4)="OUTPATIENT DENTAL^OPT DENTAL"
|
---|
| 45 | S IBCSN="IA-INPT" I '$$CS(IBRATE,IBCSN,1,1,"","(All Inclusive)",.ARR) G IAQ
|
---|
| 46 | S IBCSN="IA-OPT VST" I '$$CS(IBRATE,IBCSN,2,1,"","",.ARR) G IAQ
|
---|
| 47 | S IBCSN="IA-RX FILL" I '$$CS(IBRATE,IBCSN,3,1,"","",.ARR) G IAQ
|
---|
| 48 | S IBCSN="IA-OPT DENTAL" I '$$CS(IBRATE,IBCSN,4,1,"","",.ARR) G IAQ
|
---|
| 49 | S IBX=1
|
---|
| 50 | IAQ I 'IBX W !!,"The Fast Enter of rates expects to find the standard rates and sets released",!,"nationally, if these are not found this option can not be used."
|
---|
| 51 | Q IBX
|
---|
| 52 | ;
|
---|
| 53 | CS(IBRATE,IBCSN,TYPE,ITEM,RVCD,DESC,ARR) ; accumulate standard charge sets for a rate
|
---|
| 54 | ; check the billing rate is correct and return all relevant info
|
---|
| 55 | ; Output: ARR(event type) = event type name
|
---|
| 56 | ; ARR(event type, X) = CS name ^ CS IFN ^ default rev code ^ rev code to store ^ description of charge
|
---|
| 57 | N IBX,IBCS,IBLN,IBERROR S (IBERROR,IBX)=""
|
---|
| 58 | S IBCS=$O(^IBE(363.1,"B",IBCSN,0)) I +IBCS D
|
---|
| 59 | . S IBLN=$G(^IBE(363.1,IBCS,0)) Q:IBLN=""
|
---|
| 60 | . I $P(IBLN,U,2)'=+IBRATE S IBERROR="*** Error: Charge Set "_IBCSN_" is not a "_$P(IBRATE,U,2)_" rate." Q
|
---|
| 61 | . S IBX=IBCS,ARR(TYPE,ITEM)=IBCSN_U_IBCS_U_$S($G(RVCD):RVCD,1:$P(IBLN,U,5))_U_$G(RVCD)_U_$G(DESC)
|
---|
| 62 | I 'IBX,IBERROR="" S IBERROR="*** Error: The Charge Set "_IBCSN_" was not found."
|
---|
| 63 | I IBERROR'="" W !!!,IBERROR,!," Can not continue!"
|
---|
| 64 | Q IBX
|
---|
| 65 | ;
|
---|
| 66 | SET(IBRATE,ARR) ; add/edit charges: for each type of charge and each item, displays rev code and description
|
---|
| 67 | ; then askes the user for bedsection and charge
|
---|
| 68 | ;
|
---|
| 69 | N IBEFDT,IBTYP,IBBS,IBJ,IBIT,IBLN,IBCS,IBRVCD,IBCHG,IBOCHG,IBCI,IBX,IBDFTY,DIR,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 70 | S IBEFDT=+ARR
|
---|
| 71 | S IBTYP=0 F S IBTYP=$O(ARR(IBTYP)) Q:'IBTYP D Q:IBBS<0
|
---|
| 72 | . W !!,"--------------------------------------------------------------------------------"
|
---|
| 73 | . W !,"Enter ",$P(ARR(IBTYP),U,1)," ",$P(IBRATE,U,2)," charges effective ",$$FMTE^XLFDT(IBEFDT),":"
|
---|
| 74 | . W !,"--------------------------------------------------------------------------------"
|
---|
| 75 | . S IBDFTY=IBTYP
|
---|
| 76 | . F IBJ=1:1 W ! S IBBS=$$GETBS(10,$P(ARR(IBTYP),U,2),IBDFTY) Q:IBBS<1 D I IBTYP>1 S IBDFTY=""
|
---|
| 77 | .. S IBIT=0 F S IBIT=$O(ARR(IBTYP,IBIT)) Q:'IBIT D I $D(DUOUT) Q
|
---|
| 78 | ... S IBLN=ARR(IBTYP,IBIT),IBCS=$P(IBLN,U,2),IBRVCD=$P(IBLN,U,4),IBOCHG=""
|
---|
| 79 | ... S IBX=$E($P(IBBS,U,2),1,28)
|
---|
| 80 | ... S IBX=IBX_$J("",(30-$L(IBX)))_$P(IBLN,U,5)
|
---|
| 81 | ... S IBX=IBX_$J("",(50-$L(IBX)))_$P($G(^DGCR(399.2,+$P(IBLN,U,3),0)),U,1)_" $ = "
|
---|
| 82 | ... S IBCI=$$FINDCI^IBCRU4(IBCS,+IBBS,IBEFDT,"",IBRVCD)
|
---|
| 83 | ... I +IBCI S IBOCHG=$P($G(^IBA(363.2,+IBCI,0)),U,5),DIR("B")=$FN(IBOCHG,"",2)
|
---|
| 84 | ... S DIR("A")=IBX,DIR(0)="NAO^0:999999:2" D ^DIR K DIR S IBCHG=+Y I IBCHG<1!(IBCHG=IBOCHG) Q
|
---|
| 85 | ... I 'IBCI S IBCI=$$ADDCI^IBCREF(IBCS,+IBBS,IBEFDT,IBCHG,IBRVCD) I +IBCI W ?74,"added" Q
|
---|
| 86 | ... I +IBCI D EDITCI^IBCREF(+IBCI,+IBCHG) W ?74,"edited"
|
---|
| 87 | Q
|
---|
| 88 | ;
|
---|
| 89 | NPFRC() ; get the default revenue codes for non-professional inpatient services
|
---|
| 90 | ;
|
---|
| 91 | N IBX,DIC,X,Y,DTOUT,DUOUT,IBY S IBX=0
|
---|
| 92 | W !!,"Enter the Revenue Code to use for all non-professional inpatient services:",!
|
---|
| 93 | S DIC("A")="Room, Board, Nursing Services: ",DIC("B")=101,DIC("S")="I +$P(^(0),U,3)"
|
---|
| 94 | S DIC="^DGCR(399.2,",DIC(0)="AEQ" D ^DIC I Y<1 G NPFRCQ
|
---|
| 95 | S IBY=+Y
|
---|
| 96 | ;
|
---|
| 97 | S DIC("A")="Ancillary Services: ",DIC("B")=240,DIC("S")="I +$P(^(0),U,3)"
|
---|
| 98 | S DIC="^DGCR(399.2,",DIC(0)="AEQ" D ^DIC I Y<1 G NPFRCQ
|
---|
| 99 | S IBX=IBY_U_+Y
|
---|
| 100 | ;
|
---|
| 101 | NPFRCQ I 'IBX W !!,"Both of these revenue codes are required for the Inpatient Non-Professional",!,"charges to be added to bills. Can Not Continue!",!
|
---|
| 102 | Q IBX
|
---|
| 103 | ;
|
---|
| 104 | DISP(IBRATE,ARR) ;
|
---|
| 105 | N IBTYP,IBI,IBLN
|
---|
| 106 | W @IOF,!,$P(IBRATE,U,2)," charges effective ",$$FMTE^XLFDT(ARR)," will be added as follows:"
|
---|
| 107 | W !,"Charge Type",?30,"Charge Set",?55,"Rev Code",!,"--------------------------------------------------------------------------------",!
|
---|
| 108 | S IBTYP=0 F S IBTYP=$O(ARR(IBTYP)) Q:'IBTYP D
|
---|
| 109 | . W $P(ARR(IBTYP),U,1)
|
---|
| 110 | . S IBI=0 F S IBI=$O(ARR(IBTYP,IBI)) Q:'IBI D
|
---|
| 111 | .. S IBLN=ARR(IBTYP,IBI)
|
---|
| 112 | .. W ?30,$P(IBLN,U,1),?55,$P($G(^DGCR(399.2,+$P(IBLN,U,3),0)),U,1),?65,$P(IBLN,U,5),!
|
---|
| 113 | W !,"If any of the revenue codes are incorrect then change the Default Revenue for",!,"the Charge set." W:+IBRATE=1 " (except the non-prof inpt rev codes entered above)"
|
---|
| 114 | W !!,"If any of the Charge Sets are incorrect DO NOT USE this option."
|
---|
| 115 | W !,"This option may NOT be used to delete rates or add zero charges."
|
---|
| 116 | W !!,"The charges will be asked in sections based on the Charge Types listed above."
|
---|
| 117 | W !,"The first section is INPATIENT, enter all Inpatient Bedsections and their"
|
---|
| 118 | W !,"charges, then press return at the Select Bedsection prompt to move to the"
|
---|
| 119 | W !,"OUTPATIENT VISIT section and enter the Outpatient Visit Bedsection and charge..."
|
---|
| 120 | W ! S DIR(0)="E" D ^DIR K DIR
|
---|
| 121 | Q
|
---|
| 122 | ;
|
---|
| 123 | GETBS(COL,PROMPT,TYPE) ; ask and return billable bedsection (399.1): (-1 if ^, 0 if none) IFN^.01
|
---|
| 124 | ; if type is inpatient then not PRESCRIPTION or OUTPATIENT bedsections can be selected
|
---|
| 125 | ; if type is not inpatient then default bedsections are provided
|
---|
| 126 | N IBX,DIC,DIE,DA,DR,X,Y,DTOUT,DUOUT S IBX=0
|
---|
| 127 | S DIC("S")="I +$P(^(0),U,5)=1"
|
---|
| 128 | I $G(TYPE)=1 S DIC("S")=DIC("S")_",$P(^(0),U,1)'[""OUTPATIENT"",$P(^(0),U,1)'[""PRESCRIPTION"""
|
---|
| 129 | I +$G(TYPE)>1 S DIC("B")=$S(TYPE=3:"PRESCRIPTION",TYPE=4:"OUTPATIENT DENTAL",1:"OUTPATIENT VISIT")
|
---|
| 130 | S DIC("A")=$J("",$G(COL))_"Select "_$G(PROMPT)_" BEDSECTION: "
|
---|
| 131 | S DIC="^DGCR(399.1,",DIC(0)="AENQ" D ^DIC K DIC
|
---|
| 132 | I $D(DTOUT)!($D(DUOUT)) S IBX=-1
|
---|
| 133 | I +Y>0 S IBX=Y
|
---|
| 134 | Q IBX
|
---|
| 135 | ;
|
---|
| 136 | MT() ; do the new mt rate format (misc type) eff 12/6/01 ib*2*167
|
---|
| 137 | N IBCS,IBTYPE,IBITEM,IBCI,IBX,IBOCHG,DIR,X,Y,IBCHG,IBERROR
|
---|
| 138 | S IBCS=$$CSN^IBCRU3("TL-MT OPT COPAY"),(IBOCHG,IBERROR)=""
|
---|
| 139 | I 'IBCS W !,"*** Error: Charge set TL-MT OPT COPAY not found" Q 1
|
---|
| 140 | W !!,"--------------------------------------------------------------------------------"
|
---|
| 141 | W !,"Enter MT OUTPATIENT COPAYMENT charges effective ",$$FMTE^XLFDT(IBEFDT),":"
|
---|
| 142 | W !,"--------------------------------------------------------------------------------"
|
---|
| 143 | F IBTYPE="BASIC CARE","SPECIALTY CARE" D Q:$L(IBERROR)
|
---|
| 144 | . S IBITEM=+$$ADDBI^IBCREF("MISCELLANEOUS",IBTYPE)
|
---|
| 145 | . I 'IBITEM S IBERROR="*** Error: Billable Item "_IBTYPE_" not found" Q
|
---|
| 146 | . S IBX=IBTYPE_$J("",(50-$L(IBTYPE)))_"$ ="
|
---|
| 147 | . S IBCI=$$FINDCI^IBCRU4(IBCS,+IBITEM,IBEFDT)
|
---|
| 148 | . I +IBCI S IBOCHG=$P($G(^IBA(363.2,+IBCI,0)),U,5),DIR("B")=$FN(IBOCHG,"",2)
|
---|
| 149 | . S DIR("A")=IBX,DIR(0)="NAO^0:999999:2" D ^DIR K DIR S IBCHG=+Y I IBCHG<1!(IBCHG=IBOCHG) Q
|
---|
| 150 | . I 'IBCI S IBCI=$$ADDCI^IBCREF(IBCS,+IBITEM,IBEFDT,IBCHG) I +IBCI W ?74,"added" Q
|
---|
| 151 | . I +IBCI D EDITCI^IBCREF(+IBCI,+IBCHG) W ?74,"edited"
|
---|
| 152 | W !,IBERROR
|
---|
| 153 | Q $L(IBERROR)
|
---|