DGENEGT1 ;ALB/KCL,ISA/KWP,LBD,RGL,BRM - Enrollment Group Threshold API's ; 7/28/04 12:54pm ;;5.3;Registration;**232,417,454,491,513,451,564,672,717**;Aug 13, 1993 ; ; NOTIFY(DGEGT,OLDEGT) ; ; Description: This is used to send a message to local mail group. ; The notification is used to communicate changes in the Enrollment ; Group Threshold (EGT) setting to users at the local site. ; ; Input: ; DGEGT - the new Enrollment Group Threshold array, passed by reference ; OLDEGT - the previous Enrollment Group Threshold array, passed by reference ; ; Output: None ; N TEXT,XMDUN,XMDUZ,XMTEXT,XMROU,XMSTRIP,XMSUB,XMY,XMZ,OLDPRI ; ; init subject and sender S XMSUB="Enrollment Group Threshold (EGT) Changed" S (XMDUN,XMDUZ)="Registration Enrollment Module" ; ; recipient S XMY("G.DGEN EGT UPDATES")="" ; ; get old EGT priority S OLDPRI=$G(OLDEGT("PRIORITY")) ; S XMTEXT="TEXT(" S TEXT(1)="The Secretary of the VA has officially changed the enrollment priority" S TEXT(2)="grouping of veterans who shall receive care. This change may place" S TEXT(3)="veterans under your facilities care into a 'Not Enrolled' category." S TEXT(4)="" S TEXT(5)="" S TEXT(6)=" Prior EGT Priority: "_$S($G(OLDPRI):$$EXTERNAL^DILFD(27.16,.02,"F",OLDPRI),1:"N/A")_$S($G(OLDEGT("SUBGRP")):$$EXTERNAL^DILFD(27.16,.03,"F",OLDEGT("SUBGRP")),1:"") S TEXT(7)="" S TEXT(8)="" S TEXT(9)=" New Enrollment Group Threshold (EGT) Settings:" S TEXT(10)="" S TEXT(11)=" EGT Priority: "_$$EXTERNAL^DILFD(27.16,.02,"F",DGEGT("PRIORITY"))_$S($G(DGEGT("SUBGRP")):$$EXTERNAL^DILFD(27.16,.03,"F",DGEGT("SUBGRP")),1:"") S TEXT(12)=" EGT Type: "_$$EXTERNAL^DILFD(27.16,.04,"F",DGEGT("TYPE")) S TEXT(13)=" EGT Effective Date: "_$$EXTERNAL^DILFD(27.16,.01,"F",DGEGT("EFFDATE")) ; ; mailman deliverey D ^XMD ; Q ; ; DISPLAY() ; ; Description: Display Enrollment Group Threshold (EGT) settings. ; N DGEGT ; W ! I '$$GET^DGENEGT($$FINDCUR^DGENEGT(),.DGEGT) W !,"Enrollment Group Threshold (EGT) settings not found." E D .W !,?3,"Enrollment Group Threshold (EGT) Settings" .W !,?3,"=========================================" .W ! .W !?5,"Date Entered",?25,": ",$S('$G(DGEGT("ENTERED")):"-none-",1:$$EXTERNAL^DILFD(27.16,.01,"F",DGEGT("ENTERED"))) .W !?5,"EGT Priority",?25,": ",$S('$G(DGEGT("PRIORITY")):"-none-",1:$$EXTERNAL^DILFD(27.16,.02,"F",DGEGT("PRIORITY")))_$S($G(DGEGT("SUBGRP"))="":"",1:$$EXTERNAL^DILFD(27.16,.03,"F",DGEGT("SUBGRP"))) .W !?5,"EGT Type",?25,": ",$S($G(DGEGT("TYPE"))="":"-none-",1:$$EXTERNAL^DILFD(27.16,.04,"F",DGEGT("TYPE"))) .W !?5,"EGT Effective Date",?25,": ",$S('$G(DGEGT("EFFDATE")):"-none-",1:$$EXTERNAL^DILFD(27.16,.05,"F",DGEGT("EFFDATE"))) ; Q ; ABOVE(DPTDFN,ENRPRI,ENRGRP,EGTPRI,EGTGRP,EGTFLG) ; ; Description: This function will determine if the enrollment is above ; the threshold. ; ;Input: ; DPTDFN - Patient File IEN ; ENRPRI - Enrollment Priority ; ENRGRP - Enrollment Sub-Group ; EGTPRI - EGT Priority (optional) - not used ; EGTGRP - EGT Sub-Group (optional) - not used ; EGTFLG - Flag to bypass additional EGT type 2 check (optional) ; It is used by $$ABOVE2 to prevent re-entering the ; sub-priority API ($$SUBPRI^DGENELA4) ; Output: ; Returns 1 if above 0 below. ; I $G(ENRGRP)="" S ENRGRP="" I $G(ENRPRI)="" S ENRPRI="" N ABOVE,EGT,TODAY,X I '$$GET^DGENEGT($$FINDCUR^DGENEGT(),.EGT) Q 1 D NOW^%DTC S TODAY=X I TODAYEGT("PRIORITY") S ABOVE=1 Q .;do check for priorities 7 and 8 .I ENRPRIEGT("SUBGRP") S ABOVE=1 Q .I $$OVRRIDE(.DPTDFN,.EGT) S ABOVE=1 ; ;EGT types 1 & 3 ;do check for priorities 7 and 8 I ENRPRI>6&(ENRPRI=EGT("PRIORITY")) S ABOVE=0 D Q ABOVE .I ENRGRP'>(EGT("SUBGRP")) S ABOVE=1 I ENRPRI'>(EGT("PRIORITY")) Q 1 Q 0 ; ABOVE2(DPTDFN,ENRDT,PRIORITY,SUBGRP) ; ; ; Input: DPTDFN - Patient File IEN ; ENRDT - enrollment effective date ; PRIORITY - enrollment priority ; SUBGRP - enrollment sub-priority (internal numeric value) ; ; Output: 1 or 0 for above or below EGT threshold ; N ABOVE,TODAY,X,EGT S ABOVE=1 S:'$G(SUBGRP) SUBGRP="" S:'$G(PRIORITY) PRIORITY="" S:'$G(ENRDT) ENRDT="" D NOW^%DTC S TODAY=X Q:'$$GET^DGENEGT($$FINDCUR^DGENEGT(ENRDT),.EGT) 1 Q:'$G(EGT("EFFDATE")) 1 Q:TODAY0 ; Check previous enrollment records for Application Date/Effective ; Date and special CE rules S (STOP,CE)=0 F Q:STOP D .I 'ENRIEN S STOP=1 Q ;cannot check if no current enrollment .I '$$GET^DGENA(ENRIEN,.EGTENR) S STOP=1 Q ;need enr info to proceed .S ENRIEN=$$FINDPRI^DGENA(ENRIEN) .; If status is Pending, Deceased, Not Eligible; Ineligible Date, .; or Not Applicable ignore record and get previous .I "^6^15^16^17^18^19^20^21^23^"[(U_EGTENR("STATUS")_U) Q .S ENRDT=$$EDATE($G(EGTENR("APP")),$G(EGTENR("EFFDATE"))) S:'ENRDT ENRDT=DT .S ENRCAT=$P($G(^DGEN(27.15,+EGTENR("STATUS"),0)),"^",2) .; If Application Date or Effective Date of Change are prior to the .; EGT Effective Date then cont. enroll. .I ENRDT0 Q Q CE ; RULES(DPTDFN,EGTENR,EGT,DGPAT) ;check for new cont enrollment rules (DG*5.3*672) N RTN ; If veteran ever had a verified enrollment with SC 10%+ and is now ; SC 0% non-compensable then cont. enroll I EGTENR("ELIG","VACKAMT")&(EGTENR("ELIG","SCPER")>9)&(DGPAT("SCPER")=0)&(DGPAT("VACKAMT")'>0) Q 1 ; If veteran ever had a verified enrollment with one of these ; eligibilities then cont. enroll: AA, HB, VA Pension I EGTENR("ELIG","VACKAMT")&((EGTENR("ELIG","A&A")="Y")!(EGTENR("ELIG","HB")="Y")!(EGTENR("ELIG","VAPEN")="Y")) Q 1 ; If AO Exposure Location = Korean DMZ prior to ESR implementation, ; then cont. enroll. ; **** NOTE: For patch DG*5.3*672 the ESR implementation date will ; be set to 12/29/2040. This will be changed to the actual ESR ; implementation date in a later patch. I DGPAT("AO")="Y" D I $G(RTN) Q RTN .I $S($D(EGTENR("ELIG","AOEXPLOC")):EGTENR("ELIG","AOEXPLOC"),1:DGPAT("AOEXPLOC"))="K",EGTENR("EFFDATE"),EGTENR("EFFDATE")<3401229 S RTN=1 ; If combat vet end date is before application date, cont. enroll I $G(EGTENR("ELIG","CVELEDT"))'