| [613] | 1 | IBEFUR ;ALB/ARH - UTILITY: FIND RELATED FIRST AND THIRD PARTY BILLS ; 3/7/00 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**130**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | ; Called by Accounts Receivable report option | 
|---|
|  | 6 | ; | 
|---|
|  | 7 | ; for a specific Third Party bill, return all related Third Party bills | 
|---|
|  | 8 | ; matchs with the selected bill are based on:   (selected bill is included in list returned) | 
|---|
|  | 9 | ; 1)  Event Date (399,.03), returns all bills with same Event Date | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | ; 2)  PTF # (399,.08), returns all bills with the same PTF number | 
|---|
|  | 12 | ; 3)  PTF # (399,.08), returns all bills with Outpatient Visit Dates (399,43) within the admission date range | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | ; 4)  Opt Visit Dates (399,43), returns all bills with one or more matching Opt Visit Dates | 
|---|
|  | 15 | ; 5)  Opt Visit Dates (399,43), returns all bills for any PTF (399,.08) stay covering any of the Opt Visit Dates | 
|---|
|  | 16 | ; | 
|---|
|  | 17 | ; 6)  Prescriptions (362.4): returns all bills with one or more matching Rx # and fill date | 
|---|
|  | 18 | ; | 
|---|
|  | 19 | ; ^TMP("IBRBT", $J, selected bill ifn) = PATIENT HAS ANY RX COVERAGE ON FROM DATE OF BILL (0/1) | 
|---|
|  | 20 | ; ^TMP("IBRBT", $J, selected bill ifn, matching bill ifn) = | 
|---|
|  | 21 | ;                                        BILL FROM ^ BILL TO ^ CANCELLED (0/1) ^ AR BILL NUMBER ^ | 
|---|
|  | 22 | ;                                        PAYER SEQUENCE ^ PAYER IS MEDICARE SUPPLEMENTAL (0/1) ^ PAYER NAME | 
|---|
|  | 23 | ; | 
|---|
|  | 24 | TPTP(IBIFN) ; given a specific Third Party bill, find all related Third Party Bills | 
|---|
|  | 25 | N IB0,DFN,IBEVDT,IBPTF,IBADM,IBDIS,IBOPV,IBPTF1,IBXRF,IBRXN,IBRXDT,IBX Q:'$G(IBIFN) | 
|---|
|  | 26 | S IB0=$G(^DGCR(399,+IBIFN,0)) Q:IB0=""  S DFN=$P(IB0,U,2),IBEVDT=$P(IB0,U,3),IBPTF=$P(IB0,U,8) | 
|---|
|  | 27 | ; | 
|---|
|  | 28 | K ^TMP("IBRBT",$J,IBIFN) S IBX=$$LN1^IBEFURT(IBIFN) D SAVELN1^IBEFURT(IBIFN,IBX) | 
|---|
|  | 29 | ; | 
|---|
|  | 30 | I +IBEVDT D TPEVDT^IBEFURT(DFN,IBEVDT,IBIFN) ; find all bills with the same Event Date (399,.03) | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | IT I +IBPTF D TPPTF^IBEFURT(IBPTF,IBIFN) ; find all bills with the same PTF number  (399,.08) | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | ; find any bills with Outpatient Visit Dates within the date range of the admission (PTF) | 
|---|
|  | 35 | I +IBPTF S IBADM=$P($G(^DGPT(+IBPTF,0)),U,2),IBDIS=+$G(^DGPT(+IBPTF,70)) S:'IBDIS IBDIS=DT D | 
|---|
|  | 36 | . D TPOPV^IBEFURT(DFN,IBADM,IBDIS,IBIFN) | 
|---|
|  | 37 | ; | 
|---|
|  | 38 | OT ; find all bills that have one or more of the same Opt Visit Dates (399,43) | 
|---|
|  | 39 | S IBX=0 F  S IBX=$O(^DGCR(399,+IBIFN,"OP",IBX)) Q:'IBX  S IBOPV=+$G(^DGCR(399,+IBIFN,"OP",IBX,0)) D | 
|---|
|  | 40 | . D TPOPV^IBEFURT(DFN,IBOPV,IBOPV,IBIFN) | 
|---|
|  | 41 | ; | 
|---|
|  | 42 | ; find any bills for inpatient admissions whose date range includes one or more of the Opt Visit Dates | 
|---|
|  | 43 | S IBX=0 F  S IBX=$O(^DGCR(399,+IBIFN,"OP",IBX)) Q:'IBX  S IBOPV=+$G(^DGCR(399,+IBIFN,"OP",IBX,0)) D | 
|---|
|  | 44 | . S IBADM=$$ADM^IBCU64(DFN,IBOPV) I +IBADM S IBPTF1=$P(IBADM,U,4) I +IBPTF1 D | 
|---|
|  | 45 | .. D TPPTF^IBEFURT(IBPTF1,IBIFN) | 
|---|
|  | 46 | ; | 
|---|
|  | 47 | RT ; find all bills that have one or more of the same Prescription: same Rx number and fill date (362.4,.01,.03) | 
|---|
|  | 48 | S IBXRF="AIFN"_IBIFN,IBRXN="" F  S IBRXN=$O(^IBA(362.4,IBXRF,IBRXN))  Q:'IBRXN  D | 
|---|
|  | 49 | . S IBX=0 F  S IBX=$O(^IBA(362.4,IBXRF,IBRXN,IBX)) Q:'IBX  S IBRXDT=$P($G(^IBA(362.4,IBX,0)),U,3) D | 
|---|
|  | 50 | .. D TPRX^IBEFURT(DFN,IBRXN,IBRXDT,IBIFN) | 
|---|
|  | 51 | Q | 
|---|
|  | 52 | ; | 
|---|
|  | 53 | ; ============================================================================================================== | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | ; Called by Accounts Receivable report option | 
|---|
|  | 56 | ; | 
|---|
|  | 57 | ; for a specific Third Party bill, return all related First Party Charges | 
|---|
|  | 58 | ; only a single record of a charge event is returned, defining the charges current status, although there may | 
|---|
|  | 59 | ; have been cancellations or updates to the original charge | 
|---|
|  | 60 | ;    o Inpatient Events may have multiple charge events (Copay and Per Diem) | 
|---|
|  | 61 | ;    o Opt and Rx Events have only a single charge event (Copay) | 
|---|
|  | 62 | ; | 
|---|
|  | 63 | ; matchs with the selected bill are based on: | 
|---|
|  | 64 | ; 1) Event Date (399,.03), returns Inpatient charges whose Parent Event (350,.16) has that Event Date (350,.17) | 
|---|
|  | 65 | ; 2) PTF # (399,.08), returns Outpatient charge for Opt Visits Dates within timeframe of admission | 
|---|
|  | 66 | ; | 
|---|
|  | 67 | ; 3) Opt Visit Date (399,43), returns the Outpatient charge for that Event Date (350,.17) | 
|---|
|  | 68 | ; 4) Opt Visit Date (399,43), returns Inpatient charges for any admission that includes that Opt Visit Date | 
|---|
|  | 69 | ; | 
|---|
|  | 70 | ; 5) Rx Record (362.4,.05) and Rx Date (362.4,.03) and Outpatient Pharmacy, returns the Rx charge for the fill | 
|---|
|  | 71 | ; 6) Opt Visit Date (399,43) and Outpatient Pharmacy, returns any First Party Rx charge on one of the | 
|---|
|  | 72 | ;    selected bills Opt Visit Dates that is not billed on any Third Party bill | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | ; ^TMP("IBRBF", $J , selected bill ifn ) = "" | 
|---|
|  | 75 | ; ^TMP("IBRBF", $J , selected bill ifn , charge ifn) = | 
|---|
|  | 76 | ; BILL FROM ^ BILL TO ^ CANCELLED? (1/0)^ AR BILL NUMBER ^ TOTAL CHARGE ^ ACTION TYPE (SHORT) ^ # DAYS ON HOLD | 
|---|
|  | 77 | ; | 
|---|
|  | 78 | TPFP(IBIFN) ; given a specific Third Party Bill, find all related First Party Bills | 
|---|
|  | 79 | N IBX,IBY,IB0,DFN,IBEVDT,IBPTF,IBADM,IBOPV,IBXRF,IBRXN,IBRXIFN,IBRXDT,IBFROM,IBTO Q:'$G(IBIFN) | 
|---|
|  | 80 | S IB0=$G(^DGCR(399,+IBIFN,0)) Q:IB0=""  S DFN=$P(IB0,U,2),IBEVDT=$P(IB0,U,3) | 
|---|
|  | 81 | ; | 
|---|
|  | 82 | K ^TMP("IBRBF",$J,IBIFN) D SAVELN1^IBEFURF(IBIFN) | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | IF ; find all First Party charges for the Inpatient Event Date (Admission Date) on the Third Party bill | 
|---|
|  | 85 | D FPINPT^IBEFURF(DFN,IBEVDT,IBIFN) | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | ; find any First Party Outpatient charges for Visit Dates within the date range of the admission (PTF) | 
|---|
|  | 88 | S IBPTF=$P(IB0,U,8) I +IBPTF S IBADM=$$PTFADM^IBCU64(+IBPTF) I +IBADM S IBADM=$$AD^IBCU64(IBADM) D | 
|---|
|  | 89 | . S IBX=$P(IBADM,U,2)\1 I 'IBX S IBX=DT | 
|---|
|  | 90 | . D FPOPV^IBEFURF(DFN,+IBADM\1,IBX,IBIFN) | 
|---|
|  | 91 | ; | 
|---|
|  | 92 | OF ; find First Party charges for the Opt Visit Dates on the Third Party Bill | 
|---|
|  | 93 | S IBX=0 F  S IBX=$O(^DGCR(399,+IBIFN,"OP",IBX)) Q:'IBX  S IBOPV=+$G(^DGCR(399,+IBIFN,"OP",IBX,0)) D | 
|---|
|  | 94 | . D FPOPV^IBEFURF(DFN,IBOPV,IBOPV,IBIFN) | 
|---|
|  | 95 | ; | 
|---|
|  | 96 | ; find any charges for inpatient admissions whose date range includes one or more of the Opt Visit Dates | 
|---|
|  | 97 | S IBX=0 F  S IBX=$O(^DGCR(399,+IBIFN,"OP",IBX)) Q:'IBX  S IBOPV=+$G(^DGCR(399,+IBIFN,"OP",IBX,0)) D | 
|---|
|  | 98 | . S IBADM=$$ADM^IBCU64(DFN,IBOPV) I 'IBADM Q | 
|---|
|  | 99 | . D FPINPT^IBEFURF(DFN,+IBADM,IBIFN) | 
|---|
|  | 100 | ; | 
|---|
|  | 101 | RF ; find First Party charges for any Rx's on the selected Third Party bill | 
|---|
|  | 102 | ; based on Rx IFN (52) and fill date (362.4,.05,.03) | 
|---|
|  | 103 | S IBXRF="AIFN"_IBIFN,IBRXN="" F  S IBRXN=$O(^IBA(362.4,IBXRF,IBRXN))  Q:'IBRXN  D | 
|---|
|  | 104 | . S IBX=0 F  S IBX=$O(^IBA(362.4,IBXRF,IBRXN,IBX)) Q:'IBX  D | 
|---|
|  | 105 | .. S IBY=$G(^IBA(362.4,IBX,0)),IBRXIFN=$P(IBY,U,5),IBRXDT=$P(IBY,U,3) Q:'IBRXIFN | 
|---|
|  | 106 | .. D FPRX^IBEFURF(IBRXIFN,IBRXDT,IBIFN) | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | ; find First Party Charges for any RX filled on one of the Third Party bill's Opt Visit Dates | 
|---|
|  | 109 | ; that is not billed on any Third Party bill | 
|---|
|  | 110 | S IBFROM=$G(^DGCR(399,IBIFN,"U")),IBTO=$P(IBFROM,U,2),IBFROM=+IBFROM K IBX | 
|---|
|  | 111 | D RXDISP^IBCSC5C(DFN,IBFROM,IBTO,.IBX,"","",1,1) ; get all Rx's for patient in date range | 
|---|
|  | 112 | S IBRXN="" F  S IBRXN=$O(IBX(IBRXN)) Q:IBRXN=""  S IBRXDT=0 F  S IBRXDT=$O(IBX(IBRXN,IBRXDT)) Q:'IBRXDT  D | 
|---|
|  | 113 | . I '$D(^DGCR(399,"AOPV",DFN,IBRXDT,IBIFN)) Q  ; rx not on bills opt visit date | 
|---|
|  | 114 | . I +$$RXTP^IBEFURT(DFN,IBRXN,IBRXDT) Q  ; rx billed on a third party bill | 
|---|
|  | 115 | . S IBRXIFN=$P(IBX(IBRXN,IBRXDT),U,1) | 
|---|
|  | 116 | . D FPRX^IBEFURF(IBRXIFN,IBRXDT,IBIFN) | 
|---|
|  | 117 | Q | 
|---|