VistA-FOIAVistA/r/REGISTRATION-DGQE-DG-DPT-GR.../DGENRPD1.m

175 lines
4.7 KiB
Mathematica

DGENRPD1 ;ALB/CJM - Veterans with no Application and with a Future Appointment Report; 04/28/2004
;;5.3;Registration;**147,568**;Aug 13,1993
;
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