DGENRPD1 ;ALB/CJM - Veterans with no Application and with a Future Appointment Report; 04/28/2004
;;5.3;Registration;**147,568,1015**;Aug 13,1993;Build 21
;
REPORT ;
N DGENRP
;
;Control variables used in generating report
;DGENRP("BEGIN")=<begining of the date range for appt selection>
;DGENRP("END")=<ending date of range>
;DGENRP("ALL")=1 means to include all clinics for appt selection
;DGENRP("DIVISION",<list of medical center Divisions to include>)=""
;DGENRP("CLINIC",<list of clinics to include>)=""
;DGENRP("JUSTONCE")=<1 means that if the patient has multiple appts to print only the first, 0 means print all the patient's appts>
;
G:'$$ASKRANGE(.DGENRP) EXIT
G:'$$LOCATION(.DGENRP) EXIT
G:'$$JUSTONCE(.DGENRP) EXIT
;
I $$DEVICE() D PRINT^DGENRPD2
EXIT ;
Q
;
DEVICE() ;
;Description: allows the user to select a device.
;Input: none
;
;Output:
; Function Value - Returns 0 if the user decides not to print or to
; queue the report, 1 otherwise.
;
N OK
S OK=1
S %ZIS="MQ"
W !,"*** This report requires a 132 column printer. ******"
D ^%ZIS
S:POP OK=0
D:OK&$D(IO("Q"))
.S ZTRTN="PRINT^DGENRPD2",ZTDESC="Future Appointments with No EnrollmentApplication REPORT",ZTSAVE("DGENRP(")=""
.D ^%ZTLOAD
.W !,$S($D(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
.D HOME^%ZIS
.S OK=0
Q OK
;
LOCATION(DGENRP) ;
;Description: asks the user to select locations of future appointments
;
;Input: none
;Output:
; DGENRP - (pass by reference) used to return selected locations
; Function Value: 0 on failure, 1 on success
;
N DIR,SUCCESS
S SUCCESS=1
S DIR("B")="ALL"
S DIR(0)=$S($P($G(^DG(43,1,"GL")),"^",2):"S^A:All;D:by Division;C:by Clinic",1:"S^A:All;C:by Clinic")
S DIR("A")="How do you want to select the clinics to appear in the report? "
S DIR("?")="You have the choice of selecting all clinics, entire divisions, or individual clinics."
D ^DIR
I $D(DIRUT) D
.S SUCCESS=0
E D
.I Y="A" D
..S DGENRP("ALL")=1
.E D
..S DGENRP("ALL")=0
..I Y="C" D
...S SUCCESS=$$CLINIC(.DGENRP)
..E D
...I Y="D" S SUCCESS=$$DIVISION(.DGENRP)
;
Q SUCCESS
;
ASKRANGE(DGENRP) ;
;Description: Asks the user to enter a date range begining no earlier
;than the current date
;
Q:'$$ASKBEGIN(.DGENRP) 0
Q:'$$ASKEND(.DGENRP) 0
Q 1
;
ASKBEGIN(DGENRP) ;
;Description: Asks the user to enter a beginning date.
;
;Input: none
;
;Output:
; Function value=1 if user selected a date, 0 otherwise
; DGENRP("BEGIN")=date selected
;
N DIR,X,Y
S DIR(0)="D^::XO"
S DIR("A")="Enter beginning date for future appointments for."
S DIR("B")=$$FMTE^XLFDT($$FMADD^XLFDT(DT,1),"D")
S DIR("?")="Enter the first day to list appointments."
REPEAT D ^DIR
Q:$D(DIRUT) 0
I Y'>DT W !,"Date must be later than today!" G REPEAT
S DGENRP("BEGIN")=Y
Q 1
;
ASKEND(DGENRP) ;
;Description: Asks the user to enter an end date.
;
;Input:
; DGENRP("BEGIN") - the earliest possible date
;
;Output:
; Function value=1 if user selected a date, 0 otherwise
; DGENRP("END")=date selected
;
N DIR,X,Y
S DIR(0)="D^::X"
S DIR("A")="Enter ending date"
S DIR("B")=$$FMTE^XLFDT(DGENRP("BEGIN"),"D")
S DIR("?")="Enter the last day to list appointments for."
AGAIN D ^DIR
Q:$D(DIRUT) 0
I (Y<$G(DGENRP("BEGIN"))) W !,"Date must be no earlier than "_DIR("B") G AGAIN
S DGENRP("END")=Y
Q 1
;
DIVISION(DGENRP) ;
;Description: asks divisions to include
;
N DIR,QUIT,SUCCESS
S SUCCESS=1
S DIR(0)="PO^40.8:AEM"
S DIR("A")="Select the medical center divisions to include in the report"
S DIR("?")="Appointments will not be included in the report for divisions that you do not select."
S QUIT=0
F D Q:QUIT
.D ^DIR
.I $D(DUOUT)!$D(DTOUT) S QUIT=1,SUCCESS=0 Q
.I ((+Y)'>0) S QUIT=1 Q
.S DGENRP("DIVISION",+Y)=""
S:'$O(DGENRP("DIVISION",0)) SUCCESS=0
Q SUCCESS
;
CLINIC(DGENRP) ;
;Description: asks clinics to include
;
N DIR,QUIT,SUCCESS
S SUCCESS=1
S DIR(0)="PO^44:AEM"
S DIR("A")="Select the clinics to include in the report"
S DIR("?")="Appointments will not be included in the report for clinics that you do not select."
S DIR("S")="I $P(^(0),""^"",3)=""C"""
S QUIT=0
F D Q:QUIT
.D ^DIR
.I $D(DUOUT)!$D(DTOUT) S QUIT=1,SUCCESS=0 Q
.I ((+Y)'>0) S QUIT=1 Q
.S DGENRP("CLINIC",+Y)=""
S:'$O(DGENRP("CLINIC",0)) SUCCESS=0
Q SUCCESS
;
JUSTONCE(DGENRP) ;
;Description: Asks wether or not to include only the first appointment
;for a patient that has multiple appointments
;
;Output:
; Function Value: reuturns 1 on success, 0 on failure
; DGENRP("JUSTONCE")=<1 for only earliest, 0 for all>
;
N DIR
S DGENRP("JUSTONCE")=0
S DIR(0)="Y"
S DIR("B")="NO"
S DIR("A")="For patients with multiple appointments, should only the first be listed"
D ^DIR
Q:$D(DIRUT) 0
I +Y=1 S DGENRP("JUSTONCE")=1
Q 1
DGENRPD1 ;ALB/CJM - Veterans with no Application and with a Future Appointment Report; 04/28/2004
+1 ;;5.3;Registration;**147,568,1015**;Aug 13,1993;Build 21
+2 ;
REPORT ;
+1 NEW DGENRP
+2 ;
+3 ;Control variables used in generating report
+4 ;DGENRP("BEGIN")=<begining of the date range for appt selection>
+5 ;DGENRP("END")=<ending date of range>
+6 ;DGENRP("ALL")=1 means to include all clinics for appt selection
+7 ;DGENRP("DIVISION",<list of medical center Divisions to include>)=""
+8 ;DGENRP("CLINIC",<list of clinics to include>)=""
+9 ;DGENRP("JUSTONCE")=<1 means that if the patient has multiple appts to print only the first, 0 means print all the patient's appts>
+10 ;
+11 IF '$$ASKRANGE(.DGENRP)
GOTO EXIT
+12 IF '$$LOCATION(.DGENRP)
GOTO EXIT
+13 IF '$$JUSTONCE(.DGENRP)
GOTO EXIT
+14 ;
+15 IF $$DEVICE()
DO PRINT^DGENRPD2
EXIT ;
+1 QUIT
+2 ;
DEVICE() ;
+1 ;Description: allows the user to select a device.
+2 ;Input: none
+3 ;
+4 ;Output:
+5 ; Function Value - Returns 0 if the user decides not to print or to
+6 ; queue the report, 1 otherwise.
+7 ;
+8 NEW OK
+9 SET OK=1
+10 SET %ZIS="MQ"
+11 WRITE !,"*** This report requires a 132 column printer. ******"
+12 DO ^%ZIS
+13 IF POP
SET OK=0
+14 IF OK&$DATA(IO("Q"))
Begin DoDot:1
+15 SET ZTRTN="PRINT^DGENRPD2"
SET ZTDESC="Future Appointments with No EnrollmentApplication REPORT"
SET ZTSAVE("DGENRP(")=""
+16 DO ^%ZTLOAD
+17 WRITE !,$SELECT($DATA(ZTSK):"REQUEST QUEUED TASK="_ZTSK,1:"REQUEST CANCELLED")
+18 DO HOME^%ZIS
+19 SET OK=0
End DoDot:1
+20 QUIT OK
+21 ;
LOCATION(DGENRP) ;
+1 ;Description: asks the user to select locations of future appointments
+2 ;
+3 ;Input: none
+4 ;Output:
+5 ; DGENRP - (pass by reference) used to return selected locations
+6 ; Function Value: 0 on failure, 1 on success
+7 ;
+8 NEW DIR,SUCCESS
+9 SET SUCCESS=1
+10 SET DIR("B")="ALL"
+11 SET DIR(0)=$SELECT($PIECE($GET(^DG(43,1,"GL")),"^",2):"S^A:All;D:by Division;C:by Clinic",1:"S^A:All;C:by Clinic")
+12 SET DIR("A")="How do you want to select the clinics to appear in the report? "
+13 SET DIR("?")="You have the choice of selecting all clinics, entire divisions, or individual clinics."
+14 DO ^DIR
+15 IF $DATA(DIRUT)
Begin DoDot:1
+16 SET SUCCESS=0
End DoDot:1
+17 IF '$TEST
Begin DoDot:1
+18 IF Y="A"
Begin DoDot:2
+19 SET DGENRP("ALL")=1
End DoDot:2
+20 IF '$TEST
Begin DoDot:2
+21 SET DGENRP("ALL")=0
+22 IF Y="C"
Begin DoDot:3
+23 SET SUCCESS=$$CLINIC(.DGENRP)
End DoDot:3
+24 IF '$TEST
Begin DoDot:3
+25 IF Y="D"
SET SUCCESS=$$DIVISION(.DGENRP)
End DoDot:3
End DoDot:2
End DoDot:1
+26 ;
+27 QUIT SUCCESS
+28 ;
ASKRANGE(DGENRP) ;
+1 ;Description: Asks the user to enter a date range begining no earlier
+2 ;than the current date
+3 ;
+4 IF '$$ASKBEGIN(.DGENRP)
QUIT 0
+5 IF '$$ASKEND(.DGENRP)
QUIT 0
+6 QUIT 1
+7 ;
ASKBEGIN(DGENRP) ;
+1 ;Description: Asks the user to enter a beginning date.
+2 ;
+3 ;Input: none
+4 ;
+5 ;Output:
+6 ; Function value=1 if user selected a date, 0 otherwise
+7 ; DGENRP("BEGIN")=date selected
+8 ;
+9 NEW DIR,X,Y
+10 SET DIR(0)="D^::XO"
+11 SET DIR("A")="Enter beginning date for future appointments for."
+12 SET DIR("B")=$$FMTE^XLFDT($$FMADD^XLFDT(DT,1),"D")
+13 SET DIR("?")="Enter the first day to list appointments."
REPEAT DO ^DIR
+1 IF $DATA(DIRUT)
QUIT 0
+2 IF Y'>DT
WRITE !,"Date must be later than today!"
GOTO REPEAT
+3 SET DGENRP("BEGIN")=Y
+4 QUIT 1
+5 ;
ASKEND(DGENRP) ;
+1 ;Description: Asks the user to enter an end date.
+2 ;
+3 ;Input:
+4 ; DGENRP("BEGIN") - the earliest possible date
+5 ;
+6 ;Output:
+7 ; Function value=1 if user selected a date, 0 otherwise
+8 ; DGENRP("END")=date selected
+9 ;
+10 NEW DIR,X,Y
+11 SET DIR(0)="D^::X"
+12 SET DIR("A")="Enter ending date"
+13 SET DIR("B")=$$FMTE^XLFDT(DGENRP("BEGIN"),"D")
+14 SET DIR("?")="Enter the last day to list appointments for."
AGAIN DO ^DIR
+1 IF $DATA(DIRUT)
QUIT 0
+2 IF (Y<$GET(DGENRP("BEGIN")))
WRITE !,"Date must be no earlier than "_DIR("B")
GOTO AGAIN
+3 SET DGENRP("END")=Y
+4 QUIT 1
+5 ;
DIVISION(DGENRP) ;
+1 ;Description: asks divisions to include
+2 ;
+3 NEW DIR,QUIT,SUCCESS
+4 SET SUCCESS=1
+5 SET DIR(0)="PO^40.8:AEM"
+6 SET DIR("A")="Select the medical center divisions to include in the report"
+7 SET DIR("?")="Appointments will not be included in the report for divisions that you do not select."
+8 SET QUIT=0
+9 FOR
Begin DoDot:1
+10 DO ^DIR
+11 IF $DATA(DUOUT)!$DATA(DTOUT)
SET QUIT=1
SET SUCCESS=0
QUIT
+12 IF ((+Y)'>0)
SET QUIT=1
QUIT
+13 SET DGENRP("DIVISION",+Y)=""
End DoDot:1
IF QUIT
QUIT
+14 IF '$ORDER(DGENRP("DIVISION",0))
SET SUCCESS=0
+15 QUIT SUCCESS
+16 ;
CLINIC(DGENRP) ;
+1 ;Description: asks clinics to include
+2 ;
+3 NEW DIR,QUIT,SUCCESS
+4 SET SUCCESS=1
+5 SET DIR(0)="PO^44:AEM"
+6 SET DIR("A")="Select the clinics to include in the report"
+7 SET DIR("?")="Appointments will not be included in the report for clinics that you do not select."
+8 SET DIR("S")="I $P(^(0),""^"",3)=""C"""
+9 SET QUIT=0
+10 FOR
Begin DoDot:1
+11 DO ^DIR
+12 IF $DATA(DUOUT)!$DATA(DTOUT)
SET QUIT=1
SET SUCCESS=0
QUIT
+13 IF ((+Y)'>0)
SET QUIT=1
QUIT
+14 SET DGENRP("CLINIC",+Y)=""
End DoDot:1
IF QUIT
QUIT
+15 IF '$ORDER(DGENRP("CLINIC",0))
SET SUCCESS=0
+16 QUIT SUCCESS
+17 ;
JUSTONCE(DGENRP) ;
+1 ;Description: Asks wether or not to include only the first appointment
+2 ;for a patient that has multiple appointments
+3 ;
+4 ;Output:
+5 ; Function Value: reuturns 1 on success, 0 on failure
+6 ; DGENRP("JUSTONCE")=<1 for only earliest, 0 for all>
+7 ;
+8 NEW DIR
+9 SET DGENRP("JUSTONCE")=0
+10 SET DIR(0)="Y"
+11 SET DIR("B")="NO"
+12 SET DIR("A")="For patients with multiple appointments, should only the first be listed"
+13 DO ^DIR
+14 IF $DATA(DIRUT)
QUIT 0
+15 IF +Y=1
SET DGENRP("JUSTONCE")=1
+16 QUIT 1