1 | IBCNS ;ALB/AAS - IS INSURANCE ACTIVE ; 22-JULY-91
|
---|
2 | ;;2.0;INTEGRATED BILLING;**28,43,80,82,133**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ;MAP TO DGCRNS
|
---|
6 | ;
|
---|
7 | ;Input - DFN = patient
|
---|
8 | ; - IBINDT = (optional) date to check ins active for or today if not defined
|
---|
9 | ; - IBOUTP = (optional) 1 if want active insurance returned in IBDD(insurance company)=node in patient file
|
---|
10 | ; - = 2 if want all ins returned
|
---|
11 | ;
|
---|
12 | ;Output - IBINS = 1 if has active ins., 0 if no active ins.
|
---|
13 | ; - IBDD() = internal node in patient file of valid ins.
|
---|
14 | ; - IBDDI() = internal node in patient file of invalid ins.
|
---|
15 | ;
|
---|
16 | % N J,X S IBINS=0 K IBDD,IBDDI
|
---|
17 | S J=0 F S J=$O(^DPT(DFN,.312,J)) Q:'J I $D(^DPT(DFN,.312,J,0)) S X=^(0) D CHK
|
---|
18 | Q
|
---|
19 | ;
|
---|
20 | CHK ;
|
---|
21 | ;Input - IBI = entry in insurance multiple
|
---|
22 | ;
|
---|
23 | S Z=$S($D(IBINDT):IBINDT,1:DT),Z1=$S($D(IBOUTP):IBOUTP,1:0)
|
---|
24 | G:'$D(^DIC(36,+X,0)) CHKQ S X1=^(0) ;insurance company entry doesn't exist
|
---|
25 | I $P(X,"^",8) G:Z<$P(X,"^",8) CHKQ ;effective date later than care
|
---|
26 | I $P(X,"^",4) G:Z>$P(X,"^",4) CHKQ ;care after expiration date
|
---|
27 | I $P($G(^IBA(355.3,+$P(X,"^",18),0)),"^",11) G CHKQ ;plan is inactive
|
---|
28 | G:$P(X1,"^",5) CHKQ ;insurance company inactive
|
---|
29 | I '$G(IBWNR) G:$P(X1,"^",2)="N" CHKQ ;insurance company will not reimburse
|
---|
30 | S IBINS=1 I Z1 D
|
---|
31 | .S IBDD(+X)=X
|
---|
32 | .Q:'$P(IBDD(+X),"^",18)
|
---|
33 | .S Y=$G(^IBA(355.3,+$P(IBDD(+X),"^",18),0))
|
---|
34 | .I $P(Y,"^",4)'="" S $P(IBDD(+X),"^",3)=$P(Y,"^",4) ; move group number
|
---|
35 | .I $P(Y,"^",3)'="" S $P(IBDD(+X),"^",15)=$P(Y,"^",3) ; move group name
|
---|
36 | CHKQ I Z1=2&('$D(IBDD(+X))) D
|
---|
37 | .S IBDDI(+X)=X
|
---|
38 | .Q:'$P(IBDDI(+X),"^",18)
|
---|
39 | .S Y=$G(^IBA(355.3,+$P(IBDDI(+X),"^",18),0))
|
---|
40 | .I $P(Y,"^",4)'="" S $P(IBDDI(+X),"^",3)=$P(Y,"^",4) ; move group number
|
---|
41 | .I $P(Y,"^",3)'="" S $P(IBDDI(+X),"^",15)=$P(Y,"^",3) ; move group name
|
---|
42 | K X,X1,Z,Z1,Y Q
|
---|
43 | ;
|
---|
44 | DD ; - called from input transform and x-refs for field 101,102,103
|
---|
45 | ; - input requires da=internal entry number in 399
|
---|
46 | ; - outputs IBdd(ins co.) array
|
---|
47 | ; patch 80 - Companies that Will Not Reimburse should be included so they can be added to the bill
|
---|
48 | N DFN,IBWNR S DFN=$P(^DGCR(399,DA,0),"^",2),IBOUTP=1,IBINDT=$S(+$G(^DGCR(399,DA,"U")):+$G(^("U")),1:DT),IBWNR=1
|
---|
49 | D %
|
---|
50 | DDQ K IBOUTP,IBINDT Q
|
---|
51 | ;
|
---|
52 | ;
|
---|
53 | DISP ; -Display all insurance company information
|
---|
54 | ; -input DFN
|
---|
55 | ;
|
---|
56 | N IBDTIN
|
---|
57 | DISPDT ; Entrypoint if IBDTIN is to be used to display coverage
|
---|
58 | Q:'$D(DFN) D:'$D(IOF) HOME^%ZIS
|
---|
59 | N X,IBINS,IBX
|
---|
60 | D ALL^IBCNS1(DFN,"IBINS")
|
---|
61 | ;
|
---|
62 | D HDR
|
---|
63 | I '$D(IBINS) W !," No Insurance Information" G DISPQ
|
---|
64 | ;
|
---|
65 | S X=0 F S X=$O(IBINS(X)) Q:'X S IBINS=IBINS(X,0) D D1 I +$G(IBCOVEXT) D D2EXT ; display
|
---|
66 | ;
|
---|
67 | DISPQ W ! S X=+$G(^IBA(354,DFN,60)) I +X W !,?16,"*** Verification of No Coverage ",$$FMTE^XLFDT(X)," ***"
|
---|
68 | I $$BUFFER^IBCNBU1(DFN) W !,?17,"*** Patient has Insurance Buffer entries ***"
|
---|
69 | Q
|
---|
70 | ;
|
---|
71 | OLDISP ; -Display all insurance company information
|
---|
72 | ; -input DFN
|
---|
73 | ;
|
---|
74 | Q:'$D(DFN) D:'$D(IOF) HOME^%ZIS
|
---|
75 | ;
|
---|
76 | S IBOUTP=2 D IBCNS
|
---|
77 | ;
|
---|
78 | N IBDTIN
|
---|
79 | D HDR
|
---|
80 | I '$D(IBDD),'$D(IBDDI) W !," No Insurance Information" G DISPQ
|
---|
81 | ;
|
---|
82 | S X="" F S X=$O(IBDD(X)) Q:X="" S IBINS=IBDD(X) D D1 ;active insurance
|
---|
83 | S X="" F S X=$O(IBDDI(X)) Q:X="" S IBINS=IBDDI(X) D D1 ;inactive ins
|
---|
84 | ;
|
---|
85 | OLDISPQ K IBDD,IBDDI,IBX
|
---|
86 | Q
|
---|
87 | ;
|
---|
88 | HDR ; -- print standard header
|
---|
89 | D HDR1("=",IOM-$S($G(IBDTIN):1,1:4))
|
---|
90 | Q
|
---|
91 | ;
|
---|
92 | HDR1(CHAR,LENG) ; -- print header, specify character
|
---|
93 | N OFF
|
---|
94 | S OFF=$S($G(IBDTIN):0,1:2)
|
---|
95 | W !?(1+OFF),"Insurance",?(13+OFF),"COB",?(17+OFF),"Subscriber ID",?(35+OFF),"Group",?(47+OFF),"Holder",?(55+OFF),"Effect"_$S('OFF:"",1:"i")_"ve",?(65+OFF+$S('OFF:0,1:1)),"Expires" W:'OFF ?75,"Only"
|
---|
96 | I $G(CHAR)'="",LENG S X="",$P(X,CHAR,LENG)="" W !?(1+OFF),X
|
---|
97 | Q
|
---|
98 | ;
|
---|
99 | D1 ; If IBDTIN is defined, this date is used for displaying insurance
|
---|
100 | ; coverage if plan does not provide not full coverage for all categories
|
---|
101 | N X,Y,Z,CAT,OFF Q:'$D(IBINS)
|
---|
102 | S OFF=$S($G(IBDTIN):0,1:2)
|
---|
103 | W !?(1+OFF),$S($D(^DIC(36,+IBINS,0)):$E($P(^(0),"^",1),1,10),1:"UNKNOWN")
|
---|
104 | S X=$P(IBINS,U,20) I X'="" S X=$S(X=1:"p",X=2:"s",X=3:"t",1:"")
|
---|
105 | W ?(14+OFF),X
|
---|
106 | W ?(17+OFF),$E($P(IBINS,"^",2),1,16)
|
---|
107 | ;W ?40,$E($S($P(IBINS,"^",15)'="":$P(IBINS,"^",15),1:$P(IBINS,"^",3)),1,10)
|
---|
108 | W ?(35+OFF),$E($$GRP($P(IBINS,"^",18)),1,10)
|
---|
109 | S X=$P(IBINS,"^",6) W ?(47+OFF),$S(X="v":"SELF",X="s":"SPOUSE",1:"OTHER")
|
---|
110 | W ?(55+OFF),$$DAT1^IBOUTL($P(IBINS,"^",8)),?(65+OFF+$S(OFF:1,1:0)),$$DAT1^IBOUTL($P(IBINS,"^",4))
|
---|
111 | I 'OFF D
|
---|
112 | .I $P($G(^DIC(36,+IBINS,0)),U,2)="N" W ?75,"*WNR*" Q
|
---|
113 | .S X="" F CAT="INPATIENT","OUTPATIENT","PHARMACY","MENTAL HEALTH","DENTAL" D
|
---|
114 | .. S Y=$$PLCOV^IBCNSU3(+$P(IBINS,"^",18),$G(IBDTIN),+$O(^IBE(355.31,"B",CAT,"")))
|
---|
115 | .. I +Y S Z=$S(CAT="PHARMACY":"R",1:$E(CAT)) S:Y>1 Z=$C($A(Z)+32) S X=X_Z
|
---|
116 | .S:X="" X="no CV" I X'?5U W ?75,X
|
---|
117 | Q
|
---|
118 | ;
|
---|
119 | GRP(IBCPOL) ; -- return group name/group policy
|
---|
120 | ; input: IBCPOL = pointer to entry in 355.3
|
---|
121 | ; output: group name or group number, if both group NUMBER
|
---|
122 | ; if neither 'Individual PLAN'
|
---|
123 | ;
|
---|
124 | N X,Y S X=""
|
---|
125 | S X=$G(^IBA(355.3,+$G(IBCPOL),0))
|
---|
126 | S Y=$S($P(X,"^",4)'="":$P(X,"^",4),1:$P(X,"^",3))
|
---|
127 | I $P(X,"^",10) S Y="Ind. Plan "_Y
|
---|
128 | GRPQ Q Y
|
---|
129 | ;
|
---|
130 | D2EXT ; display Conditional Coverage Comments and Riders (DFN,IBINS,X required)
|
---|
131 | N Y,CAT,IBX,IBY,IBZ,ARR,IBCDFN S IBCDFN=X,IBZ=0 N X
|
---|
132 | F CAT="INPATIENT","OUTPATIENT","PHARMACY","MENTAL HEALTH","DENTAL" D
|
---|
133 | . S Y=$$PLCOV^IBCNSU3(+$P(IBINS,"^",18),$G(IBDTIN),+$O(^IBE(355.31,"B",CAT,"")),.ARR)
|
---|
134 | . S IBY=CAT_" Conditional: "
|
---|
135 | . I +Y>1 S IBX=0 F S IBX=$O(ARR(IBX)) Q:'IBX W !,?17,IBY,?47,ARR(IBX) S IBY="",IBZ=1
|
---|
136 | ;
|
---|
137 | K ARR D RIDERS^IBCNSU3(DFN,IBCDFN,.ARR)
|
---|
138 | S IBY="Policy Riders: " S IBX=0 F S IBX=$O(ARR(IBX)) Q:'IBX W !,?17,IBY,?35,ARR(IBX) S IBY="",IBZ=1
|
---|
139 | I +IBZ W !
|
---|
140 | Q
|
---|