source: FOIAVistA/trunk/r/INTEGRATED_BILLING-IB-PRQ--IBD--IBQ--PRQS/IBEFUR.m@ 677

Last change on this file since 677 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 6.7 KB
Line 
1IBEFUR ;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 ;
24TPTP(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 ;
32IT 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 ;
38OT ; 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 ;
47RT ; 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 ;
78TPFP(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 ;
84IF ; 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 ;
92OF ; 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 ;
101RF ; 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
Note: See TracBrowser for help on using the repository browser.