DGRP6EF ;ALB/TMK,EG,BAJ,JLS,ARF,JAM,ARF,JMM,JDB - REGISTRATION SCREEN 6 FIELDS FOR EXPOSURE FACTORS ;05 Feb 2015  11:06 AM
 ;;5.3;Registration;**689,659,737,688,909,1014,1018,1075,1084,1090,1103,1118,1121,1140**;Aug 13,1993;Build 10
 ;
EN(DFN,QUIT) ; Display Environmental exposure factors/allow to edit
 N I,IND,DG321,DG322,DGCT,DIR,Z,X,Y,DIE,DR,DA,DGNONT
 ; Returns QUIT=1 if ^ entered
 ;
EN1 D CLEAR^VALM1
 N DTOUT,DUOUT,TYPE,SEL,L,S,L1,L2,L3,DGELV
 S DG321=$G(^DPT(DFN,.321)),DG322=$G(^DPT(DFN,.322))
 ;
 S DIR(0)="SA^",DGCT=0
 N DGSSNSTR,DGPTYPE,DGSSN,DGDOB ;ARF-DG*5.3*1014 begin - add standardize patient data to the screen banner
 S DGSSNSTR=$$SSNNM^DGRPU(DFN)
 S DGSSN=$P($P(DGSSNSTR,";",2)," ",3)
 S DGDOB=$$GET1^DIQ(2,DFN,.03,"I")
 S DGDOB=$$UP^XLFSTR($$FMTE^XLFDT($E(DGDOB,1,12),1))
 S DGPTYPE=$$GET1^DIQ(391,$$GET1^DIQ(2,DFN_",",391,"I")_",",.01)
 S:DGPTYPE="" DGPTYPE="PATIENT TYPE UNKNOWN"
 S DGCT=DGCT+1,DIR("A",DGCT)=$P(DGSSNSTR,";",1)_$S($$GET1^DIQ(2,DFN,.2405)'="":" ("_$$GET1^DIQ(2,DFN,.2405)_")",1:"")_"    "_DGDOB
 S DGCT=DGCT+1,DIR("A",DGCT)=$S($P($P(DGSSNSTR,";",2)," ",2)'="":$E($P($P(DGSSNSTR,";",2)," ",2),1,40)_"    ",1:"")_DGSSN_"    "_DGPTYPE
 ;S DGCT=DGCT+1,DIR("A",DGCT)=$$SSNNM^DGRPU(DFN) ;ARF-DG*5.3*1014 end
 S DGCT=DGCT+1,DIR("A",DGCT)="",$P(DIR("A",DGCT),"=",81)=""
 S DGCT=DGCT+1,DIR("A",DGCT)=$J("",23)_"**** ENVIRONMENTAL FACTORS ****",DGCT=DGCT+1,DIR("A",DGCT)=" "
 S IND=$S('$G(DGRPV):"[]",1:"<>")
 S DGCT=DGCT+1
 S Z=$E(IND)_"1"_$E(IND,2)
 ; DG*5.3*1075; Set flag if eligibility is Verified and ELIGIBILITY STATUS ENTERED BY (#.3616) field = POSTMASTER
 S DGELV=1 ;DG*5.3*1090 - DGELV is set to 1 to make A/O Exp. and ION no longer editable in VistA regardless of ELIGIBILITY STATUS and ELIGIBILITY STATUS ENTERED BY source
 I $$GET1^DIQ(2,DFN_",",.3611,"I")="V"&($$GET1^DIQ(2,DFN_",",.3616)="POSTMASTER") S DGELV=1
 ; DG*5.3*1075 - If DGELV flag is set, A/O and Rad Exposure (groups 1 and 2) are read-only
 I DGELV S Z="<1>"
 ; "OTHER" choice added DG*5.3*688
 ; variables S,L1,L2, & L3 used for dynamic spacing
 S SEL=$P(DG321,U,13),S=$C(32),($P(L1,S,6),$P(L2,S,$S(SEL="O":3,1:2)),$P(L3,S,3))=""
 ; DG*5.3*1018 - Add Blue Water Navy Value "B"
 ; DG*5.3*1090 - Add THAILAND(U.S. OR ROYAL THAI MIL BASE):"THLD", LAOS:"LAOS", CAMBODIA(MIMOT OR KREK,KAMPONG CHAM): "CAMB", GUAM, AMERICAN SAMOA, OR TERRITORIAL WATERS:"GUAM", JOHNSTON ATOLL:"JHST"
 S TYPE=$S(SEL="B":" (BWN) ",SEL="K":" (DMZ) ",SEL="V":" (VIET)",SEL="O":" (OTH)",SEL="T":" (THLD)",SEL="L":" (LAOS)",SEL="C":" (CAMB)",SEL="G":" (GUAM)",SEL="J":" (JHST)",1:$J("",7))
 S DIR("A",DGCT)=Z_L1_"A/O Exp.: "_$$YN^DGRP6CL(DG321,2)_TYPE_L2_"Reg: "_$$DAT^DGRP6CL(DG321,7,12)_L3_"Exam: "_$$DAT^DGRP6CL(DG321,9,12)
 S Z=$E(IND)_"2"_$E(IND,2)
 I DGELV S Z="<2>"
 S DGCT=DGCT+1,DIR("A",DGCT)=Z_"     ION Rad.: "_$$YN^DGRP6CL(DG321,3)_$J("",8)_"Reg: "_$$DAT^DGRP6CL(DG321,11,12)_"Method: "
 S:$P(DG321,U,12)>10 $P(DG321,U,12)="" S DIR("A",DGCT)=DIR("A",DGCT)_$P($T(SELTBL+$P(DG321,U,12)),";;",2) ;DG*5.3*1090 increased number of RADIATION EXPOSURE METHOD from 7 to 10
 ;DG*5.3*1140 group 3 is display only always.
 ;S Z=$E(IND)_"3"_$E(IND,2)
 S Z="<3>"
 ;Env Contam name changed to SW Asia Conditions, DG*5.3*688
 S DGCT=DGCT+1,DIR("A",DGCT)=Z_" SW Asia Cond: "_$$YN^DGRP6CL(DG322,13)_$J("",8)_"Reg: "_$$DAT^DGRP6CL(DG322,14,12)_"  Exam: "_$$DAT^DGRP6CL(DG322,15,11)
 S DGNONT=0 I $$GETSTAT^DGNTAPI1(DFN)>2,'$D(^XUSEC("DGNT VERIFY",DUZ)) S DGNONT=1
 I $G(DGRPV) S DGNONT=1
 S DGCT=DGCT+1,DIR("A",DGCT)=$S(DGNONT:"<",1:"[")_"4"_$S(DGNONT:">",1:"]")_"   N/T Radium: " N DGNT S DGRPX=$$GETCUR^DGNTAPI(DFN,"DGNT") S DIR("A",DGCT)=DIR("A",DGCT)_$G(DGNT("INTRP"))
 ;
 ; DG*5.3*909 Display Camp Lejeune info in entirety
 N DG3217CL S DG3217CL=$G(^DPT(DFN,.3217))
 ;DG*5.3*1140 Make Camp Lejeune read only
 ;N DGCLE S DGCLE=$$CLE^DGENCLEA(DFN)
 N DGCLE S DGCLE=0
 ;DG*5.3*1140 next line is extraneous, DGCLE '= 1, and IND will always be "<>"
 ;I DGCLE=1,$G(^DPT(DFN,.32171))=1 S DGCLE=0
 ;S IND=$S('DGCLE:"<>",1:IND)
 S IND="<>"
 S Z=$E(IND)_"5"_$E(IND,2)
 S DGCT=DGCT+1,DIR("A",DGCT)=Z_" Camp Lejeune: "
 S DIR("A",DGCT)=DIR("A",DGCT)_$$YN^DGRP6CL(DG3217CL,1)
 ;
 ; DG*5.3*1103 - add data group 6 for TERA indicator
 S Z="<6>"
 ;S DGCT=DGCT+1,DIR("A",DGCT)=Z_"         TERA: "_$$GET1^DIQ(2,DFN_",",.32116,"E")
 ; DG*5.3*1118 - get TERA indicator for display purposes
 N DGTERA
 S DGTERA=$$GET1^DIQ(2,DFN_",",.32116,"I"),DGTERA=$S(DGTERA=1:"YES",DGTERA=0:"NO",1:"UNKNOWN")
 S DGCT=DGCT+1,DIR("A",DGCT)=Z_"         TERA: "_DGTERA
 ;
 ; DG*5.3*1121 - get Persian Gulf Indicator for display purposes
 S Z="<7>"
 N DGPGI
 S DGPGI=$$GET1^DIQ(2,DFN_",",.32117,"I"),DGPGI=$S(DGPGI=1:"YES",DGPGI=0:"NO",1:"UNKNOWN")
 S DGCT=DGCT+1,DIR("A",DGCT)=Z_" Persian Gulf: "_DGPGI
 ;
 ; DG*5.3*1075 - If DGELV flag is set display informational message
 ; DG*5.3*1090 - The display informational message has been updated
 ; DG*5.3*1103 - The display informational message has been updated for TERA indicator
 ; DG*5.3*1121 - The display informational message has been updated for Persian Gulf indicator
 I DGELV D
 . S DGCT=DGCT+1,DIR("A",DGCT)=" "
 . ;DG*5.3*1090 changing text of screen note
 . ;S DGCT=DGCT+1,DIR("A",DGCT)="Only VES users may enter/edit Agent Orange, ION Radiation Exposure,"
 . ;S DGCT=DGCT+1,DIR("A",DGCT)="Toxic Exposure Risk Activity (TERA), or Persian Gulf."
 . S DGCT=DGCT+1,DIR("A",DGCT)="VistA users may only enter/edit N/T Radium."
 . S DGCT=DGCT+1,DIR("A",DGCT)="All others must be entered through VES."
 . S DGCT=DGCT+1,DIR("A",DGCT)=" "
 ;
 S DGCT=DGCT+1,DIR("A",DGCT)=" "
 ;DG*5.3*1140 Changing text of DIR("A") to reflect that only 4, N/T Radium is selectable
 ;N DGENDTXT S DGENDTXT=$S(DGNONT&DGCLE:"5",DGNONT&'DGCLE:"3",'DGNONT&DGCLE:"5",1:"4")  ; DG*5.3*909 Determine available choices based also on Camp Lejeune eligibility
 N DGENDTXT S DGENDTXT=4  ; DG*5.3*909 Determine available choices based also on Camp Lejeune eligibility
 S DIR("A")=$S('$G(DGRPV):"SELECT AN ENVIRONMENTAL FACTOR (1-"_DGENDTXT_") OR (Q)UIT: ",1:"PRESS RETURN TO CONTINUE ")  ;DG*5.3*909 Camp Lejeune choice added
 ; DG*5.3*1075 If DGELV flag is set, no edit of groups 1 and 2
 ;DG*5.3*1140 Changing text of the user prompt.
 ;I DGELV S DIR("A")=$S('$G(DGRPV):"SELECT AN ENVIRONMENTAL FACTOR (3-"_DGENDTXT_") OR (Q)UIT: ",1:"PRESS RETURN TO CONTINUE ")
 I DGELV S DIR("A")=$S('$G(DGRPV):"SELECT AN ENVIRONMENTAL FACTOR ("_DGENDTXT_") OR (Q)UIT: ",1:"PRESS RETURN TO CONTINUE ")
 ;Env Contam name changed to SW Asia Conditions, DG*5.3*688
 ;S DIR(0)=$S('$G(DGRPV):"SA^1:A/O Exp;2:ION Rad;3:SW Asia Cond;"_$S(DGNONT:"",1:"4:N/T Radium;")_$S(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")  ; DG*5.3*909 Camp Lejeune choice added
 ; DG*5.3*1140 Removed 3:SW Asia Cond from previous line to prevent edits to group 3
 S DIR(0)=$S('$G(DGRPV):"SA^1:A/O Exp;2:ION Rad;"_$S(DGNONT:"",1:"4:N/T Radium;")_$S(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")  ; DG*5.3*909 Camp Lejeune choice added
 ; DG*5.3*1075 If DGELV, no edit of groups 1 and 2
 ;I DGELV S DIR(0)=$S('$G(DGRPV):"SA^3:SW Asia Cond;"_$S(DGNONT:"",1:"4:N/T Radium;")_$S(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")  ; DG*5.3*909 Camp Lejeune choice added
 ; DG*5.3*1140 Removed 3:SW Asia Cond from previous line to prevent edits to group 3
 I DGELV S DIR(0)=$S('$G(DGRPV):"SA^"_$S(DGNONT:"",1:"4:N/T Radium;")_$S(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")  ; DG*5.3*909 Camp Lejeune choice added
 I '$G(DGRPV) S DIR("B")="QUIT"
 I 'DGCLE,$G(^DPT(DFN,.32171))=1,$P($G(XQY0),U)'="DG REGISTRATION VIEW" D
 . S DGHECMSG(1)="Camp Lejeune data has been verified by HEC, please "
 . S DGHECMSG(1)=DGHECMSG(1)_"notify the HEC via"
 . S DGHECMSG(2)="the HEC Alert process if changes are required."
 . S DGHECMSG(3)="Press Return key to continue"
 . S DIR("PRE")="I X=5 W !!,DGHECMSG(1),!,DGHECMSG(2),!!,DGHECMSG(3)"
 . S DIR("PRE")=DIR("PRE")_" R *DGANSWER S X="""""
 D ^DIR K DIR,DGANSWER,DGHECMSG
 I $G(DGRPV)!$D(DUOUT)!$D(DTOUT)!(Y="Q") S:Y'="Q" QUIT=1 G QUIT
 S Z="603"_$E("0",2-$L(+Y))_+Y
 S DIE=2,DA=DFN,DR=$P($T(@Z),";;",2)
 ;
 ; DG*5.3*1075;  If editing group 1, A/O data, capture the current value of the AGENT ORANGE EXPOS. INDICATED? (#.32102) field
 N DGAO
 I Y=1 S DGAO=$$GET1^DIQ(2,DFN,.32102,"I")
 ;
 ; DG*5.3*1075;  If editing group 2, Radiation Exposure data, capture the current value of the RADIATION EXPOSURE INDICATED? (#.32103) field
 N DGRAD
 I Y=2 S DGRAD=$$GET1^DIQ(2,DFN,.32103,"I")
 ;
 ; DG*5.3*909 Camp Lejeune logic added
 I Y'=5 D:DR'="" ^DIE
 E  X DR D AUTOUPD^DGENA2(DFN)
 ;
 ; DG*5.3*1075;jam
 ; If DGRAD is defined, editing of the Radiation Exposure data was done. 
 ; If .32103 field was changed to Y, check if RADIATION EXPOSURE METHOD (#.3212) field is blank 
 I $D(DGRAD),DGRAD'="Y",$$GET1^DIQ(2,DFN,.32103,"I")="Y",$$GET1^DIQ(2,DFN,.3212)="" D
 . ; If no Radiation Method defined, set the RADIATION EXPOSURE INDICATED? value back to DGRAD value (or NO if no DGRAD value)
 . I DGRAD="" S DGRAD="N"
 . S DR=".32103///^S X=DGRAD"
 . D ^DIE
 . K DIE,DA,DR
 K DGRAD
 ;
 ; DG*5.3*1075;jam
 ; If DGAO is defined, editing of the AO Exposure data was done. 
 ; If .32102 field was changed to Y, check if AGENT ORANGE EXPOSURE LOCATION (#.3213) field is blank 
 I $D(DGAO),DGAO'="Y",$$GET1^DIQ(2,DFN,.32102,"I")="Y",$$GET1^DIQ(2,DFN,.3213)="" D
 . ; If no location defined, set the AGENT ORANGE EXPOS. INDICATED? value back to DGAO value (or NO if no DGAO value)
 . I DGAO="" S DGAO="N"
 . S DR=".32102///^S X=DGAO"
 . D ^DIE
 K DIE,DA,DR,DGAO
 ;
 G EN1
 ;
QUIT Q
 ;
EF(DFN,LIN) ;
 N DG321,DG322,LENGTH,Z,SEQ
 K LIN S (LENGTH,LIN)=0
 S DG321=$G(^DPT(DFN,.321)),DG322=$G(^(.322))
 I $P(DG321,U,2)="Y" D
 . S Z="A/O Exp.",SEQ=1
 . ;S:'$P(DG321,U,7)!'$P(DG321,U,9)!($P(DG321,U,10)="") Z=Z_"(Incomplete)"
 . S:'$P(DG321,U,7)!('$P(DG321,U,9))="" Z=Z_"(Incomplete)"
 . D SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
 ;
 I $P(DG321,U,3)="Y" D
 . S Z="Ion Rad.",SEQ=2
 . S:'$P(DG321,U,11)!($P(DG321,U,12)="") Z=Z_"(Incomplete)"
 . D SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
 ;
 I $P(DG322,U,13)="Y" D
 . I 'LIN S LIN=LIN+1,LIN(LIN)=""
 . ;Env Contam name changed to SW Asia Conditions, DG*5.3*688
 . S Z="SW Asia Cond.",SEQ=3
 . S:'$P(DG322,U,14)!'$P(DG322,U,15) Z=Z_"(Incomplete)"
 . D SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
 ; N/T Radium Exposure
 N DGNT,DGRPX S DGRPX=$$GETCUR^DGNTAPI(DFN,"DGNT")
 I "NO"'[$G(DGNT("INTRP")) D
 . I 'LIN S LIN=LIN+1,LIN(LIN)=""
 . S SEQ=4 D SETLNEX^DGRP6("N/T Radium ("_$P(DGNT("INTRP"),"YES,",2)_")",SEQ,.LIN,.LENGTH)
 ; DG*5.3*909 Get latest Camp Lejeune information from PATIENT file
 N DG3217CL
 S DG3217CL=$G(^DPT(DFN,.3217))
 I $P(DG3217CL,U,1)="Y" D
 . I 'LIN S LIN=LIN+1,LIN(LIN)=""
 . S Z="Camp Lejeune",SEQ=5
 . D SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
  Q
  ;
CHKAOEL(DGY) ;DG*5.3*1018;jam; - Screen logic for .3213 (AGENT ORANGE EXPOSURE LOCATION) field in PATIENT file
 ; Returns:  TRUE if the entry DGY is valid
 ;
 ; Only checking B (BLUE WATER NAVY) entry - All other entries are allowed
 I DGY'="B" Q 1
 N DGBWNDT
 ; Allow B to be displayed when BWN ACTIVE DATE (#1402) in MAS PARAMETER file #43 is reached 
 ; - Get the BWN ACTIVE DATE
 S DGBWNDT=$$GET1^DIQ(43,1,1402,"I")
 ; - If active date not defined, return FALSE
 I 'DGBWNDT Q 0
 ; - If active date is in the future, return FALSE
 I DGBWNDT>$$DT^XLFDT Q 0
 Q 1
 ;
 ; The following tag is a table of values.  Do not change location of values including null at SELTBL+0
 ; DG*5.3*1090 - Added ENEWETAK, EXPOS IN PALOMARES B52, and THULE AFB B52 to the SELTBL tag 
SELTBL ;;
 ;;NO VALUE
 ;;HIROSHIMA/NAGASAKI
 ;;ATMOSPHERIC NUCLEAR TEST
 ;;H/N AND ATMOSPHERIC TEST
 ;;UNDERGROUND NUCLEAR TEST
 ;;EXP. AT NUCLEAR FACILITY
 ;;OTHER
 ;;ENEWETAK
 ;;EXPOS IN PALOMARES B52
 ;;THULE AFB B52 
60301 ;;.32102//NO;S:X'="Y" Y="@65";.3213;.32107;.32109;@65;
 ; DG*5.3*1075 - Add "R" to field .3212, making it Required
60302 ;;.32103//NO;S:X'="Y" Y="@66";.3212R;.32111;@66;
60303 ;;.322013//NO;S:X'="Y" Y="@612";.322014;Q;.322015;@612;
60304 ;;D REG^DGNTQ(DFN)
60305 ;;D ADDEDTCL^DGENCLEA(DFN)
 ;;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGRP6EF   12240     printed  Sep 23, 2025@20:31:39                                                                                                                                                                                                    Page 2
DGRP6EF   ;ALB/TMK,EG,BAJ,JLS,ARF,JAM,ARF,JMM,JDB - REGISTRATION SCREEN 6 FIELDS FOR EXPOSURE FACTORS ;05 Feb 2015  11:06 AM
 +1       ;;5.3;Registration;**689,659,737,688,909,1014,1018,1075,1084,1090,1103,1118,1121,1140**;Aug 13,1993;Build 10
 +2       ;
EN(DFN,QUIT) ; Display Environmental exposure factors/allow to edit
 +1        NEW I,IND,DG321,DG322,DGCT,DIR,Z,X,Y,DIE,DR,DA,DGNONT
 +2       ; Returns QUIT=1 if ^ entered
 +3       ;
EN1        DO CLEAR^VALM1
 +1        NEW DTOUT,DUOUT,TYPE,SEL,L,S,L1,L2,L3,DGELV
 +2        SET DG321=$GET(^DPT(DFN,.321))
           SET DG322=$GET(^DPT(DFN,.322))
 +3       ;
 +4        SET DIR(0)="SA^"
           SET DGCT=0
 +5       ;ARF-DG*5.3*1014 begin - add standardize patient data to the screen banner
           NEW DGSSNSTR,DGPTYPE,DGSSN,DGDOB
 +6        SET DGSSNSTR=$$SSNNM^DGRPU(DFN)
 +7        SET DGSSN=$PIECE($PIECE(DGSSNSTR,";",2)," ",3)
 +8        SET DGDOB=$$GET1^DIQ(2,DFN,.03,"I")
 +9        SET DGDOB=$$UP^XLFSTR($$FMTE^XLFDT($EXTRACT(DGDOB,1,12),1))
 +10       SET DGPTYPE=$$GET1^DIQ(391,$$GET1^DIQ(2,DFN_",",391,"I")_",",.01)
 +11       if DGPTYPE=""
               SET DGPTYPE="PATIENT TYPE UNKNOWN"
 +12       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=$PIECE(DGSSNSTR,";",1)_$SELECT($$GET1^DIQ(2,DFN,.2405)'="":" ("_$$GET1^DIQ(2,DFN,.2405)_")",1:"")_"    "_DGDOB
 +13       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=$SELECT($PIECE($PIECE(DGSSNSTR,";",2)," ",2)'="":$EXTRACT($PIECE($PIECE(DGSSNSTR,";",2)," ",2),1,40)_"    ",1:"")_DGSSN_"    "_DGPTYPE
 +14      ;S DGCT=DGCT+1,DIR("A",DGCT)=$$SSNNM^DGRPU(DFN) ;ARF-DG*5.3*1014 end
 +15       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=""
           SET $PIECE(DIR("A",DGCT),"=",81)=""
 +16       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=$JUSTIFY("",23)_"**** ENVIRONMENTAL FACTORS ****"
           SET DGCT=DGCT+1
           SET DIR("A",DGCT)=" "
 +17       SET IND=$SELECT('$GET(DGRPV):"[]",1:"<>")
 +18       SET DGCT=DGCT+1
 +19       SET Z=$EXTRACT(IND)_"1"_$EXTRACT(IND,2)
 +20      ; DG*5.3*1075; Set flag if eligibility is Verified and ELIGIBILITY STATUS ENTERED BY (#.3616) field = POSTMASTER
 +21      ;DG*5.3*1090 - DGELV is set to 1 to make A/O Exp. and ION no longer editable in VistA regardless of ELIGIBILITY STATUS and ELIGIBILITY STATUS ENTERED BY source
           SET DGELV=1
 +22       IF $$GET1^DIQ(2,DFN_",",.3611,"I")="V"&($$GET1^DIQ(2,DFN_",",.3616)="POSTMASTER")
               SET DGELV=1
 +23      ; DG*5.3*1075 - If DGELV flag is set, A/O and Rad Exposure (groups 1 and 2) are read-only
 +24       IF DGELV
               SET Z="<1>"
 +25      ; "OTHER" choice added DG*5.3*688
 +26      ; variables S,L1,L2, & L3 used for dynamic spacing
 +27       SET SEL=$PIECE(DG321,U,13)
           SET S=$CHAR(32)
           SET ($PIECE(L1,S,6),$PIECE(L2,S,$SELECT(SEL="O":3,1:2)),$PIECE(L3,S,3))=""
 +28      ; DG*5.3*1018 - Add Blue Water Navy Value "B"
 +29      ; DG*5.3*1090 - Add THAILAND(U.S. OR ROYAL THAI MIL BASE):"THLD", LAOS:"LAOS", CAMBODIA(MIMOT OR KREK,KAMPONG CHAM): "CAMB", GUAM, AMERICAN SAMOA, OR TERRITORIAL WATERS:"GUAM", JOHNSTON ATOLL:"JHST"
 +30       SET TYPE=$SELECT(SEL="B":" (BWN) ",SEL="K":" (DMZ) ",SEL="V":" (VIET)",SEL="O":" (OTH)",SEL="T":" (THLD)",SEL="L":" (LAOS)",SEL="C":" (CAMB)",SEL="G":" (GUAM)",SEL="J":" (JHST)",1:$JUSTIFY("",7))
 +31       SET DIR("A",DGCT)=Z_L1_"A/O Exp.: "_$$YN^DGRP6CL(DG321,2)_TYPE_L2_"Reg: "_$$DAT^DGRP6CL(DG321,7,12)_L3_"Exam: "_$$DAT^DGRP6CL(DG321,9,12)
 +32       SET Z=$EXTRACT(IND)_"2"_$EXTRACT(IND,2)
 +33       IF DGELV
               SET Z="<2>"
 +34       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=Z_"     ION Rad.: "_$$YN^DGRP6CL(DG321,3)_$JUSTIFY("",8)_"Reg: "_$$DAT^DGRP6CL(DG321,11,12)_"Method: "
 +35      ;DG*5.3*1090 increased number of RADIATION EXPOSURE METHOD from 7 to 10
           if $PIECE(DG321,U,12)>10
               SET $PIECE(DG321,U,12)=""
           SET DIR("A",DGCT)=DIR("A",DGCT)_$PIECE($TEXT(SELTBL+$PIECE(DG321,U,12)),";;",2)
 +36      ;DG*5.3*1140 group 3 is display only always.
 +37      ;S Z=$E(IND)_"3"_$E(IND,2)
 +38       SET Z="<3>"
 +39      ;Env Contam name changed to SW Asia Conditions, DG*5.3*688
 +40       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=Z_" SW Asia Cond: "_$$YN^DGRP6CL(DG322,13)_$JUSTIFY("",8)_"Reg: "_$$DAT^DGRP6CL(DG322,14,12)_"  Exam: "_$$DAT^DGRP6CL(DG322,15,11)
 +41       SET DGNONT=0
           IF $$GETSTAT^DGNTAPI1(DFN)>2
               IF '$DATA(^XUSEC("DGNT VERIFY",DUZ))
                   SET DGNONT=1
 +42       IF $GET(DGRPV)
               SET DGNONT=1
 +43       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=$SELECT(DGNONT:"<",1:"[")_"4"_$SELECT(DGNONT:">",1:"]")_"   N/T Radium: "
           NEW DGNT
           SET DGRPX=$$GETCUR^DGNTAPI(DFN,"DGNT")
           SET DIR("A",DGCT)=DIR("A",DGCT)_$GET(DGNT("INTRP"))
 +44      ;
 +45      ; DG*5.3*909 Display Camp Lejeune info in entirety
 +46       NEW DG3217CL
           SET DG3217CL=$GET(^DPT(DFN,.3217))
 +47      ;DG*5.3*1140 Make Camp Lejeune read only
 +48      ;N DGCLE S DGCLE=$$CLE^DGENCLEA(DFN)
 +49       NEW DGCLE
           SET DGCLE=0
 +50      ;DG*5.3*1140 next line is extraneous, DGCLE '= 1, and IND will always be "<>"
 +51      ;I DGCLE=1,$G(^DPT(DFN,.32171))=1 S DGCLE=0
 +52      ;S IND=$S('DGCLE:"<>",1:IND)
 +53       SET IND="<>"
 +54       SET Z=$EXTRACT(IND)_"5"_$EXTRACT(IND,2)
 +55       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=Z_" Camp Lejeune: "
 +56       SET DIR("A",DGCT)=DIR("A",DGCT)_$$YN^DGRP6CL(DG3217CL,1)
 +57      ;
 +58      ; DG*5.3*1103 - add data group 6 for TERA indicator
 +59       SET Z="<6>"
 +60      ;S DGCT=DGCT+1,DIR("A",DGCT)=Z_"         TERA: "_$$GET1^DIQ(2,DFN_",",.32116,"E")
 +61      ; DG*5.3*1118 - get TERA indicator for display purposes
 +62       NEW DGTERA
 +63       SET DGTERA=$$GET1^DIQ(2,DFN_",",.32116,"I")
           SET DGTERA=$SELECT(DGTERA=1:"YES",DGTERA=0:"NO",1:"UNKNOWN")
 +64       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=Z_"         TERA: "_DGTERA
 +65      ;
 +66      ; DG*5.3*1121 - get Persian Gulf Indicator for display purposes
 +67       SET Z="<7>"
 +68       NEW DGPGI
 +69       SET DGPGI=$$GET1^DIQ(2,DFN_",",.32117,"I")
           SET DGPGI=$SELECT(DGPGI=1:"YES",DGPGI=0:"NO",1:"UNKNOWN")
 +70       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=Z_" Persian Gulf: "_DGPGI
 +71      ;
 +72      ; DG*5.3*1075 - If DGELV flag is set display informational message
 +73      ; DG*5.3*1090 - The display informational message has been updated
 +74      ; DG*5.3*1103 - The display informational message has been updated for TERA indicator
 +75      ; DG*5.3*1121 - The display informational message has been updated for Persian Gulf indicator
 +76       IF DGELV
               Begin DoDot:1
 +77               SET DGCT=DGCT+1
                   SET DIR("A",DGCT)=" "
 +78      ;DG*5.3*1090 changing text of screen note
 +79      ;S DGCT=DGCT+1,DIR("A",DGCT)="Only VES users may enter/edit Agent Orange, ION Radiation Exposure,"
 +80      ;S DGCT=DGCT+1,DIR("A",DGCT)="Toxic Exposure Risk Activity (TERA), or Persian Gulf."
 +81               SET DGCT=DGCT+1
                   SET DIR("A",DGCT)="VistA users may only enter/edit N/T Radium."
 +82               SET DGCT=DGCT+1
                   SET DIR("A",DGCT)="All others must be entered through VES."
 +83               SET DGCT=DGCT+1
                   SET DIR("A",DGCT)=" "
               End DoDot:1
 +84      ;
 +85       SET DGCT=DGCT+1
           SET DIR("A",DGCT)=" "
 +86      ;DG*5.3*1140 Changing text of DIR("A") to reflect that only 4, N/T Radium is selectable
 +87      ;N DGENDTXT S DGENDTXT=$S(DGNONT&DGCLE:"5",DGNONT&'DGCLE:"3",'DGNONT&DGCLE:"5",1:"4")  ; DG*5.3*909 Determine available choices based also on Camp Lejeune eligibility
 +88      ; DG*5.3*909 Determine available choices based also on Camp Lejeune eligibility
           NEW DGENDTXT
           SET DGENDTXT=4
 +89      ;DG*5.3*909 Camp Lejeune choice added
           SET DIR("A")=$SELECT('$GET(DGRPV):"SELECT AN ENVIRONMENTAL FACTOR (1-"_DGENDTXT_") OR (Q)UIT: ",1:"PRESS RETURN TO CONTINUE ")
 +90      ; DG*5.3*1075 If DGELV flag is set, no edit of groups 1 and 2
 +91      ;DG*5.3*1140 Changing text of the user prompt.
 +92      ;I DGELV S DIR("A")=$S('$G(DGRPV):"SELECT AN ENVIRONMENTAL FACTOR (3-"_DGENDTXT_") OR (Q)UIT: ",1:"PRESS RETURN TO CONTINUE ")
 +93       IF DGELV
               SET DIR("A")=$SELECT('$GET(DGRPV):"SELECT AN ENVIRONMENTAL FACTOR ("_DGENDTXT_") OR (Q)UIT: ",1:"PRESS RETURN TO CONTINUE ")
 +94      ;Env Contam name changed to SW Asia Conditions, DG*5.3*688
 +95      ;S DIR(0)=$S('$G(DGRPV):"SA^1:A/O Exp;2:ION Rad;3:SW Asia Cond;"_$S(DGNONT:"",1:"4:N/T Radium;")_$S(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")  ; DG*5.3*909 Camp Lejeune choice added
 +96      ; DG*5.3*1140 Removed 3:SW Asia Cond from previous line to prevent edits to group 3
 +97      ; DG*5.3*909 Camp Lejeune choice added
           SET DIR(0)=$SELECT('$GET(DGRPV):"SA^1:A/O Exp;2:ION Rad;"_$SELECT(DGNONT:"",1:"4:N/T Radium;")_$SELECT(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")
 +98      ; DG*5.3*1075 If DGELV, no edit of groups 1 and 2
 +99      ;I DGELV S DIR(0)=$S('$G(DGRPV):"SA^3:SW Asia Cond;"_$S(DGNONT:"",1:"4:N/T Radium;")_$S(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")  ; DG*5.3*909 Camp Lejeune choice added
 +100     ; DG*5.3*1140 Removed 3:SW Asia Cond from previous line to prevent edits to group 3
 +101     ; DG*5.3*909 Camp Lejeune choice added
           IF DGELV
               SET DIR(0)=$SELECT('$GET(DGRPV):"SA^"_$SELECT(DGNONT:"",1:"4:N/T Radium;")_$SELECT(DGCLE:"5:Camp Lejeune;",1:"")_"Q:QUIT",1:"EA")
 +102      IF '$GET(DGRPV)
               SET DIR("B")="QUIT"
 +103      IF 'DGCLE
               IF $GET(^DPT(DFN,.32171))=1
                   IF $PIECE($GET(XQY0),U)'="DG REGISTRATION VIEW"
                       Begin DoDot:1
 +104                      SET DGHECMSG(1)="Camp Lejeune data has been verified by HEC, please "
 +105                      SET DGHECMSG(1)=DGHECMSG(1)_"notify the HEC via"
 +106                      SET DGHECMSG(2)="the HEC Alert process if changes are required."
 +107                      SET DGHECMSG(3)="Press Return key to continue"
 +108                      SET DIR("PRE")="I X=5 W !!,DGHECMSG(1),!,DGHECMSG(2),!!,DGHECMSG(3)"
 +109                      SET DIR("PRE")=DIR("PRE")_" R *DGANSWER S X="""""
                       End DoDot:1
 +110      DO ^DIR
           KILL DIR,DGANSWER,DGHECMSG
 +111      IF $GET(DGRPV)!$DATA(DUOUT)!$DATA(DTOUT)!(Y="Q")
               if Y'="Q"
                   SET QUIT=1
               GOTO QUIT
 +112      SET Z="603"_$EXTRACT("0",2-$LENGTH(+Y))_+Y
 +113      SET DIE=2
           SET DA=DFN
           SET DR=$PIECE($TEXT(@Z),";;",2)
 +114     ;
 +115     ; DG*5.3*1075;  If editing group 1, A/O data, capture the current value of the AGENT ORANGE EXPOS. INDICATED? (#.32102) field
 +116      NEW DGAO
 +117      IF Y=1
               SET DGAO=$$GET1^DIQ(2,DFN,.32102,"I")
 +118     ;
 +119     ; DG*5.3*1075;  If editing group 2, Radiation Exposure data, capture the current value of the RADIATION EXPOSURE INDICATED? (#.32103) field
 +120      NEW DGRAD
 +121      IF Y=2
               SET DGRAD=$$GET1^DIQ(2,DFN,.32103,"I")
 +122     ;
 +123     ; DG*5.3*909 Camp Lejeune logic added
 +124      IF Y'=5
               if DR'=""
                   DO ^DIE
 +125     IF '$TEST
               XECUTE DR
               DO AUTOUPD^DGENA2(DFN)
 +126     ;
 +127     ; DG*5.3*1075;jam
 +128     ; If DGRAD is defined, editing of the Radiation Exposure data was done. 
 +129     ; If .32103 field was changed to Y, check if RADIATION EXPOSURE METHOD (#.3212) field is blank 
 +130      IF $DATA(DGRAD)
               IF DGRAD'="Y"
                   IF $$GET1^DIQ(2,DFN,.32103,"I")="Y"
                       IF $$GET1^DIQ(2,DFN,.3212)=""
                           Begin DoDot:1
 +131     ; If no Radiation Method defined, set the RADIATION EXPOSURE INDICATED? value back to DGRAD value (or NO if no DGRAD value)
 +132                          IF DGRAD=""
                                   SET DGRAD="N"
 +133                          SET DR=".32103///^S X=DGRAD"
 +134                          DO ^DIE
 +135                          KILL DIE,DA,DR
                           End DoDot:1
 +136      KILL DGRAD
 +137     ;
 +138     ; DG*5.3*1075;jam
 +139     ; If DGAO is defined, editing of the AO Exposure data was done. 
 +140     ; If .32102 field was changed to Y, check if AGENT ORANGE EXPOSURE LOCATION (#.3213) field is blank 
 +141      IF $DATA(DGAO)
               IF DGAO'="Y"
                   IF $$GET1^DIQ(2,DFN,.32102,"I")="Y"
                       IF $$GET1^DIQ(2,DFN,.3213)=""
                           Begin DoDot:1
 +142     ; If no location defined, set the AGENT ORANGE EXPOS. INDICATED? value back to DGAO value (or NO if no DGAO value)
 +143                          IF DGAO=""
                                   SET DGAO="N"
 +144                          SET DR=".32102///^S X=DGAO"
 +145                          DO ^DIE
                           End DoDot:1
 +146      KILL DIE,DA,DR,DGAO
 +147     ;
 +148      GOTO EN1
 +149     ;
QUIT       QUIT 
 +1       ;
EF(DFN,LIN) ;
 +1        NEW DG321,DG322,LENGTH,Z,SEQ
 +2        KILL LIN
           SET (LENGTH,LIN)=0
 +3        SET DG321=$GET(^DPT(DFN,.321))
           SET DG322=$GET(^(.322))
 +4        IF $PIECE(DG321,U,2)="Y"
               Begin DoDot:1
 +5                SET Z="A/O Exp."
                   SET SEQ=1
 +6       ;S:'$P(DG321,U,7)!'$P(DG321,U,9)!($P(DG321,U,10)="") Z=Z_"(Incomplete)"
 +7                if '$PIECE(DG321,U,7)!('$PIECE(DG321,U,9))=""
                       SET Z=Z_"(Incomplete)"
 +8                DO SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
               End DoDot:1
 +9       ;
 +10       IF $PIECE(DG321,U,3)="Y"
               Begin DoDot:1
 +11               SET Z="Ion Rad."
                   SET SEQ=2
 +12               if '$PIECE(DG321,U,11)!($PIECE(DG321,U,12)="")
                       SET Z=Z_"(Incomplete)"
 +13               DO SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
               End DoDot:1
 +14      ;
 +15       IF $PIECE(DG322,U,13)="Y"
               Begin DoDot:1
 +16               IF 'LIN
                       SET LIN=LIN+1
                       SET LIN(LIN)=""
 +17      ;Env Contam name changed to SW Asia Conditions, DG*5.3*688
 +18               SET Z="SW Asia Cond."
                   SET SEQ=3
 +19               if '$PIECE(DG322,U,14)!'$PIECE(DG322,U,15)
                       SET Z=Z_"(Incomplete)"
 +20               DO SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
               End DoDot:1
 +21      ; N/T Radium Exposure
 +22       NEW DGNT,DGRPX
           SET DGRPX=$$GETCUR^DGNTAPI(DFN,"DGNT")
 +23       IF "NO"'[$GET(DGNT("INTRP"))
               Begin DoDot:1
 +24               IF 'LIN
                       SET LIN=LIN+1
                       SET LIN(LIN)=""
 +25               SET SEQ=4
                   DO SETLNEX^DGRP6("N/T Radium ("_$PIECE(DGNT("INTRP"),"YES,",2)_")",SEQ,.LIN,.LENGTH)
               End DoDot:1
 +26      ; DG*5.3*909 Get latest Camp Lejeune information from PATIENT file
 +27       NEW DG3217CL
 +28       SET DG3217CL=$GET(^DPT(DFN,.3217))
 +29       IF $PIECE(DG3217CL,U,1)="Y"
               Begin DoDot:1
 +30               IF 'LIN
                       SET LIN=LIN+1
                       SET LIN(LIN)=""
 +31               SET Z="Camp Lejeune"
                   SET SEQ=5
 +32               DO SETLNEX^DGRP6(Z,SEQ,.LIN,.LENGTH)
               End DoDot:1
 +33       QUIT 
 +34      ;
CHKAOEL(DGY) ;DG*5.3*1018;jam; - Screen logic for .3213 (AGENT ORANGE EXPOSURE LOCATION) field in PATIENT file
 +1       ; Returns:  TRUE if the entry DGY is valid
 +2       ;
 +3       ; Only checking B (BLUE WATER NAVY) entry - All other entries are allowed
 +4        IF DGY'="B"
               QUIT 1
 +5        NEW DGBWNDT
 +6       ; Allow B to be displayed when BWN ACTIVE DATE (#1402) in MAS PARAMETER file #43 is reached 
 +7       ; - Get the BWN ACTIVE DATE
 +8        SET DGBWNDT=$$GET1^DIQ(43,1,1402,"I")
 +9       ; - If active date not defined, return FALSE
 +10       IF 'DGBWNDT
               QUIT 0
 +11      ; - If active date is in the future, return FALSE
 +12       IF DGBWNDT>$$DT^XLFDT
               QUIT 0
 +13       QUIT 1
 +14      ;
 +15      ; The following tag is a table of values.  Do not change location of values including null at SELTBL+0
 +16      ; DG*5.3*1090 - Added ENEWETAK, EXPOS IN PALOMARES B52, and THULE AFB B52 to the SELTBL tag 
SELTBL    ;;
 +1       ;;NO VALUE
 +2       ;;HIROSHIMA/NAGASAKI
 +3       ;;ATMOSPHERIC NUCLEAR TEST
 +4       ;;H/N AND ATMOSPHERIC TEST
 +5       ;;UNDERGROUND NUCLEAR TEST
 +6       ;;EXP. AT NUCLEAR FACILITY
 +7       ;;OTHER
 +8       ;;ENEWETAK
 +9       ;;EXPOS IN PALOMARES B52
 +10      ;;THULE AFB B52 
60301     ;;.32102//NO;S:X'="Y" Y="@65";.3213;.32107;.32109;@65;
 +1       ; DG*5.3*1075 - Add "R" to field .3212, making it Required
60302     ;;.32103//NO;S:X'="Y" Y="@66";.3212R;.32111;@66;
60303     ;;.322013//NO;S:X'="Y" Y="@612";.322014;Q;.322015;@612;
60304     ;;D REG^DGNTQ(DFN)
60305     ;;D ADDEDTCL^DGENCLEA(DFN)
 +1       ;;