| 1 | IBCNSU41 ;ALB/CPM - SPONSOR UTILITIES (CON'T) ; 5/9/03 1:25pm
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**52,211,240**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | SPON(DFN) ; Add/edit sponsor/sponsor relationships for a patient.
 | 
|---|
| 6 |  ;  Input:    DFN  --  Pointer to the patient in file #2
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  I '$G(DFN) G SPONQ
 | 
|---|
| 9 |  N IBQ S IBQ=0
 | 
|---|
| 10 |  F  D LSP Q:IBQ
 | 
|---|
| 11 | SPONQ Q
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | LSP ; Main loop to collect sponsor and relation data.
 | 
|---|
| 16 |  S DIR(0)="FAO^3:30",DIR("A")="Select SPONSOR: " D ^DIR K DIR
 | 
|---|
| 17 |  I $D(DIRUT)!$D(DIROUT)!$D(DUOUT)!$D(DTOUT) K DIRUT,DIROUT,DTOUT,DUOUT S IBQ=1 G LSPQ
 | 
|---|
| 18 |  S IBX=X
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ; - perform lookup to find sponsor or add a patient sponsor
 | 
|---|
| 21 |  S DIC(0)="ELMZ",DIC="^IBA(355.8,",DLAYGO=355.8 D ^DIC K DIC,DLAYGO
 | 
|---|
| 22 |  I Y>0 S IBSP=+Y,IBSPD=$G(^IBA(355.8,IBSP,0)),IBNAM=Y(0,0) G LSPC
 | 
|---|
| 23 |  I IBX'?1.A1","1.ANP W !,"New sponsors must be in the format LAST,FIRST.",! G LSP
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  ; - is this a new sponsor to be added to the system?
 | 
|---|
| 26 |  S DIR(0)="Y",DIR("A")="  Are you adding '"_IBX_"' as a new SPONSOR"
 | 
|---|
| 27 |  D ^DIR K DIR
 | 
|---|
| 28 |  I 'Y!$D(DIRUT)!$D(DIROUT)!$D(DUOUT)!$D(DTOUT) K DIRUT,DIROUT,DTOUT,DUOUT G LSP
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ; - add non-patient sponsor to file #355.82 (sponsor person file)
 | 
|---|
| 31 |  S (X,IBNAM)=IBX,DIC(0)="L",DIC="^IBA(355.82,",DLAYGO=355.82
 | 
|---|
| 32 |  D FILE^DICN S IBSPP=+Y K DLAYGO
 | 
|---|
| 33 |  I IBSPP<0 W !,"Unable to add a new sponsor!" G LSPQ
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ; - now add to file #355.8 (sponsor file)
 | 
|---|
| 36 |  S (IBSPD,X)=IBSPP_";IBA(355.82,",DIC(0)="L",DIC="^IBA(355.8,",DLAYGO=355.8
 | 
|---|
| 37 |  D FILE^DICN S IBSP=+Y K DLAYGO
 | 
|---|
| 38 |  I IBSP<0 W !,"Unable to add a new sponsor!" G LSPQ
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | LSPC ; - allow edit of non-patient sponsor name/dob/ssn
 | 
|---|
| 41 |  I $P(IBSPD,"^")["IBA" D
 | 
|---|
| 42 |  .S DIE="^IBA(355.82,",DA=+IBSPD
 | 
|---|
| 43 |  .S DR=".01  NAME;.02  DATE OF BIRTH;.03  SOCIAL SECURITY NUMBER"
 | 
|---|
| 44 |  .D ^DIE K DIE,DA,DR
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 |  ; - edit remaining sponsor attributes
 | 
|---|
| 47 |  S DIE="^IBA(355.8,",DA=IBSP
 | 
|---|
| 48 |  S DR=".02  MILITARY STATUS;.03  BRANCH;.04  RANK"
 | 
|---|
| 49 |  D ^DIE K DA,DR,DIE
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  ; - find patient relation to sponsor, or create one
 | 
|---|
| 52 |  S IBSPR=0 F  S IBSPR=$O(^IBA(355.81,"B",DFN,IBSPR)) Q:'IBSPR  I $P($G(^IBA(355.81,IBSPR,0)),"^",2)=IBSP Q
 | 
|---|
| 53 |  I 'IBSPR S IBQQ=0 D  G:IBQQ LSPQ
 | 
|---|
| 54 |  .W !!,"The person '",IBNAM,"' is not currently the sponsor of this patient."
 | 
|---|
| 55 |  .S DIR(0)="Y",DIR("A")="Okay to add this person as the patient's sponsor"
 | 
|---|
| 56 |  .S DIR("?")="Please enter 'YES' to add this person as the patient's sponsor, or 'NO' to select a new sponsor."
 | 
|---|
| 57 |  .D ^DIR K DIR I 'Y W ! S IBQQ=1 Q
 | 
|---|
| 58 |  .;
 | 
|---|
| 59 |  .S X=DFN,DIC="^IBA(355.81,",DIC(0)="L",DIC("DR")=".02////"_IBSP,DLAYGO=355.81
 | 
|---|
| 60 |  .D FILE^DICN S IBSPR=+Y S:Y<0 IBQQ=1 K DLAYGO
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; - edit sponsor relation attributes
 | 
|---|
| 63 |  S DIE="^IBA(355.81,",DA=IBSPR,DR=".03:.06" D ^DIE K DA,DIE,DR
 | 
|---|
| 64 |  W !
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | LSPQ K IBSP,IBSPD,IBSPP,IBSPR,IBQQ,IBNAM,IBX,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
 | 
|---|
| 67 |  Q
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | POL(DFN) ; Update TRICARE policies with Sponsor information.
 | 
|---|
| 72 |  ;  Input:   DFN  --  Pointer to the patient in file #2
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  I '$G(DFN) G POLQ
 | 
|---|
| 75 |  N IBX,IBY,SPON,X,X1,X3,Y,Z
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 |  S X=0 F  S X=$O(^IBA(355.81,"B",DFN,X)) Q:'X  D  Q:$D(Z)
 | 
|---|
| 78 |  .S Y=$G(^IBA(355.81,X,0))
 | 
|---|
| 79 |  .;
 | 
|---|
| 80 |  .; - relationship must be with a Tricare sponsor
 | 
|---|
| 81 |  .Q:$P(Y,"^",4)'="T"
 | 
|---|
| 82 |  .;
 | 
|---|
| 83 |  .S SPON=$G(^IBA(355.8,+$P(Y,"^",2),0)) Q:SPON=""
 | 
|---|
| 84 |  .;
 | 
|---|
| 85 |  .; - if sponsor is a patient, get name/dob/SSN from the patient
 | 
|---|
| 86 |  .;   file; otherwise, use file #355.82
 | 
|---|
| 87 |  .I $P(SPON,"^")["DPT" D
 | 
|---|
| 88 |  ..S X1=$G(^DPT(+SPON,0)) Q:X1=""
 | 
|---|
| 89 |  ..S Z("NAME")=$P(X1,"^"),Z("DOB")=$P(X1,"^",3),Z("SSN")=$P(X1,"^",9)
 | 
|---|
| 90 |  .E  D
 | 
|---|
| 91 |  ..S X1=$G(^IBA(355.82,+SPON,0)) Q:X1=""
 | 
|---|
| 92 |  ..S Z("NAME")=$P(X1,"^"),Z("DOB")=$P(X1,"^",2),Z("SSN")=$TR($P(X1,"^",3),"-","")
 | 
|---|
| 93 |  .;
 | 
|---|
| 94 |  .S Z("BRAN")=$P(SPON,"^",3),Z("RANK")=$P(SPON,"^",4)
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 |  ; - if no Tricare sponsors were found, quit.
 | 
|---|
| 97 |  I '$D(Z) G POLQ
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  ; - update any policies with TRICARE plans
 | 
|---|
| 100 |  S IBX=0 F  S IBX=$O(^DPT(DFN,.312,IBX)) Q:'IBX  S IBY=$G(^(IBX,0)) D
 | 
|---|
| 101 |  .;
 | 
|---|
| 102 |  .; - only consider TRICARE plans
 | 
|---|
| 103 |  .Q:$P($G(^IBE(355.1,+$P($G(^IBA(355.3,+$P(IBY,"^",18),0)),"^",9),0)),"^",3)'=7
 | 
|---|
| 104 |  .;
 | 
|---|
| 105 |  .; - the policyholder should not be the veteran (patient)
 | 
|---|
| 106 |  .Q:$P(IBY,"^",6)="v"
 | 
|---|
| 107 |  .;
 | 
|---|
| 108 |  .; - if a sponsor DOB exists, be sure it's the same as the
 | 
|---|
| 109 |  .;   sponsor file DOB
 | 
|---|
| 110 |  .S X3=$G(^DPT(DFN,.312,IBX,3))
 | 
|---|
| 111 |  .I X3,+X3'=Z("DOB") Q
 | 
|---|
| 112 |  .;
 | 
|---|
| 113 |  .S DR=""
 | 
|---|
| 114 |  .;IB*2*211
 | 
|---|
| 115 |  .I $P(IBY,"^",17)="" S DR=DR_"17////"_Z("NAME")_";"
 | 
|---|
| 116 |  .I $P(X3,"^")="",Z("DOB") S DR=DR_"3.01////"_Z("DOB")_";"
 | 
|---|
| 117 |  .I $P(X3,"^",2)="",Z("BRAN") S DR=DR_"3.02////"_Z("BRAN")_";"
 | 
|---|
| 118 |  .I $P(X3,"^",3)="",Z("RANK")]"" S DR=DR_"3.03////"_Z("RANK")_";"
 | 
|---|
| 119 |  .I $P(X3,"^",5)="",Z("SSN")]"" S DR=DR_"3.05////"_Z("SSN")_";"
 | 
|---|
| 120 |  .;
 | 
|---|
| 121 |  .Q:DR=""
 | 
|---|
| 122 |  .I $E(DR,$L(DR))=";" S DR=$E(DR,1,$L(DR)-1)
 | 
|---|
| 123 |  .;
 | 
|---|
| 124 |  .S DIE="^DPT(DFN,.312,",DA(1)=DFN,DA=IBX D ^DIE K DA,DIE,DR
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 | POLQ Q
 | 
|---|