1 | IBAUTL2 ;ALB/CPM-MEANS TEST BILLING UTILITIES ;30-AUG-91
|
---|
2 | ;;2.0;INTEGRATED BILLING;**52,153,167,187,183**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | CHFIND ; Find open charge for a billable event
|
---|
6 | ; Input: IBEVDA, IBX (C=copay/P=per diem)
|
---|
7 | ; Output: IBCH*DA=0/ien of charge also IBCH* if IBCH*DA>0
|
---|
8 | N J,X S J=0
|
---|
9 | F S J=$O(^IB("ACT",IBEVDA,J)) Q:'J S X=$G(^IB(J,0)) I X]"",(($P(X,"^",8)["CO-PAY"&(IBX="C"))!($P(X,"^",8)["PER DIEM"&(IBX="P"))) Q:$P(X,"^",5)=1
|
---|
10 | S:J IBCHTOTL=$P(X,"^",7),IBCHFR=$P(X,"^",14),IBCHTO=$P(X,"^",15)
|
---|
11 | S @("IBCH"_IBX_"DA")=+J Q
|
---|
12 | ;
|
---|
13 | CHADD ; Add a new IB Action in #350
|
---|
14 | D ADD^IBAUTL I Y<1 S IBY=Y G CHADDQ
|
---|
15 | S $P(^IB(IBN,0),"^",2,16)=DFN_"^"_IBATYP_"^"_IBSL_"^1^1^"_IBCHG_"^"_IBDESC_"^"_IBN_"^^^^"_IBFAC_"^"_IBDT_"^"_IBDT_"^"_IBEVDA
|
---|
16 | I $G(IBGMTR) S $P(^IB(IBN,0),"^",21)=1 ; GMT RELATED field #.21
|
---|
17 | D NOW^%DTC S $P(^IB(IBN,1),"^")=DUZ,$P(^(1),"^",3,4)=DUZ_"^"_%
|
---|
18 | S DIK="^IB(",DA=IBN D IX1^DIK K DIK,DA
|
---|
19 | ;I $G(IBJOB)=1 S ^TMP($J,"IBAMTC","I",DFN,IBN)=""
|
---|
20 | CHADDQ Q
|
---|
21 | ;
|
---|
22 | CHUPD ; Update an IB Action charge
|
---|
23 | ; Input: IBCHTOTL, IBCHFR, IBDT, IBX(P/C), IBN, IBCHG, DUZ, IBGMTR(opt)
|
---|
24 | N TOT,UNIT S UNIT=1
|
---|
25 | I IBX="P" S X1=IBDT,X2=IBCHFR D ^%DTC S UNIT=X+1,TOT=UNIT*IBCHG
|
---|
26 | I IBX="C" S TOT=IBCHTOTL+IBCHG
|
---|
27 | D NOW^%DTC S $P(^IB(IBN,0),"^",6,7)=UNIT_"^"_TOT,$P(^(0),"^",15)=IBDT,$P(^(1),"^",3,4)=DUZ_"^"_%
|
---|
28 | I $G(IBGMTR) S $P(^IB(IBN,0),"^",21)=1 ; GMT RELATED field #.21
|
---|
29 | S DIK="^IB(",DA=IBN D IX1^DIK K DIK,DA
|
---|
30 | ;I $G(IBJOB)=1 S ^TMP($J,"IBAMTC","I",+$G(DFN),IBN)=""
|
---|
31 | Q
|
---|
32 | ;
|
---|
33 | SERV ; Find the service pointer for MAS.
|
---|
34 | S IBSERV=$P($G(^IBE(350.9,1,1)),"^",14) I '$D(^DIC(49,+IBSERV,0)) S IBY="-1^IB003"
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | TYPE ; Find the IB action type and rate for per diem and OPT co-payment charges.
|
---|
38 | ; Input: IBDT, IBBS (if IBX=P), IBX (O=opt copay/P=per diem)
|
---|
39 | ; IBTYPE (only if outpatient, specify Basic or Specialty)
|
---|
40 | ; Output: IBATYP, IBCHG, IBDESC, IBRTED
|
---|
41 | N J,IBOLDBS S IBCHG=0,IBDESC=""
|
---|
42 | I IBX="O" D
|
---|
43 | .S IBBS=$$ITPTR^IBCRU2(9,$S(IBTYPE=2:"SPECIALTY CARE",1:"BASIC CARE"))
|
---|
44 | .S IBCS=$$CSN^IBCRU3("TL-MT OPT COPAY")
|
---|
45 | .S IBOLDBS=$$MCCRUTL^IBCRU1("OUTPATIENT VISIT",5)
|
---|
46 | .D COPAY
|
---|
47 | ;
|
---|
48 | I IBX="P" S IBATYP=+$P($G(^DGCR(399.1,IBBS,0)),"^",8) I IBATYP D COST X:$D(^IBE(350.1,IBATYP,20)) ^(20)
|
---|
49 | I 'IBATYP S IBY="-1^IB008" G TYPEQ
|
---|
50 | I 'IBCHG S IBY="-1^IB029"
|
---|
51 | TYPEQ Q
|
---|
52 | ;
|
---|
53 | COST ; - find per diem charge. Input: IBATYP, IBDT Output: IBCHG
|
---|
54 | N X S X=$O(^IBE(350.2,"AIVDT",IBATYP,-(IBDT+.1))),X=$O(^(+X,0)) I $D(^IBE(350.2,+X,0)) S X=$P(^(0),"^",4)
|
---|
55 | S IBCHG=+X Q
|
---|
56 | ;
|
---|
57 | COPAY ; Find the Inpatient/NHCU daily copay rate and IB action type
|
---|
58 | ; Input: IBBS, IBDT, IBCS (for the opt copay only)
|
---|
59 | ; Output: IBATYP, IBCHG, IBDESC, IBRTED
|
---|
60 | ;
|
---|
61 | S (IBATYP,IBCHG)=0,IBDESC=""
|
---|
62 | S IBATYP=$P($G(^DGCR(399.1,$S($D(IBOLDBS):IBOLDBS,1:IBBS),0)),"^",7) I 'IBATYP S IBY="-1^IB008" G COPAYQ
|
---|
63 | I $D(^IBE(350.1,+IBATYP,20)) X ^(20)
|
---|
64 | ;
|
---|
65 | ; - charge set is not defined as input for inpatient rates
|
---|
66 | I '$G(IBCS) S IBCS=$$CSN^IBCRU3("TL-INPT (INCLUSIVE)")
|
---|
67 | S IBCHG=$$ITCHG^IBCRCI(IBCS,IBBS,IBDT)
|
---|
68 | S IBRTED=$P(IBCHG,"^",2),IBCHG=+IBCHG
|
---|
69 | ;
|
---|
70 | I 'IBCHG S IBY="-1^IB030"
|
---|
71 | COPAYQ K IBCS
|
---|
72 | Q
|
---|