| 1 | IBCNSU4 ;ALB/CPM - SPONSOR UTILITIES ; 21-JAN-97 | 
|---|
| 2 | ;;Version 2.0 ; INTEGRATED BILLING ;**52**; 21-MAR-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | GET(DFN,ARR) ; Retrieve sponsor relationships for a patient. | 
|---|
| 6 | ;  Input:    DFN  --  Pointer to the patient in file #2 | 
|---|
| 7 | ; Output:    ARR  --  Passed by reference: | 
|---|
| 8 | ; | 
|---|
| 9 | ;                     ARR = #, where # is the number of relationships | 
|---|
| 10 | ; | 
|---|
| 11 | ;                     ARR(#,"REL")=1^2^3^4^5, where | 
|---|
| 12 | ;                       1 => sponsor name | 
|---|
| 13 | ;                       2 => family prefix | 
|---|
| 14 | ;                       3 => type (tricare/champva) | 
|---|
| 15 | ;                       4 => effective date (fm format) | 
|---|
| 16 | ;                       5 => expiration date (fm format) | 
|---|
| 17 | ;                       6 => pointer to the relationship in file #355.81 | 
|---|
| 18 | ; | 
|---|
| 19 | ;                     ARR(#,"SPON")=1^2^3^4^5^6, where | 
|---|
| 20 | ;                       1 => sponsor name | 
|---|
| 21 | ;                       2 => sponsor dob (external format) | 
|---|
| 22 | ;                       3 => sponsor ssn (external format [dashes]) | 
|---|
| 23 | ;                       4 => military status (active duty/retired) | 
|---|
| 24 | ;                       5 => branch (expanded from file #23) | 
|---|
| 25 | ;                       6 => rank | 
|---|
| 26 | ; | 
|---|
| 27 | N BRAN,REL,SPON,STAT,X,X1,XSPON,Y,Y1 | 
|---|
| 28 | K ARR S ARR=0 | 
|---|
| 29 | I '$G(DFN) G GETQ | 
|---|
| 30 | ; | 
|---|
| 31 | ; - look at all of the patient's sponsor relationships | 
|---|
| 32 | S X=0 F  S X=$O(^IBA(355.81,"B",DFN,X)) Q:'X  D | 
|---|
| 33 | .S REL=$G(^IBA(355.81,X,0)) Q:'REL | 
|---|
| 34 | .S SPON=$G(^IBA(355.8,+$P(REL,"^",2),0)) Q:'SPON | 
|---|
| 35 | .I $L(REL,"^")<6 S REL=REL_"^^^^^^^" | 
|---|
| 36 | .; | 
|---|
| 37 | .; - if the sponsor is a patient, gather attributes from file #2 | 
|---|
| 38 | .I $P(SPON,"^")["DPT" D | 
|---|
| 39 | ..S X1=$G(^DPT(+SPON,0)) | 
|---|
| 40 | ..S Y=$P(X1,"^",3) X ^DD("DD") | 
|---|
| 41 | ..S XSPON=$P(X1,"^")_"^"_Y_"^"_$$SSN($P(X1,"^",9)) | 
|---|
| 42 | .; | 
|---|
| 43 | .; - if the sponsor is not a patient, go to file #355.82 | 
|---|
| 44 | .E  D | 
|---|
| 45 | ..S XSPON=$G(^IBA(355.82,+SPON,0)) S:$L(XSPON,"^")<3 XSPON=XSPON_"^^" | 
|---|
| 46 | ..S Y=$P(XSPON,"^",2) I Y X ^DD("DD") S $P(XSPON,"^",2)=Y | 
|---|
| 47 | ..S Y=$P(XSPON,"^",3) I Y S $P(XSPON,"^",3)=$$SSN(Y) | 
|---|
| 48 | .; | 
|---|
| 49 | .; | 
|---|
| 50 | .; - build sponsor relation array | 
|---|
| 51 | .S $P(REL,"^",4)=$S($P(REL,"^",4)="T":"TRICARE",$P(REL,"^",4)="C":"CHAMPVA",1:"") | 
|---|
| 52 | .S ARR=ARR+1,ARR(ARR,"REL")=$P(XSPON,"^")_"^"_$P(REL,"^",3,6)_"^"_X | 
|---|
| 53 | .; | 
|---|
| 54 | .; - build sponsor array | 
|---|
| 55 | .S STAT=$S($P(SPON,"^",2)="A":"ACTIVE DUTY",$P(SPON,"^",2)="R":"RETIRED",1:"") | 
|---|
| 56 | .S BRAN=$P($G(^DIC(23,+$P(SPON,"^",3),0)),"^") | 
|---|
| 57 | .S ARR(ARR,"SPON")=$P(XSPON,"^",1,3)_"^"_STAT_"^"_BRAN_"^"_$P(SPON,"^",4) | 
|---|
| 58 | ; | 
|---|
| 59 | GETQ Q | 
|---|
| 60 | ; | 
|---|
| 61 | ; | 
|---|
| 62 | SSN(X) ; Strip dashes from SSN and add them back in. | 
|---|
| 63 | S:$G(X)'="" X=$TR(X,"-","") | 
|---|
| 64 | Q $S($G(X)="":"",1:$E(X,1,3)_"-"_$E(X,4,5)_"-"_$E(X,6,13)) | 
|---|