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