1 | IBCNSUR1 ;ALB/CPM/CMS - MOVE SUBSCRIBERS TO DIFFERENT PLAN (CON'T) ;09-SEP-96
|
---|
2 | ;;2.0;INTEGRATED BILLING;**103,225,276**;21-MAR-94
|
---|
3 | ;;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
4 | Q
|
---|
5 | ;
|
---|
6 | ;
|
---|
7 | PROC ; - Top of processing from IBCNSUR
|
---|
8 | ; Move subscribers to another company's insurance plan.
|
---|
9 | N IBCNS,IBPLAN,IBC1,IBC1N,IBC1X,IBC2,IBC2N,IBC2X,IBCPOL
|
---|
10 | N IBP1,IBP1N,IBP1X,IBP2,IBP2N,IBP2X,IBQ,IBQUIT,IBSUB,DFN,IBCDFN
|
---|
11 | N IBXXX,IBX,IBDAT,IBCDFN1,IBNP,IBAB,IBI,IBIAB,IBCAB,IBW,IBST
|
---|
12 | N DIC,DIE,DR,DA,D0,DIR,DIRUT,DIROUT,DTOUT,DUOUT,I,X,Y,DIK,DLAYGO
|
---|
13 | N IBSPLIT,IBEFFDT,IBEXPDT,REF,IBLN
|
---|
14 | ;
|
---|
15 | K ^TMP($J,"IBCNSUR") ; subscribers
|
---|
16 | K ^TMP($J,"IBCNSUR1") ; e-mail bulletin
|
---|
17 | S REF=$NA(^TMP($J,"IBCNSUR1")),IBLN=0
|
---|
18 | ;
|
---|
19 | S IBQUIT=0
|
---|
20 | W !!!,"=====================",!,"MOVE SUBSCRIBERS FROM",!,"====================="
|
---|
21 | W !!,"Select the Insurance Company and Plan to move subscribers FROM.",!
|
---|
22 | ;
|
---|
23 | ; - select company/plan for subscribers to be moved
|
---|
24 | S IBQUIT=0
|
---|
25 | D SEL^IBCNSUR(0)
|
---|
26 | I IBQUIT S IBSTOP=1 G PROCQ
|
---|
27 | ;
|
---|
28 | ; - collect the plan subscribers
|
---|
29 | S IBC1=IBCNS,IBP1=IBPLAN
|
---|
30 | W !!,"Collecting Subscribers ..."
|
---|
31 | S IBSUB=$$SUBS^IBCNSJ(IBC1,IBP1,0,"^TMP($J,""IBCNSUR"")")
|
---|
32 | I 'IBSUB W !!,?5,*7,"* This plan has no subscribers!" S IBQUIT=1 G PROCQ
|
---|
33 | W !!,"This plan has ",+IBSUB," subscribers. All subscribers will be moved."
|
---|
34 | ;
|
---|
35 | ; - select company/plan to move subscribers
|
---|
36 | W !!!,"MOVE SUBSCRIBERS TO"
|
---|
37 | W !!,"Select the Insurance Company and Plan to move subscribers TO.",!
|
---|
38 | D SEL^IBCNSUR(1)
|
---|
39 | I IBQUIT G PROCQ
|
---|
40 | I $P($G(^DIC(36,IBCNS,0)),"^",5) W !!,*7,"You must move the subscribers to an active insurance company!" G PROCQ
|
---|
41 | S IBC2=IBCNS,IBP2=IBPLAN
|
---|
42 | ;
|
---|
43 | ; - make sure not moving the subscribers to their current plan
|
---|
44 | I (IBC1=IBC2)&(IBP1=IBP2) W !!,*7,"You must move the subscribers to a different plan!" G PROCQ
|
---|
45 | ;
|
---|
46 | ; - set name and plan number
|
---|
47 | S IBC1N=$P($G(^DIC(36,+IBC1,0)),U,1)
|
---|
48 | S IBP1N=$P($G(^IBA(355.3,+IBP1,0)),U,3,4),IBP1X=$P(IBP1N,U,2)
|
---|
49 | S IBP1X=$S(IBP1X]"":IBP1X,1:"<Not Specified>")
|
---|
50 | S IBP1N=$S($P(IBP1N,U,1)="":"<Not Specified>",1:$P(IBP1N,U,1))
|
---|
51 | S IBC2N=$P($G(^DIC(36,+IBC2,0)),U,1)
|
---|
52 | S IBP2N=$P($G(^IBA(355.3,+IBP2,0)),U,3,4),IBP2X=$P(IBP2N,U,2)
|
---|
53 | S IBP2X=$S(IBP2X]"":IBP2X,1:"<Not Specified>")
|
---|
54 | S IBP2N=$S($P(IBP2N,U,1)="":"<Not Specified>",1:$P(IBP2N,U,1))
|
---|
55 | ;
|
---|
56 | ; - ask if they want to delete the old insurance
|
---|
57 | S DIR(0)="Y",DIR("A")="Do you want to EXPIRE the old plan by entering the new plan Effective date"
|
---|
58 | S DIR("B")="NO"
|
---|
59 | S DIR("?")="If you wish to apply Effective Date, enter 'Yes' - otherwise, enter 'No'"
|
---|
60 | W ! D ^DIR K DIR
|
---|
61 | I $D(DIRUT) G PROCQ
|
---|
62 | S IBSPLIT=''Y
|
---|
63 | ; if yes then
|
---|
64 | ; - ask the effective date of the new insurance
|
---|
65 | I IBSPLIT D I IBQ G PROCQ
|
---|
66 | . S IBQ=0
|
---|
67 | . S %DT="AEX",%DT("A")="Effective Date of the new Plan: "
|
---|
68 | . W ! D ^%DT K %DT I Y'>0 S IBQ=1 Q
|
---|
69 | . S IBEFFDT=$P(+Y,".")
|
---|
70 | . S IBEXPDT=$$FMADD^XLFDT(IBEFFDT,-1)
|
---|
71 | ;
|
---|
72 | ; - ask are they sure
|
---|
73 | W !!!,"You selected to move ",IBSUB," subscribers and "
|
---|
74 | W $S(IBSPLIT:"EXPIRE",1:"REPLACE")," the old plan in the patient",!,"profile.",!
|
---|
75 | W !?5,"FROM Insurance Company ",IBC1N
|
---|
76 | W !?10,"Plan Name ",IBP1N," Number ",IBP1X
|
---|
77 | W !?5,"TO Insurance Company ",IBC2N
|
---|
78 | W !?10,"Plan Name ",IBP2N," Number ",IBP2X
|
---|
79 | I IBSPLIT D
|
---|
80 | . W !?5,"BY switching to the new Insurance/Plan"
|
---|
81 | . W !?10,"with Effective Date ",$$DAT2^IBOUTL(IBEFFDT)
|
---|
82 | W !
|
---|
83 | W !,"Please Note that the old insurance group plan will be "
|
---|
84 | W $S(IBSPLIT:"EXPIRED",1:"REPLACED")," in the patient",!,"profile!",!
|
---|
85 | ;
|
---|
86 | S DIR(0)="Y",DIR("A")="Okay to continue"
|
---|
87 | S DIR("?")="If you wish to move these subscribers, enter 'Yes' - otherwise, enter 'No.'"
|
---|
88 | W ! D ^DIR K DIR
|
---|
89 | I 'Y W !!,?10,"<Okay, nothing moved>" G PROCQ
|
---|
90 | ;
|
---|
91 | ; - should annual benefits be moved?
|
---|
92 | S (IBAB,IBQ)=0
|
---|
93 | I $D(^IBA(355.4,"APY",IBP1)),'$D(^IBA(355.4,"APY",IBP2)) D G:IBQ PROCQ
|
---|
94 | .S DIR(0)="Y",DIR("A")="Okay to add "_IBC1N_"'s plan Annual Benefits to "_IBC2N_"'s plan"
|
---|
95 | .S DIR("?")="If you wish to move these Annual Benefits, enter 'Yes' - otherwise, enter 'No.'"
|
---|
96 | .W ! D ^DIR K DIR I $D(DIRUT)!$D(DIROUT)!$D(DUOUT)!$D(DTOUT) S IBQ=1
|
---|
97 | .S:Y IBAB=1 K DIRUT,DUOUT,DTOUT,DIROUT
|
---|
98 | ;
|
---|
99 | ; - copy annual benefits over to the new plan
|
---|
100 | I IBAB D
|
---|
101 | .S IBI=0 F S IBI=$O(^IBA(355.4,"C",IBP1,IBI)) Q:'IBI D
|
---|
102 | ..S IBIAB=$G(^IBA(355.4,IBI,0)) Q:'IBIAB
|
---|
103 | ..S X=+IBIAB,DIC(0)="L",DLAYGO=355.4,DIC="^IBA(355.4,"
|
---|
104 | ..K DD,DO D FILE^DICN Q:+Y<0 S IBCAB=+Y
|
---|
105 | ..S $P(^IBA(355.4,IBCAB,0),"^",2)=IBP2
|
---|
106 | ..S $P(^IBA(355.4,IBCAB,0),"^",5,6)=$P(IBIAB,"^",5,6)
|
---|
107 | ..F I=1:1:5 I $G(^IBA(355.4,IBI,I))]"" S ^IBA(355.4,IBCAB,I)=^(I)
|
---|
108 | ..S DA=IBCAB,DIK="^IBA(355.4," D IX1^DIK,EDUP^IBCNSA2
|
---|
109 | ;
|
---|
110 | ; - should plan comments be copied over to the new plan?
|
---|
111 | S (IBAB,IBQ)=0
|
---|
112 | I $P($G(^IBA(355.3,IBP1,11,0)),U,4),'$P($G(^IBA(355.3,IBP2,11,0)),U,4) D G:IBQ PROCQ
|
---|
113 | .S DIR(0)="Y"
|
---|
114 | .S DIR("A")="Okay to add "_IBC1N_"'s Comments to "_IBC2N_"'s plan"
|
---|
115 | .S DIR("?")="If you wish to move these Comments, enter 'Yes'"
|
---|
116 | .S DIR("?")=DIR("?")_" - otherwise, ente"
|
---|
117 | .W ! D ^DIR K DIR I $D(DIRUT)!$D(DIROUT)!$D(DUOUT)!$D(DTOUT) S IBQ=1
|
---|
118 | .S:Y IBAB=1 K DIRUT,DUOUT,DTOUT,DIROUT
|
---|
119 | ;
|
---|
120 | ; - copy plan comments over to the new plan
|
---|
121 | I IBAB D
|
---|
122 | .S DIC="^IBA(355.3,"_IBP2_",11,",DIC(0)="L",DIC("P")=355.311
|
---|
123 | .S IBI=0 F S IBI=$O(^IBA(355.3,IBP1,11,IBI)) Q:'IBI D
|
---|
124 | ..I $G(^IBA(355.3,IBP1,11,IBI,0))]"" S X=^(0) D FILE^DICN
|
---|
125 | ;
|
---|
126 | ; The MailMan bulletin header
|
---|
127 | D BHEAD^IBCNSUR3
|
---|
128 | ;
|
---|
129 | ; - move the subscribers to the new plan
|
---|
130 | W !!,"Moving subscribers "
|
---|
131 | S DFN=0 F S DFN=$O(^TMP($J,"IBCNSUR",DFN)) Q:'DFN D
|
---|
132 | .S IBCDFN=0 F S IBCDFN=$O(^TMP($J,"IBCNSUR",DFN,IBCDFN)) Q:'IBCDFN D
|
---|
133 | ..Q:$P($G(^DPT(DFN,.312,IBCDFN,0)),"^",18)'=IBP1
|
---|
134 | ..;
|
---|
135 | ..D ADS^IBCNSUR3(DFN,IBCDFN)
|
---|
136 | ..I 'IBSPLIT D MODIFINS(IBC2,IBP2,DFN,IBCDFN) ;regular mode
|
---|
137 | ..I IBSPLIT D SPLITINS(IBC2,IBP2,DFN,IBCDFN,IBEFFDT,IBEXPDT)
|
---|
138 | ..; - merge previous benefits used
|
---|
139 | ..S IBDAT="" F S IBDAT=$O(^IBA(355.5,"APPY",DFN,IBP1,IBDAT)) Q:IBDAT="" D
|
---|
140 | ...S IBCDFN1=0 F S IBCDFN1=$O(^IBA(355.5,"APPY",DFN,IBP1,IBDAT,IBCDFN1)) Q:'IBCDFN1 I IBCDFN1=IBCDFN S IBBU=$O(^(IBCDFN1,0)) D
|
---|
141 | ....I '$D(^IBA(355.4,"APY",IBP2,IBDAT)) D DBU^IBCNSJ(IBBU) Q
|
---|
142 | ....D MERG^IBCNSJ13(IBP2,IBBU)
|
---|
143 | ..;
|
---|
144 | ..W "."
|
---|
145 | ;
|
---|
146 | W !!,"Done. All subscribers were moved as requested!",!
|
---|
147 | D DONE^IBCNSUR3
|
---|
148 | W !,"The Bulletin was sent to you and members of 'IB NEW INSURANCE' Mail Group.",!
|
---|
149 | R !!,?10,"Press any key to continue. ",IBX:DTIME
|
---|
150 | ;
|
---|
151 | ; - finish processing in IBCNSUR (keep RSIZE down)
|
---|
152 | D PROC^IBCNSUR
|
---|
153 | ;
|
---|
154 | ;
|
---|
155 | PROCQ ;I 'IBSTOP S IBQUIT=0 D ASK^IBCOMC2 I IBQUIT=1 S IBSTOP=1
|
---|
156 | K ^TMP($J,"IBCNSUR")
|
---|
157 | K ^TMP($J,"IBCNSUR1")
|
---|
158 | Q
|
---|
159 | ;
|
---|
160 | ; modify the ins plan
|
---|
161 | MODIFINS(IBC2,IBP2,DFN,IBCDFN) ;
|
---|
162 | N IBXXX,DIE,DA,DR,IBX
|
---|
163 | ; - change the policy company
|
---|
164 | S IBXXX='$G(^DPT(DFN,.312,IBCDFN,1))
|
---|
165 | S DIE="^DPT(DFN,.312,",DA(1)=DFN,DA=IBCDFN,DR=".01///`"_IBC2 D ^DIE K DIE,DA,DR
|
---|
166 | I IBXXX S $P(^DPT(DFN,.312,IBCDFN,1),"^",1,2)="^"
|
---|
167 | ;
|
---|
168 | ; - repoint Insurance Reviews to the new company
|
---|
169 | S IBX=0 F S IBX=$O(^IBT(356.2,"D",DFN,IBX)) Q:'IBX I $P($G(^IBT(356.2,IBX,1)),"^",5)=IBCDFN S DIE="^IBT(356.2,",DA=IBX,DR=".08////"_IBC2 D ^DIE K DIE,DA,DR
|
---|
170 | ;
|
---|
171 | ; - change the policy plan
|
---|
172 | D SWPL^IBCNSJ13(IBP2,DFN,IBCDFN)
|
---|
173 | Q
|
---|
174 | ;
|
---|
175 | ;
|
---|
176 | ;
|
---|
177 | ; change the ins plan effective IBEFFDT
|
---|
178 | SPLITINS(IBC2,IBP2,DFN,IBCDFN,IBEFFDT,IBEXPDT) ;
|
---|
179 | N IBX,IBZ,IBZ1,IBRT,IBI,IBIEN,IBCDFN2,IBERR,DIK,DA,DIE,DR,DGRUGA08
|
---|
180 | S IBZ=$G(^DPT(DFN,.312,IBCDFN,0))
|
---|
181 | S IBZ1=$G(^DPT(DFN,.312,IBCDFN,1))
|
---|
182 | ; - ignore if the old plan expired
|
---|
183 | I $P(IBZ,U,4),$P(IBZ,U,4)<IBEFFDT Q
|
---|
184 | ; - if the ins is effective later - no need to split
|
---|
185 | I $P(IBZ,U,8),$P(IBZ,U,8)'<IBEFFDT D MODIFINS(IBC2,IBP2,DFN,IBCDFN) Q
|
---|
186 | ;
|
---|
187 | S DGRUGA08=1 ; Disable HL7 triggered by 2.312/3 and 2.312/8
|
---|
188 | ; - create the new insurance record for the DFN (clone)
|
---|
189 | S IBI="+1,"_DFN_","
|
---|
190 | ; - add a record
|
---|
191 | S IBRT(2.312,IBI,.01)=IBC2
|
---|
192 | D UPDATE^DIE("","IBRT","IBIEN","IBERR")
|
---|
193 | I $D(IBERR) Q ; error
|
---|
194 | I '$G(IBIEN(1)) Q ; error
|
---|
195 | S IBCDFN2=+IBIEN(1)
|
---|
196 | ; - clone the insurance data
|
---|
197 | M ^DPT(DFN,.312,IBCDFN2)=^DPT(DFN,.312,IBCDFN)
|
---|
198 | S $P(^DPT(DFN,.312,IBCDFN2,0),U,1)=IBC2
|
---|
199 | S $P(^DPT(DFN,.312,IBCDFN2,0),U,8)=IBEFFDT
|
---|
200 | ; - now reindex
|
---|
201 | S DA(1)=DFN,DA=IBCDFN2,DIK="^DPT("_DFN_",.312,"
|
---|
202 | D IX1^DIK
|
---|
203 | ; - change the policy plan
|
---|
204 | D SWPL^IBCNSJ13(IBP2,DFN,IBCDFN2)
|
---|
205 | ; - set the expiration date
|
---|
206 | S $P(^DPT(DFN,.312,IBCDFN,0),U,4)=IBEXPDT
|
---|
207 | S DA(1)=DFN,DA=IBCDFN,DIK="^DPT("_DFN_",.312,"
|
---|
208 | D IX1^DIK
|
---|
209 | Q
|
---|