1 | IBACUS ;ALB/CPM - TRICARE BILLING UTILITIES ; 02-AUG-96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**52,240,274**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | CUS(DFN,IBDT) ; Does the patient have TRICARE coverage?
|
---|
6 | ; Input: DFN -- Pointer to the patient in file #2
|
---|
7 | ; DATE -- Date on which coverage is to be determined
|
---|
8 | ; Output: IBCOV -- 0, if the vet has no billable TRICARE coverage
|
---|
9 | ; >0 => pointer to such coverage in file #2.312
|
---|
10 | ;
|
---|
11 | N IBCOV,IBPOL,IBI
|
---|
12 | S IBCOV=0
|
---|
13 | I '$G(DFN) G CUSQ
|
---|
14 | S:'$G(IBDT) IBDT=DT
|
---|
15 | ;
|
---|
16 | ; - find a billable TRICARE policy
|
---|
17 | D ALL^IBCNS1(DFN,"IBPOL",1,IBDT)
|
---|
18 | S IBI=0 F S IBI=$O(IBPOL(IBI)) Q:'IBI D Q:IBCOV
|
---|
19 | .Q:$P($G(IBPOL(IBI,3)),"^",4) ; ignore billing this policy
|
---|
20 | .I $P($G(^IBE(355.1,+$P($G(IBPOL(IBI,355.3)),"^",9),0)),"^",3)=7 S IBCOV=IBI
|
---|
21 | CUSQ Q IBCOV
|
---|
22 | ;
|
---|
23 | ;
|
---|
24 | TRI() ; Is the Tricare Billing engine up and running?
|
---|
25 | ; Input: none
|
---|
26 | ; Output: 0 - No 1 - Yes
|
---|
27 | ;
|
---|
28 | Q $P($G(^IBE(350.9,1,9)),"^",4)>0
|
---|
29 | ;
|
---|
30 | ;
|
---|
31 | CHPUS(DFN,DATE,IBRX,IBREF,IBLAB,IBRSITE,IBDUZ) ; Bill this patient for TRICARE?
|
---|
32 | ; Input: DFN -- Pointer to the patient in file #2
|
---|
33 | ; DATE -- Date on which coverage is to be determined
|
---|
34 | ; IBRX -- Pointer to the prescription in file #52
|
---|
35 | ; IBREF -- Pointer to the refill in file #52.1, or
|
---|
36 | ; 0 if billing the original prescription
|
---|
37 | ; IBLAB -- Pharmacy label printing device
|
---|
38 | ; IBRSITE -- Pointer to the Pharmacy in file #59
|
---|
39 | ; IBDUZ -- Pointer to the Pharmacy user in file #200
|
---|
40 | ; Output: IBCHK -- 0 => can't bill rx || 1 => bill rx
|
---|
41 | ;
|
---|
42 | N IBCHK,IBKEY S IBCHK=0
|
---|
43 | I '$G(DFN) G CHPUSQ
|
---|
44 | D POL^IBCNSU41(DFN)
|
---|
45 | ;
|
---|
46 | ; - make sure system is running and the patient has TRICARE coverage
|
---|
47 | I '$$TRI() G CHPUSQ
|
---|
48 | I '$$CUS(DFN,DATE) G CHPUSQ
|
---|
49 | ;
|
---|
50 | ; - check remaining user input
|
---|
51 | I '$G(IBRX) G CHPUSQ
|
---|
52 | I $G(IBREF)="" G CHPUSQ
|
---|
53 | I $G(IBLAB)=""!('$G(IBRSITE))!('$G(IBDUZ)) G CHPUSQ
|
---|
54 | ;
|
---|
55 | ; - perform all Pharmacy edits
|
---|
56 | I '$$CHK^PSOCPTRI(IBRX,IBREF) G CHPUSQ
|
---|
57 | ;
|
---|
58 | ; - queue rx for billing
|
---|
59 | S IBCHK=1,IBKEY=IBRX_";"_IBREF
|
---|
60 | S ^IBA(351.5,"APOST",IBKEY)=IBLAB_"^"_IBRSITE_"^"_IBDUZ
|
---|
61 | ;
|
---|
62 | CHPUSQ Q IBCHK
|
---|
63 | ;
|
---|
64 | ;
|
---|
65 | ;
|
---|
66 | ;
|
---|
67 | ; The following three queued entry points are invoked by the
|
---|
68 | ; TRICARE Rx Billing engine. The following two variables are
|
---|
69 | ; defined for each of the jobs:
|
---|
70 | ;
|
---|
71 | ; IBCHTRN -- Pointer to the transaction entry in file #351.5
|
---|
72 | ; IBKEYD -- 1 ^ 2 ^ 3, where
|
---|
73 | ; 1 = Rx label printing device
|
---|
74 | ; 2 = Pointer to the Pharmacy in file #59
|
---|
75 | ; 3 = Pointer to the Pharmacy user in file #200
|
---|
76 | ;
|
---|
77 | RXLAB ; Queued entry point to print the TRICARE Rx label.
|
---|
78 | I $G(IBKEYD)="" G RXLABQ
|
---|
79 | S IBCOP=$J(+$G(^IBA(351.5,+$G(IBCHTRN),2)),0,2)
|
---|
80 | I 'IBCOP G RXLABQ
|
---|
81 | D LABEL^PSOCPTRI(+$G(^IBA(351.5,IBCHTRN,0)),$P(IBKEYD,"^"),$P(IBKEYD,"^",2),$P(IBKEYD,"^",3),IBCOP)
|
---|
82 | RXLABQ K IBCOP
|
---|
83 | Q
|
---|
84 | ;
|
---|
85 | ;
|
---|
86 | RXBIL ; Queued entry point to create TRICARE Rx Billing charges.
|
---|
87 | ;
|
---|
88 | ; - check some basic input
|
---|
89 | I '$$RXSET G RXBILQ
|
---|
90 | ;
|
---|
91 | ; - create copay charge
|
---|
92 | D BILL^IBACUS1(IBKEY,IBCHTRN)
|
---|
93 | ;
|
---|
94 | ; - create fiscal intermediary claim
|
---|
95 | D BILL^IBACUS2(IBKEY,IBCHTRN)
|
---|
96 | ;
|
---|
97 | RXBILQ Q
|
---|
98 | ;
|
---|
99 | ;
|
---|
100 | RXCAN ; Queued entry point to cancel TRICARE Rx Billing charges.
|
---|
101 | ;
|
---|
102 | ; - check some basic input
|
---|
103 | I '$$RXSET G RXCANQ
|
---|
104 | ;
|
---|
105 | ; - cancel copay charge
|
---|
106 | D CANC^IBACUS1(IBCHTRN)
|
---|
107 | ;
|
---|
108 | ; - cancel fiscal intermediary claim
|
---|
109 | D CANC^IBACUS2(IBCHTRN)
|
---|
110 | ;
|
---|
111 | RXCANQ Q
|
---|
112 | ;
|
---|
113 | ;
|
---|
114 | RXSET() ; Establish the session.
|
---|
115 | N IBOK S IBOK=0
|
---|
116 | ;
|
---|
117 | ; - check some basic input
|
---|
118 | I '$G(IBCHTRN) G RXSETQ
|
---|
119 | S IBKEY=$P($G(^IBA(351.5,IBCHTRN,0)),"^")
|
---|
120 | I IBKEY="" G RXSETQ
|
---|
121 | S DUZ=+$P(IBKEYD,"^",3)
|
---|
122 | I $G(^VA(200,DUZ,0))="" G RXSETQ
|
---|
123 | ;
|
---|
124 | N DIQUIET S DIQUIET=1 D DT^DICRW
|
---|
125 | S IBOK=1
|
---|
126 | ;
|
---|
127 | RXSETQ Q IBOK
|
---|