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 | ;
|
---|