| [613] | 1 | IBCNSUX1 ;ALB/CMS - SPLIT COMBINATION PLANS CONT. ; 04-NOV-98
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**103,133**;21-MAR-94
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  Q
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | BEG ; -- Start to process policy separation from IBCNSUX
 | 
|---|
 | 7 |  ;    Input: IBINS=Selected Medicare Company
 | 
|---|
 | 8 |  ;          IBPLAN=Selected Combination Plan
 | 
|---|
 | 9 |  ;           IBWNR=MED WNR INS IEN^"MEDICARE (WNR)"
 | 
|---|
 | 10 |  ;                  ^PART A IEN^"PART A"
 | 
|---|
 | 11 |  ;                  ^PART B IEN^"PART A"
 | 
|---|
 | 12 |  ;
 | 
|---|
 | 13 |  N DFN,DO,DD,DA,DR,DIC,DIE,DIK,DIR,DIRUT,X,Y
 | 
|---|
 | 14 |  N IBCDFN,IBERR,IB0,IBST,IBSUB1,IBPLANAM
 | 
|---|
 | 15 |  K ^TMP($J,"IBCNSUX"),^TMP($J,"IBCNSUX1")
 | 
|---|
 | 16 |  S IBST=$$NOW^XLFDT,IBPLANAM=$P($G(^IBA(355.3,IBPLAN,0)),U,3)
 | 
|---|
 | 17 |  S IBSUB1=$$SUBS^IBCNSJ(IBINS,IBPLAN,0,"^TMP($J,""IBCNSUX1"")")
 | 
|---|
 | 18 |  S DFN=0 F  S DFN=$O(^TMP($J,"IBCNSUX1",DFN)) Q:'DFN  D
 | 
|---|
 | 19 |  .S IBCDFN=0 F  S IBCDFN=$O(^TMP($J,"IBCNSUX1",DFN,IBCDFN)) Q:'IBCDFN  D
 | 
|---|
 | 20 |  ..S IB0=$G(^DPT(DFN,.312,IBCDFN,0))
 | 
|---|
 | 21 |  ..I $P(IB0,U,18)'=+IBPLAN Q
 | 
|---|
 | 22 |  ..;
 | 
|---|
 | 23 |  ..;  -- check for duplicate
 | 
|---|
 | 24 |  ..D DUP
 | 
|---|
 | 25 |  ..;
 | 
|---|
 | 26 |  ..;  -- if the policy to be split has no COB, and both an A and B
 | 
|---|
 | 27 |  ..;  -- policy need to be created, set it to Primary
 | 
|---|
 | 28 |  ..I '$P(IB0,"^",20),'$D(^TMP($J,"IBCNSUX","ERR",DFN,2)),'$D(^(1)) D
 | 
|---|
 | 29 |  ...N DIE,DA,DR,X,Y
 | 
|---|
 | 30 |  ...S DIE="^DPT("_DFN_",.312,",DA=+IBCDFN,DA(1)=DFN,DR=".2////1" D ^DIE
 | 
|---|
 | 31 |  ..;
 | 
|---|
 | 32 |  ..;  -- create Medicare (WNR) policies if none exists
 | 
|---|
 | 33 |  ..I '$D(^TMP($J,"IBCNSUX","ERR",DFN,2)) D ADDB
 | 
|---|
 | 34 |  ..I '$D(^TMP($J,"IBCNSUX","ERR",DFN,1)) D SETA
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 |  ; -- delete combination plan if no subscribers left.
 | 
|---|
 | 37 |  I '$$SUBS^IBCNSJ(IBINS,IBPLAN) D DEL^IBCNSJ(IBPLAN)
 | 
|---|
 | 38 |  ;
 | 
|---|
 | 39 |  D WRT
 | 
|---|
 | 40 |  ;
 | 
|---|
 | 41 | BEGQ K ^TMP($J,"IBCNSUX"),^TMP($J,"IBCNSUX1")
 | 
|---|
 | 42 |  Q
 | 
|---|
 | 43 |  ;
 | 
|---|
 | 44 |  ;
 | 
|---|
 | 45 | ADDB ; -- Create a New MEDICARE PART B patient policy
 | 
|---|
 | 46 |  N DA,DIC,DIE,DR,IBBDFN,IBC,IBX,X,Y,IBCDA,IBNDA,IBN
 | 
|---|
 | 47 |  K DD,D0
 | 
|---|
 | 48 |  ;
 | 
|---|
 | 49 |  S DIC("DR")=".01////"_+IBWNR_";1.09////1;1.05///NOW;1.06////"_DUZ_";.18////"_$P(IBWNR,U,5)
 | 
|---|
 | 50 |  ;
 | 
|---|
 | 51 |  ; -- If the policy to be split has no COB, and a valid Part A policy
 | 
|---|
 | 52 |  ; -- already exists, set the COB to Primary
 | 
|---|
 | 53 |  I '$P(IB0,"^",20),$D(^TMP($J,"IBCNSUX","ERR",DFN,1)) S DIC("DR")=DIC("DR")_";.2////1"
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 |  S DA(1)=DFN,DIC="^DPT("_DFN_",.312,",DIC(0)="L",X=+IBWNR,DLAYGO=2.312
 | 
|---|
 | 56 |  D FILE^DICN S IBBDFN=+Y K DIC
 | 
|---|
 | 57 |  I IBBDFN<1 S ^TMP($J,"IBCNSUX","ERR",DFN,3)="Could not create a Part B policy." G ADDBQ
 | 
|---|
 | 58 |  ;
 | 
|---|
 | 59 |  ; -- Get settings of combination policy
 | 
|---|
 | 60 |  S IBCDA=IBCDFN_","_DFN_","
 | 
|---|
 | 61 |  D GETS^DIQ(2.312,IBCDA,"*","IN","IBC")
 | 
|---|
 | 62 |  I $D(IBC("IBERR")) S ^TMP($J,"IBCNSUX","ERR",DFN,3)="Could not set Part B policy data." G ADDBQ
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  ; -- Set Medicare Part B policy data - copy combination policy data to new new Part B policy
 | 
|---|
 | 65 |  S IBNDA=+IBBDFN_","_DFN_","
 | 
|---|
 | 66 |  S IBX=0 F  S IBX=$O(IBC(2.312,IBCDA,IBX)) Q:IBX=""  D
 | 
|---|
 | 67 |  . ;
 | 
|---|
 | 68 |  . ; -- Don't set system edited or triggered fields
 | 
|---|
 | 69 |  . I ",.01,1.01,1.02,1.1,1.05,1.06,.18,"[(","_IBX_",") Q
 | 
|---|
 | 70 |  . ;
 | 
|---|
 | 71 |  . S IBN(2.312,IBNDA,IBX)=IBC(2.312,IBCDA,IBX,"I")
 | 
|---|
 | 72 |  I $O(IBN(0)) D FILE^DIE("","IBN")
 | 
|---|
 | 73 | ADDBQ Q
 | 
|---|
 | 74 |  ;
 | 
|---|
 | 75 | SETA ; -- Change policy to point to Part A
 | 
|---|
 | 76 |  N DIE,DA,DR,X,Y
 | 
|---|
 | 77 |  S DIE="^DPT("_DFN_",.312,",DA=+IBCDFN,DA(1)=DFN
 | 
|---|
 | 78 |  S DR=".01////"_+IBWNR_";.18////"_$P(IBWNR,U,3)
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 |  ; - if this policy still has no COB, set it to primary
 | 
|---|
 | 81 |  I '$P($G(^DPT(DFN,.312,IBCDFN,0)),"^",20) S DR=DR_";.2////1"
 | 
|---|
 | 82 |  D ^DIE
 | 
|---|
 | 83 |  Q
 | 
|---|
 | 84 |  ;
 | 
|---|
 | 85 | DUP ; -- Check for duplicate
 | 
|---|
 | 86 |  N IBX,IB0,X,Y
 | 
|---|
 | 87 |  S IBX=0 F  S IBX=$O(^DPT(DFN,.312,"B",+IBWNR,IBX)) Q:'IBX  D
 | 
|---|
 | 88 |  .S IB0=$G(^DPT(DFN,.312,IBX,0))
 | 
|---|
 | 89 |  .I $P(IB0,U,18)=$P(IBWNR,U,3) S ^TMP($J,"IBCNSUX","ERR",DFN,1)="Medicare (WNR) Part A policy already exists." Q
 | 
|---|
 | 90 |  .I $P(IB0,U,18)=$P(IBWNR,U,5) S ^TMP($J,"IBCNSUX","ERR",DFN,2)="Medicare (WNR) Part B policy already exists." Q
 | 
|---|
 | 91 |  Q
 | 
|---|
 | 92 |  ;
 | 
|---|
 | 93 | WRT ; -- write report
 | 
|---|
 | 94 |  N IBX,VA,VADM,VAERR,X,Y
 | 
|---|
 | 95 |  W @IOF,!,"Separate Medicare Combination policies Part A and Part B"
 | 
|---|
 | 96 |  W !!,"Process started ",$$FMTE^XLFDT(IBST)," ended ",$$FMTE^XLFDT($$NOW^XLFDT)
 | 
|---|
 | 97 |  W !,?10,"Run by: ",$P($G(^VA(200,+$G(DUZ),0)),U,1)
 | 
|---|
 | 98 |  W !!,?5,"Combination Company: ",$P($G(^DIC(36,IBINS,0)),U,1)
 | 
|---|
 | 99 |  W !?3,"Combination Plan Name: ",IBPLANAM W:'$D(^IBA(355.3,IBPLAN,0)) "  (This plan was deleted)"
 | 
|---|
 | 100 |  W ! F IBX=1:1:79 W "="
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  I '$O(^TMP($J,"IBCNSUX","ERR",0)) W !!,"SUCCESSFULLY COMPLETED,  COMBINATION PLAN DELETED." G WRTQ
 | 
|---|
 | 103 |  ;
 | 
|---|
 | 104 |  W !,"Exception Report:"
 | 
|---|
 | 105 |  S DFN=0 F  S DFN=$O(^TMP($J,"IBCNSUX","ERR",DFN)) Q:'DFN  D
 | 
|---|
 | 106 |  .K VADM D DEM^VADPT
 | 
|---|
 | 107 |  .W !!,VADM(1),?32,"SSN: ",$P(VADM(2),U,2),?50,"DOB: ",$P(VADM(3),U,2)
 | 
|---|
 | 108 |  .S IBX=0 F  S IBX=$O(^TMP($J,"IBCNSUX","ERR",DFN,IBX)) Q:'IBX  D
 | 
|---|
 | 109 |  ..W !,?5,^TMP($J,"IBCNSUX","ERR",DFN,IBX)
 | 
|---|
 | 110 | WRTQ Q
 | 
|---|
 | 111 |  ;IBCNSUX1
 | 
|---|