| 1 | IVMCM1 ;ALB/SEK,BRM - DCD INCOME TESTS UPLOAD DRIVER ; 1/24/03 | 
|---|
| 2 | ;;2.0;INCOME VERIFICATION MATCH;**17,49,71**;21-OCT-94 | 
|---|
| 3 | ;;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | EN ; this routine will call routines to upload means/copay/LTC test and | 
|---|
| 6 | ; income screening sent by the IVM Center (DCD).  the calling routine | 
|---|
| 7 | ; validated segment sequence.  entries will be added/modified in the | 
|---|
| 8 | ; following means test and patient files: | 
|---|
| 9 | ; | 
|---|
| 10 | ;       PATIENT RELATION (#408.12) | 
|---|
| 11 | ;       INCOME PERSON (#408.13) | 
|---|
| 12 | ;       INDIVIDUAL ANNUAL INCOME (#408.21) | 
|---|
| 13 | ;       INCOME RELATION (#408.22) | 
|---|
| 14 | ;       ANNUAL MEANS TEST (#408.31) | 
|---|
| 15 | ;       MEANS TEST CHANGES (#408.41) | 
|---|
| 16 | ;       PATIENT (#2) | 
|---|
| 17 | ; | 
|---|
| 18 | ; input: | 
|---|
| 19 | ; | 
|---|
| 20 | ; IVMTYPE test type 1-means 2-copay 3-income screening 4-LTC | 
|---|
| 21 | ; IVMMTIEN IEN of replaced test (408.31) | 
|---|
| 22 | ; IVMFLGC  # of dependent children | 
|---|
| 23 | ; IVMMTDT  dt of test | 
|---|
| 24 | ; DGLY income year | 
|---|
| 25 | ; | 
|---|
| 26 | ; ^TMP($J,"IVMCM",  contains data sent by IVM Center | 
|---|
| 27 | ;   3rd node "PIDV" | 
|---|
| 28 | ;            "ZICV" | 
|---|
| 29 | ;            "ZIRV" | 
|---|
| 30 | ;            "ZDPS" | 
|---|
| 31 | ;            "ZICS" | 
|---|
| 32 | ;            "ZIRS" | 
|---|
| 33 | ;           {"ZDPC",N | 
|---|
| 34 | ;            "ZICC",N | 
|---|
| 35 | ;            "ZIRC",N | 
|---|
| 36 | ;           } | 
|---|
| 37 | ;            "ZMT1" | 
|---|
| 38 | ;            "ZMT2" | 
|---|
| 39 | ;            "ZMT4" | 
|---|
| 40 | ;            "ZBT" | 
|---|
| 41 | ; | 
|---|
| 42 | S:'$D(DUZ) DUZ=.5 | 
|---|
| 43 | ; | 
|---|
| 44 | ; subscript of array IVMAR is 408.12 ien transmitted by IVM Center | 
|---|
| 45 | ; or created by upload. IVMAR2 is the array used to check for dup SSNs | 
|---|
| 46 | K IVMAR,IVMAR2 | 
|---|
| 47 | ; | 
|---|
| 48 | ; New Edit Checks | 
|---|
| 49 | N IVMERR,OK2UPLD S IVMERR="",OK2UPLD=1 | 
|---|
| 50 | D EN^IVMCMF(.IVMERR),PROB^IVMCMFB(,.IVMERR,0) Q:'OK2UPLD | 
|---|
| 51 | ; | 
|---|
| 52 | ; IVMHADJ indicates means test hardship/adjudication | 
|---|
| 53 | ; 1-adj 2-hardship 3-pending adj 0-not adj/hard | 
|---|
| 54 | I IVMTYPE=1 D | 
|---|
| 55 | .S IVMSEG=$G(^TMP($J,"IVMCM","ZMT1")) | 
|---|
| 56 | .S IVMHADJ=$S($P(IVMSEG,"^",13):2,$P(IVMSEG,"^",6)]"":1,$P(IVMSEG,"^",3)="P":3,1:0) | 
|---|
| 57 | ; | 
|---|
| 58 | S:IVMTYPE=3 DGMTI="" | 
|---|
| 59 | ; | 
|---|
| 60 | ; add new annual means test file (408.31) stub for Means test, | 
|---|
| 61 | ; RX Copay test, or Long Term Care test | 
|---|
| 62 | I "^1^2^4^"[("^"_IVMTYPE_"^") D | 
|---|
| 63 | .; | 
|---|
| 64 | .; input   DGMTDT (.01) dt of test | 
|---|
| 65 | .;         DFN (.02) Patient IEN | 
|---|
| 66 | .;         DGMTYPT (.19) type of test | 
|---|
| 67 | .; output  DGMTI annual means test IEN | 
|---|
| 68 | .S DGMTDT=IVMMTDT,DGMTYPT=IVMTYPE | 
|---|
| 69 | .D ADD^DGMTA | 
|---|
| 70 | .; | 
|---|
| 71 | .; change primary income test for year? | 
|---|
| 72 | .S DA=DGMTI,DIE="^DGMT(408.31,",DR="2////0" | 
|---|
| 73 | .D ^DIE K DA,DIE,DR | 
|---|
| 74 | ; | 
|---|
| 75 | D NEWVET^IVMCM3 Q:$D(IVMFERR)  ; if no entry in patient relation file for vet add | 
|---|
| 76 | ; | 
|---|
| 77 | ; get patient relation ien (#408.12) for vet, spouse, & child | 
|---|
| 78 | S IVMREQU=$P($G(^DG(408.32,+$P($G(^DGMT(408.31,IVMMTIEN,0)),"^",3),0)),"^",2) | 
|---|
| 79 | D GETREL^DGMTU11(DFN,"VSC",DGLY,$S($G(IVMMTIEN)&(IVMREQU'="R"):IVMMTIEN,1:0)) | 
|---|
| 80 | ; | 
|---|
| 81 | ; add dependent(s) to income person file (408.13) | 
|---|
| 82 | ; | 
|---|
| 83 | ; add spouse if not in 408.13 | 
|---|
| 84 | S IVMSPCHV="S" ; spouse/child/vet indicator | 
|---|
| 85 | S IVMSEG=$G(^TMP($J,"IVMCM","ZDPS")) ; spouse ZDP segment | 
|---|
| 86 | D INPIEN^IVMCM2 | 
|---|
| 87 | Q:$D(IVMFERR) | 
|---|
| 88 | ; | 
|---|
| 89 | I IVMFLG5 G ADDCHILD ; entry not added - goto add children | 
|---|
| 90 | ; | 
|---|
| 91 | ; add entry to patient relation file (408.12) | 
|---|
| 92 | D EN^IVMCM3 | 
|---|
| 93 | Q:$D(IVMFERR) | 
|---|
| 94 | ; | 
|---|
| 95 | ADDS21 ; add spouse entry to individual annual income file (408.21) | 
|---|
| 96 | S IVMSEG=$G(^TMP($J,"IVMCM","ZICS")) ; spouse ZIC segment | 
|---|
| 97 | D EN^IVMCM4 | 
|---|
| 98 | Q:$D(IVMFERR) | 
|---|
| 99 | ; | 
|---|
| 100 | ; add spouse entry to income relation file (408.22) | 
|---|
| 101 | S IVMSEG=$G(^TMP($J,"IVMCM","ZIRS")) ; spouse ZIR segment | 
|---|
| 102 | D EN^IVMCM5 | 
|---|
| 103 | Q:$D(IVMFERR) | 
|---|
| 104 | ; | 
|---|
| 105 | ADDCHILD ; add children if not in 408.13 | 
|---|
| 106 | S IVMSPCHV="C" ; spouse/child/vet indicator | 
|---|
| 107 | I 'IVMFLGC G ADDV21 ; no dependent children | 
|---|
| 108 | F IVMCTR3=1:1:IVMFLGC D  Q:$D(IVMFERR) | 
|---|
| 109 | .S IVMSEG=$G(^TMP($J,"IVMCM","ZDPC",IVMCTR3)) ; child ZDP segment | 
|---|
| 110 | .D INPIEN^IVMCM2 | 
|---|
| 111 | .Q:$D(IVMFERR) | 
|---|
| 112 | .; | 
|---|
| 113 | .; add child entry to patient relation file (408.12) | 
|---|
| 114 | .D EN^IVMCM3 | 
|---|
| 115 | .Q:$D(IVMFERR) | 
|---|
| 116 | .; | 
|---|
| 117 | ADDC21 .; add child entry to individual annual income file (408.21) | 
|---|
| 118 | .S IVMSEG=$G(^TMP($J,"IVMCM","ZICC",IVMCTR3)) ; child ZIC segment | 
|---|
| 119 | .D EN^IVMCM4 | 
|---|
| 120 | .Q:$D(IVMFERR) | 
|---|
| 121 | .; | 
|---|
| 122 | .; add entry to income relation file (408.22) | 
|---|
| 123 | .S IVMSEG=$G(^TMP($J,"IVMCM","ZIRC",IVMCTR3)) ; child ZIR segment | 
|---|
| 124 | .D EN^IVMCM5 | 
|---|
| 125 | .Q:$D(IVMFERR) | 
|---|
| 126 | .Q | 
|---|
| 127 | Q:$D(IVMFERR) | 
|---|
| 128 | ; | 
|---|
| 129 | ADDV21 ; add vet entry to individual annual income file (408.21) | 
|---|
| 130 | ; get vet patient relation ien | 
|---|
| 131 | S DGPRI=+$G(DGREL("V")) | 
|---|
| 132 | S IVMSEG=$G(^TMP($J,"IVMCM","ZICV")) ; vet ZIC segment | 
|---|
| 133 | S IVMSPCHV="V" ; spouse/child/vet indicator | 
|---|
| 134 | D EN^IVMCM4 | 
|---|
| 135 | Q:$D(IVMFERR) | 
|---|
| 136 | S DGVINI=DGINI ; vet individual annual income ien | 
|---|
| 137 | ; | 
|---|
| 138 | ; add vet entry to income relation file (408.22) | 
|---|
| 139 | S IVMSEG=$G(^TMP($J,"IVMCM","ZIRV")) ; vet ZIR segment | 
|---|
| 140 | D EN^IVMCM5 | 
|---|
| 141 | Q:$D(IVMFERR) | 
|---|
| 142 | S DGVIRI=DGIRI ; vet income relation ien | 
|---|
| 143 | ; | 
|---|
| 144 | COMPLETE ; complete means test, copay test, or Long Term Care test | 
|---|
| 145 | ; | 
|---|
| 146 | D EN^IVMCM6 | 
|---|
| 147 | ; | 
|---|
| 148 | ; cleanup | 
|---|
| 149 | K DGINI,DGIRI,DGMTDT,DGMTI,DGMTYPT,DGPRI,DGREL,DGVINI,DGVIRI | 
|---|
| 150 | K IVMAR,IVMCEB,IVMCTR3,IVMFERR,IVMFLG1 | 
|---|
| 151 | K IVMFLG2,IVMFLG5,IVMHADJ,IVMMTB,IVMPRN | 
|---|
| 152 | K IVMRELN,IVMRELO,IVMREQU,IVMSEG,IVMSPCHV,IVMX | 
|---|
| 153 | Q | 
|---|
| 154 | ; | 
|---|
| 155 | LTC ; transmission contains a long term care test (type 4) | 
|---|
| 156 | ; | 
|---|
| 157 | Q:'$P($G(^TMP($J,"IVMCM","ZMT4")),HLFS,2) | 
|---|
| 158 | I "^1^2^"[("^"_$G(IVMTYPE)_"^") N IVMTYPE | 
|---|
| 159 | S IVMTYPE=4,IVMFUTR=0 | 
|---|
| 160 | S IVMMTDT=$$FMDATE^HLFNC($P($G(^TMP($J,"IVMCM","ZMT4")),HLFS,2)) | 
|---|
| 161 | S TMSTAMP=$$FMDATE^HLFNC($P($G(^TMP($J,"IVMCM","ZMT4")),HLFS,25)) | 
|---|
| 162 | S SOURCE=$P($G(^TMP($J,"IVMCM","ZMT4")),HLFS,22) | 
|---|
| 163 | S IVMLAST=$$LST^DGMTU(DFN,$E(IVMMTDT,1,3)_1231,4) | 
|---|
| 164 | S IVMMTIEN=+IVMLAST  ;last LTC test | 
|---|
| 165 | ;deletion indicator sent? | 
|---|
| 166 | I $P($G(^TMP($J,"IVMCM","ZMT4")),HLFS,3)=HLQ D  Q | 
|---|
| 167 | .Q:('IVMMTIEN) | 
|---|
| 168 | .S NODE0=$G(^DGMT(408.31,IVMMTIEN,0)) | 
|---|
| 169 | .I $$EN^IVMCMD(IVMMTIEN) D | 
|---|
| 170 | ..S RET=$$LST^DGMTU(DFN,DT,IVMTYPE) | 
|---|
| 171 | ..S CODE=$S(($E($P(RET,"^",2),1,3)=$E(DT,1,3)):$P(RET,"^",4),1:"") | 
|---|
| 172 | ..D ADD^IVMCMB(DFN,IVMTYPE,"DELETE LONG TERM CARE TEST",+$G(NODE0),$$GETCODE^DGMTH($P(NODE0,"^",3)),CODE) | 
|---|
| 173 | ; | 
|---|
| 174 | ;check date/time last edited, test date and source - if they match current test then this is a duplicate and does not need to be uploaded | 
|---|
| 175 | N NODE0,NODE2 | 
|---|
| 176 | S NODE2=$G(^DGMT(408.31,IVMMTIEN,2)),NODE0=$G(^(0)) | 
|---|
| 177 | I TMSTAMP,TMSTAMP=$P(NODE2,"^",2),IVMMTDT=$P(NODE0,"^"),SOURCE=$P(NODE2,"^",5) Q | 
|---|
| 178 | ; | 
|---|
| 179 | D DELTYPE^IVMCMD(DFN,IVMMTDT,4) | 
|---|
| 180 | I $P($G(^TMP($J,"IVMCM","ZMT1")),HLFS,2)!($P($G(^TMP($J,"IVMCM","ZMT2")),HLFS,2)) D  Q | 
|---|
| 181 | .S DGMTDT=IVMMTDT,DGMTYPT=IVMTYPE | 
|---|
| 182 | .D ADD^DGMTA | 
|---|
| 183 | .D COMPLETE^IVMCM1 | 
|---|
| 184 | D EN^IVMCM1 | 
|---|
| 185 | Q | 
|---|