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
|
---|