| [613] | 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
 | 
|---|