| [613] | 1 | IBCNSOK1 ;ALB/AAS - Insurance consisitency stuff ; 2/22/93 | 
|---|
|  | 2 | ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | DUPCO(DFN,IBCNS,IBCDFN,IBTALK) ; -- is this a duplicate company for this patient | 
|---|
|  | 6 | ; -- make this call after selecting a company | 
|---|
|  | 7 | ; -- input    DFN = patient file pointer (required) | 
|---|
|  | 8 | ;           IBCNS = new insurance company selected | 
|---|
|  | 9 | ;          IBCDFN = if added to patient ins type mult is required as enter number in multiple | 
|---|
|  | 10 | ;          IBTALK = (optional) if defined and true will write messages to current device if not queued | 
|---|
|  | 11 | ;  -- output      = $p1 - 0 if no other entry 1 if possible dup. | 
|---|
|  | 12 | ;                   $p2 - 1 if another active entry for same company | 
|---|
|  | 13 | ;                   $p3 - 1 if same co, same subscriber | 
|---|
|  | 14 | ;                   $p4 - 1 if same co, same dates | 
|---|
|  | 15 | ;                   $p5 - 1 if same co, same plan | 
|---|
|  | 16 | ;                   $p6 - 1 if spouse insurer but not listed | 
|---|
|  | 17 | ;                   $p7 - 1 if spouse insurer but no employer | 
|---|
|  | 18 | N IBI,IBJ,IBX,IBY,I,J,X,Y,Z,IBDUP,IBACT,IBCDFND | 
|---|
|  | 19 | S (I,IBDUP)=0 | 
|---|
|  | 20 | I '$O(^DPT(DFN,.312,0)) G DUPCOQ ; no policies on file, don't bother | 
|---|
|  | 21 | ; | 
|---|
|  | 22 | ; -- use b x-ref | 
|---|
|  | 23 | F  S I=$O(^DPT(DFN,.312,"B",IBCNS,I)) Q:'I  S IBX=$G(^DPT(DFN,.312,I,0)) I $S('$G(IBCDFN):1,I=$G(IBCDFN):0,1:1) D | 
|---|
|  | 24 | .S IBDUP=1 | 
|---|
|  | 25 | .S IBACT=$$CHK^IBCNS1(IBX,DT,2) I IBACT S $P(IBDUP,"^",2)=1 ; another active entry | 
|---|
|  | 26 | .I '$G(IBCDFN) Q  ;quit if not stored in dpt | 
|---|
|  | 27 | .I 'IBACT Q | 
|---|
|  | 28 | .; | 
|---|
|  | 29 | .S IBCDFND=$G(^DPT(DFN,.312,+IBCDFN,0)) I IBCDFND=""!(IBCDFND=+IBCDFND) Q | 
|---|
|  | 30 | .I $P(IBX,"^",6)=$P(IBCDFND,"^",6) S $P(IBDUP,"^",3)=1 ; same whose ins. | 
|---|
|  | 31 | .I $P(IBX,"^",4)="",$P(IBCDFND,"^",4)="" S $P(IBDUP,"^",4)=1 ; no expiration date | 
|---|
|  | 32 | .I $P(IBX,"^",8)="",$P(IBCDFND,"^",8)="" S $P(IBDUP,"^",4)=1 ; no effective date | 
|---|
|  | 33 | .; need to figure out overlapping date logic.  not simple | 
|---|
|  | 34 | .I $P(IBX,"^",18)=$P(IBCDFND,"^",18) S $P(IBDUP,"^",5)=1 ; same plan | 
|---|
|  | 35 | .I $P(IBCDFND,"^",6)="s" I $P(^DPT(DFN,0),"^",5)=6!($P(^DPT(DFN,0),"^",5)=7) S $P(IBDUP,"^",6)=1 ; marital status inconsistent | 
|---|
|  | 36 | .I $P(IBCDFND,"^",6)="s",$P($G(^DPT(DFN,.25)),"^")="" S $P(IBDUP,"^",7)=1 | 
|---|
|  | 37 | I 'IBDUP G DUPCOQ | 
|---|
|  | 38 | I IBDUP,$G(IBTALK),'$D(ZTQUEUED) D | 
|---|
|  | 39 | .W !!,*7,"Warning:  Insurance Company selected already on file for this patient." | 
|---|
|  | 40 | .I $P(IBDUP,"^",2) W !,"          The previous entry is active." | 
|---|
|  | 41 | .I $P(IBDUP,"^",3) W !,"          The WHOSE INSURANCE are the same." | 
|---|
|  | 42 | .I $P(IBDUP,"^",4) W !,"          The Effective and Expiration dates may cover overlapping dates." | 
|---|
|  | 43 | .I $P(IBDUP,"^",5) W !,"          The Group Plans are the same." | 
|---|
|  | 44 | .I $P(IBDUP,"^",6) W !,"          WHOSE INSURANCE is Spouse, patient marital Status Inconsistent." | 
|---|
|  | 45 | .I $P(IBDUP,"^",7) W !,"          WHOSE INSURANCE is Spouse but no Employer listed." | 
|---|
|  | 46 | .Q | 
|---|
|  | 47 | ; | 
|---|
|  | 48 | DUPCOQ Q IBDUP | 
|---|
|  | 49 | ; | 
|---|
|  | 50 | DUPPOL(IBCPOL,IBTALK) ; -- is this a duplicate policy for this company | 
|---|
|  | 51 | N I,J,X,Y,Z,IBDUP,IBCNS | 
|---|
|  | 52 | S (I,IBDUP)=0,J=$G(^IBA(355.3,IBCPOL,0)),IBCNS=+J | 
|---|
|  | 53 | F  S I=$O(^IBA(355.3,"B",IBCNS,I)) Q:'I  I I'=IBCPOL S X=$G(^IBA(355.3,I,0)) D | 
|---|
|  | 54 | .Q:'$P(X,"^",2)  ;skip individual policies | 
|---|
|  | 55 | .I $P(J,"^",3)'="",$P(J,"^",3)=$P(X,"^",3) S $P(IBDUP,"^")=1 | 
|---|
|  | 56 | .I $P(J,"^",4)'="",$P(J,"^",4)=$P(X,"^",4) S $P(IBDUP,"^",2)=1 | 
|---|
|  | 57 | I IBDUP,$G(IBTALK),'$D(ZTQUEUED) D | 
|---|
|  | 58 | .I $P(IBDUP,"^",1) W !!,"Warning:  There is another policy with the same Group Name." | 
|---|
|  | 59 | .I $P(IBDUP,"^",2) W !!,"Warning:  There is another policy with the same Group Number." | 
|---|
|  | 60 | ; | 
|---|
|  | 61 | DUPPOLQ Q IBDUP | 
|---|