1 | IBCNSMM1 ;ALB/CMS -MEDICARE INSURANCE INTAKE (CONT) ; 11/8/06 9:32am
|
---|
2 | ;;2.0;INTEGRATED BILLING;**103,359**;21-MAR-94;Build 9
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | SETP(IBP) ; -- Stuff data fields in patient policy
|
---|
7 | ; Required Input:
|
---|
8 | ; IBP =A for Part A, B for Part B
|
---|
9 | ; DFN =pt. ien
|
---|
10 | ; IBCDFN =patient policy ien
|
---|
11 | ; IBNAME =Name of Insured
|
---|
12 | ; IBHICN =Subscriber ID
|
---|
13 | ; IBAEFF =Effective Date of Plan A
|
---|
14 | ; IBBEFF =Effective Date of Plan B
|
---|
15 | ; IBCNSP =Medicare (WNR) ien ^Part A ien ^Part B ien
|
---|
16 | ; IBCOBI =Coordination of Benefits (Internal value)
|
---|
17 | ;
|
---|
18 | N D,DA,DIE,DR,IBBDA,X,Y
|
---|
19 | I '$D(^DPT(DFN,.312,+IBCDFN,0)) G SETPQ
|
---|
20 | ;
|
---|
21 | ; -- Stuff the pt. policy fields
|
---|
22 | ; #2 *Group Number #.18 Group Plan
|
---|
23 | ; #6 Whose Ins. #.2 COB
|
---|
24 | ; #8 Effective Date of Policy #1 Sub. ID
|
---|
25 | ; #15 *Group Name #17 Name of Insured
|
---|
26 | ; #16 Pt. Relationship to Insured
|
---|
27 | ;
|
---|
28 | S DIE="^DPT("_DFN_",.312,",DA=+IBCDFN,DA(1)=DFN
|
---|
29 | S DR="2///"_$S(IBP="A":$P(IBCNSP,U,4),IBP="B":$P(IBCNSP,U,6),1:"")
|
---|
30 | S DR=DR_";17///"_IBNAME_";1///"_IBHICN
|
---|
31 | S DR=DR_";6///v;8///"_$S(IBP="A":$G(IBAEFF),IBP="B":$G(IBBEFF),1:"")
|
---|
32 | S DR=DR_";.2////"_IBCOBI_";15///"_$S(IBP="A":"PART A",IBP="B":"PART B",1:"")
|
---|
33 | S DR=DR_";16///01;.18////"_$S(IBP="A":+$P(IBCNSP,U,3),IBP="B":+$P(IBCNSP,U,5),1:"")
|
---|
34 | D ^DIE
|
---|
35 | ;
|
---|
36 | ; -- Update Insurance Event
|
---|
37 | S IBCOVP=$P($G(^DPT(DFN,.31)),U,11)
|
---|
38 | D BEFORE^IBCNSEVT S IBNEW=1
|
---|
39 | ;
|
---|
40 | ; -- Ask to Verify at this time
|
---|
41 | K DIR S DIR("A")="Verify Medicare (WNR) Part "_IBP_" Coverage Now"
|
---|
42 | S DIR("?")="Enter 'No' to not Verify Coverage at this time."
|
---|
43 | W ! S IBOK=0 D OK I 'IBOK G SETEV
|
---|
44 | ;
|
---|
45 | ; -- Check to see if Pt. Name = name of Insured
|
---|
46 | I IBNAME'=$P($G(^DPT(DFN,0)),U,1) D
|
---|
47 | .W !!,"WARNING: Patient Name: '"_$P($G(^DPT(DFN,0)),U,1)_"' DOES NOT MATCH"
|
---|
48 | .W !," Name of Insured: '"_IBNAME_"'.",!
|
---|
49 | ;
|
---|
50 | ; -- verify policy
|
---|
51 | S DIE="^DPT("_DFN_",.312,",DA=IBCDFN,DA(1)=DFN
|
---|
52 | S DR="1.03///NOW;1.04////"_DUZ D ^DIE
|
---|
53 | W !," PART "_IBP_" COVERAGE VERIFIED."
|
---|
54 | ;
|
---|
55 | SETEV ; -- Update Insurance event
|
---|
56 | N X,Y
|
---|
57 | D COVERED^IBCNSM31(DFN,IBCOVP)
|
---|
58 | I $G(IBCDFN)>0,IBNEW=1 D AFTER^IBCNSEVT,^IBCNSEVT
|
---|
59 | ;
|
---|
60 | SETPQ Q
|
---|
61 | ;
|
---|
62 | ;
|
---|
63 | BUFF(IBP) ; -- Set IBBUF array with policy info for Buffer File
|
---|
64 | ; Return: IBBUF array
|
---|
65 | ; IBBUF(355.33 field #s)=corresponding policy, plan and company data
|
---|
66 | ; i.e. IBBUF(20.01)=Insurance Company Name
|
---|
67 | ; IBBUF(40.02)=Group Name
|
---|
68 | ; IBBUF(60.01)=DFN
|
---|
69 | ;
|
---|
70 | ; Input: DFN, IBCNSP, IBNAME, IBHICN, IBAEFF, IBBEFF, IBCOBI
|
---|
71 | ;
|
---|
72 | ; Auto stuff other fields
|
---|
73 | ;
|
---|
74 | N IBP0 K IBBUF S IBBUF=""
|
---|
75 | S IBBUF(.03)=$G(IBSOUR)
|
---|
76 | S IBBUF(20.01)=$P(IBCNSP,U,2)
|
---|
77 | S IBBUF(40.02)=$S(IBP="A":$P(IBCNSP,U,4),IBP="B":$P(IBCNSP,U,6),1:"")
|
---|
78 | S IBBUF(40.03)=IBBUF(40.02)
|
---|
79 | S IBBUF(60.01)=+DFN
|
---|
80 | S IBBUF(60.02)=$S(IBP="A":IBAEFF,IBP="B":IBBEFF,1:"")
|
---|
81 | S IBBUF(60.04)=IBHICN
|
---|
82 | S IBBUF(60.05)="v"
|
---|
83 | S IBBUF(60.06)="01"
|
---|
84 | S IBBUF(60.07)=IBNAME
|
---|
85 | S IBBUF(60.12)=IBCOBI
|
---|
86 | S IBBDA=$$ADDSTF^IBCNBES(1,DFN,.IBBUF)
|
---|
87 | I +IBBDA W !,?3,$P(IBCNSP,U,2)," PART "_IBP_" entry #"_+IBBDA_" added to Insurance Buffer File."
|
---|
88 | I 'IBBDA W !,*7,?3,"Warning: Could not add new policy Part "_IBP_" in Buffer File.",!,?13,"("_$P(IBBDA,U,2)_")",!
|
---|
89 | Q
|
---|
90 | ;
|
---|
91 | OK ; -- ask okay
|
---|
92 | N DTOUT,DIROUT,DIRUT,DUOUT,X,Y
|
---|
93 | ; Returns:
|
---|
94 | ; IBQUIT=1 Exit user timedout
|
---|
95 | ; IBOK=1 Yes
|
---|
96 | ; IBOK=0 No
|
---|
97 | S IBQUIT=0,DIR(0)="Y",DIR("B")="YES" W !
|
---|
98 | I $G(DIR("A"))="" S DIR("A")="Is this Data Correct"
|
---|
99 | I $G(DIR("?"))="" S DIR("?")="Enter 'No' to edit Medicare Card information"
|
---|
100 | D ^DIR K DIR
|
---|
101 | I $D(DTOUT) S IBQUIT=1
|
---|
102 | S IBOK=$G(Y) I IBOK["^" S IBQUIT=1
|
---|
103 | Q
|
---|
104 | ;
|
---|
105 | GETWNR() ; -- Find and return the MEDICARE (WNR) ien
|
---|
106 | ; -- Returns Error message or
|
---|
107 | ; DIC(36 IEN ^"MEDICARE (WNR)"^IBA(355.3 PART A IEN ^"PART A"^ IBA(355.3 PART B IEN ^"PART B"
|
---|
108 | ;
|
---|
109 | N IBWNR,IB0,IBP0,IBQ,IBPQ,IBPX,IBX,IBY,IBPGN
|
---|
110 | S IBY="MEDICARE (WNR)",IBQ=0
|
---|
111 | S IBX=0 F S IBX=$O(^DIC(36,"B",IBY,IBX)) Q:('IBX) D Q:IBQ
|
---|
112 | .S IB0=$G(^DIC(36,IBX,0))
|
---|
113 | .K IBWNR("INS")
|
---|
114 | .I $P(IB0,U,1)'=IBY Q ;name
|
---|
115 | .I $P(IB0,U,2)'="N" Q ;Reimb?
|
---|
116 | .;I '$P(IB0,U,3) Q ;Sig Req. --> removed edit, cm, 5/18/99
|
---|
117 | .I $P(IB0,U,5) Q ;Inactive
|
---|
118 | .I $P($G(^IBE(355.2,+$P(IB0,U,13),0)),U)'="MEDICARE" Q ;Major Cat.
|
---|
119 | .S IBWNR("INS")=IBX_U_IBY
|
---|
120 | .;
|
---|
121 | .; -- Must have Active Group Plan Category Medicare Part A and B
|
---|
122 | .;
|
---|
123 | .K IBWNR("A"),IBWNR("B")
|
---|
124 | .S IBPX=0 F S IBPX=$O(^IBA(355.3,"B",IBX,IBPX)) Q:('IBPX)!(IBQ) D
|
---|
125 | ..S IBP0=$G(^IBA(355.3,IBPX,0))
|
---|
126 | ..I $P(IBP0,U,11) Q ;Inactive
|
---|
127 | ..I $P(IBP0,U,14)'="A",$P(IBP0,U,14)'="B" Q ;Not Plan Category Part A or B
|
---|
128 | ..S IBPGN=$TR($P(IBP0,U,3),"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
---|
129 | ..I IBPGN'="PART A",IBPGN'="PART B" Q ;excludes non PART A and PART B plans
|
---|
130 | ..S IBWNR($P(IBP0,U,14))=IBPX_U_$P(IBP0,U,3)
|
---|
131 | ..I $G(IBWNR("A")),$G(IBWNR("B")) S IBQ=1
|
---|
132 | ;
|
---|
133 | S IBX=$G(IBWNR("INS"))_U_$G(IBWNR("A"))_U_$G(IBWNR("B"))
|
---|
134 | I 'IBX S IBX="Error: Standard Medicare (WNR) Insurance Company not setup properly." G GETWNRQ
|
---|
135 | I '$P(IBX,U,3) S IBX="Error: Standard Medicare (WNR) plan PART A not setup properly." G GETWNRQ
|
---|
136 | I '$G(IBWNR("B")) S IBX="Error: Standard Medicare (WNR) plan PART B not setup properly."
|
---|
137 | GETWNRQ Q IBX
|
---|