1 | IBEFUNC1 ;ALB/ARH - CPT BILLING EXTRINSIC FUNCTIONS ; 11/27/91
|
---|
2 | ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;created front-ends for extrinsic functions for use until all versions of file man can use them
|
---|
6 | FCC ;
|
---|
7 | S IBCHGX=$$CPTCHG($S('$D(IBCDX):"",1:IBCDX),$S('$D(IBDIVX):"",1:IBDIVX),$S('$D(IBDTX):"",1:IBDTX))
|
---|
8 | Q
|
---|
9 | ;
|
---|
10 | CPTCHG(CODE,DIV,DATE) ;ambulatory procedure billing charge on a date
|
---|
11 | ;assumes current date if none passed in (to disallow guessing on division pass in +DIV)
|
---|
12 | ;assumes first active division if (DIV=""!'$D(DIV)) passed in
|
---|
13 | ;returns - the charge if code is valid and active in Billing on DATE
|
---|
14 | ; - "" if unable to calc charge or there was none
|
---|
15 | ; division or rate group inactive on date or not defined in file
|
---|
16 | N X,%,%H,%I,Y
|
---|
17 | S Y=-1 G:'$D(CODE) ENDCHG
|
---|
18 | S:'$D(DATE) DATE=DT S DATE=$E(DATE,1,7) I DATE'?7N S DATE=DT
|
---|
19 | S:'$D(DIV) DIV="" I DIV="" S DIV=$$MCDIV(DIV,DATE)
|
---|
20 | I +$$CPTBSTAT(CODE,DATE) S X=DATE_"^"_DIV_"^"_+CODE D RATE^IBAUTL1
|
---|
21 | ENDCHG Q $S(Y<0:"",1:Y)
|
---|
22 | ;
|
---|
23 | FCBS ;
|
---|
24 | S IBSTX=$$CPTBSTAT($S('$D(IBCDX):"",1:IBCDX),$S('$D(IBDTX):"",1:IBDTX))
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | CPTBSTAT(CODE,DATE) ;ambulatory procedure billing status on a date
|
---|
28 | ;assumes current date if none passed in
|
---|
29 | ;returns - "" if CODE had never been a billing code on/before DATE given or DATE before BASC start date
|
---|
30 | ; - 0^INACTIVE if CODE billing inactive on DATE given or rate group inactive on DATE
|
---|
31 | ; - 1^ACTIVE if CODE billing active on DATE given
|
---|
32 | N LN,ST,%,%H,%I,X
|
---|
33 | S ST="" I '$D(CODE) G ENDST
|
---|
34 | S:'$D(DATE) DATE=DT S DATE=$E(DATE,1,7) I DATE'?7N S DATE=DT
|
---|
35 | I $$STDATE^IBCU63>DATE G ENDST
|
---|
36 | I $D(^IBE(350.4,+$O(^(+$O(^IBE(350.4,"AIVDT",+CODE,-(DATE+1))),0)),0)) S LN=^(0),ST=+$P(LN,"^",4)
|
---|
37 | I ST,$P($G(^IBE(350.2,+$P(LN,"^",3),0)),"^",2)>DATE S ST=""
|
---|
38 | S ST=ST_$S(ST'="":"^"_$P($P($P(^DD(350.4,.04,0),"^",3),ST_":",2),";",1),1:"")
|
---|
39 | ENDST Q ST
|
---|
40 | ;
|
---|
41 | FCR ;
|
---|
42 | S IBRGX=$$CPTRG($S('$D(IBCDX):"",1:IBCDX),$S('$D(IBDTX):"",1:IBDTX))
|
---|
43 | Q
|
---|
44 | ;
|
---|
45 | CPTRG(CPT,DATE) ;find the rate group for the CPT on the given date
|
---|
46 | ;assumes current date if none passed in
|
---|
47 | ;returns - a rate group name
|
---|
48 | ; - "" if no rate group listed for date, or CPT or DATE is ""
|
---|
49 | N RATE,%,%H,%I,X
|
---|
50 | G:'$D(CPT) ENDRG
|
---|
51 | S:'$D(DATE) DATE=DT S DATE=$E(DATE,1,7) I DATE'?7N S DATE=DT
|
---|
52 | I $D(^IBE(350.4,+$O(^(+$O(^IBE(350.4,"AIVDT",+CPT,-(DATE+1))),0)),0)) S RATE=$P($P($G(^IBE(350.1,+$P(^(0),"^",3),0)),"^",1)," ",2,999)
|
---|
53 | ENDRG Q $S($D(RATE):RATE,1:"")
|
---|
54 | ;
|
---|
55 | FMCD ;
|
---|
56 | S IBDIVX=$$MCDIV($S('$D(IBDIVX):"",1:IBDIVX),$S('$D(IBDTX):"",1:IBDTX))
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | MCDIV(DIV,DATE) ;find the medical center division
|
---|
60 | ; if DATE is not defined then assumes current date
|
---|
61 | ;returns - DIV passed in, if its status is active for date given
|
---|
62 | ; - first active division found, if DIV was inactive or ""
|
---|
63 | ; - if all divisions are inactive for the given date, returns ""
|
---|
64 | N I,NDIV,INACT,%,%H,%I,X S DIV=$G(DIV)
|
---|
65 | ;I '$D(DIV) S DIV="" G ENDIV
|
---|
66 | S:'$D(DATE) DATE=DT S DATE=$E(DATE,1,7) I DATE'?7N S DATE=DT
|
---|
67 | S NDIV=+$O(^(+$O(^IBE(350.5,"AIVDT",+DIV,-(DATE+1))),0))
|
---|
68 | I '$P($G(^IBE(350.5,NDIV,0)),"^",4) S DIV="" F I=1:1 S DIV=$O(^IBE(350.5,"AIVDT",DIV)) Q:DIV=""!('$D(INACT(+DIV))&($P($G(^IBE(350.5,+$O(^(+$O(^IBE(350.5,"AIVDT",+DIV,-(DATE+1))),0)),0)),"^",4))) S INACT(DIV)=""
|
---|
69 | ENDIV Q DIV
|
---|
70 | ;
|
---|
71 | RC(D0,D1,DATE) ;find BASC charge for particular revenue code entry (399,42)
|
---|
72 | ;input: D0 = bill ifn, D1 = revenue code sub-file IFN
|
---|
73 | ; if DATE not passed then assums STATEMENT FROM date of bill
|
---|
74 | ;returns: dollar amount if rev code has an active BASC CPT, otherwise ""
|
---|
75 | N X,Y,DA S X="",DATE=$P($G(DATE),".") I DATE'?7N S DATE=+$G(^DGCR(399,D0,"U"))
|
---|
76 | S Y=$G(^DGCR(399,D0,"RC",D1,0)) I +$P(Y,U,6),+$P(Y,U,7) S X=+$$CPTCHG^IBEFUNC1(+$P(Y,U,6),+$P(Y,U,7),DATE)
|
---|
77 | Q X
|
---|
78 | ;
|
---|
79 | CP(D0,D1) ;find BASC charge for particular procedure entry (399,304)
|
---|
80 | ;input: D0 = bill IFN, D1 = procedure code sub-file IFN
|
---|
81 | ;returns: dollar amount if CPT is BASC active, otherwise ""
|
---|
82 | N X,Y,DA S X="",Y=$G(^DGCR(399,D0,"CP",D1,0)) I $P(Y,U,1)[";ICPT(",+$P(Y,U,2),+$P(Y,U,6) S X=$$CPTCHG^IBEFUNC1(+Y,+$P(Y,U,6),+$P(Y,U,2))
|
---|
83 | Q X
|
---|