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