| 1 | IBCNSJ1 ;ALB/CPM - INACTIVATE AN INSURANCE PLAN ; 30-DEC-94 | 
|---|
| 2 | ;;Version 2.0 ; INTEGRATED BILLING ;**28**; 21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | IA ; 'Inactivate Plan' Action | 
|---|
| 6 | ;   Required variable input: | 
|---|
| 7 | ;             DFN  --  Pointer to the patient in file #2 | 
|---|
| 8 | ;          IBPPOL  --  Patient insurance policy definition | 
|---|
| 9 | ; | 
|---|
| 10 | D FULL^VALM1 | 
|---|
| 11 | I '$D(^XUSEC("IB INSURANCE SUPERVISOR",DUZ)) W !!,"Sorry, but you do not have the required privileges to inactivate plans." G IAQ | 
|---|
| 12 | N IBCNS,IBPLAN,IBPLAND,IBPICK,IBQUIT,X | 
|---|
| 13 | S X=+$P($G(IBPPOL),"^",4),X=$G(^DPT(DFN,.312,X,0)) | 
|---|
| 14 | S IBCNS=+X,IBPLAN=+$P(X,"^",18),(IBPICK,IBQUIT)=0 | 
|---|
| 15 | I 'IBPLAN D NOPL^IBCNSJ2 G IAQ | 
|---|
| 16 | S IBPLAND=$G(^IBA(355.3,+IBPLAN,0)) I 'IBPLAND W !!,"This plan has no company!  Please contact your IRM for assistance." G IAQ | 
|---|
| 17 | I IBCNS'=+IBPLAND D PLAN^IBCNSM32(DFN,+$P($G(IBPPOL),"^",4),+IBPLAND) G IAQ | 
|---|
| 18 | ; | 
|---|
| 19 | ; - inactivate multiple plans? | 
|---|
| 20 | S X=$$ASK^IBCNSJ4 G:X<0 IAQ I X D EN^IBCNSJ4 G IAQ | 
|---|
| 21 | ; | 
|---|
| 22 | W !!,"This action will allow you to inactivate an insurance plan." | 
|---|
| 23 | W !,"Inactivating a plan will inactivate all current subscribers to the plan." | 
|---|
| 24 | ; | 
|---|
| 25 | ; - main processing loop | 
|---|
| 26 | F  D  Q:IBQUIT | 
|---|
| 27 | .I IBPICK D SEL^IBCNSJ14 Q:IBQUIT | 
|---|
| 28 | .; | 
|---|
| 29 | .; - invoke inactivate function | 
|---|
| 30 | .S IBPICK=1 | 
|---|
| 31 | .D INACT(IBCNS,IBPLAN) | 
|---|
| 32 | .; | 
|---|
| 33 | .; - select and inactivate another plan? | 
|---|
| 34 | .S DIR(0)="Y",DIR("A")="Do you wish to inactivate another plan",DIR("?")="To inactivate another plan, answer 'YES.'  Otherwise, answer 'NO.'" | 
|---|
| 35 | .W ! D ^DIR K DIR,DIRUT,DTOUT,DUOUT,DIROUT I 'Y S IBQUIT=1 | 
|---|
| 36 | ; | 
|---|
| 37 | IAQ D PAUSE^VALM1 | 
|---|
| 38 | D HDR^IBCNSP,BLD^IBCNSP S VALMBCK="R" | 
|---|
| 39 | Q | 
|---|
| 40 | ; | 
|---|
| 41 | ; | 
|---|
| 42 | INACT(IBCNS,IBPLAN) ; Inactivate an Insurance Plan | 
|---|
| 43 | ;  Input:   IBCNS  --  Pointer to the company in file #36 which | 
|---|
| 44 | ;          IBPLAN  --  Pointer to the plan in file #355.3 | 
|---|
| 45 | ; | 
|---|
| 46 | N DA,DIK,IBX,IBPLAND,IBNEWP,IBFG | 
|---|
| 47 | N DFN,IBACT,IBSUB,IBQUIT,IBCDFN,IBREP,IBCPOL,IBALR,IBMAIL,IBBU,IBARR | 
|---|
| 48 | S IBPLAND=$G(^IBA(355.3,IBPLAN,0)) | 
|---|
| 49 | D DISP | 
|---|
| 50 | I 'IBPLAND!(+IBPLAND'=+$G(IBCNS)) W !!,"This is not a valid insurance plan!" G INACTQ | 
|---|
| 51 | ; | 
|---|
| 52 | ; - is the plan an Individual Plan? | 
|---|
| 53 | I '$P(IBPLAND,"^",2) D  G INACTQ | 
|---|
| 54 | .W !,"You cannot inactivate an Individual Plan!" | 
|---|
| 55 | .W !!,"You must either delete the policy using the 'Delete Policy' action," | 
|---|
| 56 | .W !,"or change the plan to which the patient has subscribed, using the action" | 
|---|
| 57 | .W !,"'Change Policy Plan'." | 
|---|
| 58 | ; | 
|---|
| 59 | ; - handle inactive plans | 
|---|
| 60 | S IBACT=$P(IBPLAND,"^",11),IBSUB=$$SUBS^IBCNSJ(IBCNS,IBPLAN,1) | 
|---|
| 61 | I IBACT D NOTACT^IBCNSJ11 G INACTQ | 
|---|
| 62 | ; | 
|---|
| 63 | ; - inactivate plan if there are no plan subscriptions | 
|---|
| 64 | I 'IBSUB D NAC^IBCNSJ12(IBPLAN,"There are no subscribers to this plan.  Would you like to inactivate it",1) G INACTQ | 
|---|
| 65 | ; | 
|---|
| 66 | ; - display plan attributes | 
|---|
| 67 | W !,"There are currently subscribers to this plan." | 
|---|
| 68 | I $D(^IBA(355.4,"APY",IBPLAN)) W !,*7,"  ** There are Annual Benefits associated with this plan!" | 
|---|
| 69 | I $D(^IBA(355.5,"B",IBPLAN)) S IBBU=1 W !,*7,"  ** There are Benefits Used associated with this plan!" | 
|---|
| 70 | ; | 
|---|
| 71 | ; - should subscriptions to this plan be switched to another plan? | 
|---|
| 72 | S DIR(0)="Y",DIR("A")="Would you like to re-point these policies to a new plan",DIR("?")="^D HLRP^IBCNSJ11" | 
|---|
| 73 | W ! D ^DIR K DIR,DIRUT,DTOUT,DUOUT,DIROUT | 
|---|
| 74 | I 'Y D MAIL^IBCNSJ11 G OKAY | 
|---|
| 75 | ; | 
|---|
| 76 | ; - select or add a new plan to re-point the policies | 
|---|
| 77 | S IBREP=1,IBFG=$$SUBS^IBCNSJ(IBCNS,IBPLAN,0,"",1)>1 | 
|---|
| 78 | D GETPL^IBCNSJ12 | 
|---|
| 79 | I 'IBCPOL S IBREP=0 D MAIL^IBCNSJ11 G OKAY | 
|---|
| 80 | ; | 
|---|
| 81 | ; - alert user that current plan has benefits used | 
|---|
| 82 | I $G(IBBU) D BU^IBCNSJ13(.IBQUIT) I IBQUIT G INACTQ | 
|---|
| 83 | ; | 
|---|
| 84 | OKAY ; - okay to inactivate the plan? | 
|---|
| 85 | D DISP,NAC^IBCNSJ12(IBPLAN,"  Okay to inactivate this plan",0,.IBQUIT) I IBQUIT G INACTQ | 
|---|
| 86 | ; | 
|---|
| 87 | ; - if there is no-repointing, send the user the subscription list | 
|---|
| 88 | I $G(IBMAIL) D MSG^IBCNSJ12(IBCNS,IBPLAN) | 
|---|
| 89 | ; | 
|---|
| 90 | ; - re-point existing policies if necessary; allow plan deletion | 
|---|
| 91 | I $G(IBREP) D REP^IBCNSJ13(IBCNS,IBCPOL,IBPLAN,$G(IBMERGE)),DEL^IBCNSJ11(IBPLAN) | 
|---|
| 92 | INACTQ Q | 
|---|
| 93 | ; | 
|---|
| 94 | DISP ; Display plan name/number. | 
|---|
| 95 | W !!,$S($P(IBPLAND,"^",2):"Group",1:"Individual")," Plan Number: ",$S($P(IBPLAND,"^",4)]"":$P(IBPLAND,"^",4),1:"<not specified>"),?50,"Plan Name: ",$S($P(IBPLAND,"^",3)]"":$P(IBPLAND,"^",3),1:"<not specified>"),! | 
|---|
| 96 | Q | 
|---|