| 1 | IBCNSJ ;ALB/CPM - INSURANCE PLAN UTILITIES ; 30-DEC-94
 | 
|---|
| 2 |  ;;Version 2.0 ; INTEGRATED BILLING ;**28,43**; 21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | DEL(IBPLAN) ; Delete an Insurance Plan
 | 
|---|
| 6 |  ;  Input:  IBPLAN  --  Pointer to the plan in file #355.3
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  I '$G(IBPLAN) G DELQ
 | 
|---|
| 9 |  N DA,DIDEL,DIK,IBX
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; - delete all associated Benefits Used
 | 
|---|
| 12 |  S IBX=0 F  S IBX=$O(^IBA(355.5,"B",IBPLAN,IBX)) Q:'IBX  D DBU(IBX)
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ; - delete all associated Annual Benefits
 | 
|---|
| 15 |  S IBX=0 F  S IBX=$O(^IBA(355.4,"C",IBPLAN,IBX)) Q:'IBX  S DA=IBX,DIDEL=355.4,DIK="^IBA(355.4," D ^DIK
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ; - delete all associated coverage limitations
 | 
|---|
| 18 |  S IBX=0 F  S IBX=$O(^IBA(355.32,"B",IBPLAN,IBX)) Q:'IBX  S DA=IBX,DIDEL=355.32,DIK="^IBA(355.32," D ^DIK
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ; - delete the plan itself
 | 
|---|
| 21 |  S DA=IBPLAN,DIDEL=355.3,DIK="^IBA(355.3," D ^DIK
 | 
|---|
| 22 | DELQ Q
 | 
|---|
| 23 |  ;
 | 
|---|
| 24 | DBU(DA) ; Delete Benefits Used.
 | 
|---|
| 25 |  N DIDEL,DIK
 | 
|---|
| 26 |  I $G(DA) S DIDEL=355.5,DIK="^IBA(355.5," D ^DIK
 | 
|---|
| 27 |  Q
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 | IRACT(IBPLAN,IBF) ; Inactivate/reactivate an Insurance Plan
 | 
|---|
| 30 |  ;  Input:  IBPLAN  --  Pointer to the plan in file #355.3
 | 
|---|
| 31 |  ;             IBF  --  1 -> plan is to be inactivated
 | 
|---|
| 32 |  ;                      0 -> plan is to be reactivated
 | 
|---|
| 33 |  ;
 | 
|---|
| 34 |  I '$G(IBPLAN)!("^0^1^"'[("^"_$G(IBF)_"^")) G IRACTQ
 | 
|---|
| 35 |  N DA,DIE,DR,X,Y
 | 
|---|
| 36 |  S DA=IBPLAN,DR=".11////"_IBF,DIE="^IBA(355.3," D ^DIE
 | 
|---|
| 37 |  D UPDATE^IBCNSP3(IBPLAN)
 | 
|---|
| 38 | IRACTQ Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | COV(DFN) ; Update 'Covered by Insurance?' prompt
 | 
|---|
| 41 |  ;  Input:     DFN  --  Pointer to the patient in file #2
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ;  This call differs from COVERED^IBCNSM31 in that field #.3192
 | 
|---|
| 44 |  ;  was not edited by the user, but an action on a plan or policy
 | 
|---|
| 45 |  ;  may require that this field be changed.  Plus, there is no
 | 
|---|
| 46 |  ;  output to the screen.
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  I '$G(DFN) G COVQ
 | 
|---|
| 49 |  N X,Y,I,IBCOV,IBNCOV,DA,DR,DIE,DIC,IBINS,IBINSD
 | 
|---|
| 50 |  S (IBCOV,IBNCOV)=$P($G(^DPT(DFN,.31)),"^",11)
 | 
|---|
| 51 |  D ALL^IBCNS1(DFN,"IBINS",2,DT) S IBINSD=+$G(IBINS(0))
 | 
|---|
| 52 |  S IBNCOV=$S('$O(^DPT(DFN,.312,0)):"N",IBINSD:"Y",1:"N")
 | 
|---|
| 53 |  I IBCOV'=IBNCOV S DIE="^DPT(",DR=".3192////"_IBNCOV,DA=DFN D ^DIE
 | 
|---|
| 54 | COVQ Q
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 | COMP(GN) ; Compress Insurance Plan Name or Number
 | 
|---|
| 57 |  ;           Convert to caps and strip punctuation and leading zeroes.
 | 
|---|
| 58 |  ;  Input:  GN  --  Insurance plan name or number to be compressed
 | 
|---|
| 59 |  ; Output: GN1  --  The compressed name or number
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  N GN1,X
 | 
|---|
| 62 |  S GN1=GN I GN1?."0" S GN1="" G COMPQ
 | 
|---|
| 63 |  S GN1=$TR(GN1,"abcdefghijklmnopqrstuvwxyz!"" #$%&,()*+'-./:;<=>?@[]_\{|}","ABCDEFGHIJKLMNOPQRSTUVWXYZ") ; change lower-case to upper, strip away all punctuation
 | 
|---|
| 64 |  F X=1:1:$L(GN1) Q:$E(GN1,X)'="0"  ; strip off leading zeroes
 | 
|---|
| 65 |  S GN1=$E(GN1,X,$L(GN1))
 | 
|---|
| 66 |  I GN1?."0" S GN1=""
 | 
|---|
| 67 | COMPQ Q GN1
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | ANYGP(X,EX,ALL) ; Does this insurance company offer any group plans?
 | 
|---|
| 70 |  ;  Input:  X  --  Pointer to the company in file #36
 | 
|---|
| 71 |  ;         EX  --  Pointer to an insurance plan in file #355.3
 | 
|---|
| 72 |  ;                 This optional input parameter is used to exclude
 | 
|---|
| 73 |  ;                 a specific plan from being considered.
 | 
|---|
| 74 |  ;        ALL  --  Set to 1 if inactive plans are to be included
 | 
|---|
| 75 |  ; Output:  0  --  Company doesn't offer any group plans
 | 
|---|
| 76 |  ;          1  --  Company does offer group plans
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  N I,J,Y S Y=0
 | 
|---|
| 79 |  I '$G(X) G ANYGPQ
 | 
|---|
| 80 |  S I=0 F  S I=$O(^IBA(355.3,"B",X,I)) Q:'I  D  Q:Y
 | 
|---|
| 81 |  .I $G(EX),I=EX Q
 | 
|---|
| 82 |  .S J=$G(^IBA(355.3,I,0))
 | 
|---|
| 83 |  .I $P(J,"^",2) D
 | 
|---|
| 84 |  ..I $G(ALL) S Y=1 Q
 | 
|---|
| 85 |  ..I '$P(J,"^",11) S Y=1
 | 
|---|
| 86 | ANYGPQ Q Y
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | SUBS(CO,PLAN,ANY,ARR,Z) ; How many possible plan subscriptions are there?
 | 
|---|
| 89 |  ;  Input:    CO  --  Pointer to the company in file #36
 | 
|---|
| 90 |  ;          PLAN  --  Pointer to the plan in file #355.3
 | 
|---|
| 91 |  ;           ANY  --  [Optional] Set to 1 if at least one subscriber
 | 
|---|
| 92 |  ;                    is to be found
 | 
|---|
| 93 |  ;           ARR  --  [Optional] If defined, all policies will be
 | 
|---|
| 94 |  ;                    returned in this array as
 | 
|---|
| 95 |  ; 
 | 
|---|
| 96 |  ;                    ARR(DFN,ien)="", where
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  ;                    DFN points to the patient in file #2, and
 | 
|---|
| 99 |  ;                    'ien' points to the policy in file #2.312
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  ;             Z  --  [Optional] Set to 1 if the call is just to
 | 
|---|
| 102 |  ;                    determine that there is more than one subscriber
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 |  ; Output:  Number of (potential) plan subscriptions
 | 
|---|
| 105 |  ;
 | 
|---|
| 106 |  N DFN,STOP,X,Y S (STOP,X)=0
 | 
|---|
| 107 |  I '$G(CO)!'$G(PLAN) G SUBSQ
 | 
|---|
| 108 |  S DFN=0 F  S DFN=$O(^DPT("AB",CO,DFN)) Q:'DFN  D  Q:STOP
 | 
|---|
| 109 |  .S Y=0 F  S Y=$O(^DPT("AB",CO,DFN,Y)) Q:'Y  I $P($G(^DPT(DFN,.312,Y,0)),"^",18)=PLAN S X=X+1 S:$G(ARR)]"" @ARR@(DFN,Y)="" I $G(ANY) S STOP=1 Q
 | 
|---|
| 110 |  .I 'STOP,X>1,$G(Z) S STOP=1
 | 
|---|
| 111 | SUBSQ Q X
 | 
|---|