DGCOL ;ALB/MRL,ARF,RN - COLLATERAL PATIENT ENTRY-EDIT ; 04 MAY 87
 ;;5.3;Registration;**2,23,32,993,1023,1027,1052**;Aug 13, 1993;Build 7
1 K DFN W !! S DGDIR=$S($D(DGDIR):DGDIR,1:1),DIC="^DPT(",DIC(0)="AEQML",DIC("DR")=".03;.09;.02;.3601;1901///^S X=""N"";391///^S X=""COLLATERAL"";.361///^S X=""COLLATERAL OF VET."";.323///^S X=""OTHER NON-VETERANS"";"
 S DLAYGO=2 D ^DIC I Y'>0 S DGDIR=0 K DLAYGO G Q
 S DFN=+Y,DGVET=$S('$D(^DPT(DFN,"VET")):0,^("VET")="Y":1,1:0) I '$P(Y,"^",3),DGVET,'DGDIR G Q
EN S DGDIR=$S($D(DGDIR):DGDIR,1:0) G Q:'$D(DFN),VET:DGVET
 S DGELG=$S('$D(^DPT(DFN,.36)):1,'$D(^DIC(8,+^(.36),0)):1,$P(^(0),"^",9)'=13:0,1:1),DGPS=$S('$D(^DPT(DFN,.32)):1,'$D(^DIC(21,+$P(^(.32),"^",3),0)):1,$P(^(0),"^",1)'["OTHER NON-VET":0,1:1) G:('DGELG!'DGPS) ECPS K DGELG,DGPS D EN^DGRPD
 N DGEANS S DGEANS=$$WARNING
 I $G(DGEANS)'=1 G 1
 I $D(DGRPOUT) K DGRPOUT G 1
 S (Y,DA)=DFN,DR="[DGCOLLATERAL]",DGNOCOL=0,DIE="^DPT(" D ^DIE G Q:DGNOCOL!'$D(^DPT(DFN,0)) I '$D(DGCOLV) W !!,"COLLATERAL VETERAN SPONSOR NAME IS UNSPECIFIED!!",*7 G EN
 S DGAD=$S($D(^DPT(DFN,.11)):$P(^(.11),"^",1,12),1:""),DGAD1=$S($D(^DPT(+DGCOLV,.11)):$P(^(.11),"^",1,12),1:""),C=0 W !!,"APPLICANT ADDRESS DATA",?45,"SPONSOR ADDRESS DATA",!,"----------------------",?45,"--------------------"
 S C=0,P=1,X=DGAD D AD S C=0,P=2,X=DGAD1 D AD F I=0:0 S I=$O(AD(I)) Q:'I  W !,$P(AD(I),"^",1),?45,$P(AD(I),"^",2)
 S DGPHON=$S($D(^DPT(DFN,.13)):$P(^(.13),"^",1),1:""),$P(DGPHON,"^",2)=$S($D(^DPT(DGCOLV,.13)):$P(^(.13),"^",1),1:"")
 W !!,"Phone:  ",$S($P(DGPHON,"^",1)]"":$P(DGPHON,"^",1),1:"UNKNOWN"),?45,"Phone:  ",$S($P(DGPHON,"^",2)]"":$P(DGPHON,"^",2),1:"UNKNOWN")
 W !!,"SPONSOR:  ",$P(^DPT(DGCOLV,0),"^",1),", ",$E($P(^(0),"^",9),1,3),"-",$E($P(^(0),"^",9),4,5),"-",$E($P(^(0),"^",9),6,10)
 D ENRRO ;DG*5.3*993 - Ask for SELF-SUPPORTED REGISTRATION ONLY REASON
ASK W !!,"DO YOU WISH TO EDIT COLLATERAL INFORMATION" S %=2 D YN^DICN G Q:%=2!(%=-1) I %=0 W !,"ENTER 'Y'ES OR 'N'O" G ASK
H W !!,"SHOULD COLLATERAL PATIENT ADDRESS DATA BE SAME AS SPONSOR'S" S %=2 D YN^DICN I %>0 S DGADED=(%-1) G ED
 G Q:%=-1 W !!,"Y - To stuff in sponsor's address data.",!,"N - To edit collateral address data",!,"^ - To QUIT." G H
ED I DGADED S DR=".3601;.111;S:X']"""" Y=.114;.112;S:X']"""" Y=.114;.113:.115;.1112;.117;.131;",DIE="^DPT(",(DA,Y)=DFN D ^DIE G Q
 ;S DGADD=$S($D(^DPT(DFN,.11)):^(.11),1:""),DGADD=$P(DGAD1,"^",1,12)_"^"_$P(DGADD,"^",13,999),^DPT(DFN,.11)=DGADD,$P(^DPT(DFN,.13),"^",1)=$P(DGPHON,"^",2) W !!,"Sponsor address data entered..." G Q
  S DGADD=$S($D(^DPT(DFN,.11)):^(.11),1:""),DGADD=$P(DGAD1,"^",1,12)_"^^^^"_$$GET1^DIQ(2,DGCOLV,.121)_"^^"_$P(DGADD,"^",18),$P(DGADD,"^",7)=$$GET1^DIQ(2,DGCOLV,.117) D  W !!,"Sponsor address data entered..." G Q
 .S DIE="^DPT(",DA=DFN,DR=".111///^S X=$P(DGADD,U);.112///^S X=$P(DGADD,U,2);.113///^S X=$P(DGADD,U,3);.114///^S X=$P(DGADD,U,4);.115///^S X=$P(DGADD,U,5);.116///^S X=$P(DGADD,U,6);.117///^S X=$P(DGADD,U,7)" D ^DIE
 .S DIE="^DPT(",DA=DFN,DR=".1171///^S X=$P(DGADD,U,8);.1172///^S X=$P(DGADD,U,9);.1173///^S X=$P(DGADD,U,10);.118///^S X=$P(DGADD,U,13);.119///^S X=$P(DGADD,U,14);.12///^S X=$P(DGADD,U,15);.121///^S X=$P(DGADD,U,16)" D ^DIE
 .S DIE="^DPT(",DA=DFN,DR=";.1118///^S X=$P(DGADD,U,18);.131///^S X=$P(DGPHON,U,2)" D ^DIE
 .Q
AD F I=1:1:5,12,7 I $P(X,"^",I)]"" D
 .S D=$P(X,"^",I),C=C+1
 .S:(I=12)&($L(D)>5) D=$E(D,1,5)_"-"_$E(D,6,20)
 .S $P(AD(C),"^",P)=D S:I=5 $P(AD(C),"^",P)=$S($D(^DIC(5,+D,0)):$P(^(0),"^",1),1:"STATE UNKNOWN") I I=7 S $P(AD(C),"^",P)=$S($D(^DIC(5,+$P(X,"^",5),1,+D,0)):$P(^(0),"^",1),1:"UNKNOWN")
 Q
ENRRO ;DG*5.3*993 - Ask for SELF-SUPPORTED REGISTRATION ONLY REASON
 N DGENRODT,DGENRRSN,DGENSRCE,DGNOW,DIR,DGCURR,X,Y,DGKEY,DGREQNAME,DGENSTAT,DGWSHTOEN,DGRESP,DTOUT,DUOUT
 ;DG*5.3.1027 - Modifications to input logic of field .15 (REGISTRATION ONLY REASON) of the 27.11 (PATIENT ENROLLMENT) file
 ;W !!,"SELF-REPORTED REGISTRATION ONLY REASON"  ;DG*5.3*1027 - not needed - replaced with code below
 W !  ;DG*5.3*1027 ;spacing only
 S DGENRRSN=""
 S DGCURR=$$FINDCUR^DGENA(DFN)
 ; DG*5.3*1027 If DO YOU WISH TO ENROLL field in PATIENT (#2) file is YES AND
 ; no current enrollment record AND 
 ; The patient is unknown to ES, prompt for REGISTRATION ONLY REASON
 ; Supported DBIA #2701:   The supported DBIA is used to access MPI
 ;                         APIs to retrieve ICN, determine if ICN
 ;                         is local and if site is LST. 
 S DGKEY=$$GETICN^MPIF001(DFN)
 S DGREQNAME="VistAData"
 S DGRESP=0
 I $P(DGKEY,"^",1)'=-1 S DGRESP=$$EN^DGREGEEWS(DGKEY,DGREQNAME,.DGENSTAT,.DGWSHTOEN)
 I 'DGCURR,+DGRESP=0 F  D  Q:DGENRRSN
 . K DIR
 . S DIR("A")="SELF-REPORTED REGISTRATION ONLY REASON: "
 . S DIR(0)="27.11,.15,AO"
 . D ^DIR
 . I $D(DTOUT)!$D(DUOUT) S Y=""
 . S DGENRRSN=+Y
 . I 'DGENRRSN W !,"This is a required field.",!  ;end DG*5.3*1027 changes
 I DGENRRSN S DGNOW=$$NOW^XLFDT(),DGENRODT=DGNOW,DGENSRCE=1 D REGONLY^DGEN(DFN)
 Q
 ;DG*5.3*993 End of mods
VET W !!,*7,"Patient is a veteran and therefore should not be classified utilizing this",!,"option.  If this veteran has Other Entitled Eligibilities please insure that "
 W !,"the appropriate APPOINTMENT TYPE is selected at the time you make the",!,"appointment." G Q
ECPS K DGELG,DGPS W !!,*7,"Patient already has an eligibility code or period of service on file and",!,"therefore should not be classified using this option.  If this veteran",!,"has Other Entitled Eligibilities, please insure that the"
 W " appropriate",!,"APPOINTMENT TYPE is selected at the time you make the appointment."
Q K %,Y,DGVET,DIE,DIC,DGCOLV,DR,X,I,DGNOCOL,DA,AD,C,P,D,DGADD,I1,DGAD,DGAD1,DGADED,DGPHON G:DGDIR 1 K DGDIR S:$D(DFN) Y=DFN Q
WARNING() ;Add WARNING message to notify user of possible patient identity edits
 W !!,?25,"**WARNING!!**"
 W !!,"The edits you are about to make may potentially change the identity of"
 W !,"this patient. Please verify that you have selected the correct patient"
 W !,"and ensure that supporting documentation exists for these changes."
 N DIR,Y
 S DIR(0)="Y",DIR("A")="Do you wish to continue and save your edits"
 S DIR("B")="NO" D ^DIR
 Q Y
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGCOL   6176     printed  Sep 23, 2025@20:17:31                                                                                                                                                                                                       Page 2
DGCOL     ;ALB/MRL,ARF,RN - COLLATERAL PATIENT ENTRY-EDIT ; 04 MAY 87
 +1       ;;5.3;Registration;**2,23,32,993,1023,1027,1052**;Aug 13, 1993;Build 7
1          KILL DFN
           WRITE !!
           SET DGDIR=$SELECT($DATA(DGDIR):DGDIR,1:1)
           SET DIC="^DPT("
           SET DIC(0)="AEQML"
           SET DIC("DR")=".03;.09;.02;.3601;1901///^S X=""N"";391///^S X=""COLLATERAL"";.361///^S X=""COLLATERAL OF VET."";.323///^S X=""OTHER NON-VETERANS"";"
 +1        SET DLAYGO=2
           DO ^DIC
           IF Y'>0
               SET DGDIR=0
               KILL DLAYGO
               GOTO Q
 +2        SET DFN=+Y
           SET DGVET=$SELECT('$DATA(^DPT(DFN,"VET")):0,^("VET")="Y":1,1:0)
           IF '$PIECE(Y,"^",3)
               IF DGVET
                   IF 'DGDIR
                       GOTO Q
EN         SET DGDIR=$SELECT($DATA(DGDIR):DGDIR,1:0)
           if '$DATA(DFN)
               GOTO Q
           if DGVET
               GOTO VET
 +1        SET DGELG=$SELECT('$DATA(^DPT(DFN,.36)):1,'$DATA(^DIC(8,+^(.36),0)):1,$PIECE(^(0),"^",9)'=13:0,1:1)
           SET DGPS=$SELECT('$DATA(^DPT(DFN,.32)):1,'$DATA(^DIC(21,+$PIECE(^(.32),"^",3),0)):1,$PIECE(^(0),"^",1)'["OTHER NON-VET":0,1:1)
           if ('DGELG!'DGPS)
               GOTO ECPS
           KILL DGELG,DGPS
           DO EN^DGRPD
 +2        NEW DGEANS
           SET DGEANS=$$WARNING
 +3        IF $GET(DGEANS)'=1
               GOTO 1
 +4        IF $DATA(DGRPOUT)
               KILL DGRPOUT
               GOTO 1
 +5        SET (Y,DA)=DFN
           SET DR="[DGCOLLATERAL]"
           SET DGNOCOL=0
           SET DIE="^DPT("
           DO ^DIE
           if DGNOCOL!'$DATA(^DPT(DFN,0))
               GOTO Q
           IF '$DATA(DGCOLV)
               WRITE !!,"COLLATERAL VETERAN SPONSOR NAME IS UNSPECIFIED!!",*7
               GOTO EN
 +6        SET DGAD=$SELECT($DATA(^DPT(DFN,.11)):$PIECE(^(.11),"^",1,12),1:"")
           SET DGAD1=$SELECT($DATA(^DPT(+DGCOLV,.11)):$PIECE(^(.11),"^",1,12),1:"")
           SET C=0
           WRITE !!,"APPLICANT ADDRESS DATA",?45,"SPONSOR ADDRESS DATA",!,"----------------------",?45,"--------------------"
 +7        SET C=0
           SET P=1
           SET X=DGAD
           DO AD
           SET C=0
           SET P=2
           SET X=DGAD1
           DO AD
           FOR I=0:0
               SET I=$ORDER(AD(I))
               if 'I
                   QUIT 
               WRITE !,$PIECE(AD(I),"^",1),?45,$PIECE(AD(I),"^",2)
 +8        SET DGPHON=$SELECT($DATA(^DPT(DFN,.13)):$PIECE(^(.13),"^",1),1:"")
           SET $PIECE(DGPHON,"^",2)=$SELECT($DATA(^DPT(DGCOLV,.13)):$PIECE(^(.13),"^",1),1:"")
 +9        WRITE !!,"Phone:  ",$SELECT($PIECE(DGPHON,"^",1)]"":$PIECE(DGPHON,"^",1),1:"UNKNOWN"),?45,"Phone:  ",$SELECT($PIECE(DGPHON,"^",2)]"":$PIECE(DGPHON,"^",2),1:"UNKNOWN")
 +10       WRITE !!,"SPONSOR:  ",$PIECE(^DPT(DGCOLV,0),"^",1),", ",$EXTRACT($PIECE(^(0),"^",9),1,3),"-",$EXTRACT($PIECE(^(0),"^",9),4,5),"-",$EXTRACT($PIECE(^(0),"^",9),6,10)
 +11      ;DG*5.3*993 - Ask for SELF-SUPPORTED REGISTRATION ONLY REASON
           DO ENRRO
ASK        WRITE !!,"DO YOU WISH TO EDIT COLLATERAL INFORMATION"
           SET %=2
           DO YN^DICN
           if %=2!(%=-1)
               GOTO Q
           IF %=0
               WRITE !,"ENTER 'Y'ES OR 'N'O"
               GOTO ASK
H          WRITE !!,"SHOULD COLLATERAL PATIENT ADDRESS DATA BE SAME AS SPONSOR'S"
           SET %=2
           DO YN^DICN
           IF %>0
               SET DGADED=(%-1)
               GOTO ED
 +1        if %=-1
               GOTO Q
           WRITE !!,"Y - To stuff in sponsor's address data.",!,"N - To edit collateral address data",!,"^ - To QUIT."
           GOTO H
ED         IF DGADED
               SET DR=".3601;.111;S:X']"""" Y=.114;.112;S:X']"""" Y=.114;.113:.115;.1112;.117;.131;"
               SET DIE="^DPT("
               SET (DA,Y)=DFN
               DO ^DIE
               GOTO Q
 +1       ;S DGADD=$S($D(^DPT(DFN,.11)):^(.11),1:""),DGADD=$P(DGAD1,"^",1,12)_"^"_$P(DGADD,"^",13,999),^DPT(DFN,.11)=DGADD,$P(^DPT(DFN,.13),"^",1)=$P(DGPHON,"^",2) W !!,"Sponsor address data entered..." G Q
 +2        SET DGADD=$SELECT($DATA(^DPT(DFN,.11)):^(.11),1:"")
           SET DGADD=$PIECE(DGAD1,"^",1,12)_"^^^^"_$$GET1^DIQ(2,DGCOLV,.121)_"^^"_$PIECE(DGADD,"^",18)
           SET $PIECE(DGADD,"^",7)=$$GET1^DIQ(2,DGCOLV,.117)
           Begin DoDot:1
 +3            SET DIE="^DPT("
               SET DA=DFN
               SET DR=".111///^S X=$P(DGADD,U);.112///^S X=$P(DGADD,U,2);.113///^S X=$P(DGADD,U,3);.114///^S X=$P(DGADD,U,4);.115///^S X=$P(DGADD,U,5);.116///^S X=$P(DGADD,U,6);.117///^S X=$P(DGADD,U,7)"
               DO ^DIE
 +4            SET DIE="^DPT("
               SET DA=DFN
               SET DR=".1171///^S X=$P(DGADD,U,8);.1172///^S X=$P(DGADD,U,9);.1173///^S X=$P(DGADD,U,10);.118///^S X=$P(DGADD,U,13);.119///^S X=$P(DGADD,U,14);.12///^S X=$P(DGADD,U,15);.121///^S X=$P(DGADD,U,16)"
               DO ^DIE
 +5            SET DIE="^DPT("
               SET DA=DFN
               SET DR=";.1118///^S X=$P(DGADD,U,18);.131///^S X=$P(DGPHON,U,2)"
               DO ^DIE
 +6            QUIT 
           End DoDot:1
           WRITE !!,"Sponsor address data entered..."
           GOTO Q
AD         FOR I=1:1:5,12,7
               IF $PIECE(X,"^",I)]""
                   Begin DoDot:1
 +1                    SET D=$PIECE(X,"^",I)
                       SET C=C+1
 +2                    if (I=12)&($LENGTH(D)>5)
                           SET D=$EXTRACT(D,1,5)_"-"_$EXTRACT(D,6,20)
 +3                    SET $PIECE(AD(C),"^",P)=D
                       if I=5
                           SET $PIECE(AD(C),"^",P)=$SELECT($DATA(^DIC(5,+D,0)):$PIECE(^(0),"^",1),1:"STATE UNKNOWN")
                       IF I=7
                           SET $PIECE(AD(C),"^",P)=$SELECT($DATA(^DIC(5,+$PIECE(X,"^",5),1,+D,0)):$PIECE(^(0),"^",1),1:"UNKNOWN")
                   End DoDot:1
 +4        QUIT 
ENRRO     ;DG*5.3*993 - Ask for SELF-SUPPORTED REGISTRATION ONLY REASON
 +1        NEW DGENRODT,DGENRRSN,DGENSRCE,DGNOW,DIR,DGCURR,X,Y,DGKEY,DGREQNAME,DGENSTAT,DGWSHTOEN,DGRESP,DTOUT,DUOUT
 +2       ;DG*5.3.1027 - Modifications to input logic of field .15 (REGISTRATION ONLY REASON) of the 27.11 (PATIENT ENROLLMENT) file
 +3       ;W !!,"SELF-REPORTED REGISTRATION ONLY REASON"  ;DG*5.3*1027 - not needed - replaced with code below
 +4       ;DG*5.3*1027 ;spacing only
           WRITE !
 +5        SET DGENRRSN=""
 +6        SET DGCURR=$$FINDCUR^DGENA(DFN)
 +7       ; DG*5.3*1027 If DO YOU WISH TO ENROLL field in PATIENT (#2) file is YES AND
 +8       ; no current enrollment record AND 
 +9       ; The patient is unknown to ES, prompt for REGISTRATION ONLY REASON
 +10      ; Supported DBIA #2701:   The supported DBIA is used to access MPI
 +11      ;                         APIs to retrieve ICN, determine if ICN
 +12      ;                         is local and if site is LST. 
 +13       SET DGKEY=$$GETICN^MPIF001(DFN)
 +14       SET DGREQNAME="VistAData"
 +15       SET DGRESP=0
 +16       IF $PIECE(DGKEY,"^",1)'=-1
               SET DGRESP=$$EN^DGREGEEWS(DGKEY,DGREQNAME,.DGENSTAT,.DGWSHTOEN)
 +17       IF 'DGCURR
               IF +DGRESP=0
                   FOR 
                       Begin DoDot:1
 +18                       KILL DIR
 +19                       SET DIR("A")="SELF-REPORTED REGISTRATION ONLY REASON: "
 +20                       SET DIR(0)="27.11,.15,AO"
 +21                       DO ^DIR
 +22                       IF $DATA(DTOUT)!$DATA(DUOUT)
                               SET Y=""
 +23                       SET DGENRRSN=+Y
 +24      ;end DG*5.3*1027 changes
                           IF 'DGENRRSN
                               WRITE !,"This is a required field.",!
                       End DoDot:1
                       if DGENRRSN
                           QUIT 
 +25       IF DGENRRSN
               SET DGNOW=$$NOW^XLFDT()
               SET DGENRODT=DGNOW
               SET DGENSRCE=1
               DO REGONLY^DGEN(DFN)
 +26       QUIT 
 +27      ;DG*5.3*993 End of mods
VET        WRITE !!,*7,"Patient is a veteran and therefore should not be classified utilizing this",!,"option.  If this veteran has Other Entitled Eligibilities please insure that "
 +1        WRITE !,"the appropriate APPOINTMENT TYPE is selected at the time you make the",!,"appointment."
           GOTO Q
ECPS       KILL DGELG,DGPS
           WRITE !!,*7,"Patient already has an eligibility code or period of service on file and",!,"therefore should not be classified using this option.  If this veteran",!,"has Other Entitled Eligibilities, please insure that the"
 +1        WRITE " appropriate",!,"APPOINTMENT TYPE is selected at the time you make the appointment."
Q          KILL %,Y,DGVET,DIE,DIC,DGCOLV,DR,X,I,DGNOCOL,DA,AD,C,P,D,DGADD,I1,DGAD,DGAD1,DGADED,DGPHON
           if DGDIR
               GOTO 1
           KILL DGDIR
           if $DATA(DFN)
               SET Y=DFN
           QUIT 
WARNING() ;Add WARNING message to notify user of possible patient identity edits
 +1        WRITE !!,?25,"**WARNING!!**"
 +2        WRITE !!,"The edits you are about to make may potentially change the identity of"
 +3        WRITE !,"this patient. Please verify that you have selected the correct patient"
 +4        WRITE !,"and ensure that supporting documentation exists for these changes."
 +5        NEW DIR,Y
 +6        SET DIR(0)="Y"
           SET DIR("A")="Do you wish to continue and save your edits"
 +7        SET DIR("B")="NO"
           DO ^DIR
 +8        QUIT Y