Changeset 623 for WorldVistAEHR/trunk/r/REGISTRATION-DGQE-DG-DPT-GRPX-VAD-VAF-VAS-VAT-VAU--VA-VIC--DGBT--DGJ--DGYA--VALM/DGCV.m
- Timestamp:
- Dec 4, 2009, 12:11:15 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
WorldVistAEHR/trunk/r/REGISTRATION-DGQE-DG-DPT-GRPX-VAD-VAF-VAS-VAT-VAU--VA-VIC--DGBT--DGJ--DGYA--VALM/DGCV.m
r613 r623 1 DGCV ;ALB/DW,ERC,BRM,TMK - COMBAT VET ELIGIBILTY; 10/15/05 ; 3/24/08 7:28am 2 ;;5.3;Registration;**528,576,564,673,778**; Aug 13, 1993;Build 9 3 ; 4 CVELIG(DFN) ; 5 ;API will determine whether or not this veteran needs to have CV End 6 ;Date set. If this determination cannot be done due to imprecise 7 ;or missing dates, it returns which dates need editing. 8 ;Input: 9 ; DFN - Patient file IEN 10 ;Output 11 ; RESULT 12 ; 0 - CV End Date should not be set 13 ; 1 - CV End Date should be set 14 ; If critical dates are imprecise return the following 15 ; A - CV End Date should not be set, imprecise Service Sep date 16 ; B - CV End Date should not be set, imprecise Combat To date 17 ; C - CV End Date should not be set, imprecise Yugoslavia To date 18 ; D - CV End Date should not be set, imprecise Somalia To date 19 ; E - CV End Date should not be set, imprecise Pers Gulf To date 20 ; If the Service Sep Date is missing, and there are no OEF/OIF/UNKNOWN 21 ; OEF/OIF records on file, return the following so that it will 22 ; appear on the Imprecise/Missing Date Report 23 ; F - missing Service Sep Date & no OEF OIF or OEF/OIF Unknown dates 24 ; If critical dates are missing but the corresponding indicator fields 25 ; are set to 'YES' return the following 26 ; G - missing Combat To Date, but Combat Indicated? = 'Yes' 27 ; H - missing PG To Date, but PG Indicated? = 'Yes' 28 ; I - missing Somalia To Date, but Somalia Indicator = 'Yes' 29 ; J - missing Yugoslavia To Date, but Yugoslavia Indicator = 'Yes' 30 ; 31 N DG1,DG2,I,RESULT 32 N DGCOM,DGCVDT,DGCVFLG,DGGULF,DGSOM,DGSRV,DGYUG,DGOEIF 33 S (DG1,DG2,RESULT)=0 34 I $G(DFN)']"" Q RESULT 35 I '$D(^DPT(DFN)) Q RESULT 36 ; 37 ;get combat related data from top-level VistA fields 38 N DGARR,DGERR 39 D GETS^DIQ(2,DFN_",",".327;.322012;.322018;.322021;.5294;.5295","I","DGARR","DGERR") 40 D PARSE 41 ; 42 S DG1=$$CHKSSD(DFN) ;check SSD for imprecise or missing 43 S DGDATE=$G(DGCOM)_"^"_$G(DGYUG)_"^"_$G(DGSOM)_"^"_$G(DGGULF)_"^"_$G(DGOEIF) 44 ; 45 I $S(DG1="F":1,1:$P(DGDATE,U,5)>$G(DGSRV)) D 46 . ; Use OIF/OEF/UNKNOWN OEF/OIF to dt only when SSD missing or SSD less 47 . ; than OIF/OEF/UNKNOWN OEF/OIF to dt 48 . N DGSRV,Z 49 . S DGSRV=$P(DGDATE,U,5),Z=$$CHKSSD(DFN) 50 . I Z=1 S DG1=Z 51 ; 52 S DG2=$$CHKREST(DGDATE,$G(DGSRV)) ;check other "TO" dates for imprecise, missing or invalid 53 S RESULT=$$RES(DG1,$G(DG2)) 54 Q RESULT 55 ; 56 RES(DG1,DG2) ;determine the final RESULT code from DG1 & DG2 57 ;if SSD evaluates to earlier than 11/11/98, can't set CV End Date 58 I DG1=0!($G(DG2)=0) Q 0 59 ;if SSD is 1 60 I DG1=1,($G(DG2)=1!($G(DG2)']"")) Q 1 61 I DG1=1,($G(DG2)=0) Q 0 62 I DG1=1 Q DG2 63 ;if SSD is imprecise or missing 64 I DG1'=1,($G(DG2)=1) S DG2="" 65 Q DG1_DG2 66 ; 67 CHKDATE(DGDATE,I,SSD) ;check to see if date is imprecise or missing 68 ;if imprecise check to see if the imprecision prevents CV evaluation 69 ;if not imprecise check to see if after 11/11/98 70 ; Note that SSD doesn't appear to ever be used here (TMK) 71 N RES 72 S RES=0 73 I $G(DGDATE)']"",I'=5 D Q RES 74 . S RES=$S(I=0:"F",I=1:"G",I=2:"H",I=3:"I",I=4:"J",1:"") 75 I $E(DGDATE,6,7)="00" D 76 . I I=0 I DGDATE>2981111 S RES="A" Q 77 . I DGDATE=2980000!(DGDATE=2981100) D Q 78 .. ; Note OIF/OEF/UNKNOWN OEF/OIF will not get here as these dates by 79 .. ; definition are after 11/11/98 80 . . S RES=$S(I=0:"A",I=1:"B",I=2:"C",I=3:"D",I=4:"E",1:"") 81 Q:RES="A" RES 82 I DGDATE>2981111 S RES=1 83 Q RES 84 ; 85 SETCV(DFN,DGSRV) ;calculate CV end date 86 ; DGSRV is the most recent of the Service Separation Date 87 ; or the OEF/OIF To Date, called from file #2 new style 88 ; cross reference "ACVCOM" 89 N DGCVEDT,DGFDA,DGNDAA,DGPLUS3,DGTMPDT,DGYRS 90 S DGNDAA=3080128 91 I $G(DFN)']""!($G(DGSRV)']"") Q 92 I '$D(^DPT(DFN)) Q 93 I $$GET1^DIQ(2,DFN_",",.5295,"I") Q 94 D CVRULES(DFN,DGSRV,.DGYRS) 95 Q:$G(DGYRS)'=3&($G(DGYRS)'=5) 96 ;NDAA legislation, enacted 1/28/08, gives vets discharged 97 ;on or after 1/28/03 (2 years previously) CV Eligibility 98 ;for 5 years. Vets discharged before 1/28/03 get eligibility 99 ;for 3 years after enactment (or until 1/27/2011) DG*5.3*778 100 S DGTMPDT=$S(DGYRS=3:DGNDAA,1:DGSRV) 101 S DGCVEDT=($E(DGTMPDT,1,3)+DGYRS)_$E(DGTMPDT,4,7) 102 S DGCVEDT=$$FMADD^XLFDT(DGCVEDT,-1) 103 S DGFDA(2,DFN_",",.5295)=DGCVEDT 104 D FILE^DIE(,"DGFDA") 105 Q 106 ; 107 CVRULES(DFN,DGSRV,DGYRS) ;apply rules for the CV End Date 108 ;extension project - DG*5.3*778 109 ;DGSRV - most recent of Service Sep Date or OEIUUF to date 110 ; DGYRS = 3 years from NDAA or 1/27/2011 111 ; = 5 years from SSD or Enrollment App Date 112 ;determine how many years extra CV eligibility to give 113 N DGCIEN,DGCUTOFF,DGENRDT,DGPIEN,DGPRI,DGQT,DGSTAT 114 ;determine if veteran has an enrollment record prior 115 ;to 1/28/2008 (the NDAA date) and no CV End Date for 116 ;this enrollment 117 S DGYRS=5 118 S (DGPRI,DGQT)=0 119 S DGCUTOFF=3030128 120 S DGCIEN=$$FINDCUR^DGENA(DFN) 121 I $G(DGCIEN),($D(^DGEN(27.11,DGCIEN,0)))]"" D 122 . S DGENRDT=$$GET1^DIQ(27.11,DGCIEN_",",75.01,"I") Q:$G(DGENRDT)']"" 123 . I $P(DGENRDT,".",1)<DGNDAA S DGPRI=1 Q 124 . I DGENRDT'<DGNDAA D 125 . . S DGPIEN=DGCIEN 126 . . F S DGPIEN=$$FINDPRI^DGENA(DGPIEN) Q:'DGPIEN D Q:DGQT 127 . . . S DGENRDT=$$GET1^DIQ(27.11,DGPIEN_",",75.01,"I") 128 . . . Q:$G(DGENRDT)']"" 129 . . . I $P(DGENRDT,".",1)<DGNDAA S (DGPRI,DGQT)=1 130 ;if DGPRI=1, then there is an enrollment prior to 1/28/08 131 I DGPRI=1 D Q 132 . I $G(DGCIEN)]"" S DGSTAT=$$GET1^DIQ(27.11,DGCIEN_",",.04,"E") 133 . I $G(DGSTAT)["INITIAL APPLICATION BY VAMC"!($G(DGSTAT)["BELOW ENROLLMENT GROUP THRESHOLD") D 134 . . I DGSRV<DGCUTOFF S DGYRS=3 135 ; 136 ;if no enrollment prior to 1/28/08 (DGPRI=0) check service date 137 ;against cutoff date - 1/28/03 138 I DGSRV<DGCUTOFF S DGYRS=3 139 Q 140 ; 141 CVEDT(DFN,DGDT) ;Provide Combat Vet Eligibility End Date, if eligible 142 ;Supported DBIA #4156 143 ;Input: DFN - Patient file IEN 144 ; DGDT - Treatment date (optional), 145 ; DT is default 146 ;Output :RESULT=(1,0,-1)^End Date (if populated, otherwise null)^CV 147 ; Eligible on DGDT(1,0)^is patient eligible on input date? 148 ; (piece 1) 1 - qualifies as a CV 149 ; 0 - does not qualify as a CV 150 ; -1 - bad DFN or date 151 ; (piece 3) 1 - vet was eligible on date specified (or DT) 152 ; 0 - vet was not eligible on date specified (or DT) 153 ; 154 N RESULT 155 S RESULT="" 156 I $G(DFN)="" Q -1 157 I '$D(^DPT(DFN)) Q -1 158 ;if time sent in, drop time 159 I $G(DGDT)']"" S DGDT=DT 160 I DGDT?7N1"."1.6N S DGDT=$E(DGDT,1,7) 161 I DGDT'?7N Q -1 162 S RESULT=$$GET1^DIQ(2,DFN_",",.5295,"I") 163 I $G(RESULT)']"" Q 0 164 S RESULT=$S(DGDT'>RESULT:RESULT_"^1",1:RESULT_"^0") ; if treatment date is earlier or equal to end date, veteran is eligible 165 S RESULT=$S($G(RESULT):1_"^"_RESULT,1:0) 166 Q RESULT 167 ; 168 PARSE ;GETS^DIQ called in CVELIG - in this subroutine stuff results into array 169 S DGSRV=$G(DGARR(2,DFN_",",.327,"I")) 170 S DGCOM=$G(DGARR(2,DFN_",",.5294,"I")) ;Combat To Date 171 S DGGULF=$G(DGARR(2,DFN_",",.322012,"I")) ;Persian Gulf To Date 172 S DGSOM=$G(DGARR(2,DFN_",",.322018,"I")) ;Somalia To Date 173 S DGYUG=$G(DGARR(2,DFN_",",.322021,"I")) ;Yugoslavia To Date 174 S DGCVDT=$G(DGARR(2,DFN_",",.5295,"I")) ;CV End Date 175 ; get last OIF/OEF/UNKNOWN OEF/OIF episode from multiple 176 S DGOEIF=$P($$LAST^DGENOEIF(DFN),U) 177 Q 178 ; 179 CHKSSD(DFN) ;check the Serv Sep Date [Last] 180 ; DGSRV=last SSD 181 ; Output - RESULT 182 ; 1 - Date is present and after 11/11/1998 183 ; 0 - Date is present but before 11/11/1998 184 ; A - Date is imprecise & either is or potentially is after 11/11/98 185 ; F - Date is missing 186 N DG1 187 I $G(DGSRV)']"" Q "F" 188 S DG1=$$CHKDATE(DGSRV,0) 189 I $G(DG1)']"" S DG1=0 190 Q DG1 191 ; 192 CHKREST(DGDATE,SSD) ; 193 ; SSD = optional, = to the last serv sep date 194 N DG3,DG4,DGDT,DGFLG,DGLEN,DGQ,DGR,DGRES,DGX 195 S (DG3,DG4,DGR,DGRES)="" 196 S DGQ=0 ;loop terminator 197 S DGFLG=0 ;flag to indicate that one of the dates is missing (no 198 ; need to check this for OIF/OEF/UNKNOWN OEF/OIF since 199 ; by definition, these must always be post 11/11/98) 200 F DGX=1:1:5 D 201 . S DGDT=$P(DGDATE,U,DGX) D 202 . . I DGX'=5,$G(DGDT)']"" S DGFLG=1 203 . . S DG4=$$CHKDATE(DGDT,DGX,$G(SSD)) 204 . . I $G(DG4)'=0 S DG3=$G(DG3)_$G(DG4) 205 S DGLEN=$L(DG3) 206 S DGQ=0 207 F DGX=1:1:DGLEN S DGCHAR=$E(DG3,DGX) D Q:DGQ=1 208 . I DGCHAR=1 S DG3=DGCHAR,DGQ=1 Q 209 . I "BCDE"[DGCHAR S DGR=DGR_DGCHAR,DGQ=2 210 I DGQ=1 Q 1 211 I DGQ=2 Q $E(DGR) 212 I DGFLG=1 S DGRES=$$MISS(DFN,DGLEN,DG3) 213 Q DGRES 214 ; 215 MISS(DFN,DGLEN,DGRES) ;there is at least one missing date, and in order to 216 ;return a RESULT of a missing date, need to check to see if the 217 ;corresponding indicator field is set to 'YES' 218 N DGARR,DGCHAR,DGERR,DGQ,DGR,DGX 219 N DGCIND,DGPGIND,DGSIND,DGYIND 220 S (DGCHAR,DGQ,DGR)=0 221 D GETS^DIQ(2,DFN_",",".32201;.322019;.322016;.5291","I","DGARR","DGERR") 222 S DGCIND=$G(DGARR(2,DFN_",",.5291,"I")) ;Combat Service Indicated 223 S DGYIND=$G(DGARR(2,DFN_",",.322019,"I")) ;Yugo service indicated 224 S DGSIND=$G(DGARR(2,DFN_",",.322016,"I")) ;Somalia service indicated 225 S DGPGIND=$G(DGARR(2,DFN_",",.32201,"I")) ;Pers Gulf service indicated 226 F DGX=1:1:DGLEN S DGCHAR=$E(DGRES,DGX) D Q:DGQ=1 227 . I DGCHAR="G",($G(DGCIND)="Y") S DGR="G",DGQ=1 Q 228 . I DGCHAR="H",($G(DGYIND)="Y") S DGR="H",DGQ=1 Q 229 . I DGCHAR="I",($G(DGSIND)="Y") S DGR="I",DGQ=1 Q 230 . I DGCHAR="J",($G(DGPGIND)="Y") S DGR="J" 231 Q DGR 232 DELCV(DFN) ;called by the Kill logic of the ACVCOM cross reference 233 ;if $$CVELIG^DGCV returns a 0 the CV End Date should be deleted 234 ;because this would indicate that fields have been changed and 235 ;CV eligibility is no longer appropriate 236 ; 237 N DGCV,DGFDA 238 K DGCVFLG 239 S DGCVFLG=0 240 I $G(DFN)']"" Q 241 I '$D(^DPT(DFN)) Q 242 S DGCV=$$GET1^DIQ(2,DFN_",",.5295,"I") 243 I $G(DGCV)']"" Q 244 S DGCVFLG=1 245 S DGFDA(2,DFN_",",.5295)="@" 246 D FILE^DIE(,"DGFDA") 247 Q 1 DGCV ;ALB/DW,ERC,BRM,TMK - COMBAT VET ELIGIBILTY; 10/15/05 2 ;;5.3;Registration;**528,576,564,673**; Aug 13, 1993 3 ; 4 CVELIG(DFN) ; 5 ;API will determine whether or not this vetearn needs to have CV End 6 ;Date set. If this determination cannot be done due to imprecise 7 ;or missing dates, it returns which dates need editing. 8 ;Input: 9 ; DFN - Patient file IEN 10 ;Output 11 ; RESULT 12 ; 0 - CV End Date should not be updated 13 ; 1 - CV End Date should be updated 14 ; If critical dates are imprecise return the following 15 ; A - CV End Date should not be updated, imprecise Service Sep date 16 ; B - CV End Date should not be updated, imprecise Combat To date 17 ; C - CV End Date should not be updated, imprecise Yugoslavia To date 18 ; D - CV End Date should not be updated, imprecise Somalia To date 19 ; E - CV End Date should not be updated, imprecise Pers Gulf To date 20 ; If the Service Sep Date is missing, and there are no OEF/OIF/UNKNOWN 21 ; OEF/OIF records on file, return the following so that it will 22 ; appear on the Imprecise/Missing Date Report 23 ; F - missing Service Sep Date & no OEF OIF or OEF/OIF Unknown dates 24 ; If critical dates are missing but the corresponding indicator fields 25 ; are set to 'YES' return the following 26 ; G - missing Combat To Date, but Combat Indicated? = 'Yes' 27 ; H - missing PG To Date, but PG Indicated? = 'Yes' 28 ; I - missing Somalia To Date, but Somalia Indicator = 'Yes' 29 ; J - missing Yugoslavia To Date, but Yugoslavia Indicator = 'Yes' 30 ; 31 N DG1,DG2,I,RESULT 32 N DGCOM,DGCVDT,DGCVFLG,DGGULF,DGSOM,DGSRV,DGYUG,DGOEIF 33 S (DG1,DG2,RESULT)=0 34 I $G(DFN)']"" Q RESULT 35 I '$D(^DPT(DFN)) Q RESULT 36 ; 37 ;get combat related data from top-level VistA fields 38 N DGARR,DGERR 39 D GETS^DIQ(2,DFN_",",".327;.322012;.322018;.322021;.5294;.5295","I","DGARR","DGERR") 40 D PARSE 41 ; 42 S DG1=$$CHKSSD(DFN) ;check SSD for imprecise or missing 43 S DGDATE=$G(DGCOM)_"^"_$G(DGYUG)_"^"_$G(DGSOM)_"^"_$G(DGGULF)_"^"_$G(DGOEIF) 44 ; 45 I $S(DG1="F":1,1:$P(DGDATE,U,5)>$G(DGSRV)) D 46 . ; Use OIF/OEF/UNKNOWN OEF/OIF to dt only when SSD missing or SSD less 47 . ; than OIF/OEF/UNKNOWN OEF/OIF to dt 48 . N DGSRV,Z 49 . S DGSRV=$P(DGDATE,U,5),Z=$$CHKSSD(DFN) 50 . I Z=1 S DG1=Z 51 ; 52 S DG2=$$CHKREST(DGDATE,$G(DGSRV)) ;check other "TO" dates for imprecise, missing or invalid 53 S RESULT=$$RES(DG1,$G(DG2)) 54 Q RESULT 55 ; 56 RES(DG1,DG2) ;determine the final RESULT code from DG1 & DG2 57 ;if SSD evaluates to earlier than 11/11/98, can't set CV End Date 58 I DG1=0!($G(DG2)=0) Q 0 59 ;if SSD is 1 60 I DG1=1,($G(DG2)=1!($G(DG2)']"")) Q 1 61 I DG1=1,($G(DG2)=0) Q 0 62 I DG1=1 Q DG2 63 ;if SSD is imprecise or missing 64 I DG1'=1,($G(DG2)=1) S DG2="" 65 Q DG1_DG2 66 ; 67 CHKDATE(DGDATE,I,SSD) ;check to see if date is imprecise or missing 68 ;if imprecise check to see if the imprecision prevents CV evaluation 69 ;if not imprecise check to see if after 11/11/98 70 ; Note that SSD doesn't appear to ever be used here (TMK) 71 N RES 72 S RES=0 73 I $G(DGDATE)']"",I'=5 D Q RES 74 . S RES=$S(I=0:"F",I=1:"G",I=2:"H",I=3:"I",I=4:"J",1:"") 75 I $E(DGDATE,6,7)="00" D 76 . I I=0 I DGDATE>2981111 S RES="A" Q 77 . I DGDATE=2980000!(DGDATE=2981100) D Q 78 .. ; Note OIF/OEF/UNKNOWN OEF/OIF will not get here as these dates by 79 .. ; definition are after 11/11/98 80 . . S RES=$S(I=0:"A",I=1:"B",I=2:"C",I=3:"D",I=4:"E",1:"") 81 Q:RES="A" RES 82 I DGDATE>2981111 S RES=1 83 Q RES 84 ; 85 SETCV(DFN,DGSRV) ;calculate CV end date 86 K DGCVEDT 87 N DGFDA 88 I $G(DFN)']""!($G(DGSRV)']"") Q 89 I '$D(^DPT(DFN)) Q 90 S DGCVEDT=$P($$SCH^XLFDT("24M",DGSRV),".") 91 I DGCVEDT=$G(DGCVDT) Q 92 I $$GET1^DIQ(2,DFN_",",.5295,"I") Q 93 S DGFDA(2,DFN_",",.5295)=DGCVEDT 94 D FILE^DIE(,"DGFDA") 95 Q 96 ; 97 CVEDT(DFN,DGDT) ;Provide Combat Vet Eligibility End Date, if eligible 98 ;Supported DBIA #4156 99 ;Input: DFN - Patient file IEN 100 ; DGDT - Treatment date (optional), 101 ; DT is default 102 ;Output :RESULT=(1,0,-1)^End Date (if populated, otherwise null)^CV 103 ; Eligible on DGDT(1,0)^is patient eligible on input date? 104 ; (piece 1) 1 - qualifies as a CV 105 ; 0 - does not qualify as a CV 106 ; -1 - bad DFN or date 107 ; (piece 3) 1 - vet was eligible on date specified (or DT) 108 ; 0 - vet was not eligible on date specified (or DT) 109 ; 110 N RESULT 111 S RESULT="" 112 I $G(DFN)="" Q -1 113 I '$D(^DPT(DFN)) Q -1 114 ;if time sent in, drop time 115 I $G(DGDT)']"" S DGDT=DT 116 I DGDT?7N1"."1.6N S DGDT=$E(DGDT,1,7) 117 I DGDT'?7N Q -1 118 S RESULT=$$GET1^DIQ(2,DFN_",",.5295,"I") 119 I $G(RESULT)']"" Q 0 120 S RESULT=$S(DGDT'>RESULT:RESULT_"^1",1:RESULT_"^0") ; if treatment date is earlier or equal to end date, veteran is eligible 121 S RESULT=$S($G(RESULT):1_"^"_RESULT,1:0) 122 Q RESULT 123 ; 124 PARSE ;GETS^DIQ called in CVELIG - in this subroutine stuff results into array 125 S DGSRV=$G(DGARR(2,DFN_",",.327,"I")) 126 S DGCOM=$G(DGARR(2,DFN_",",.5294,"I")) ;Combat To Date 127 S DGGULF=$G(DGARR(2,DFN_",",.322012,"I")) ;Persian Gulf To Date 128 S DGSOM=$G(DGARR(2,DFN_",",.322018,"I")) ;Somalia To Date 129 S DGYUG=$G(DGARR(2,DFN_",",.322021,"I")) ;Yugoslavia To Date 130 S DGCVDT=$G(DGARR(2,DFN_",",.5295,"I")) ;CV End Date 131 ; get last OIF/OEF/UNKNOWN OEF/OIF episode from multiple 132 S DGOEIF=$P($$LAST^DGENOEIF(DFN),U) 133 Q 134 ; 135 CHKSSD(DFN) ;check the Serv Sep Date [Last] 136 ; DGSRV=last SSD 137 ; Output - RESULT 138 ; 1 - Date is present and after 11/11/1998 139 ; 0 - Date is present but before 11/11/1998 140 ; A - Date is imprecise & either is or potentially is after 11/11/98 141 ; F - Date is missing 142 N DG1 143 I $G(DGSRV)']"" Q "F" 144 S DG1=$$CHKDATE(DGSRV,0) 145 I $G(DG1)']"" S DG1=0 146 Q DG1 147 ; 148 CHKREST(DGDATE,SSD) ; 149 ; SSD = optional, = to the last serv sep date 150 N DG3,DG4,DGDT,DGFLG,DGLEN,DGQ,DGR,DGRES,DGX 151 S (DG3,DG4,DGR,DGRES)="" 152 S DGQ=0 ;loop terminator 153 S DGFLG=0 ;flag to indicate that one of the dates is missing (no 154 ; need to check this for OIF/OEF/UNKNOWN OEF/OIF since 155 ; by definition, these must always be post 11/11/98) 156 F DGX=1:1:5 D 157 . S DGDT=$P(DGDATE,U,DGX) D 158 . . I DGX'=5,$G(DGDT)']"" S DGFLG=1 159 . . S DG4=$$CHKDATE(DGDT,DGX,$G(SSD)) 160 . . I $G(DG4)'=0 S DG3=$G(DG3)_$G(DG4) 161 S DGLEN=$L(DG3) 162 S DGQ=0 163 F DGX=1:1:DGLEN S DGCHAR=$E(DG3,DGX) D Q:DGQ=1 164 . I DGCHAR=1 S DG3=DGCHAR,DGQ=1 Q 165 . I "BCDE"[DGCHAR S DGR=DGR_DGCHAR,DGQ=2 166 I DGQ=1 Q 1 167 I DGQ=2 Q $E(DGR) 168 I DGFLG=1 S DGRES=$$MISS(DFN,DGLEN,DG3) 169 Q DGRES 170 ; 171 MISS(DFN,DGLEN,DGRES) ;there is at least one missing date, and in order to 172 ;return a RESULT of a missing date, need to check to see if the 173 ;corresponding indicator field is set to 'YES' 174 N DGARR,DGCHAR,DGERR,DGQ,DGR,DGX 175 N DGCIND,DGPGIND,DGSIND,DGYIND 176 S (DGCHAR,DGQ,DGR)=0 177 D GETS^DIQ(2,DFN_",",".32201;.322019;.322016;.5291","I","DGARR","DGERR") 178 S DGCIND=$G(DGARR(2,DFN_",",.5291,"I")) ;Combat Service Indicated 179 S DGYIND=$G(DGARR(2,DFN_",",.322019,"I")) ;Yugo service indicated 180 S DGSIND=$G(DGARR(2,DFN_",",.322016,"I")) ;Somalia service indicated 181 S DGPGIND=$G(DGARR(2,DFN_",",.32201,"I")) ;Pers Gulf service indicated 182 F DGX=1:1:DGLEN S DGCHAR=$E(DGRES,DGX) D Q:DGQ=1 183 . I DGCHAR="G",($G(DGCIND)="Y") S DGR="G",DGQ=1 Q 184 . I DGCHAR="H",($G(DGYIND)="Y") S DGR="H",DGQ=1 Q 185 . I DGCHAR="I",($G(DGSIND)="Y") S DGR="I",DGQ=1 Q 186 . I DGCHAR="J",($G(DGPGIND)="Y") S DGR="J" 187 Q DGR 188 DELCV(DFN) ;called by the Kill logic of the ACVCOM cross reference 189 ;if $$CVELIG^DGCV returns a 0 the CV End Date should be deleted 190 ;because this would indicate that fields have been changed and 191 ;CV eligibility is no longer appropriate 192 ; 193 N DGCV,DGFDA 194 K DGCVFLG 195 S DGCVFLG=0 196 I $G(DFN)']"" Q 197 I '$D(^DPT(DFN)) Q 198 S DGCV=$$GET1^DIQ(2,DFN_",",.5295,"I") 199 I $G(DGCV)']"" Q 200 S DGCVFLG=1 201 S DGFDA(2,DFN_",",.5295)="@" 202 D FILE^DIE(,"DGFDA") 203 Q
Note:
See TracChangeset
for help on using the changeset viewer.