| 1 | IVMCMD ;ALB/SEK,KCL,BRM - DELETE DCD INCOME TESTS ; 12/18/01 1:18pm | 
|---|
| 2 | ;;2.0;INCOME VERIFICATION MATCH;**17,33,49**;21-OCT-94 | 
|---|
| 3 | ; | 
|---|
| 4 | ; | 
|---|
| 5 | ; | 
|---|
| 6 | EN(IVMMTIEN) ; -- | 
|---|
| 7 | ; This routine will process income test deletion requests received | 
|---|
| 8 | ; from the IVM Center. | 
|---|
| 9 | ; | 
|---|
| 10 | ;  Input(s): | 
|---|
| 11 | ;           IVMMTIEN - pointer to test to be deleted in file 408.31 | 
|---|
| 12 | ; | 
|---|
| 13 | ; Output(s): | 
|---|
| 14 | ;           Function Value - 1 test deleted | 
|---|
| 15 | ;                            0 test not deleted | 
|---|
| 16 | ; | 
|---|
| 17 | ; | 
|---|
| 18 | ; Initialize variables | 
|---|
| 19 | N DFN,IVMERR,IVMLINK,IVMNODE0,IVMDOT,IVMTOT,IVMDONE,IVMLTC | 
|---|
| 20 | S IVMDONE=0 | 
|---|
| 21 | ; | 
|---|
| 22 | EN1 ; Get zero node of (#408.31) | 
|---|
| 23 | S IVMNODE0=$G(^DGMT(408.31,IVMMTIEN,0)) | 
|---|
| 24 | I 'IVMNODE0 Q 1  ; test not found | 
|---|
| 25 | S IVMDOT=$P(IVMNODE0,"^") ; date of test | 
|---|
| 26 | S DFN=$P(IVMNODE0,"^",2) | 
|---|
| 27 | S IVMTOT=$P(IVMNODE0,"^",19) ; type of test | 
|---|
| 28 | S IVMLINK=$P($G(^DGMT(408.31,IVMMTIEN,2)),"^",6) | 
|---|
| 29 | I IVMTOT=1,$D(^DGMT(408.31,"AT",IVMMTIEN)) S IVMLTC=$O(^DGMT(408.31,"AT",IVMMTIEN,"")) | 
|---|
| 30 | I IVMTOT=2,IVMLINK Q 0  ; don't delete copay test linked to means test | 
|---|
| 31 | I IVMTOT=1 D  I $D(IVMERR) Q 0  ;if MT linked, delete linked test | 
|---|
| 32 | .D:IVMLINK DELETE(IVMLINK,DFN,IVMDOT) ; delete copay test | 
|---|
| 33 | .D:$G(IVMLTC) DELETE(IVMLTC,DFN,IVMDOT) ; delete LTC test | 
|---|
| 34 | ; | 
|---|
| 35 | D DELETE(IVMMTIEN,DFN,IVMDOT) ; delete copay or MT | 
|---|
| 36 | Q IVMDONE | 
|---|
| 37 | ; | 
|---|
| 38 | DELETE(IVMMTIEN,DFN,IVMDOT) ; delete copay or MT | 
|---|
| 39 | ; | 
|---|
| 40 | ; Handle LTC test deletion if there is an associated Means Test | 
|---|
| 41 | I $P($G(^DGMT(408.31,+IVMMTIEN,0)),"^",19)=4,+$P($G(^DGMT(408.31,+IVMMTIEN,2)),"^",8) D DEL31^IVMCMD1(IVMMTIEN) Q | 
|---|
| 42 | ; | 
|---|
| 43 | ; Set DGMTP prior to delete | 
|---|
| 44 | S DGMTACT="DEL",DGMTI=IVMMTIEN D PRIOR^DGMTEVT | 
|---|
| 45 | ; | 
|---|
| 46 | ; Get Income Relation IEN array (DGINR) and | 
|---|
| 47 | ; Individual Annual Income IEN array (DGINC) | 
|---|
| 48 | D ALL^DGMTU21(DFN,"VSC",IVMDOT,"IR",IVMMTIEN) | 
|---|
| 49 | ; | 
|---|
| 50 | ; | 
|---|
| 51 | DEL22 ; Delete veteran, spouse, and dependent entries from the | 
|---|
| 52 | ; Income Relation (#408.22) file: | 
|---|
| 53 | ; - Veteran (#408.22) record | 
|---|
| 54 | S DA=$G(DGINR("V")) D | 
|---|
| 55 | .Q:'DA | 
|---|
| 56 | .S DIK="^DGMT(408.22," | 
|---|
| 57 | .D ^DIK | 
|---|
| 58 | ; | 
|---|
| 59 | ; - Spouse (#408.22) record | 
|---|
| 60 | S DA=$G(DGINR("S")) D | 
|---|
| 61 | .Q:'DA | 
|---|
| 62 | .S DIK="^DGMT(408.22," | 
|---|
| 63 | .D ^DIK | 
|---|
| 64 | ; | 
|---|
| 65 | ; - All dependent children (#408.22) records | 
|---|
| 66 | S IVMDEP=0 | 
|---|
| 67 | F  S IVMDEP=$O(DGINR("C",IVMDEP)) Q:'IVMDEP  D | 
|---|
| 68 | .S DA=$G(DGINR("C",IVMDEP)) | 
|---|
| 69 | .S DIK="^DGMT(408.22," | 
|---|
| 70 | .D ^DIK | 
|---|
| 71 | ; | 
|---|
| 72 | ; | 
|---|
| 73 | DEL21 ; Delete veteran, spouse, and dependent entries from | 
|---|
| 74 | ; Individual Annual Income (#408.21) file: | 
|---|
| 75 | ; - Veteran (#408.21) record | 
|---|
| 76 | S DA=$G(DGINC("V")) D | 
|---|
| 77 | .Q:'DA | 
|---|
| 78 | .S DIK="^DGMT(408.21," | 
|---|
| 79 | .D ^DIK | 
|---|
| 80 | ; | 
|---|
| 81 | ; - Spouse (#408.21) record | 
|---|
| 82 | S DA=$G(DGINC("S")) D | 
|---|
| 83 | .Q:'DA | 
|---|
| 84 | .S DIK="^DGMT(408.21," | 
|---|
| 85 | .D ^DIK | 
|---|
| 86 | ; | 
|---|
| 87 | ; - All dependent children (#408.21) records | 
|---|
| 88 | S IVMDEP=0 | 
|---|
| 89 | F  S IVMDEP=$O(DGINC("C",IVMDEP)) Q:'IVMDEP  D | 
|---|
| 90 | .S DA=$G(DGINC("C",IVMDEP)) | 
|---|
| 91 | .S DIK="^DGMT(408.21," | 
|---|
| 92 | .D ^DIK | 
|---|
| 93 | ; | 
|---|
| 94 | ; | 
|---|
| 95 | ; Logic for (#408.12/#408.1275) & (#408.13) file entries | 
|---|
| 96 | D SETUPAR | 
|---|
| 97 | ; | 
|---|
| 98 | ; Look for IVM/DCD Patient Realtion (#408.12) file entries. | 
|---|
| 99 | ; If no entries in "AIVM" x-ref, no dependent changes required. | 
|---|
| 100 | S IVM12="" F  S IVM12=$O(^DGPR(408.12,"AIVM",IVMMTIEN,IVM12)) Q:'IVM12  D  Q:$D(IVMERR) | 
|---|
| 101 | .; - if can't find entry in (#408.12), set IVMERR | 
|---|
| 102 | .I $G(^DGPR(408.12,+IVM12,0))']"" D  Q | 
|---|
| 103 | ..S IVMERR="" Q | 
|---|
| 104 | .; | 
|---|
| 105 | .; - if only one record exists in (#408.1275) mult., then only one IVM/DCD dependent to delete | 
|---|
| 106 | .I $P($G(^DGPR(408.12,+IVM12,"E",0)),"^",4)=1 D  Q | 
|---|
| 107 | ..; | 
|---|
| 108 | ..; -- if can't find entry in (#408.13), set IVMERR | 
|---|
| 109 | ..S IVM13=$P($P($G(^DGPR(408.12,+IVM12,0)),"^",3),";") I $G(^DGPR(408.13,+IVM13,0))']"" D  Q | 
|---|
| 110 | ...S IVMERR="" Q | 
|---|
| 111 | ..; | 
|---|
| 112 | ..; -- delete (#408.12) & (#408.13) records for IVM/DCD dependent | 
|---|
| 113 | ..S DA=IVM12,DIK="^DGPR(408.12," D ^DIK K DA,DIK | 
|---|
| 114 | ..S DA=IVM13,DIK="^DGPR(408.13," D ^DIK K DA,DIK | 
|---|
| 115 | ..Q | 
|---|
| 116 | .; | 
|---|
| 117 | .; | 
|---|
| 118 | .; Delete (#408.1275) record for IVM/DCD dependent and | 
|---|
| 119 | .; change demo data in (#408.12) & (#408.13) back to VAMC values. | 
|---|
| 120 | .; OR, Delete (#408.1275) record for inactivated VAMC dependent. | 
|---|
| 121 | .S IVM121="",IVM121=$O(^DGPR(408.12,"AIVM",IVMMTIEN,+IVM12,IVM121)) | 
|---|
| 122 | .; - if can't find entry in (#408.1275), set IVMERR | 
|---|
| 123 | .I $G(^DGPR(408.12,+IVM12,"E",+IVM121,0))']"" D  Q | 
|---|
| 124 | ..S IVMERR="" Q | 
|---|
| 125 | .; | 
|---|
| 126 | .S IVMVAMCA=$P($G(^DGPR(408.12,+IVM12,"E",+IVM121,0)),"^",2) ; dependent active? | 
|---|
| 127 | .S DA(1)=IVM12,DA=IVM121,DIK="^DGPR(408.12,"_DA(1)_",""E""," | 
|---|
| 128 | .D ^DIK K DA(1),DA,DIK | 
|---|
| 129 | .; | 
|---|
| 130 | .; - quit if inactivated VAMC dependent | 
|---|
| 131 | .Q:'IVMVAMCA | 
|---|
| 132 | .; | 
|---|
| 133 | .; - get pointer to Income Person (#408.13) file | 
|---|
| 134 | .S IVM13=+$P($P($G(^DGPR(408.12,+IVM12,0)),"^",3),";") | 
|---|
| 135 | .; | 
|---|
| 136 | .; - change demo data back to original values | 
|---|
| 137 | .D DEMO | 
|---|
| 138 | .Q | 
|---|
| 139 | ; | 
|---|
| 140 | ; Complete deletion of income test | 
|---|
| 141 | D EN^IVMCMD1 | 
|---|
| 142 | ; | 
|---|
| 143 | ENQ Q | 
|---|
| 144 | ; | 
|---|
| 145 | ; | 
|---|
| 146 | DEMO ; Change demographic data in (#408.12) & (#408.13) files | 
|---|
| 147 | ; back to original VAMC values. | 
|---|
| 148 | ; | 
|---|
| 149 | ; Input(s): | 
|---|
| 150 | ;      IVM12 - as IEN of (#408.12) file | 
|---|
| 151 | ;      IVM13 - as IEN of (#408.13) file | 
|---|
| 152 | ;   IVMMTIEN - as IEN of (#408.31) file | 
|---|
| 153 | ; | 
|---|
| 154 | ; Output(s): None | 
|---|
| 155 | ; | 
|---|
| 156 | ; NOTE: File (#408.13) fields were added to (#408.41) file before | 
|---|
| 157 | ;       file (#408.12) field. | 
|---|
| 158 | ; | 
|---|
| 159 | K DR S IVM41=0 | 
|---|
| 160 | F  S IVM41=$O(^DGMT(408.41,"D",IVMMTIEN,IVM41)) Q:'IVM41  D | 
|---|
| 161 | .S IVM411=$G(^DGMT(408.41,+IVM41,0)) | 
|---|
| 162 | .Q:$P(IVM411,"^",10)'=IVM13 | 
|---|
| 163 | .S IVMOLD=$P(IVM411,"^",5) | 
|---|
| 164 | .S IVMOLD=$S(IVMOLD="":"@",1:IVMOLD) | 
|---|
| 165 | .S IVMFILE=$P(IVMAR1($P(IVM411,"^",2)),";") | 
|---|
| 166 | .S IVMNOD=$P(IVMAR1($P(IVM411,"^",2)),";",2) | 
|---|
| 167 | .I IVMFILE=408.13 S DA=IVM13,DIE="^DGPR(408.13," | 
|---|
| 168 | .I IVMFILE=408.12 S DA=IVM12,DIE="^DGPR(408.12," | 
|---|
| 169 | .S DR=IVMNOD_"////^S X=IVMOLD" | 
|---|
| 170 | .D ^DIE K DA,DR,DIE | 
|---|
| 171 | Q | 
|---|
| 172 | ; | 
|---|
| 173 | ; | 
|---|
| 174 | SETUPAR ; Create array IVMAR1() where | 
|---|
| 175 | ;  1) Subscript is MT Changes Type (#408.42) file node where type of | 
|---|
| 176 | ;     change = Name, DOB, SSN, Sex, Relationship. | 
|---|
| 177 | ;  2) 1st piece is (#408.12) or (#408.13) file. | 
|---|
| 178 | ;  3) 2nd piece is (#408.12) or (#408.13) file field number. | 
|---|
| 179 | ; | 
|---|
| 180 | F IVM41=4:1 S IVM411=$P($T(TYPECH+IVM41),";;",2) Q:IVM411="QUIT"  D | 
|---|
| 181 | .S IVMAR1($P(IVM411,";"))=$P(IVM411,";",2,3) | 
|---|
| 182 | K IVM41,IVM411 | 
|---|
| 183 | Q | 
|---|
| 184 | ; | 
|---|
| 185 | DELTYPE(DFN,MTDATE,TYPE) ; | 
|---|
| 186 | ;will delete any primary test for patient=DFN for same income year as | 
|---|
| 187 | ;MTDATE for test of type=TYPE | 
|---|
| 188 | ; | 
|---|
| 189 | Q:'$G(DFN) | 
|---|
| 190 | Q:'$G(MTDATE) | 
|---|
| 191 | Q:'$G(TYPE) | 
|---|
| 192 | N MTNODE,YEAR,RET | 
|---|
| 193 | S YEAR=$E(MTDATE,1,3)_1230.999999 | 
|---|
| 194 | D | 
|---|
| 195 | .S MTNODE=$$LST^DGMTU(DFN,YEAR,TYPE) | 
|---|
| 196 | .Q:'+MTNODE | 
|---|
| 197 | .I $E($P(MTNODE,"^",2),1,3)'=$E(YEAR,1,3) Q | 
|---|
| 198 | .;don't want to delete auto-created Rx copay tests -they are deleted by | 
|---|
| 199 | .; deleting the MT that they are based on | 
|---|
| 200 | .I TYPE=2,+$P($G(^DGMT(408.31,+MTNODE,2)),"^",6) Q | 
|---|
| 201 | .I $P(MTNODE,"^",5),$P(MTNODE,"^",5)'=1 I $$EN(+MTNODE) D | 
|---|
| 202 | ..; | 
|---|
| 203 | ..S RET=$$LST^DGMTU(DFN,DT,IVMTYPE) | 
|---|
| 204 | ..I $E($P(RET,"^",2),1,3)'=$E(YEAR,1,3) S RET="" | 
|---|
| 205 | ..D ADD^IVMCMB(DFN,IVMTYPE,"DELETE PRMY TEST",$P(MTNODE,"^",2),$P(MTNODE,"^",4),$P(RET,"^",4)) | 
|---|
| 206 | Q | 
|---|
| 207 | ; | 
|---|
| 208 | TYPECH ; Type of dependent changes (#408.41/#408.42) file | 
|---|
| 209 | ;    1st piece - 408.42 table file node | 
|---|
| 210 | ;    2nd piece - file (408.12/408.13) | 
|---|
| 211 | ;    3rd piece - 408.12/408.13 field | 
|---|
| 212 | ;;16;408.13;.01 | 
|---|
| 213 | ;;17;408.13;.03 | 
|---|
| 214 | ;;18;408.13;.09 | 
|---|
| 215 | ;;19;408.13;.02 | 
|---|
| 216 | ;;20;408.12;.02 | 
|---|
| 217 | ;;QUIT | 
|---|
| 218 | Q | 
|---|