[613] | 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
|
---|