1 | IBRFN2 ;ALB/AAS - PASS INSURANCE/BEDSECTION DATA TO A/R FOR MCCR/NDB ; 8-OCT-93
|
---|
2 | ;;2.0;INTEGRATED BILLING;**75,80,345**;21-MAR-94;Build 28
|
---|
3 | ;;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | CRIT(IBIFN) ; Pass AR insurance data for MCCR/NDB
|
---|
6 | ; Input: IBIFN -- Internal entry of Bill (ptr to #399)
|
---|
7 | ; (should be same as ptr to 430)
|
---|
8 | ;
|
---|
9 | ; Returns: piece 1 = criteria 3 (type of policy)
|
---|
10 | ; piece 2 = criteria 4 (how policy identified)
|
---|
11 | ; piece 3 = criteria 5 (primary bedsection of bill)
|
---|
12 | ; see table below for values
|
---|
13 | ;
|
---|
14 | ; -------------------------------------------------------------------
|
---|
15 | ; | | Numeric Value |
|
---|
16 | ; |-------|-----------------------------------------------------------|
|
---|
17 | ; | Piece | 1 | 2 | 3 | 4 |
|
---|
18 | ; |-------|----------------|--------------|-------------|-------------|
|
---|
19 | ; | 1 | Full Medical | Medicare Sup | *Other | - |
|
---|
20 | ; | 2 | *By interview | By Data Match| by IVM |by pre-regist|
|
---|
21 | ; | 3 | Medical | Surgical | Pschiatric | *Any Other |
|
---|
22 | ; | | | | |including opt|
|
---|
23 | ; -------------------------------------------------------------------
|
---|
24 | ;
|
---|
25 | ; -- error, returns -1, bill does not exist
|
---|
26 | ;
|
---|
27 | N IBX
|
---|
28 | S IBX=-1
|
---|
29 | ; -- set value to defaults if okayed by vaco
|
---|
30 | ;S IBX="3^1^4"
|
---|
31 | ;
|
---|
32 | I '$G(IBIFN)!($G(^DGCR(399,+$G(IBIFN),0))="") G CRITQ
|
---|
33 | S IBX=""
|
---|
34 | ;
|
---|
35 | S $P(IBX,"^",1)=$$TYPOL(IBIFN)
|
---|
36 | S $P(IBX,"^",2)=$$HOWID(IBIFN)
|
---|
37 | S $P(IBX,"^",3)=$$BEDSC(IBIFN)
|
---|
38 | ;
|
---|
39 | CRITQ Q IBX
|
---|
40 | ;
|
---|
41 | ;
|
---|
42 | TYPOL(IBIFN) ; -- compute type of policy for a bill
|
---|
43 | N IBX,IBCDFN,IBCPOL,TYPE
|
---|
44 | S IBX=""
|
---|
45 | S IBCDFN=$$POL(IBIFN) I 'IBCDFN G TYPOLQ
|
---|
46 | S IBCPOL=$P($G(^DPT(+$P($G(^DGCR(399,+$G(IBIFN),0)),"^",2),.312,IBCDFN,0)),"^",18) ; pointer to group plan (355.3)
|
---|
47 | I 'IBCPOL S IBX=3 ; default type of policy is 3 or other
|
---|
48 | I IBCPOL D
|
---|
49 | .S TYPE=$P($G(^IBE(355.1,+$P($G(^IBA(355.3,+IBCPOL,0)),"^",9),0)),"^",3)
|
---|
50 | .S IBX=$S(TYPE=1:1,TYPE=11:2,1:3) ; full medical, medicare supplementa or other
|
---|
51 | TYPOLQ I IBX<1!(IBX>3)!(IBX'?1N) S IBX=3 ; must be number from 1-3, default=3
|
---|
52 | Q IBX
|
---|
53 | ;
|
---|
54 | ;
|
---|
55 | HOWID(IBIFN) ; -- compute how policy was identified
|
---|
56 | N IBX,IBCDFN
|
---|
57 | S IBX=""
|
---|
58 | S IBCDFN=$$POL(IBIFN) I 'IBCDFN G HOWIDQ
|
---|
59 | S IBX=$P($G(^DPT(+$P($G(^DGCR(399,+$G(IBIFN),0)),"^",2),.312,IBCDFN,1)),"^",9)
|
---|
60 | ;
|
---|
61 | HOWIDQ I IBX<1!(IBX'?1N) S IBX=1 ; must be number, default=1 by interview
|
---|
62 | Q IBX
|
---|
63 | ;
|
---|
64 | ;
|
---|
65 | BEDSC(IBIFN) ; -- compute primary bedsection for a bill
|
---|
66 | ; -- based on greatest length of stay
|
---|
67 | N IBX,IBRC,IBBS,IBUN,IBMAX
|
---|
68 | S IBX=""
|
---|
69 | I '$G(IBIFN) G BEDSCQ
|
---|
70 | I $P($G(^DGCR(399,+IBIFN,0)),"^",5)>2 S IBX=4 G BEDSCQ ; opt bill
|
---|
71 | ;
|
---|
72 | ; -- add up all los for each rev code.
|
---|
73 | S IBRC=0 F S IBRC=$O(^DGCR(399,+IBIFN,"RC",IBRC)) Q:'IBRC D
|
---|
74 | .S IBUN=$P($G(^DGCR(399,+IBIFN,"RC",IBRC,0)),"^",3) ; units of service
|
---|
75 | .S IBBS=$P($G(^DGCR(399,+IBIFN,"RC",IBRC,0)),"^",5) ; bedsection from 399.1
|
---|
76 | .Q:IBBS=""
|
---|
77 | .S IBBS(IBBS)=$G(IBBS(IBBS))+IBUN
|
---|
78 | .Q
|
---|
79 | ;
|
---|
80 | ; -- find bedsection with highest los
|
---|
81 | S IBMAX=""
|
---|
82 | S X=0 F S X=$O(IBBS(X)) Q:'X I IBBS(X)>$G(IBBS(+IBMAX)) S IBMAX=X
|
---|
83 | ;
|
---|
84 | S IBX=$P($G(^DGCR(399.1,+IBMAX,0)),"^")
|
---|
85 | ;
|
---|
86 | BEDSCQ S IBX=$S(IBX="":4,IBX["MEDICAL":1,IBX["SURGICAL":2,IBX["PSYCHIATRIC":3,1:4)
|
---|
87 | Q IBX
|
---|
88 | ;
|
---|
89 | POL(IBIFN) ; -- compute internal policy id for a bill
|
---|
90 | N X,Y,DFN,IBDD,IBCDFN
|
---|
91 | S IBCDFN=$P($G(^DGCR(399,+IBIFN,"MP")),"^",2)
|
---|
92 | I 'IBCDFN D
|
---|
93 | .S IBCNS=+$G(^DGCR(399,+IBIFN,"MP"))
|
---|
94 | .S DFN=$P($G(^DGCR(399,+IBIFN,0)),"^",2)
|
---|
95 | .S X="IBCNS1" X ^%ZOSF("TEST") I $T D ALL^IBCNS1(DFN,"IBDD")
|
---|
96 | .I '$D(IBDD) Q
|
---|
97 | .S X=0 F S X=$O(IBDD(X)) Q:'X I IBCNS=+$G(IBDD(X,0)) S IBCDFN=X Q
|
---|
98 | .Q
|
---|
99 | POLQ Q IBCDFN
|
---|