[613] | 1 | DGENEGT ;ALB/KCL/RGL - Enrollment Group Threshold API's ; 11/20/03 3:39pm
|
---|
| 2 | ;;5.3;Registration;**232,451**;Aug 13, 1993
|
---|
| 3 | ;
|
---|
| 4 | ;
|
---|
| 5 | LOCK(IEN) ;
|
---|
| 6 | ; Description: Used to lock the ENROLLMENT GROUP THRESHOLD record.
|
---|
| 7 | ;
|
---|
| 8 | ; Input:
|
---|
| 9 | ; IEN - internal entry number of record in the ENROLLMENT GROUP TRHESHOLD file
|
---|
| 10 | ;
|
---|
| 11 | ; Output:
|
---|
| 12 | ; Function Value: Returns 1 if the ENROLLMENT GROUP THRESHOLD record
|
---|
| 13 | ; can be locked, otherwise returns 0 on failure
|
---|
| 14 | ;
|
---|
| 15 | I $G(IEN) L +^DGEN(27.16,IEN,0):2
|
---|
| 16 | Q $T
|
---|
| 17 | ;
|
---|
| 18 | ;
|
---|
| 19 | UNLOCK(IEN) ;
|
---|
| 20 | ; Description: Used to unlock the ENROLLMENT GROUP THRESHOLD record.
|
---|
| 21 | ;
|
---|
| 22 | ; Input:
|
---|
| 23 | ; IEN - internal entry number of record in the ENROLLMENT GROUP TRHESHOLD file
|
---|
| 24 | ;
|
---|
| 25 | ; Output:
|
---|
| 26 | ; None
|
---|
| 27 | ;
|
---|
| 28 | I $G(IEN) L -^DGEN(27.16,IEN,0)
|
---|
| 29 | Q
|
---|
| 30 | ;
|
---|
| 31 | ;
|
---|
| 32 | FINDCUR(ENRDT) ;
|
---|
| 33 | ; Description: Used to find a record in the ENROLLMENT GROUP THRESHOLD file.
|
---|
| 34 | ;
|
---|
| 35 | ; Input: Enrollment Date (optional - if not specified, today is assumed)
|
---|
| 36 | ;
|
---|
| 37 | ; Output:
|
---|
| 38 | ; Function Value: If successful, returns internal entry number of
|
---|
| 39 | ; record in the ENROLLMENT GROUP THRESHOLD file,
|
---|
| 40 | ; otherwise returns 0 on failure
|
---|
| 41 | ;
|
---|
| 42 | N DGEGTDT,STOP,DGEGTIEN,DGEGTF
|
---|
| 43 | S DGEGTDT=$G(ENRDT)+.000001,STOP=0,DGEGTIEN=""
|
---|
| 44 | S:'$G(ENRDT) DGEGTDT=$$DT^XLFDT+DGEGTDT
|
---|
| 45 | F S DGEGTDT=$O(^DGEN(27.16,"B",DGEGTDT),-1) Q:STOP!(DGEGTDT="") D
|
---|
| 46 | .F S DGEGTIEN=$O(^(DGEGTDT,DGEGTIEN),-1) Q:DGEGTIEN=""!STOP D
|
---|
| 47 | ..S:'$P($G(^DGEN(27.16,+DGEGTIEN,0)),"^",8) STOP=DGEGTIEN
|
---|
| 48 | S DGEGTF=1
|
---|
| 49 | I $G(ENRDT),ENRDT'>DT,$$INACT(STOP) ;inactivate old EGT settings
|
---|
| 50 | Q +STOP
|
---|
| 51 | ;
|
---|
| 52 | ;
|
---|
| 53 | GET(EGTIEN,DGEGT) ;
|
---|
| 54 | ; Description: Used to obtain a record in the ENROLLMENT GROUP THRESHOLD file. The values will be returned in the DGEGT() array.
|
---|
| 55 | ;
|
---|
| 56 | ; Input:
|
---|
| 57 | ; EGTIEN - internal entry number of record in the ENROLLMENT GROUP THRESHOLD file
|
---|
| 58 | ;
|
---|
| 59 | ; Output:
|
---|
| 60 | ; DGEGT - The ENROLLMENT GROUP THRESHOLD array, passed by reference
|
---|
| 61 | ;
|
---|
| 62 | ; Subscript Field
|
---|
| 63 | ; --------- ---------------------
|
---|
| 64 | ; "EFFDATE" EGT EFFECTIVE DATE
|
---|
| 65 | ; "PRIORITY" EGT PRIORITY
|
---|
| 66 | ; "SUBGRP" EGT SUBGROUP
|
---|
| 67 | ; "TYPE" EGT TYPE
|
---|
| 68 | ; "FEDDATE" FEDERAL REGISTER DATE
|
---|
| 69 | ; "ENTDATE" DATE ENTERED
|
---|
| 70 | ; "SOURCE" SOURCE OF EGT
|
---|
| 71 | ; "REMARKS" REMARKS
|
---|
| 72 | ;
|
---|
| 73 | N SUB,NODE
|
---|
| 74 | K DGEGT S DGEGT=""
|
---|
| 75 | ;
|
---|
| 76 | I '$G(EGTIEN) D Q 0
|
---|
| 77 | .F SUB="EFFDATE","PRIORITY","SUBGRP","TYPE","FEDDATE","ENTDATE","SOURCE","REMARKS" S DGEGT(SUB)=""
|
---|
| 78 | ;
|
---|
| 79 | S NODE=$G(^DGEN(27.16,EGTIEN,0))
|
---|
| 80 | S DGEGT("EFFDATE")=$P(NODE,"^")
|
---|
| 81 | S DGEGT("PRIORITY")=$P(NODE,"^",2)
|
---|
| 82 | S DGEGT("SUBGRP")=$P(NODE,"^",3)
|
---|
| 83 | S DGEGT("TYPE")=$P(NODE,"^",4)
|
---|
| 84 | S DGEGT("FEDDATE")=$P(NODE,"^",5)
|
---|
| 85 | S DGEGT("ENTDATE")=$P(NODE,"^",6)
|
---|
| 86 | S DGEGT("SOURCE")=$P(NODE,"^",7)
|
---|
| 87 | S NODE=$G(^DGEN(27.16,EGTIEN,"R"))
|
---|
| 88 | S DGEGT("REMARKS")=$P(NODE,"^")
|
---|
| 89 | ;
|
---|
| 90 | Q 1
|
---|
| 91 | ;
|
---|
| 92 | ;
|
---|
| 93 | STORE(DGEGT,ERROR,CHKFLG) ;
|
---|
| 94 | ; Description: Creates a new entry in the ENROLLMENT GROUP THRESHOLD file.
|
---|
| 95 | ;
|
---|
| 96 | ; Input:
|
---|
| 97 | ; DGEGT - the ENROLLMENT GROUP THRESHOLD array, passed by reference
|
---|
| 98 | ; CHKFLG - a flag, if set to 1 means that field validation checks
|
---|
| 99 | ; were completed, 0 indicates field validation checks should
|
---|
| 100 | ; be performed (optional)
|
---|
| 101 | ;
|
---|
| 102 | ; Output:
|
---|
| 103 | ; Function Value - Returns internal entry number of record created, or 0 on failure
|
---|
| 104 | ; ERROR - if not successful, an error message is returned,
|
---|
| 105 | ; pass by reference (optional)
|
---|
| 106 | ;
|
---|
| 107 | ;
|
---|
| 108 | S ERROR=""
|
---|
| 109 | I $G(CHKFLG)'=1 Q:'$$VALID(.DGEGT,.ERROR) 0
|
---|
| 110 | ;
|
---|
| 111 | N ADD,DATA,OLDEGT,INACT
|
---|
| 112 | S OLDEGT=$$FINDCUR()
|
---|
| 113 | S DATA(.01)=DGEGT("EFFDATE")
|
---|
| 114 | S DATA(.02)=DGEGT("PRIORITY")
|
---|
| 115 | S DATA(.03)=DGEGT("SUBGRP")
|
---|
| 116 | S DATA(.04)=DGEGT("TYPE")
|
---|
| 117 | S DATA(.05)=DGEGT("FEDDATE")
|
---|
| 118 | S DATA(.06)=DGEGT("ENTDATE")
|
---|
| 119 | S DATA(.07)=DGEGT("SOURCE")
|
---|
| 120 | S DATA(25)=DGEGT("REMARKS")
|
---|
| 121 | S ADD=$$ADD^DGENDBS(27.16,,.DATA,.ERROR)
|
---|
| 122 | ;
|
---|
| 123 | ; inactivate "old" EGT settings
|
---|
| 124 | S INACT=$$INACT(ADD,.OLDEGT,.DGEGT)
|
---|
| 125 | ;
|
---|
| 126 | Q +ADD
|
---|
| 127 | ;
|
---|
| 128 | ;
|
---|
| 129 | UPDATE(EGTIEN,DGEGT,ERROR) ;
|
---|
| 130 | ; Description: Updates an Enrollment Group Threshold record in the
|
---|
| 131 | ; ENROLLMENT GROUP THRESHOLD file. This function locks the Enrollment
|
---|
| 132 | ; Group Threshold record and releases the lock when the update is
|
---|
| 133 | ; complete.
|
---|
| 134 | ;
|
---|
| 135 | ; Input:
|
---|
| 136 | ; EGTIEN - internal entry number of record in the ENROLLMENT GROUP THRESHOLD file
|
---|
| 137 | ; DGEGT - the ENROLLMENT GROUP THRESHOLD array, passed by reference
|
---|
| 138 | ;
|
---|
| 139 | ; Output:
|
---|
| 140 | ; Function Value - Returns 1 if successful, otherwise 0
|
---|
| 141 | ; ERROR - if not successful, an error message is returned,
|
---|
| 142 | ; pass by reference
|
---|
| 143 | ;
|
---|
| 144 | N SUCCESS,DATA
|
---|
| 145 | S SUCCESS=1
|
---|
| 146 | S ERROR=""
|
---|
| 147 | ;
|
---|
| 148 | D ; drops out of do block if invalid condition is found
|
---|
| 149 | .I $G(EGTIEN),$D(^DGEN(27.16,EGTIEN,0))
|
---|
| 150 | .E S SUCCESS=0,ERROR="ENROLLMENT GROUP THRESHOLD RECORD NOT FOUND" Q
|
---|
| 151 | .I '$$LOCK(EGTIEN) S SUCCESS=0,ERROR="ENROLLMENT GROUP THRESHOLD RECORD IS LOCKED, CAN'T BE EDITED" Q
|
---|
| 152 | .;
|
---|
| 153 | .S DATA(.01)=DGEGT("EFFDATE")
|
---|
| 154 | .S DATA(.02)=DGEGT("PRIORITY")
|
---|
| 155 | .S DATA(.03)=DGEGT("SUBGRP")
|
---|
| 156 | .S DATA(.04)=DGEGT("TYPE")
|
---|
| 157 | .S DATA(.05)=DGEGT("FEDDATE")
|
---|
| 158 | .S DATA(.06)=DGEGT("ENTDATE")
|
---|
| 159 | .S DATA(.07)=DGEGT("SOURCE")
|
---|
| 160 | .S DATA(25)=DGEGT("REMARKS")
|
---|
| 161 | .;
|
---|
| 162 | .I '$$UPD^DGENDBS(27.16,EGTIEN,.DATA) S ERROR="FILEMAN UNABLE TO PERFORM UPDATE",SUCCESS=0 Q
|
---|
| 163 | ;
|
---|
| 164 | D UNLOCK(EGTIEN)
|
---|
| 165 | ;
|
---|
| 166 | Q SUCCESS
|
---|
| 167 | ;
|
---|
| 168 | ;
|
---|
| 169 | DELETE(EGTIEN) ; Description: This function will delete a record in the ENROLLMENT GROUP THRESHOLD file.
|
---|
| 170 | ;
|
---|
| 171 | ; Input:
|
---|
| 172 | ; EGTIEN - as internal entry number of record to delete
|
---|
| 173 | ;
|
---|
| 174 | ; Outpu:
|
---|
| 175 | ; Function Value - Returns 1 if successful, otherwise 0
|
---|
| 176 | ;
|
---|
| 177 | Q:'$G(EGTIEN) 0
|
---|
| 178 | N DIK,DA
|
---|
| 179 | S DIK="^DGEN(27.16,"
|
---|
| 180 | S DA=EGTIEN
|
---|
| 181 | D ^DIK
|
---|
| 182 | Q 1
|
---|
| 183 | ;
|
---|
| 184 | ;
|
---|
| 185 | VALID(DGEGT,ERROR) ;
|
---|
| 186 | ; Description: Performs validation checks on ENROLLMENT GROUP THRESHOLD record contained in the DGEGT array.
|
---|
| 187 | ;
|
---|
| 188 | ; Input:
|
---|
| 189 | ; DGEGT - the ENROLLMENT GROUP THRESHOLD array, passed by reference
|
---|
| 190 | ;
|
---|
| 191 | ; Output:
|
---|
| 192 | ; Function Value - Returns 1 if validation checks passed, 0 otherwise
|
---|
| 193 | ; ERROR - if validation checks fail, an error message is
|
---|
| 194 | ; returned, pass by reference
|
---|
| 195 | ;
|
---|
| 196 | N VALID,EXTERNAL,RESULT
|
---|
| 197 | S VALID=1
|
---|
| 198 | S ERROR=""
|
---|
| 199 | ;
|
---|
| 200 | D ; drops out of DO block if an invalid condition found
|
---|
| 201 | .;
|
---|
| 202 | .; check for required fields
|
---|
| 203 | .I $G(DGEGT("EFFDATE"))="" S VALID=0,ERROR="REQUIRED FIELD 'EGT EFFECTIVE DATE' MISSING" Q
|
---|
| 204 | .I $G(DGEGT("PRIORITY"))="" S VALID=0,ERROR="REQUIRED FIELD 'EGT PRIORITY' MISSING" Q
|
---|
| 205 | .I $G(DGEGT("TYPE"))="" S VALID=0,ERROR="REQUIRED FIELD 'EGT TYPE' MISSING" Q
|
---|
| 206 | .I $G(DGEGT("ENTDATE"))="" S VALID=0,ERROR="REQUIRED FIELD 'DATE ENTERED' MISSING" Q
|
---|
| 207 | .I $G(DGEGT("SOURCE"))="" S VALID=0,ERROR="REQUIRED FIELD 'SOURCE OF EGT' MISSING" Q
|
---|
| 208 | .;
|
---|
| 209 | .; check if field values are valid
|
---|
| 210 | .I '$$TESTVAL("EFFDATE",DGEGT("EFFDATE")) S VALID=0,ERROR="'EGT EFFECTIVE DATE' NOT VALID" Q
|
---|
| 211 | .I '$$TESTVAL("PRIORITY",DGEGT("PRIORITY")) S VALID=0,ERROR="'EGT PRIORITY' NOT VALID" Q
|
---|
| 212 | .I '$$TESTVAL("SUBGRP",DGEGT("SUBGRP")) S VALID=0,ERROR="'EGT SUBGRP' NOT VALID" Q
|
---|
| 213 | .I '$$TESTVAL("TYPE",DGEGT("TYPE")) S VALID=0,ERROR="'EGT TYPE' NOT VALID" Q
|
---|
| 214 | .I '$$TESTVAL("FEDDATE",DGEGT("FEDDATE")) S VALID=0,ERROR="'FEDERAL REGISTER DATE' NOT VALID" Q
|
---|
| 215 | .I '$$TESTVAL("ENTDATE",DGEGT("ENTDATE")) S VALID=0,ERROR="'DATE ENTERED' NOT VALID" Q
|
---|
| 216 | .I '$$TESTVAL("SOURCE",DGEGT("SOURCE")) S VALID=0,ERROR="'SOURCE OF EGT' NOT VALID" Q
|
---|
| 217 | .I ($G(DGEGT("REMARKS"))'="")&($L($G(DGEGT("REMARKS")))<3)!($L($G(DGEGT("REMARKS")))>80) S VALID=0,ERROR="'REMARKS' NOT VALID" Q
|
---|
| 218 | ;
|
---|
| 219 | Q VALID
|
---|
| 220 | ;
|
---|
| 221 | ;
|
---|
| 222 | TESTVAL(SUB,VAL) ; Description: Used to determine if a field value is valid.
|
---|
| 223 | ;
|
---|
| 224 | ; Input:
|
---|
| 225 | ; SUB - as the field subscript
|
---|
| 226 | ; VAL - as the field value
|
---|
| 227 | ;
|
---|
| 228 | ; Output:
|
---|
| 229 | ; Function value: Returns 1 if the field value (VAL) is valid for
|
---|
| 230 | ; the subscript (SUB), returns 0 otherwise.
|
---|
| 231 | ;
|
---|
| 232 | N DISPLAY,FIELD,RESULT,VALID
|
---|
| 233 | ;
|
---|
| 234 | S VALID=1
|
---|
| 235 | ;
|
---|
| 236 | I (VAL'="") D
|
---|
| 237 | .S FIELD=$$FIELD(SUB)
|
---|
| 238 | .; if there is no external value then not valid
|
---|
| 239 | .S DISPLAY=$$EXTERNAL^DILFD(27.16,FIELD,"F",VAL)
|
---|
| 240 | .I (DISPLAY="") S VALID=0 Q
|
---|
| 241 | .I $$GET1^DID(27.16,FIELD,"","TYPE")'="POINTER" D
|
---|
| 242 | ..D CHK^DIE(27.16,FIELD,,VAL,.RESULT) I RESULT="^" S VALID=0 Q
|
---|
| 243 | ;
|
---|
| 244 | Q VALID
|
---|
| 245 | ;
|
---|
| 246 | ;
|
---|
| 247 | FIELD(SUB) ; Description: Used to determine the field number for a given subscript in the EGT array.
|
---|
| 248 | ;
|
---|
| 249 | ; Input:
|
---|
| 250 | ; SUB - as the field subscript
|
---|
| 251 | ;
|
---|
| 252 | ; Output:
|
---|
| 253 | ; Function value: Returns the field number for the given subscript,
|
---|
| 254 | ; otherwise null is returned.
|
---|
| 255 | ;
|
---|
| 256 | ;
|
---|
| 257 | N FLD
|
---|
| 258 | S FLD=""
|
---|
| 259 | ;
|
---|
| 260 | D ; drops out of DO block once SUB is determined
|
---|
| 261 | .I SUB="EFFDATE" S FLD=.01 Q
|
---|
| 262 | .I SUB="PRIORITY" S FLD=.02 Q
|
---|
| 263 | .I SUB="SUBGRP" S FLD=.03 Q
|
---|
| 264 | .I SUB="TYPE" S FLD=.04 Q
|
---|
| 265 | .I SUB="FEDDATE" S FLD=.05 Q
|
---|
| 266 | .I SUB="ENTDATE" S FLD=.06 Q
|
---|
| 267 | .I SUB="SOURCE" S FLD=.07 Q
|
---|
| 268 | .I SUB="REMARKS" S FLD=25 Q
|
---|
| 269 | ;
|
---|
| 270 | Q FLD
|
---|
| 271 | ;
|
---|
| 272 | INACT(EGTIEN,OLDIEN,DGEGT) ;inactivate EGT settings that are currently not in effect
|
---|
| 273 | ;
|
---|
| 274 | ; input: EGTIEN -Current EGT ien from 27.16
|
---|
| 275 | ; DGEGT (optional array) - Current EGT setting information
|
---|
| 276 | ; DGEGTF (optional) - do not inactivate future EGT
|
---|
| 277 | ;
|
---|
| 278 | Q:'$G(EGTIEN) 0
|
---|
| 279 | N EGTFDA,EGTDT,EGTREC,ERR
|
---|
| 280 | S:'$G(OLDIEN) OLDIEN=""
|
---|
| 281 | I '$D(DGEGT),'$$GET(EGTIEN,.DGEGT) Q 0
|
---|
| 282 | S:DGEGT("EFFDATE")>$$DT^XLFDT EGTF=1 ;future EGT setting
|
---|
| 283 | S EGTDT=""
|
---|
| 284 | F S EGTDT=$O(^DGEN(27.16,"B",EGTDT),-1) Q:'EGTDT D
|
---|
| 285 | .S EGTREC=""
|
---|
| 286 | .F S EGTREC=$O(^DGEN(27.16,"B",EGTDT,EGTREC),-1) Q:'EGTREC D
|
---|
| 287 | ..Q:EGTREC=EGTIEN ;new EGT setting
|
---|
| 288 | ..Q:$G(EGTF)&(EGTREC=OLDIEN)
|
---|
| 289 | ..I $P($G(^DGEN(27.16,EGTREC,0)),"^")>DT D Q
|
---|
| 290 | ...Q:$G(DGEGTF)
|
---|
| 291 | ...Q:$$DELETE(EGTREC)
|
---|
| 292 | ..S EGTFDA(27.16,EGTREC_",",.08)=1
|
---|
| 293 | D:$D(EGTFDA) UPDATE^DIE("","EGTFDA","","ERR")
|
---|
| 294 | Q 1
|
---|