| 1 | IBNCPDP3 ;OAK/ELZ - STORES NDC/AWP UPDATES ;20-JUN-2003
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**223,276,342,363**;21-MAR-94;Build 35
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | UPAWP(IBNDC,IBAWP,IBADT) ; updates AWP prices for NDCs
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  N IBITEM,IBCS
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  S IBCS=$P($G(^IBE(350.9,1,9)),"^",12)
 | 
|---|
| 12 |  I 'IBCS Q "0^Unable to find Charge Set"
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  S IBNDC=$$NDC^IBNCPDPU(IBNDC)
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  S IBITEM=+$$ADDBI^IBCREF("NDC",IBNDC) I IBITEM Q "0^Unable to add item"
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  I '$$ADDCI^IBCREF(IBCS,IBITEM,IBADT,IBAWP) Q "0^Unable to add charge"
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  Q 1
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | REVERSE(DFN,IBD,IBAUTO) ;process reversed claims
 | 
|---|
| 26 |  N IBIFN,I,IB,IBIL,IBCHG,IBCRES,IBY,X,Y,DA,DIE,DR,IBADT,IBLOCK,IBLDT
 | 
|---|
| 27 |  N IBNOW,IBDUZ,IBCR,IBRELC,IBCC,IBPAP,IBRXN,IBFIL,IBRTS,IBARES,IBUSR
 | 
|---|
| 28 |  S IBDUZ=.5
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  S IBLOCK=0
 | 
|---|
| 31 |  ; find bill number
 | 
|---|
| 32 |  I 'DFN S IBY="0^No patient" G REVQ
 | 
|---|
| 33 |  I '$L($G(IBD("CLAIMID"))) S IBY="0^Missing ECME Number" G REVQ
 | 
|---|
| 34 |  S IBADT=+$G(IBD("FILL DATE")) I 'IBADT S IBY="0^Missing Fill Date" G REVQ
 | 
|---|
| 35 |  S IBRXN=+$G(IBD("PRESCRIPTION")) I 'IBRXN S IBY="0^No Rx IEN" G REVQ
 | 
|---|
| 36 |  S IBFIL=+$G(IBD("FILL NUMBER"),-1) I IBFIL<0 S IBY="0^No fill number" G REVQ
 | 
|---|
| 37 |  I $E($G(IBD("RESPONSE")),1)="R" D  G REVQ:+'$G(IBRTS)
 | 
|---|
| 38 |  . S IBY="0^REVERSAL rejected by payer"
 | 
|---|
| 39 |  . S IBRTS=$$RTS(IBD("REVERSAL REASON"))
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  S IBD("BCID")=(+IBD("CLAIMID"))_";"_IBADT ; BC ID Number
 | 
|---|
| 42 |  L +^DGCR(399,"AG",IBD("BCID")):15 E  S IBY="0^Cannot lock ECME number" G REVQ
 | 
|---|
| 43 |  S IBLOCK=1
 | 
|---|
| 44 |  S IBUSR=$S(+$G(IBD("USER"))=0:DUZ,1:IBD("USER"))
 | 
|---|
| 45 |  I $D(^DGCR(399,"AG",IBD("BCID"))) S ^(IBD("BCID"))=""
 | 
|---|
| 46 |  S IBIFN=$$MATCH^IBNCPDP2(IBD("BCID"))
 | 
|---|
| 47 |  I $D(IBD("CLOSE REASON")),'$D(IBD("DROP TO PAPER")) S IBD("DROP TO PAPER")=""
 | 
|---|
| 48 |  S IBCR=+$G(IBD("CLOSE REASON"))
 | 
|---|
| 49 |  S IBPAP=$G(IBD("DROP TO PAPER"))
 | 
|---|
| 50 |  S IBRELC=$G(IBD("RELEASE COPAY"))
 | 
|---|
| 51 |  S IBCC=$G(IBD("CLOSE COMMENT"))
 | 
|---|
| 52 |  D NONBR^IBNCPNB(DFN,IBRXN,IBFIL,IBADT,IBCR,IBPAP,IBRELC,IBCC,IBUSR)
 | 
|---|
| 53 |  I 'IBIFN S IBY="0^"_$S(IBPAP:"Dropped to paper",IBCR>1:"Set non-billable reason in CT",1:"Cannot find the bill to reverse") G REVQ
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  F I=0,"S" S IB(I)=$G(^DGCR(399,IBIFN,I))
 | 
|---|
| 56 |  I IB(0)="" S IBY="0^No data in bill" G REVQ
 | 
|---|
| 57 |  I +$P(IB("S"),U,16),$P(IB("S"),U,17)]"" S IBY="0^Bill already cancelled" G REVQ
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  S:'$D(IBCRES) IBCRES="ECME PRESCRIPTION REVERSED"
 | 
|---|
| 60 |  S DA=IBIFN,DR="16////1;19////"_IBCRES,DIE="^DGCR(399,"
 | 
|---|
| 61 |  D ^DIE K DA,DIE,DR
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  ; - decrease out the receivable in AR
 | 
|---|
| 64 |  S IB("U1")=$G(^DGCR(399,IBIFN,"U1"))
 | 
|---|
| 65 |  S IBIL=$P($G(^PRCA(430,IBIFN,0)),"^")
 | 
|---|
| 66 |  S IBCHG=$S(IB("U1")']"":0,$P(IB("U1"),"^",1)]"":$P(IB("U1"),"^",1),1:0)
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  S X="21^"_IBCHG_"^"_IBIL_"^"_IBDUZ_"^"_DT_"^"_IBCRES
 | 
|---|
| 69 |  D ^PRCASER1
 | 
|---|
| 70 |  S IBARES=Y
 | 
|---|
| 71 |  I IBARES<0 S IBY=IBARES D BULL
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  S IBY=$S(IBARES<0:"0^"_$P(IBARES,"^",2),1:1)
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  I IBDUZ'=DUZ D  ; set the real user
 | 
|---|
| 76 |  . N IBI,IBT S IBI=18,IBT(399,IBIFN_",",IBI)=IBDUZ D FILE^DIE("","IBT")
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | REVQ ; perform end of job tasks  
 | 
|---|
| 79 |  D LOG^IBNCPDP2($S($G(IBAUTO)=1:"AUTO REVERSE",$G(IBAUTO)=2:"BILL CANCELLED",1:"REVERSE"),IBY)
 | 
|---|
| 80 |  I IBLOCK L -^DGCR(399,"AG",IBD("BCID"))
 | 
|---|
| 81 |  I IBY=1,$G(IBIFN) S IBY=+IBIFN
 | 
|---|
| 82 |  Q IBY
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | RTS(IBRR) ; Return to Stock processing on Released Rx
 | 
|---|
| 85 |  ; input - IBRR = reversal reason
 | 
|---|
| 86 |  ;         IBCRSN = passed in by reference 
 | 
|---|
| 87 |  ; output - 0 = reversal not due to a Rx RETURN TO STOCK or Rx DELETE
 | 
|---|
| 88 |  ;          1 = reversal due to a Rx RETURN TO STOCK or Rx DELETE
 | 
|---|
| 89 |  ;          IBCRSN = charge removal reason
 | 
|---|
| 90 |  I IBRR'="RX RETURNED TO STOCK"&(IBRR'="RX DELETED") Q 0
 | 
|---|
| 91 |  N IBTRKRN,IBLOCK2,IBCMT,DA,DIE,DR
 | 
|---|
| 92 |  S IBTRKRN=+$O(^IBT(356,"ARXFL",IBRXN,IBFIL,0))
 | 
|---|
| 93 |  I 'IBTRKRN Q 0  ; CT record does not exist
 | 
|---|
| 94 |  I '$P($G(^IBT(356,IBTRKRN,0)),U,11) Q 0  ; BILL does not exist
 | 
|---|
| 95 |  S IBCRES=$$GETRSN(DFN,IBRXN,IBFIL)  ; recorded in file 399 entry
 | 
|---|
| 96 |  L +^IBT(356,IBTRKRN):5 S IBLOCK2=$T
 | 
|---|
| 97 |  S DIE="^IBT(356,",DA=IBTRKRN,IBCMT="Rx RTS - May Need Refund"
 | 
|---|
| 98 |  S DR="1.08////"_IBCMT
 | 
|---|
| 99 |  D ^DIE
 | 
|---|
| 100 |  I IBLOCK2 L -^IBT(356,IBTRKRN)
 | 
|---|
| 101 |  Q 1
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 | BULL ; Generate a bulletin if there is an error in cancelling the claim.
 | 
|---|
| 104 |  N IBC,IBT,IBPT,IBGRP,XMDUZ,XMTEXT,XMSUB,XMY
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  S IBPT=$$PT^IBEFUNC(DFN)
 | 
|---|
| 107 |  S XMSUB=$E($P(IBPT,"^"),1,14)_"  "_$P(IBPT,"^",3)_" - ERROR ENCOUNTERED"
 | 
|---|
| 108 |  S XMDUZ="INTEGRATED BILLING PACKAGE",XMTEXT="IBT("
 | 
|---|
| 109 |  S XMY(IBDUZ)=""
 | 
|---|
| 110 |  S XMY("G.IBCNR EPHARM")=""
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  S IBT(1)="An error occurred while cancelling the Pharmacy claim from ECME"
 | 
|---|
| 113 |  S IBT(2)="fiscal intermediary for the following patient:"
 | 
|---|
| 114 |  S IBT(3)=" " S IBC=3
 | 
|---|
| 115 |  D PAT^IBAERR1 ; Accepts IBDUZ
 | 
|---|
| 116 |  S IBC=IBC+1,IBT(IBC)="   Bill #: "_IBIL
 | 
|---|
| 117 |  S IBC=IBC+1,IBT(IBC)=" "
 | 
|---|
| 118 |  S IBC=IBC+1,IBT(IBC)="The following error was encountered:"
 | 
|---|
| 119 |  S IBC=IBC+1,IBT(IBC)=" "
 | 
|---|
| 120 |  D ERR^IBAERR1
 | 
|---|
| 121 |  S IBC=IBC+1,IBT(IBC)=" "
 | 
|---|
| 122 |  S IBC=IBC+1,IBT(IBC)="Please review the circumstances surrounding this error and decrease"
 | 
|---|
| 123 |  S IBC=IBC+1,IBT(IBC)="out this receivable in Accounts Receivable if necessary."
 | 
|---|
| 124 |  D ^XMD
 | 
|---|
| 125 |  Q
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 | GETRSN(DFN,IBRXN,IBFIL) ;
 | 
|---|
| 128 |  ; retrieve charge removal reason from file 354.71
 | 
|---|
| 129 |  ; input - DFN,IBRXN=Rx ien,IBFIL=fill number
 | 
|---|
| 130 |  ; output - charge removal reason 
 | 
|---|
| 131 |  N IBDT,IBDA,IBXRSN,IBRXFIL,IB0
 | 
|---|
| 132 |  S (IBDT,IBDA)=0,IBXRSN=""
 | 
|---|
| 133 |  S IBRXFIL=$S('IBFIL:IBRXN,1:IBRXN_";"_IBFIL)
 | 
|---|
| 134 |  F  S IBDT=$O(^IBAM(354.71,"AD",DFN,IBDT)) Q:'IBDT  Q:IBXRSN]""  D
 | 
|---|
| 135 |  . F  S IBDA=$O(^IBAM(354.71,"AD",DFN,IBDT,IBDA)) Q:'IBDA  Q:IBXRSN]""  D
 | 
|---|
| 136 |  . . S IB0=^IBAM(354.71,IBDA,0)
 | 
|---|
| 137 |  . . Q:$P(IB0,"^",6)'[IBRXFIL
 | 
|---|
| 138 |  . . S IBXRSN=$$GET1^DIQ(354.71,IBDA_",",.19)
 | 
|---|
| 139 |  S:IBXRSN']"" IBXRSN="CHARGE REMOVAL REASON NOT FOUND"
 | 
|---|
| 140 |  Q "Reversal Rej, no pymt due<>"_IBXRSN
 | 
|---|
| 141 |  ;
 | 
|---|
| 142 |  ;IBNCPDP3
 | 
|---|