| [613] | 1 | IBCNSU3 ;ALB/TMP - Functions for billing decisions; 08-AUG-95 | 
|---|
|  | 2 | ;;2.0;INTEGRATED BILLING;**43,80**;21-MAR-94 | 
|---|
|  | 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
|  | 4 | ; | 
|---|
|  | 5 | PTCOV(DFN,IBVDT,IBCAT,ANYINS) ; Determine if patient is covered for coverage category on a visit dt | 
|---|
|  | 6 | ; Function returns 1 if covered, 0 if not covered | 
|---|
|  | 7 | ; DFN - ifn of patient (req) | 
|---|
|  | 8 | ; IBVDT - fileman format visit date (req) | 
|---|
|  | 9 | ; IBCAT - entry in file 355.31 limitation of coverage category (req) | 
|---|
|  | 10 | ; ANYINS - optional parameter, but if passed by reference, returns 0 if | 
|---|
|  | 11 | ;         no active insurance at all and 1 if any active insurance found | 
|---|
|  | 12 | N IBCOV,IBDD,PLAN,POLCY | 
|---|
|  | 13 | S (IBCOV,ANYINS)=0 | 
|---|
|  | 14 | I $G(DFN)=""!($G(IBCAT)="")!($G(IBVDT)="") G PTCOVQ ; Required fields not present | 
|---|
|  | 15 | S IBCAT=$O(^IBE(355.31,"B",IBCAT,"")) G:IBCAT="" PTCOVQ | 
|---|
|  | 16 | S IBVDT=IBVDT\1 | 
|---|
|  | 17 | D ALL^IBCNS1(DFN,"IBDD",1,IBVDT) ;All active ins policies returned in IBDD array | 
|---|
|  | 18 | S ANYINS=($O(IBDD(0))'="") ;Set flag for any active insurance found | 
|---|
|  | 19 | S POLCY=0 F  S POLCY=$O(IBDD(POLCY)) Q:'POLCY  D  Q:IBCOV | 
|---|
|  | 20 | .S PLAN=$P($G(IBDD(POLCY,0)),U,18) Q:PLAN="" | 
|---|
|  | 21 | .S IBCOV=$$PLCOV(PLAN,IBVDT,IBCAT) | 
|---|
|  | 22 | .I 'IBCOV,$D(^IBA(355.7,"APP",DFN,POLCY,+$P($G(^IBE(355.31,+IBCAT,0)),U,3)))'=0 S IBCOV=1 | 
|---|
|  | 23 | PTCOVQ Q IBCOV | 
|---|
|  | 24 | ; | 
|---|
|  | 25 | PLCOV(IBPL,IBVDT,IBCAT,COMMENT) ; Determine if a specific plan covers a category of coverage as of a date and returns comments | 
|---|
|  | 26 | ; IBPL - pointer to file 355.3 group insurance plan (req) | 
|---|
|  | 27 | ; IBVDT - fileman format visit date (req) | 
|---|
|  | 28 | ; IBCAT -  pointer to file 355.31 limitation of coverage category (req) | 
|---|
|  | 29 | ; COMMENT - if passed by reference and the coverage is conditional will contain limitation comments | 
|---|
|  | 30 | N CATLIM,X,Y K COMMENT | 
|---|
|  | 31 | S CATLIM=$O(^IBA(355.32,"APCD",IBPL,IBCAT,+$O(^IBA(355.32,"APCD",IBPL,IBCAT,-(IBVDT+1))),"")) | 
|---|
|  | 32 | S X=$S(CATLIM="":1,1:+$P($G(^IBA(355.32,CATLIM,0)),U,4)) | 
|---|
|  | 33 | I X>1 S COMMENT=CATLIM,Y=0 F  S Y=$O(^IBA(355.32,CATLIM,2,Y)) Q:'Y  S COMMENT(Y)=$G(^IBA(355.32,CATLIM,2,Y,0)) | 
|---|
|  | 34 | Q X | 
|---|
|  | 35 | ; | 
|---|
|  | 36 | RIDERS(DFN,IBCDFN,RIDERS) ; Returns all Riders (355.7) associated with a patient's policy in array if RIDERS is passed by reference | 
|---|
|  | 37 | N Y K RIDERS | 
|---|
|  | 38 | I +$G(DFN),+$G(IBCDFN) S Y=0 F  S Y=$O(^IBA(355.7,"APP",DFN,IBCDFN,Y)) Q:'Y  S RIDERS(Y)=$P($G(^IBE(355.6,Y,0)),U,1) | 
|---|
|  | 39 | Q | 
|---|