DGPPRP3 ;LIB/MKN - PRESUMPTIVE PSYCHOSIS PATIENT PROFILES;08/02/2019
 ;;5.3;Registration;**977**August 02, 2019;;Build 177
 ;
 ;IA's
 ;   664 Sup DIVISION^VAUTOMA
 ; 10003 Sup ^%DT
 ; 10004 Sup ^DIQ:   $$GET1, GETS
 ; 10026 Sup ^DIR
 ; 10063 Sup ^%ZTLOAD
 ; 10086 Sup ^%ZIS:  HOME
 ; 10089 Sup ^%ZISC
 ; 10103 Sup ^XLFDT: $$FMTE, $$FMADD
 ;
 Q
 ;
EN ;entry point from Menu Option: PRESUMPTIVE PSYCHOSIS PATIENT PROFILE REPORT
 N DFN,DGCAT,DGDASH,DGDIV,DGDIVSEL,DGRET,DGDT,DGDTDEF,DGDTF,DGDTFRM,DGDTFSEL,DGDTSEL,DGDTT,DGDTTO,DGDTTSEL,DGRTYP
 N DGRES,DGSAVIOM,DGSELDIV,DGSET,DGTEMP,DGYN,IENDFN,POP,VAUTD,Y,ZTDESC,ZTRTN,ZTSAVE,ZTSK,%ZIS
 S DGTEMP=$NA(^TMP("DGPPRP3",$J)) K @DGTEMP
 ;DG*5.3*977 PP
 ;B9S3
 W @IOF
 W !,"PRESUMPTIVE PSYCHOSIS PATIENT PROFILE REPORT"
 ;PRESUMPTIVE PSYCHOSIS PATIENT PROFILE REPORT help text
 D HELP(1)
 W !!,*7,!,"THIS REPORT REQUIRES 132 COLUMN OUTPUT"
ASKDIV ;Select Division
 Q:'$$SELDIV^DGPPRP1(.DGDIVSEL)
 ;
 S DGDTDEF=$$GETDEFD^DGPPRP1() I DGDTDEF="" W !!,"There is no record of patch DG*5.3*977 being installed!",!! Q
 S DGDTSEL=$$DTFRMTO^DGPPRP1("Select dates") ;G:'DGDTSEL ASKDIV
 Q:DGDTSEL=0
 S DGDTFSEL=$P(DGDTSEL,U,2),DGDTTSEL=$P(DGDTSEL,U,3)
 ; Allow queueing
 K IOP,IO("Q") S %ZIS="MQ",%ZIS("B")="" S POP=0 D ^%ZIS Q:POP
 I $D(IO("Q")) D  Q   ;Queued report settings
 .S ZTDESC="Presumptive Psychosis Report",ZTRTN="DQ^DGPPRP3"
 .S ZTSAVE("DGRTYP")="",ZTSAVE("DGDTFRMT")="",ZTSAVE("DGDTFRM")="",ZTSAVE("ZTREQ")="@",ZTSAVE("DGDTTO")=""
 .D ^%ZTLOAD,HOME^%ZIS
 .I $G(ZTSK) W !!,"Report compilation has started with task# ",ZTSK,".",! S DIR(0)="E" D ^DIR K DIR
DQ ;
 S DGDT=$$FMADD^XLFDT(DGDTFSEL,-1)_".2399" F  S DGDT=$O(^DGPP(33.1,"AC",DGDT)) Q:DGDT=""!(DGDT<DGDTFSEL&(DGDT>DGDTTSEL))  D
 . S DGCAT="" F  S DGCAT=$O(^DGPP(33.1,"AC",DGDT,DGCAT)) Q:DGCAT=""  D
 .. S IENDFN=0 F  S IENDFN=$O(^DGPP(33.1,"AC",DGDT,DGCAT,IENDFN)) Q:'IENDFN  D
 ... S DFN=$P($G(^DGPP(33.1,IENDFN,0)),U) Q:'DFN
 ... K DGRET D CHKTREAT^DGPPRP1(.DGRET,DFN,DGDTFSEL,DGDTTSEL,.DGDIVSEL) Q:'$D(DGRET)
 ... S DGDIV="" F  S DGDIV=$O(DGRET(DGDIV)) Q:DGDIV=""  D DQ1
 S DGDASH="",$P(DGDASH,"-",133)=""
 D PRINT,OUT
 I $E(IOST,1,2)="C-" R !!?8,"End of the Report...Press Enter to Continue",X:DTIME W @IOF
 Q
 ;
DQ1 ;
 N DGDT1
 S DGDT1="" F  S DGDT1=$O(DGRET(DGDIV,DGDT1)) Q:DGDT1=""  D
 . I DGDIVSEL=1 D SET Q  ;If all Divisions selected
 . I $D(DGDIVSEL(DGDIV)) D SET  ;If selected Division match
 Q
 ;
SET ;
 N DGDISCH,DGDISCTY,DGENCAT,DGFAC,DGIEN2711,DGIEN2715,DFNS,DGN,DGOUT,DGOUTP,DGPATNA,DGPE,DGSERVDT,IEN3216,IENS3216
 S DFNS=DFN_"," ;,DGPATNA=$$GET1^DIQ(2,DFNS,.01)
 S IEN3216=$O(^DPT(DFN,.3216,"@"),-1),(DGDISCTY,DGSERVDT)=""
 K DGOUT I IEN3216 D GETS^DIQ(2.3216,IEN3216_","_DFNS,".02;.06","IE","DGOUT") D
 . S IENS3216=IEN3216_","_DFNS,DGSERVDT=$G(DGOUT(2.3216,IENS3216,.02,"I")) S:DGSERVDT?1.N DGSERVDT=$$FMTE^XLFDT(DGSERVDT,"5PZ")
 . S DGDISCTY=$G(DGOUT(2.3216,IENS3216,.06,"E"))
 D GETS^DIQ(2,DFNS,".01;.0905;.323;.361","","DGOUTP")
 S @DGTEMP@(DGDIV,DFN)=$G(DGOUTP(2,DFNS,.01))_U_$G(DGOUTP(2,DFNS,.0905))_U_DGSERVDT_U_DGDISCTY
 S @DGTEMP@(DGDIV,DFN)=@DGTEMP@(DGDIV,DFN)_U_$G(DGOUTP(2,DFNS,.323))_U_$G(DGOUTP(2,DFNS,.361))_U
 S DGIEN2711=$O(^DGEN(27.11,"C",DFN,"")),DGENCAT=""
 I DGIEN2711 S DGIEN2715=$$GET1^DIQ(27.11,DGIEN2711_",",.04,"I"),DGENCAT=$$GET1^DIQ(27.15,DGIEN2715_",",.02)
 S @DGTEMP@(DGDIV,DFN)=@DGTEMP@(DGDIV,DFN)_DGENCAT
 Q
 ;
PRINT ;Print out results
 N DGI,DGPATNA,DGX,DGY,PAGE,EXIT,DGHDRYN
 W @IOF I '$D(@DGTEMP) W !!?10," << None found >> ",!! G OUT
 S (EXIT,PAGE,DGHDRYN)=0
 S DGDIV="" F  S DGDIV=$O(@DGTEMP@(DGDIV)) Q:DGDIV=""!(EXIT)  D
 .S DGHDRYN=1
 .S DFN="" F  S DFN=$O(@DGTEMP@(DGDIV,DFN)) Q:DFN=""!(EXIT)  S DGX=@DGTEMP@(DGDIV,DFN) D PRINT2
 .Q
 W !
 I $E(IOST,1,2)="C-",'EXIT R !!?8,"End of the Report...Press Enter to Continue",X:DTIME W @IOF
 Q
 ;
PRINT2 ;
 I $Y+5>IOSL!DGHDRYN,PAGE>0 I ($E(IOST,1,2)="C-")&(IO=IO(0)) W ! S DIR(0)="E" D ^DIR K DIR D
 .I $D(DTOUT)!($D(DUOUT)) S EXIT=1 Q
 .W @IOF D HDR S DGHDRYN=0
 .Q
 Q:EXIT
 I DGHDRYN D HDR S DGHDRYN=0
 W !,$E($P(DGX,U),1,20),?22,$P(DGX,U,2),?29,$$FMTE^XLFDT($P(DGX,U,3)),?43,$E($P(DGX,U,4),1,14),?58,$E($P(DGX,U,5),1,20),?81,$E($P(DGX,U,6),1,19),?103,$E($P(DGX,U,7),1,29)
 Q
 ;
HDR ; Print page header
 N DGX
 S PAGE=PAGE+1
 S DGX="Presumptive Psychosis Patient Profile",DGX=$J(" ",132-$L(DGX)\2)_DGX
 W DGX,?120,"Page: ",PAGE
 S DGX="Division: "_$$GET1^DIQ(40.8,DGDIV_",",.01),DGX=$J(" ",132-$L(DGX)\2)_DGX W !,DGX
 S DGX="Date Range: "_$$FMTE^XLFDT(DGDTFSEL,"5PZ")_" to "_$$FMTE^XLFDT(DGDTTSEL,"5PZ"),DGX=$J(" ",132-$L(DGX)\2)_DGX W !,DGX
 W ?104,"Date Printed: ",$$FMTE^XLFDT($P($$NOW^XLFDT(),"."))
 W !,DGDASH,!,"PATIENT NAME",?22,"PID",?29,"  SERVICE",?43,"DISCHARGE",?58,"PERIOD OF SERVICE",?81,"PRIMARY ELIGIBILITY"
 W ?103,"ENROLLMENT CAT",!?27,"SEPARATION DATE",?43,"  TYPE",!,DGDASH
 ;
 Q
 ;
DTFRMTO(PROMPT)  ;Get from and to dates 
 N %DT,Y,X,DTOUT,OUT,DIRUT,DUOUT,STATUS,STDT,STATUS
 ;INPUT ;   PROMPT - Message to display prior to prompting for dates
 ;OUTPUT:     1^BEGDT^ENDDT - Data found
 ;            0             - User up arrowed or timed out
 ;If they want to show first available date for that set of Status, use this sub
INDT ;
 S OUT=0
 S DIR(0)="DO^"_DT_":"_DT_":EX"
 S %DT="AEX",%DT("A")="From date: " ;Enter Beginning Date: "
 W ! D ^%DT K %DT
 I Y<0 W !!,"No Date selected, quitting. ",!! Q OUT  ;Quit if user time out or didn't enter valid date
 I Y>DT W !!,"Future dates are not allowed, please re-enter" K Y,%DT G INDT  ;Future dates not allowed
 S DGDTFRM=+Y,%DT="AEX",%DT("A")="To date:   ",%DT("B")="T" ; Get end date, default is "TODAY"
 D ^%DT K %DT
 ;Quit if user time out or didn't enter valid date
 I Y<0 W !!,"No Date selected, quitting. ",!! Q OUT
 S DGDTTO=+Y,OUT=1_U_DGDTFRM_U_DGDTTO
 ;Switch dates if Begin Date is more recent than End Date
 S:DGDTFRM>DGDTTO OUT=1_U_DGDTTO_U_DGDTFRM
 Q OUT
 ;
 ;DG*5.3*977 PP
 ;B9S3
HELP(DGSEL) ;
 I DGSEL=1 D
 . W !!,"This option generates a report that prints a list of all patients treated"
 . W !,"under Presumptive Psychosis authority and who had an Outpatient Encounter"
 . W !,"with the STATUS=CHECKED OUT for Clinic(s) associated with the selected"
 . W !,"Division(s) within the user specified date range."
 Q
 ;
OUT ; KILL RETURN ARRAY QUIT
 D ^%ZISC
 K @DGTEMP
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGPPRP3   6403     printed  Sep 23, 2025@20:26:47                                                                                                                                                                                                     Page 2
DGPPRP3   ;LIB/MKN - PRESUMPTIVE PSYCHOSIS PATIENT PROFILES;08/02/2019
 +1       ;;5.3;Registration;**977**August 02, 2019;;Build 177
 +2       ;
 +3       ;IA's
 +4       ;   664 Sup DIVISION^VAUTOMA
 +5       ; 10003 Sup ^%DT
 +6       ; 10004 Sup ^DIQ:   $$GET1, GETS
 +7       ; 10026 Sup ^DIR
 +8       ; 10063 Sup ^%ZTLOAD
 +9       ; 10086 Sup ^%ZIS:  HOME
 +10      ; 10089 Sup ^%ZISC
 +11      ; 10103 Sup ^XLFDT: $$FMTE, $$FMADD
 +12      ;
 +13       QUIT 
 +14      ;
EN        ;entry point from Menu Option: PRESUMPTIVE PSYCHOSIS PATIENT PROFILE REPORT
 +1        NEW DFN,DGCAT,DGDASH,DGDIV,DGDIVSEL,DGRET,DGDT,DGDTDEF,DGDTF,DGDTFRM,DGDTFSEL,DGDTSEL,DGDTT,DGDTTO,DGDTTSEL,DGRTYP
 +2        NEW DGRES,DGSAVIOM,DGSELDIV,DGSET,DGTEMP,DGYN,IENDFN,POP,VAUTD,Y,ZTDESC,ZTRTN,ZTSAVE,ZTSK,%ZIS
 +3        SET DGTEMP=$NAME(^TMP("DGPPRP3",$JOB))
           KILL @DGTEMP
 +4       ;DG*5.3*977 PP
 +5       ;B9S3
 +6        WRITE @IOF
 +7        WRITE !,"PRESUMPTIVE PSYCHOSIS PATIENT PROFILE REPORT"
 +8       ;PRESUMPTIVE PSYCHOSIS PATIENT PROFILE REPORT help text
 +9        DO HELP(1)
 +10       WRITE !!,*7,!,"THIS REPORT REQUIRES 132 COLUMN OUTPUT"
ASKDIV    ;Select Division
 +1        if '$$SELDIV^DGPPRP1(.DGDIVSEL)
               QUIT 
 +2       ;
 +3        SET DGDTDEF=$$GETDEFD^DGPPRP1()
           IF DGDTDEF=""
               WRITE !!,"There is no record of patch DG*5.3*977 being installed!",!!
               QUIT 
 +4       ;G:'DGDTSEL ASKDIV
           SET DGDTSEL=$$DTFRMTO^DGPPRP1("Select dates")
 +5        if DGDTSEL=0
               QUIT 
 +6        SET DGDTFSEL=$PIECE(DGDTSEL,U,2)
           SET DGDTTSEL=$PIECE(DGDTSEL,U,3)
 +7       ; Allow queueing
 +8        KILL IOP,IO("Q")
           SET %ZIS="MQ"
           SET %ZIS("B")=""
           SET POP=0
           DO ^%ZIS
           if POP
               QUIT 
 +9       ;Queued report settings
           IF $DATA(IO("Q"))
               Begin DoDot:1
 +10               SET ZTDESC="Presumptive Psychosis Report"
                   SET ZTRTN="DQ^DGPPRP3"
 +11               SET ZTSAVE("DGRTYP")=""
                   SET ZTSAVE("DGDTFRMT")=""
                   SET ZTSAVE("DGDTFRM")=""
                   SET ZTSAVE("ZTREQ")="@"
                   SET ZTSAVE("DGDTTO")=""
 +12               DO ^%ZTLOAD
                   DO HOME^%ZIS
 +13               IF $GET(ZTSK)
                       WRITE !!,"Report compilation has started with task# ",ZTSK,".",!
                       SET DIR(0)="E"
                       DO ^DIR
                       KILL DIR
               End DoDot:1
               QUIT 
DQ        ;
 +1        SET DGDT=$$FMADD^XLFDT(DGDTFSEL,-1)_".2399"
           FOR 
               SET DGDT=$ORDER(^DGPP(33.1,"AC",DGDT))
               if DGDT=""!(DGDT<DGDTFSEL&(DGDT>DGDTTSEL))
                   QUIT 
               Begin DoDot:1
 +2                SET DGCAT=""
                   FOR 
                       SET DGCAT=$ORDER(^DGPP(33.1,"AC",DGDT,DGCAT))
                       if DGCAT=""
                           QUIT 
                       Begin DoDot:2
 +3                        SET IENDFN=0
                           FOR 
                               SET IENDFN=$ORDER(^DGPP(33.1,"AC",DGDT,DGCAT,IENDFN))
                               if 'IENDFN
                                   QUIT 
                               Begin DoDot:3
 +4                                SET DFN=$PIECE($GET(^DGPP(33.1,IENDFN,0)),U)
                                   if 'DFN
                                       QUIT 
 +5                                KILL DGRET
                                   DO CHKTREAT^DGPPRP1(.DGRET,DFN,DGDTFSEL,DGDTTSEL,.DGDIVSEL)
                                   if '$DATA(DGRET)
                                       QUIT 
 +6                                SET DGDIV=""
                                   FOR 
                                       SET DGDIV=$ORDER(DGRET(DGDIV))
                                       if DGDIV=""
                                           QUIT 
                                       DO DQ1
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +7        SET DGDASH=""
           SET $PIECE(DGDASH,"-",133)=""
 +8        DO PRINT
           DO OUT
 +9        IF $EXTRACT(IOST,1,2)="C-"
               READ !!?8,"End of the Report...Press Enter to Continue",X:DTIME
               WRITE @IOF
 +10       QUIT 
 +11      ;
DQ1       ;
 +1        NEW DGDT1
 +2        SET DGDT1=""
           FOR 
               SET DGDT1=$ORDER(DGRET(DGDIV,DGDT1))
               if DGDT1=""
                   QUIT 
               Begin DoDot:1
 +3       ;If all Divisions selected
                   IF DGDIVSEL=1
                       DO SET
                       QUIT 
 +4       ;If selected Division match
                   IF $DATA(DGDIVSEL(DGDIV))
                       DO SET
               End DoDot:1
 +5        QUIT 
 +6       ;
SET       ;
 +1        NEW DGDISCH,DGDISCTY,DGENCAT,DGFAC,DGIEN2711,DGIEN2715,DFNS,DGN,DGOUT,DGOUTP,DGPATNA,DGPE,DGSERVDT,IEN3216,IENS3216
 +2       ;,DGPATNA=$$GET1^DIQ(2,DFNS,.01)
           SET DFNS=DFN_","
 +3        SET IEN3216=$ORDER(^DPT(DFN,.3216,"@"),-1)
           SET (DGDISCTY,DGSERVDT)=""
 +4        KILL DGOUT
           IF IEN3216
               DO GETS^DIQ(2.3216,IEN3216_","_DFNS,".02;.06","IE","DGOUT")
               Begin DoDot:1
 +5                SET IENS3216=IEN3216_","_DFNS
                   SET DGSERVDT=$GET(DGOUT(2.3216,IENS3216,.02,"I"))
                   if DGSERVDT?1.N
                       SET DGSERVDT=$$FMTE^XLFDT(DGSERVDT,"5PZ")
 +6                SET DGDISCTY=$GET(DGOUT(2.3216,IENS3216,.06,"E"))
               End DoDot:1
 +7        DO GETS^DIQ(2,DFNS,".01;.0905;.323;.361","","DGOUTP")
 +8        SET @DGTEMP@(DGDIV,DFN)=$GET(DGOUTP(2,DFNS,.01))_U_$GET(DGOUTP(2,DFNS,.0905))_U_DGSERVDT_U_DGDISCTY
 +9        SET @DGTEMP@(DGDIV,DFN)=@DGTEMP@(DGDIV,DFN)_U_$GET(DGOUTP(2,DFNS,.323))_U_$GET(DGOUTP(2,DFNS,.361))_U
 +10       SET DGIEN2711=$ORDER(^DGEN(27.11,"C",DFN,""))
           SET DGENCAT=""
 +11       IF DGIEN2711
               SET DGIEN2715=$$GET1^DIQ(27.11,DGIEN2711_",",.04,"I")
               SET DGENCAT=$$GET1^DIQ(27.15,DGIEN2715_",",.02)
 +12       SET @DGTEMP@(DGDIV,DFN)=@DGTEMP@(DGDIV,DFN)_DGENCAT
 +13       QUIT 
 +14      ;
PRINT     ;Print out results
 +1        NEW DGI,DGPATNA,DGX,DGY,PAGE,EXIT,DGHDRYN
 +2        WRITE @IOF
           IF '$DATA(@DGTEMP)
               WRITE !!?10," << None found >> ",!!
               GOTO OUT
 +3        SET (EXIT,PAGE,DGHDRYN)=0
 +4        SET DGDIV=""
           FOR 
               SET DGDIV=$ORDER(@DGTEMP@(DGDIV))
               if DGDIV=""!(EXIT)
                   QUIT 
               Begin DoDot:1
 +5                SET DGHDRYN=1
 +6                SET DFN=""
                   FOR 
                       SET DFN=$ORDER(@DGTEMP@(DGDIV,DFN))
                       if DFN=""!(EXIT)
                           QUIT 
                       SET DGX=@DGTEMP@(DGDIV,DFN)
                       DO PRINT2
 +7                QUIT 
               End DoDot:1
 +8        WRITE !
 +9        IF $EXTRACT(IOST,1,2)="C-"
               IF 'EXIT
                   READ !!?8,"End of the Report...Press Enter to Continue",X:DTIME
                   WRITE @IOF
 +10       QUIT 
 +11      ;
PRINT2    ;
 +1        IF $Y+5>IOSL!DGHDRYN
               IF PAGE>0
                   IF ($EXTRACT(IOST,1,2)="C-")&(IO=IO(0))
                       WRITE !
                       SET DIR(0)="E"
                       DO ^DIR
                       KILL DIR
                       Begin DoDot:1
 +2                        IF $DATA(DTOUT)!($DATA(DUOUT))
                               SET EXIT=1
                               QUIT 
 +3                        WRITE @IOF
                           DO HDR
                           SET DGHDRYN=0
 +4                        QUIT 
                       End DoDot:1
 +5        if EXIT
               QUIT 
 +6        IF DGHDRYN
               DO HDR
               SET DGHDRYN=0
 +7        WRITE !,$EXTRACT($PIECE(DGX,U),1,20),?22,$PIECE(DGX,U,2),?29,$$FMTE^XLFDT($PIECE(DGX,U,3)),?43,$EXTRACT($PIECE(DGX,U,4),1,14),?58,$EXTRACT($PIECE(DGX,U,5),1,20),?81,$EXTRACT($PIECE(DGX,U,6),1,19),?103,$EXTRACT($PIECE(DGX,U,7),1,29)
 +8        QUIT 
 +9       ;
HDR       ; Print page header
 +1        NEW DGX
 +2        SET PAGE=PAGE+1
 +3        SET DGX="Presumptive Psychosis Patient Profile"
           SET DGX=$JUSTIFY(" ",132-$LENGTH(DGX)\2)_DGX
 +4        WRITE DGX,?120,"Page: ",PAGE
 +5        SET DGX="Division: "_$$GET1^DIQ(40.8,DGDIV_",",.01)
           SET DGX=$JUSTIFY(" ",132-$LENGTH(DGX)\2)_DGX
           WRITE !,DGX
 +6        SET DGX="Date Range: "_$$FMTE^XLFDT(DGDTFSEL,"5PZ")_" to "_$$FMTE^XLFDT(DGDTTSEL,"5PZ")
           SET DGX=$JUSTIFY(" ",132-$LENGTH(DGX)\2)_DGX
           WRITE !,DGX
 +7        WRITE ?104,"Date Printed: ",$$FMTE^XLFDT($PIECE($$NOW^XLFDT(),"."))
 +8        WRITE !,DGDASH,!,"PATIENT NAME",?22,"PID",?29,"  SERVICE",?43,"DISCHARGE",?58,"PERIOD OF SERVICE",?81,"PRIMARY ELIGIBILITY"
 +9        WRITE ?103,"ENROLLMENT CAT",!?27,"SEPARATION DATE",?43,"  TYPE",!,DGDASH
 +10      ;
 +11       QUIT 
 +12      ;
DTFRMTO(PROMPT) ;Get from and to dates 
 +1        NEW %DT,Y,X,DTOUT,OUT,DIRUT,DUOUT,STATUS,STDT,STATUS
 +2       ;INPUT ;   PROMPT - Message to display prior to prompting for dates
 +3       ;OUTPUT:     1^BEGDT^ENDDT - Data found
 +4       ;            0             - User up arrowed or timed out
 +5       ;If they want to show first available date for that set of Status, use this sub
INDT      ;
 +1        SET OUT=0
 +2        SET DIR(0)="DO^"_DT_":"_DT_":EX"
 +3       ;Enter Beginning Date: "
           SET %DT="AEX"
           SET %DT("A")="From date: "
 +4        WRITE !
           DO ^%DT
           KILL %DT
 +5       ;Quit if user time out or didn't enter valid date
           IF Y<0
               WRITE !!,"No Date selected, quitting. ",!!
               QUIT OUT
 +6       ;Future dates not allowed
           IF Y>DT
               WRITE !!,"Future dates are not allowed, please re-enter"
               KILL Y,%DT
               GOTO INDT
 +7       ; Get end date, default is "TODAY"
           SET DGDTFRM=+Y
           SET %DT="AEX"
           SET %DT("A")="To date:   "
           SET %DT("B")="T"
 +8        DO ^%DT
           KILL %DT
 +9       ;Quit if user time out or didn't enter valid date
 +10       IF Y<0
               WRITE !!,"No Date selected, quitting. ",!!
               QUIT OUT
 +11       SET DGDTTO=+Y
           SET OUT=1_U_DGDTFRM_U_DGDTTO
 +12      ;Switch dates if Begin Date is more recent than End Date
 +13       if DGDTFRM>DGDTTO
               SET OUT=1_U_DGDTTO_U_DGDTFRM
 +14       QUIT OUT
 +15      ;
 +16      ;DG*5.3*977 PP
 +17      ;B9S3
HELP(DGSEL) ;
 +1        IF DGSEL=1
               Begin DoDot:1
 +2                WRITE !!,"This option generates a report that prints a list of all patients treated"
 +3                WRITE !,"under Presumptive Psychosis authority and who had an Outpatient Encounter"
 +4                WRITE !,"with the STATUS=CHECKED OUT for Clinic(s) associated with the selected"
 +5                WRITE !,"Division(s) within the user specified date range."
               End DoDot:1
 +6        QUIT 
 +7       ;
OUT       ; KILL RETURN ARRAY QUIT
 +1        DO ^%ZISC
 +2        KILL @DGTEMP
 +3        QUIT