| [613] | 1 | IBCNSJ3 ;ALB/CPM - ADD NEW INSURANCE PLAN ; 11-JAN-95 | 
|---|
|  | 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 | NEW(IBCNS,IBCPOL,IBFG) ; Add a new insurance plan | 
|---|
|  | 6 | ;  Input:   IBCNS  --  Pointer to an insurance company in file #36 | 
|---|
|  | 7 | ;            IBFG  --  [Optional] -> Set to 1 to force creation | 
|---|
|  | 8 | ;                      of a group plan | 
|---|
|  | 9 | ; Output:  IBCPOL  --  0, if a new plan was not added, or | 
|---|
|  | 10 | ;                      >0 => pointer to the new plan in file #355.3 | 
|---|
|  | 11 | ; | 
|---|
|  | 12 | N DA,DIR,DIRUT,DIROUT,DTOUT,DUOUT,IBTL,IBGRP,IBGNA,IBGNU,X,Y | 
|---|
|  | 13 | S IBCPOL=0 | 
|---|
|  | 14 | I '$G(IBCNS) G NEWQ | 
|---|
|  | 15 | ; | 
|---|
|  | 16 | S DIR(0)="Y",DIR("B")="NO",DIR("A")="Do you wish to add a new Insurance Plan" | 
|---|
|  | 17 | S DIR("?")="If you have identified a new plan that has not been previously entered, and you wish to add it, answer 'YES'.  If you do not wish to add a new plan, enter 'NO'." | 
|---|
|  | 18 | D ^DIR K DIR I Y<1!($D(DIRUT)) G NEWQ | 
|---|
|  | 19 | ; | 
|---|
|  | 20 | ; - collect plan characteristics | 
|---|
|  | 21 | I $G(IBFG) S IBGRP=1 G MORE | 
|---|
|  | 22 | S DIR(0)="355.3,.02",DIR("A")="  IS THIS A GROUP PLAN" D ^DIR K DIR S IBGRP=Y | 
|---|
|  | 23 | I $D(DIRUT) G NEWQ | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | MORE S IBTL="  "_$S(IBGRP:"GROUP",1:"INDIVIDUAL")_" PLAN " | 
|---|
|  | 26 | S DIR(0)="355.3,.03",DIR("A")=IBTL_"NAME" D ^DIR K DIR G NEWQ:$D(DUOUT)!$D(DTOUT) S IBGNA=Y | 
|---|
|  | 27 | S DIR(0)="355.3,.04",DIR("A")=IBTL_"NUMBER" D ^DIR K DIR G NEWQ:$D(DUOUT)!$D(DTOUT) S IBGNU=Y | 
|---|
|  | 28 | ; | 
|---|
|  | 29 | ; - check for duplicates and file the plan | 
|---|
|  | 30 | I $$CHECK(IBCNS,IBGNA,IBGNU) S IBCPOL=$$ADDH^IBCNSU(IBCNS,IBGRP,IBGNA,IBGNU) | 
|---|
|  | 31 | NEWQ Q | 
|---|
|  | 32 | ; | 
|---|
|  | 33 | ; | 
|---|
|  | 34 | CHECK(IBCNS,IBGNA,IBGNU) ; Check for potential duplicate plans | 
|---|
|  | 35 | ;  Input:   IBCNS  --  Pointer to an insurance company in file #36 | 
|---|
|  | 36 | ;           IBGNA  --  Plan Name for potential new plan | 
|---|
|  | 37 | ;           IBGNU  --  Plan Number for potential new plan | 
|---|
|  | 38 | ; Output:   IBANS  --  1 ->  Okay to add the new plan | 
|---|
|  | 39 | ;                      0 ->  Don't add the new plan. | 
|---|
|  | 40 | ; | 
|---|
|  | 41 | N IBANS,IBCT,IBCNSD | 
|---|
|  | 42 | S (IBANS,IBCT)=1 | 
|---|
|  | 43 | S IBCNSD=$G(^DIC(36,+$G(IBCNS),0)) I IBCNSD="" G CHECKQ | 
|---|
|  | 44 | K ^TMP($J,"DUP"),^TMP($J,"DUP1") | 
|---|
|  | 45 | W !!,"  Searching for potential duplicate plans offered by ",$E($P(IBCNSD,"^"),1,20),"..." | 
|---|
|  | 46 | I '$D(^IBA(355.3,"B",IBCNS)) G CHECKQ | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | ; - look for potential duplicate plans | 
|---|
|  | 49 | D:$G(IBGNA)]"" FIND(IBCNS,IBGNA) | 
|---|
|  | 50 | D:$G(IBGNU)]"" FIND(IBCNS,IBGNU) | 
|---|
|  | 51 | ; | 
|---|
|  | 52 | ; - display potential duplicates and see if plan should be filed | 
|---|
|  | 53 | I $D(^TMP($J,"DUP")) D LIST | 
|---|
|  | 54 | ; | 
|---|
|  | 55 | CHECKQ I '$D(^TMP($J,"DUP")) W !!,"  No potential duplicate plans have been identified." | 
|---|
|  | 56 | K ^TMP($J,"DUP"),^TMP($J,"DUP1") | 
|---|
|  | 57 | Q IBANS | 
|---|
|  | 58 | ; | 
|---|
|  | 59 | ; | 
|---|
|  | 60 | FIND(IBCNS,IBGN) ; Check cross-references for duplicate plans | 
|---|
|  | 61 | ;  Input:  IBCNS  --  Pointer to the insurance company in file #36 | 
|---|
|  | 62 | ;           IBGN  --  value to use to find duplicates | 
|---|
|  | 63 | ; | 
|---|
|  | 64 | N INP,LEN,SUB,TYPE | 
|---|
|  | 65 | F SUB="AGNA","AGNU","ACCP" D | 
|---|
|  | 66 | .I SUB="ACCP" S IBGN=$$COMP^IBCNSJ(IBGN) | 
|---|
|  | 67 | .S INP=IBGN,LEN=$L(INP) Q:LEN<2!(LEN>20) | 
|---|
|  | 68 | .S TYPE=$S(IBGN?1N.N:"NUM",1:"STR") | 
|---|
|  | 69 | .I $D(^IBA(355.3,SUB,IBCNS,INP)) D GDATA | 
|---|
|  | 70 | .I TYPE="STR" F  S INP=$O(^IBA(355.3,SUB,IBCNS,INP)) Q:$E(INP,1,LEN)'=IBGN  D GDATA | 
|---|
|  | 71 | .I TYPE="NUM" F  S INP=$O(^IBA(355.3,SUB,IBCNS,INP)) Q:INP=""  I $E(INP,1,LEN)=IBGN D GDATA | 
|---|
|  | 72 | Q | 
|---|
|  | 73 | ; | 
|---|
|  | 74 | GDATA ; Place potential duplicate plan into an array. | 
|---|
|  | 75 | N X,Y S X=0 | 
|---|
|  | 76 | F  S X=$O(^IBA(355.3,SUB,IBCNS,INP,X)) Q:'X  I '$D(^TMP($J,"DUP",X)) D | 
|---|
|  | 77 | .S Y=$G(^IBA(355.3,X,0)),IBCT=IBCT+1 | 
|---|
|  | 78 | .S ^TMP($J,"DUP",X)="",^TMP($J,"DUP1",IBCT)=$P(Y,"^",4)_U_$P(Y,"^",3)_U_$P(Y,"^",2)_U_$P(Y,"^",11) | 
|---|
|  | 79 | Q | 
|---|
|  | 80 | ; | 
|---|
|  | 81 | LIST ; List potential duplicates to screen and prompt to add plan. | 
|---|
|  | 82 | W !!,"  The following plans have been identified as potential duplicates:" | 
|---|
|  | 83 | W !!,?3,"PLAN",?22,"PLAN",?45,"GROUP",?55,"ACTIVE",!,?2,"NUMBER",?22,"NAME",?45,"PLAN?",?55,"PLAN?",! | 
|---|
|  | 84 | S IBCT=0 F  S IBCT=$O(^TMP($J,"DUP1",IBCT)) Q:'IBCT  D | 
|---|
|  | 85 | .S IBST=$G(^TMP($J,"DUP1",IBCT)) | 
|---|
|  | 86 | .W !?2,$S($P(IBST,"^")'="":$P(IBST,"^"),1:"<NO PLAN NUM>"),?22,$S($P(IBST,"^",2)'="":$P(IBST,"^",2),1:"<NO PLAN NAME>") | 
|---|
|  | 87 | .W ?45,$S($P(IBST,"^",3)'="":$$EXPAND^IBTRE(355.3,.02,$P(IBST,"^",3)),1:"<UNK>"),?55,$S($P(IBST,"^",4):"NO",1:"YES") | 
|---|
|  | 88 | ; | 
|---|
|  | 89 | ; - see if it is okay to add the plan | 
|---|
|  | 90 | S DIR(0)="Y",DIR("A",1)="Do you still want to add a new plan with Plan Name "_$S(IBGNA'="":IBGNA,1:"<NO PLAN NAME>") | 
|---|
|  | 91 | S DIR("A")="and Plan Number "_$S(IBGNU'="":IBGNU,1:"<NO PLAN NUMBER>") | 
|---|
|  | 92 | S DIR("B")="NO" | 
|---|
|  | 93 | W ! D ^DIR K DIR S IBANS=Y | 
|---|
|  | 94 | Q | 
|---|