| 1 | IBACUS2 ;ALB/CPM - TRICARE FISCAL INTERMEDIARY RX CLAIMS ;02-AUG-96
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**52,91,51,240,341,347**;21-MAR-94;Build 24
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | BILL(IBKEY,IBCHTRN) ; Create the TRICARE claim for the Fiscal Intermediary.
 | 
|---|
| 6 |  ;  Input:    IBKEY  --  1 ; 2, where
 | 
|---|
| 7 |  ;                         1 = Pointer to the prescription in file #52
 | 
|---|
| 8 |  ;                         2 = Pointer to the refill in file #52.1, or
 | 
|---|
| 9 |  ;                             0 for the original fill
 | 
|---|
| 10 |  ;          IBCHTRN  --  Pointer to the transaction entry in file #351.5
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  N IBQUERY
 | 
|---|
| 13 |  S IBY=1 K IBDRX
 | 
|---|
| 14 |  I '$G(IBKEY) G BILLQ
 | 
|---|
| 15 |  I $$FILE^IBRXUTL(+IBKEY,.01)="" G BILLQ
 | 
|---|
| 16 |  S IBAMT=$P($G(^IBA(351.5,+IBCHTRN,2)),"^",5) ;  FI portion of charge
 | 
|---|
| 17 |  I 'IBAMT G BILLQ
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  ; - derive minimal variables
 | 
|---|
| 20 |  I '$$CHECK^IBECEAU(0) S IBY="-1^IB009" G BILLQ
 | 
|---|
| 21 |  S IBSERV=$P($G(^IBE(350.1,1,0)),"^",4)
 | 
|---|
| 22 |  I '$$SERV^IBARX1(IBSERV) S IBY="-1^IB003" G BILLQ
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ; - establish a stub claim/receivable
 | 
|---|
| 25 |  D SET^IBR I IBY<0 G BILLQ
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ; - set up the following variables for claim establishment:
 | 
|---|
| 28 |  ;      .01  BILL #
 | 
|---|
| 29 |  ;      .17  ORIG CLAIM
 | 
|---|
| 30 |  ;      .2   AUTO?
 | 
|---|
| 31 |  ;      .02  DFN
 | 
|---|
| 32 |  ;      .06  TIMEFRAME
 | 
|---|
| 33 |  ;      .07  RATE TYPE
 | 
|---|
| 34 |  ;      .18  SC AT TIME?
 | 
|---|
| 35 |  ;      .04  LOCATION (WILL NEED DIVISION THAT DISPENSED)
 | 
|---|
| 36 |  ;      .05  BILL CLASSIF  (3)
 | 
|---|
| 37 |  ;      .03  EVT DATE (FILL DATE)
 | 
|---|
| 38 |  ;      151  BILL FROM
 | 
|---|
| 39 |  ;      152  BILL TO
 | 
|---|
| 40 |  K IB
 | 
|---|
| 41 |  S (IB(.02),DFN,IBDFN)=$$FILE^IBRXUTL(+IBKEY,2)
 | 
|---|
| 42 |  I 'DFN S IBY="-1^IB002" G BILLQ
 | 
|---|
| 43 |  S IB(.07)=$O(^DGCR(399.3,"B","TRICARE",0))
 | 
|---|
| 44 |  I 'IB(.07) S IBY="-1^IB059" G BILLQ
 | 
|---|
| 45 |  I $$TRANS^PSOCPTRI(+IBKEY,+$P(IBKEY,";",2),.IBDRX)<0 S IBY="-1^IB010" G BILLQ
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  S IBIFN=PRCASV("ARREC")
 | 
|---|
| 48 |  S IB(.01)=$P(PRCASV("ARBIL"),"-",2)
 | 
|---|
| 49 |  S IB(.17)=""
 | 
|---|
| 50 |  S IB(.2)=0
 | 
|---|
| 51 |  S IB(.06)=1
 | 
|---|
| 52 |  S IB(.18)=$$SC^IBCU3(DFN)
 | 
|---|
| 53 |  S IB(.04)=1 ;  how can I get Division?  RON...
 | 
|---|
| 54 |  S IB(.05)=3
 | 
|---|
| 55 |  S (IB(.03),IB(151),IB(152))=IBDRX("FDT")
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ; - set 362.4 node to rx#^p50^days sup^fill date^qty^ndc
 | 
|---|
| 58 |  S IB(362.4,+IBKEY,1)=IBDRX("RX#")_"^"_$$FILE^IBRXUTL(+IBKEY,6)_"^"_IBDRX("SUP")_"^"_IBDRX("FDT")_"^"_IBDRX("QTY")_"^"_IBDRX("NDC")
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ; - call the autobiller module to create the claim with a default
 | 
|---|
| 61 |  ;   diagnosis and procedure for prescriptions
 | 
|---|
| 62 |  D EN^IBCD3(.IBQUERY)
 | 
|---|
| 63 |  D CLOSE^IBSDU(.IBQUERY)
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ; - add the payor (fiscal intermediary) to the claim
 | 
|---|
| 66 |  S IBCDFN=$$CUS^IBACUS(DFN)
 | 
|---|
| 67 |  I 'IBCDFN S IBY="-1^IB054" G BILLQ
 | 
|---|
| 68 |  S IBINS=+$G(^DPT(DFN,.312,IBCDFN,0))
 | 
|---|
| 69 |  S DIE="^DGCR(399,",DA=IBIFN,DR="112////"_IBCDFN
 | 
|---|
| 70 |  D ^DIE K DA,DR,DIE,DGRVRCAL
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 |  ; - add charge to the claim
 | 
|---|
| 73 |  S IBRVCD=$P($G(^DIC(36,IBINS,0)),"^",15) ;                                      rx refill rev code
 | 
|---|
| 74 |  I IBRVCD="" S IBRVCD=$P($G(^IBE(363.1,+$P($G(^IBE(350.9,1,9)),U,12),0)),U,5) ;  CS def rev code
 | 
|---|
| 75 |  I IBRVCD="" S X=250 ;                                                           gen'l rx rev code
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  S IBBS=$P($G(^IBE(363.1,+$P($G(^IBE(350.9,1,9)),U,12),0)),U,6) ;                CS def bedsection
 | 
|---|
| 78 |  S IBUNITS=1 ;                                    one unit
 | 
|---|
| 79 |  S IBCPT=$P($G(^IBE(350.9,1,1)),"^",30) ;         def rx refill cpt
 | 
|---|
| 80 |  S IBDIV="" ;                                     division
 | 
|---|
| 81 |  S IBAA=0 ;                                       not auto calc charges
 | 
|---|
| 82 |  S IBTYPE=3 ;                                     rx type
 | 
|---|
| 83 |  S IBITEM="" ;                                    charge item link
 | 
|---|
| 84 |  ;
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 |  S X=$$ADDRC^IBCRBF(IBIFN,IBRVCD,IBBS,IBAMT,IBUNITS,IBCPT,IBDIV,IBAA,IBTYPE,IBITEM)
 | 
|---|
| 87 |  I X<0 S IBY="-1^^Unable to add Revenue Code charge to claim." G BILLQ
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  ; - update the authorize/print fields
 | 
|---|
| 90 |  S DIE="^DGCR(399,",DA=IBIFN,DR="9////1" D ^DIE K DA,DR,DIE
 | 
|---|
| 91 |  S DIE="^DGCR(399,",DA=IBIFN,DR="12////"_DT D ^DIE K DA,DR,DIE
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ; - pass the claim to AR
 | 
|---|
| 94 |  D GVAR^IBCBB,ARRAY^IBCBB1,^PRCASVC6,REL^PRCASVC:PRCASV("OKAY")
 | 
|---|
| 95 |  I 'PRCASV("OKAY") S IBY="-1^^Unable to establish receivable in AR." G BILLQ
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 |  ; - update the rx transaction file (#351.5)
 | 
|---|
| 98 |  S DA=IBCHTRN,DIE="^IBA(351.5,",DR=".09////"_IBIFN D ^DIE K DA,DIE,DR
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  ; - update the AR status to Active
 | 
|---|
| 101 |  S PRCASV("STATUS")=16
 | 
|---|
| 102 |  D STATUS^PRCASVC1
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | BILLQ I IBY<0 D ERRMSG^IBACVA2(1,2)
 | 
|---|
| 105 |  K IBRVCD,IBBS,IBUNITS,IBCPT,IBDIV,IBAA,IBTYPE,IBITEM,IBAMT
 | 
|---|
| 106 |  K IBSERV,IBFAC,IBSITE,IBDRX,IB,IBCDFN,IBINS,IBIDS,IBIFN,IBDFN
 | 
|---|
| 107 |  K PRCASV,PRCAERR
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 | CANC(IBCHTRN) ; Cancel the claim to the Fiscal Intermediary.
 | 
|---|
| 112 |  ;  Input:  IBCHTRN  --  Pointer to the transaction entry in file #351.5
 | 
|---|
| 113 |  ;
 | 
|---|
| 114 |  S IBIFN=+$P($G(^IBA(351.5,IBCHTRN,0)),"^",9)
 | 
|---|
| 115 |  I 'IBIFN G CANCQ
 | 
|---|
| 116 |  F I=0,"S" S IB(I)=$G(^DGCR(399,IBIFN,I))
 | 
|---|
| 117 |  I IB(0)="" G CANCQ
 | 
|---|
| 118 |  I +$P(IB("S"),U,16),$P(IB("S"),U,17)]"" G CANCQ
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 |  S DA=IBIFN,DR="16////1;19////PRESCRIPTION REVERSED",DIE="^DGCR(399,"
 | 
|---|
| 121 |  D ^DIE K DA,DIE,DR
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  ; - decrease out the receivable in AR
 | 
|---|
| 124 |  S DFN=+$P(IB(0),"^",2)
 | 
|---|
| 125 |  S IB("U1")=$G(^DGCR(399,IBIFN,"U1"))
 | 
|---|
| 126 |  S IBIL=$P($G(^PRCA(430,IBIFN,0)),"^")
 | 
|---|
| 127 |  S IBCHG=$S(IB("U1")']"":0,$P(IB("U1"),"^",1)]"":$P(IB("U1"),"^",1),1:0)
 | 
|---|
| 128 |  S IBCRES="TRICARE PRESCRIPTION REVERSED"
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  S X="21^"_IBCHG_"^"_IBIL_"^"_$S('DUZ:.5,1:DUZ)_"^"_DT_"^"_IBCRES ; *341
 | 
|---|
| 131 |  D ^PRCASER1
 | 
|---|
| 132 |  I Y<0 S IBY=Y D BULL
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 | CANCQ K DFN,IBIFN,IB,IBIL,IBCHG,IBCRES,IBY,X,Y
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 | BULL ; Generate a bulletin if there is an error in canceling the claim.
 | 
|---|
| 139 |  K IBT S IBPT=$$PT^IBEFUNC(DFN)
 | 
|---|
| 140 |  S XMSUB=$E($P(IBPT,"^"),1,14)_"  "_$P(IBPT,"^",3)_" - ERROR ENCOUNTERED"
 | 
|---|
| 141 |  S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT("
 | 
|---|
| 142 |  S XMY(DUZ)=""
 | 
|---|
| 143 |  S IBGRP=$P($G(^XMB(3.8,+$P($G(^IBE(350.9,1,1)),"^",7),0)),"^")
 | 
|---|
| 144 |  I IBGRP]"" S XMY("G."_IBGRP_"@"_^XMB("NETNAME"))=""
 | 
|---|
| 145 |  ;
 | 
|---|
| 146 |  S IBT(1)="An error occurred while cancelling the Pharmacy claim to the TRICARE"
 | 
|---|
| 147 |  S IBT(2)="fiscal intermediary for the following patient:"
 | 
|---|
| 148 |  S IBT(3)=" " S IBC=3
 | 
|---|
| 149 |  S IBDUZ=DUZ D PAT^IBAERR1
 | 
|---|
| 150 |  S IBC=IBC+1,IBT(IBC)="   Bill #: "_IBIL
 | 
|---|
| 151 |  S IBC=IBC+1,IBT(IBC)=" "
 | 
|---|
| 152 |  S IBC=IBC+1,IBT(IBC)="The following error was encountered:"
 | 
|---|
| 153 |  S IBC=IBC+1,IBT(IBC)=" "
 | 
|---|
| 154 |  D ERR^IBAERR1
 | 
|---|
| 155 |  S IBC=IBC+1,IBT(IBC)=" "
 | 
|---|
| 156 |  S IBC=IBC+1,IBT(IBC)="Please review the circumstances surrounding this error and decrease"
 | 
|---|
| 157 |  S IBC=IBC+1,IBT(IBC)="out this receivable in Accounts Receivable if necessary."
 | 
|---|
| 158 |  ;
 | 
|---|
| 159 |  D ^XMD
 | 
|---|
| 160 |  K IBC,IBDUZ,IBT,IBPT,IBGRP,XMDUZ,XMTEXT,XMSUB,XMY
 | 
|---|
| 161 |  Q
 | 
|---|