| [613] | 1 | IBARXMB ;LL/ELZ - PHARMCAY COPAY CAP BILLING FUNCTIONS ;26-APR-2001 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**156**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | BILL(IBX,IBB) ; receives information to bill for amounts not previously billed | 
|---|
|  | 6 | ; to create bills for them on the local system, DFN is assumed | 
|---|
|  | 7 | ; IBX = the parent transaction number to bill, IBB = the amount to bill | 
|---|
|  | 8 | ; | 
|---|
|  | 9 | N IBY,IBZ,IB350,IBUPDATE,IBER,Y,IBL | 
|---|
|  | 10 | ; | 
|---|
|  | 11 | ; find bill number | 
|---|
|  | 12 | S IBY=+$O(^IBAM(354.71,"B",IBX,0)) Q:'IBY | 
|---|
|  | 13 | ; | 
|---|
|  | 14 | ; find last 354.71 entry for IBX | 
|---|
|  | 15 | S IBL=$O(^IBAM(354.71,"AF",IBY,":"),-1) I IBL S IBY=+IBL | 
|---|
|  | 16 | ; | 
|---|
|  | 17 | ; get info | 
|---|
|  | 18 | S IBZ=^IBAM(354.71,IBY,0),IB350=$G(^IB(+$P(IBZ,"^",4),0)) | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; is this already totally billed? | 
|---|
|  | 21 | Q:$P($$NET^IBARXMC(IBY),"^",2)'>0 | 
|---|
|  | 22 | ; | 
|---|
|  | 23 | ; cancel old 354.71 entry | 
|---|
|  | 24 | S IBUPDATE=1 S IBER=$$CANCEL^IBARXMN(DFN,IBY,.IBER) | 
|---|
|  | 25 | ; | 
|---|
|  | 26 | ; cancel old 350 entry | 
|---|
|  | 27 | D:IB350 CAN(DFN,+$P(IBZ,"^",4)) | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | ; create updated one | 
|---|
|  | 30 | D ADDUP(IBY,IBB) | 
|---|
|  | 31 | ; | 
|---|
|  | 32 | Q | 
|---|
|  | 33 | SEND(IBX,IBB) ; receives information to bill remotely for amounts not already | 
|---|
|  | 34 | ; billed.  Makes a call to the remote system to tell them to bill | 
|---|
|  | 35 | ; IBX = the parent transaction number to bill, IBB = the amount to bill | 
|---|
|  | 36 | ; ia #3144 | 
|---|
|  | 37 | N IBICN,Y,DA,HLDOM,HLECH,HLFS,HLINSTN,HLNEXT,HLNODE,HLPARAM,HLQ,HLQUIT,PHONE,RPCIEN,IO,IOBS,IOCPU,IOF,IOHG,IOM,ION,IOPAR,IOUPAR,IOS,IOSL,IOST,IOT,IOXY,POP,IBD | 
|---|
|  | 38 | D | 
|---|
|  | 39 | . S IBICN=$$ICN^IBARXMU(DFN) Q:'IBICN | 
|---|
|  | 40 | . D DIRECT^XWB2HL7(.IBD,+IBX,"IBARXM TRANS BILL","",IBICN,IBX,IBB) | 
|---|
|  | 41 | Q | 
|---|
|  | 42 | CAN(DFN,IBX,IBCRES) ; cancels charge to be updated | 
|---|
|  | 43 | ; IBX = ien from 350, IBCRES = charge cancel reason (optional) | 
|---|
|  | 44 | ; | 
|---|
|  | 45 | N IBZ,IBSERV,IBDUZ,IBSITE,IBFAC,IBLAST,IBPARNT,IBTYP,IBSEQNO,IBIL,IBLASTZ,IBUNIT,IBCHRG,IBNOS,IBTOTL,IBN,IBND | 
|---|
|  | 46 | ; | 
|---|
|  | 47 | S (IBND,IBZ)=$G(^IB(IBX,0)) Q:'IBZ | 
|---|
|  | 48 | ; | 
|---|
|  | 49 | S IBSERV=$$SERVICE(IBZ) | 
|---|
|  | 50 | D ARPARM^IBAUTL | 
|---|
|  | 51 | S:'$D(IBCRES) IBCRES=16 | 
|---|
|  | 52 | ; | 
|---|
|  | 53 | D LAST^IBARX1 I IBLAST'=IBPARNT,$D(^IB(IBLAST,0)),$P(^IBE(350.1,$P(^IB(IBLAST,0),"^",3),0),"^",5)=2 Q  ; already cancelled | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | ; cancel a charge with a status of HOLD | 
|---|
|  | 56 | I $P(IBZ,"^",5)=8 N DIE,DA,DR S DIE="^IB(",DA=IBX,DR=".05///10;.1///"_IBCRES D ^DIE Q | 
|---|
|  | 57 | ; | 
|---|
|  | 58 | S IBDUZ=DUZ | 
|---|
|  | 59 | S IBPARNT=$P(IBZ,"^",9) Q:'$D(^IB(IBPARNT,0)) | 
|---|
|  | 60 | S IBATYP=$P(^IBE(350.1,$P(IBZ,"^",3),0),"^",6) ;cancellation action type | 
|---|
|  | 61 | S IBSEQNO=$P($G(^IBE(350.1,+IBATYP,0)),"^",5) Q:'IBSEQNO | 
|---|
|  | 62 | S IBIL=$P(IBZ,"^",11) Q:'IBIL  ; no bill exists | 
|---|
|  | 63 | S IBLASTZ=$G(^IB(+IBLAST,0)) | 
|---|
|  | 64 | S IBUNIT=$S($P(IBLASTZ,"^",6):$P(IBLASTZ,"^",6),1:$P(IBZ,"^",6)) | 
|---|
|  | 65 | S IBCHRG=$S($P(IBLASTZ,"^",7):$P(IBLASTZ,"^",7),1:$P(IBZ,"^",7)) | 
|---|
|  | 66 | S IBTOTL=IBCHRG,IBWHER=2 | 
|---|
|  | 67 | D ADD^IBAUTL I +Y<1 Q | 
|---|
|  | 68 | ; | 
|---|
|  | 69 | S $P(^IB(IBN,1),"^",1)=IBDUZ,$P(^IB(IBN,0),"^",2,13)=DFN_"^"_IBATYP_"^"_$P(IBND,"^",4)_"^2^"_IBUNIT_"^"_IBCHRG_"^"_$P(IBND,"^",8)_"^"_IBPARNT_"^"_IBCRES_"^"_IBIL_"^^"_IBFAC | 
|---|
|  | 70 | K ^IB("AC",1,IBN) | 
|---|
|  | 71 | D INDEX^IBARX1 | 
|---|
|  | 72 | S IBNOS=IBN | 
|---|
|  | 73 | D ^IBAFIL | 
|---|
|  | 74 | Q | 
|---|
|  | 75 | ; | 
|---|
|  | 76 | ADDUP(IBX,IBB) ; add updated transaction, assumes DFN | 
|---|
|  | 77 | ; IBX = example ien from 354.71 to bill, IBB = amount to bill | 
|---|
|  | 78 | ; | 
|---|
|  | 79 | N IBZ,IBSEQNO,IBDESC,IBCHRG,IBNOCH,IBAM,IBATYP,IBPARNT,IBN,IBDUZ,IBFAC,IBNOS,Y | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | S IBZ=^IBAM(354.71,IBX,0),IBDUZ=$P(IBZ,"^",14) | 
|---|
|  | 82 | D ARPARM^IBAUTL | 
|---|
|  | 83 | ; | 
|---|
|  | 84 | ; check exemption status | 
|---|
|  | 85 | I +$$RXEXMT^IBARXEU0(DFN,$P(IBZ,"^",3)) Q | 
|---|
|  | 86 | ; | 
|---|
|  | 87 | S IBATYP=$P(IBZ,"^",18),IBATYP=$P($G(^IBE(350.1,+IBATYP,0)),"^",7) | 
|---|
|  | 88 | S IBSEQNO=$P($G(^IBE(350.1,+IBATYP,0)),"^",5) Q:'IBSEQNO | 
|---|
|  | 89 | S IBDESC=$P(IBZ,"^",9) | 
|---|
|  | 90 | ; | 
|---|
|  | 91 | S IBCHRG=IBB+$P(IBZ,"^",11),IBNOCH=$P(IBZ,"^",8)-IBCHRG | 
|---|
|  | 92 | ; | 
|---|
|  | 93 | S IBAM=$$ADD^IBARXMN(DFN,"^^"_$P(IBZ,"^",3)_"^^P^"_$P(IBZ,"^",6,9)_"^"_$P(IBZ,"^")_"^"_IBCHRG_"^"_IBNOCH_"^"_(+$P($$SITE^IBARXMU,"^",3)),IBATYP) I IBAM<1 Q | 
|---|
|  | 94 | ; | 
|---|
|  | 95 | D ADD^IBAUTL | 
|---|
|  | 96 | S IBPARNT=$S($P(IBZ,"^",4):$P(IBZ,"^",4),1:IBN) | 
|---|
|  | 97 | S $P(^IB(IBN,1),"^",1)=IBDUZ,$P(^IB(IBN,0),"^",2,13)=DFN_"^"_IBATYP_"^"_$P(IBZ,"^",6)_"^2^"_$P(IBZ,"^",7)_"^"_IBCHRG_"^"_IBDESC_"^"_IBPARNT_"^^^^"_IBFAC,$P(^(0),"^",19)=IBAM | 
|---|
|  | 98 | K IBPARNT,^IB("AC",1,IBN) | 
|---|
|  | 99 | D INDEX^IBARX1 | 
|---|
|  | 100 | S IBNOS=IBN_"^"_$G(IBNOS) | 
|---|
|  | 101 | D ^IBAFIL | 
|---|
|  | 102 | ; | 
|---|
|  | 103 | ; call pso to let them know I have billed | 
|---|
|  | 104 | ; check for pso part not installed | 
|---|
|  | 105 | ; ia #3462 | 
|---|
|  | 106 | I $L($T(^PSOCPIB)) S Y(1)=$$NOW^XLFDT_"^"_DUZ_"^"_(+$P($P(IBZ,"^",6),":",2))_"^"_(+$P($P(IBZ,"^",6),":",3))_"^"_$S(IBNOCH:"P",1:"F")_"^"_IBN D ^PSOCPIB | 
|---|
|  | 107 | ; | 
|---|
|  | 108 | ; | 
|---|
|  | 109 | Q | 
|---|
|  | 110 | ; | 
|---|
|  | 111 | SERVICE(IBZ) ; returns service pointer | 
|---|
|  | 112 | ; IBZ = zero node from 350 | 
|---|
|  | 113 | Q $P($G(^IBE(350.1,+$P(IBZ,"^",3),0)),"^",4) | 
|---|
|  | 114 | ; | 
|---|