DGENRPD2 ;ALB/CJM/EG -Veteran with Future Appts and no Enrollment App Report - Continue 01/19/2005 ; 1/20/05 1:27pm
;;5.3;PIMS;**147,232,568,585,725,767,1015,1016**;JUN 30, 2012;Build 20
;
PRINT ;
N CRT,QUIT,PAGE,SUBSCRPT
K ^TMP($J)
S QUIT=0
S PAGE=0
S CRT=$S($E(IOST,1,2)="C-":1,1:0)
;
D GETPAT
U IO
I CRT,PAGE=0 W @IOF
S PAGE=1
D HEADER
F SUBSCRPT="STEP2","NOENREC" D
.D PATIENTS(SUBSCRPT)
I CRT,'QUIT D PAUSE
I $D(ZTQUEUED) S ZTREQ="@"
D ^%ZISC
;
K ^TMP($J)
Q
LINE(LINE) ;
;Description: prints a line. First prints header if at end of page.
;
I CRT,($Y>(IOSL-4)) D
.D PAUSE
.Q:QUIT
.W @IOF
.D HEADER
.W LINE
;
E I ('CRT),($Y>(IOSL-2)) D
.W @IOF
.D HEADER
.W LINE
;
E W !,LINE
Q
;
GETPAT ;
; Description: Gets patients to include in the report
N BEGIN,END,DGARRAY,SDCNT,CATEGORY,DIVISION,NAM
S BEGIN=DGENRP("BEGIN")_".0000",END=DGENRP("END")_".2359",DGARRAY(1)=BEGIN_";"_END
S DGARRAY("FLDS")="3;10",SDCNT=$$SDAPI^SDAMA301(.DGARRAY)
;
;there must be subscripts underneath the 101 level to be a
;valid appointment, else it is an error eg 01/20/2005
; Appointment Database is Unavailable
I SDCNT<0 N X S X=$$FAPCHK I X'="" S NAM=X G ERR
;
; Get All records for report
I DGENRP("ALL") D
.S CLINIC=0 F S CLINIC=$O(^TMP($J,"SDAMA301",CLINIC)) Q:'CLINIC D
..Q:$P($G(^SC(CLINIC,0)),"^",3)'="C"
..S DFN=0 F S DFN=$O(^TMP($J,"SDAMA301",CLINIC,DFN)) Q:'DFN D
...S DIVISION=$P($G(^SC(CLINIC,0)),U,15)
...S:'DIVISION DIVISION=$O(^DG(40.8,0))
...D VALREC(CLINIC,DFN)
;
; Get records for specified Divisions only
I $O(DGENRP("DIVISION",0)) D
.S CLINIC=0 F S CLINIC=$O(^TMP($J,"SDAMA301",CLINIC)) Q:'CLINIC D
..Q:$P($G(^SC(CLINIC,0)),"^",3)'="C"
..S DIVISION=$P($G(^SC(CLINIC,0)),U,15)
..S:'DIVISION DIVISION=$O(^DG(40.8,0))
..Q:'DIVISION!('$D(DGENRP("DIVISION",DIVISION)))
..S DFN=0 F S DFN=$O(^TMP($J,"SDAMA301",CLINIC,DFN)) Q:'DFN D VALREC(CLINIC,DFN)
;
; Get records for specified Clinics only
I $O(DGENRP("CLINIC",0)) D
.S CLINIC=0 F S CLINIC=$O(^TMP($J,"SDAMA301",CLINIC)) Q:'CLINIC D
..Q:'CLINIC!('$D(DGENRP("CLINIC",CLINIC)))
..Q:($P($G(^SC(CLINIC,0)),U,3)'="C")
..S DIVISION=$P($G(^SC(CLINIC,0)),U,15)
..S:'DIVISION DIVISION=$O(^DG(40.8,0))
..S DFN=0 F S DFN=$O(^TMP($J,"SDAMA301",CLINIC,DFN)) Q:'DFN D VALREC(CLINIC,DFN)
;
K DGARRAY,^TMP($J,"SDAMA301"),SDCNT
Q
;
ERR ;
;^TMP($J,TYPE,DIVISION NAME,CLINIC NAME,CATEGORY,APPT DT/TM,DFN)
I NAM["Appointment Database is unavailable. Please try again later." S NAM="**Appointment Database is Unavailable**"
I NAM["Appointment request contains invalid values." S NAM="**Invalid appointment, call Help Desk**"
I NAM["An error has occurred. Check the RSA Error Log." S NAM="**Error, check RSA Error Log **"
S ^TMP($J,"NOENREC"," ",NAM," ",DT," ")=""
K DGARRAY,^TMP($J,"SDAMA301"),SDCNT,NAM
Q
;
VALREC(CLINIC,DFN) ;
;
N APPT,STATUS,JUSTONCE S JUSTONCE=0
S APPT=0 F S APPT=$O(^TMP($J,"SDAMA301",CLINIC,DFN,APPT)) Q:'APPT!(JUSTONCE) D
.S JUSTONCE=+$G(DGENRP("JUSTONCE"))
.; Exclude certain appointment statuses
.S STATUS=$P($P(^TMP($J,"SDAMA301",CLINIC,DFN,APPT),U,3),";")
.Q:"^NS^NSR^CC^CCR^CP^CPR^"[(U_STATUS_U)
.;
.; Don't include enrolled veterans or ones that have pending apps
.S CATEGORY=$$CATEGORY^DGENA4(DFN)
.I (CATEGORY="E")!(CATEGORY="P") Q
.;
.; Exclude if not an eligible veteran (can not enroll)
.Q:'$$VET^DGENPTA(DFN)
.;
.D SETTMP(CLINIC,DFN,APPT)
Q
;
SETTMP(CLINIC,DFN,APPT) ;
; NOENREC is for patients without enrollment records
; SITE2 is for other excluded enrollment records
;^TMP($J,TYPE,DIVISION NAME,CLINIC NAME,CATEGORY,APPT DT/TM,DFN)
;
N DIVNAME,CLNAME
S DIVNAME=$S(DIVISION:$P($$SITE^VASITE(APPT\1,DIVISION),U,2),1:" ")
S CLNAME=$P($G(^SC(CLINIC,0)),"^")
S:CLNAME="" CLNAME=" "
;
I $$FINDCUR^DGENA(DFN)="" S ^TMP($J,"NOENREC",DIVNAME,CLNAME,CATEGORY,APPT,DFN)="" Q
S ^TMP($J,"STEP2",DIVNAME,CLNAME,CATEGORY,APPT,DFN)=$$STATUS^DGENA(DFN)_U_$P($P(^TMP($J,"SDAMA301",CLINIC,DFN,APPT),U,10),";",2)
Q
;
;Description: Prints the report header.
;
N LINE
I $Y>1 W @IOF
W !,"Appointments for Veterans with no Enrollment Application"
W:DGENRP("BEGIN") ?70,"Date Range: "_$$FMTE^XLFDT(DGENRP("BEGIN"))_" to "_$$FMTE^XLFDT($G(DGENRP("END")))
W ?120,"Page ",PAGE
S PAGE=PAGE+1
W !
W ?70," Run Date: "_$$FMTE^XLFDT(DT)
W !
;
W !,"Name",?39,"PatientID",?57,"DOB",?70,"Appt Dt/Tm",?90,"EnrollStatus",?121,"Enroll Cat"
S $P(LINE,"-",132)="-"
W !,LINE,!
Q
;
PAUSE ;
;Description: Screen pause. Sets QUIT=1 if user decides to quit.
;
N DIR,X,Y
F Q:$Y>(IOSL-3) W !
S DIR(0)="E"
D ^DIR
I ('(+Y))!$D(DIRUT) S QUIT=1
Q
;
PATIENTS(SUBSCRPT) ;
;Description: Prints list of patients
;
N NODE,DIVISION,CLINIC,TIME,PATIENT,DGPAT,APPTYPE,ENRSTAT,CATEGORY
;
;
S DIVISION=""
F S DIVISION=$O(^TMP($J,SUBSCRPT,DIVISION)) Q:DIVISION="" D Q:QUIT
.D LINE(" ") Q:QUIT
.D LINE($$LJ(" ",40)_"DIVISION: "_DIVISION) Q:QUIT
.D LINE(" ") Q:QUIT
.S CLINIC=""
.F S CLINIC=$O(^TMP($J,SUBSCRPT,DIVISION,CLINIC)) Q:CLINIC="" D Q:QUIT
..D LINE(" ") Q:QUIT
..D LINE("CLINIC: "_$$LJ(CLINIC,40)_$$LJ(" ",40)_"DIVISION: "_DIVISION)
..Q:QUIT
..S CATEGORY=""
..F S CATEGORY=$O(^TMP($J,SUBSCRPT,DIVISION,CLINIC,CATEGORY)) Q:CATEGORY="" D Q:QUIT
...D LINE(" ") Q:QUIT
...S TIME=0
...F S TIME=$O(^TMP($J,SUBSCRPT,DIVISION,CLINIC,CATEGORY,TIME)) Q:'TIME D Q:QUIT
....S DFN=0
....F S DFN=$O(^TMP($J,SUBSCRPT,DIVISION,CLINIC,CATEGORY,TIME,DFN)) Q:'DFN D Q:QUIT
.....S NODE=$G(^TMP($J,SUBSCRPT,DIVISION,CLINIC,CATEGORY,TIME,DFN))
.....S ENRSTAT=$P(NODE,"^")
.....S APPTYPE=$P(NODE,"^",2)
.....Q:'$$GET^DGENPTA(DFN,.DGPAT)
.....S LINE=$$LJ(DGPAT("NAME"),37)_" "_$$LJ(DGPAT("PID"),15)_" "
.....S LINE=LINE_$$LJ($$DATE(DGPAT("DOB")),12)_" "
.....S LINE=LINE_$$LJ($$DATE(TIME),20)
.....S LINE=LINE_" "_$$LJ($S(ENRSTAT="":"NO ENROLLMENT RECORD",1:$$EXT^DGENU("STATUS",ENRSTAT)),28)
.....S LINE=LINE_$$LJ(" ",2)_$$EXTCAT^DGENA4(CATEGORY)
.....D LINE(LINE)
.....Q:QUIT
Q
;
DATE(DATE) ;
Q $$FMTE^XLFDT(DATE,"1")
;
LJ(STRING,LENGTH) ;
Q $$LJ^XLFSTR($E(STRING,1,LENGTH),LENGTH)
;
FAPCHK() ;
N ERR
S ERR=$O(^TMP($J,"SDAMA301",""))
I $D(^TMP($J,"SDAMA301",ERR))=1 Q ^TMP($J,"SDAMA301",ERR)
Q ""
DGENRPD2 ;ALB/CJM/EG -Veteran with Future Appts and no Enrollment App Report - Continue 01/19/2005 ; 1/20/05 1:27pm
+1 ;;5.3;PIMS;**147,232,568,585,725,767,1015,1016**;JUN 30, 2012;Build 20
+2 ;
PRINT ;
+1 NEW CRT,QUIT,PAGE,SUBSCRPT
+2 KILL ^TMP($JOB)
+3 SET QUIT=0
+4 SET PAGE=0
+5 SET CRT=$SELECT($EXTRACT(IOST,1,2)="C-":1,1:0)
+6 ;
+7 DO GETPAT
+8 USE IO
+9 IF CRT
IF PAGE=0
WRITE @IOF
+10 SET PAGE=1
+11 DO HEADER
+12 FOR SUBSCRPT="STEP2","NOENREC"
Begin DoDot:1
+13 DO PATIENTS(SUBSCRPT)
End DoDot:1
+14 IF CRT
IF 'QUIT
DO PAUSE
+15 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+16 DO ^%ZISC
+17 ;
+18 KILL ^TMP($JOB)
+19 QUIT
LINE(LINE) ;
+1 ;Description: prints a line. First prints header if at end of page.
+2 ;
+3 IF CRT
IF ($Y>(IOSL-4))
Begin DoDot:1
+4 DO PAUSE
+5 IF QUIT
QUIT
+6 WRITE @IOF
+7 DO HEADER
+8 WRITE LINE
End DoDot:1
+9 ;
+10 IF '$TEST
IF ('CRT)
IF ($Y>(IOSL-2))
Begin DoDot:1
+11 WRITE @IOF
+12 DO HEADER
+13 WRITE LINE
End DoDot:1
+14 ;
+15 IF '$TEST
WRITE !,LINE
+16 QUIT
+17 ;
GETPAT ;
+1 ; Description: Gets patients to include in the report
+2 NEW BEGIN,END,DGARRAY,SDCNT,CATEGORY,DIVISION,NAM
+3 SET BEGIN=DGENRP("BEGIN")_".0000"
SET END=DGENRP("END")_".2359"
SET DGARRAY(1)=BEGIN_";"_END
+4 SET DGARRAY("FLDS")="3;10"
SET SDCNT=$$SDAPI^SDAMA301(.DGARRAY)
+5 ;
+6 ;there must be subscripts underneath the 101 level to be a
+7 ;valid appointment, else it is an error eg 01/20/2005
+8 ; Appointment Database is Unavailable
+9 IF SDCNT<0
NEW X
SET X=$$FAPCHK
IF X'=""
SET NAM=X
GOTO ERR
+10 ;
+11 ; Get All records for report
+12 IF DGENRP("ALL")
Begin DoDot:1
+13 SET CLINIC=0
FOR
SET CLINIC=$ORDER(^TMP($JOB,"SDAMA301",CLINIC))
IF 'CLINIC
QUIT
Begin DoDot:2
+14 IF $PIECE($GET(^SC(CLINIC,0)),"^",3)'="C"
QUIT
+15 SET DFN=0
FOR
SET DFN=$ORDER(^TMP($JOB,"SDAMA301",CLINIC,DFN))
IF 'DFN
QUIT
Begin DoDot:3
+16 SET DIVISION=$PIECE($GET(^SC(CLINIC,0)),U,15)
+17 IF 'DIVISION
SET DIVISION=$ORDER(^DG(40.8,0))
+18 DO VALREC(CLINIC,DFN)
End DoDot:3
End DoDot:2
End DoDot:1
+19 ;
+20 ; Get records for specified Divisions only
+21 IF $ORDER(DGENRP("DIVISION",0))
Begin DoDot:1
+22 SET CLINIC=0
FOR
SET CLINIC=$ORDER(^TMP($JOB,"SDAMA301",CLINIC))
IF 'CLINIC
QUIT
Begin DoDot:2
+23 IF $PIECE($GET(^SC(CLINIC,0)),"^",3)'="C"
QUIT
+24 SET DIVISION=$PIECE($GET(^SC(CLINIC,0)),U,15)
+25 IF 'DIVISION
SET DIVISION=$ORDER(^DG(40.8,0))
+26 IF 'DIVISION!('$DATA(DGENRP("DIVISION",DIVISION)))
QUIT
+27 SET DFN=0
FOR
SET DFN=$ORDER(^TMP($JOB,"SDAMA301",CLINIC,DFN))
IF 'DFN
QUIT
DO VALREC(CLINIC,DFN)
End DoDot:2
End DoDot:1
+28 ;
+29 ; Get records for specified Clinics only
+30 IF $ORDER(DGENRP("CLINIC",0))
Begin DoDot:1
+31 SET CLINIC=0
FOR
SET CLINIC=$ORDER(^TMP($JOB,"SDAMA301",CLINIC))
IF 'CLINIC
QUIT
Begin DoDot:2
+32 IF 'CLINIC!('$DATA(DGENRP("CLINIC",CLINIC)))
QUIT
+33 IF ($PIECE($GET(^SC(CLINIC,0)),U,3)'="C")
QUIT
+34 SET DIVISION=$PIECE($GET(^SC(CLINIC,0)),U,15)
+35 IF 'DIVISION
SET DIVISION=$ORDER(^DG(40.8,0))
+36 SET DFN=0
FOR
SET DFN=$ORDER(^TMP($JOB,"SDAMA301",CLINIC,DFN))
IF 'DFN
QUIT
DO VALREC(CLINIC,DFN)
End DoDot:2
End DoDot:1
+37 ;
+38 KILL DGARRAY,^TMP($JOB,"SDAMA301"),SDCNT
+39 QUIT
+40 ;
ERR ;
+1 ;^TMP($J,TYPE,DIVISION NAME,CLINIC NAME,CATEGORY,APPT DT/TM,DFN)
+2 IF NAM["Appointment Database is unavailable. Please try again later."
SET NAM="**Appointment Database is Unavailable**"
+3 IF NAM["Appointment request contains invalid values."
SET NAM="**Invalid appointment, call Help Desk**"
+4 IF NAM["An error has occurred. Check the RSA Error Log."
SET NAM="**Error, check RSA Error Log **"
+5 SET ^TMP($JOB,"NOENREC"," ",NAM," ",DT," ")=""
+6 KILL DGARRAY,^TMP($JOB,"SDAMA301"),SDCNT,NAM
+7 QUIT
+8 ;
VALREC(CLINIC,DFN) ;
+1 ;
+2 NEW APPT,STATUS,JUSTONCE
SET JUSTONCE=0
+3 SET APPT=0
FOR
SET APPT=$ORDER(^TMP($JOB,"SDAMA301",CLINIC,DFN,APPT))
IF 'APPT!(JUSTONCE)
QUIT
Begin DoDot:1
+4 SET JUSTONCE=+$GET(DGENRP("JUSTONCE"))
+5 ; Exclude certain appointment statuses
+6 SET STATUS=$PIECE($PIECE(^TMP($JOB,"SDAMA301",CLINIC,DFN,APPT),U,3),";")
+7 IF "^NS^NSR^CC^CCR^CP^CPR^"[(U_STATUS_U)
QUIT
+8 ;
+9 ; Don't include enrolled veterans or ones that have pending apps
+10 SET CATEGORY=$$CATEGORY^DGENA4(DFN)
+11 IF (CATEGORY="E")!(CATEGORY="P")
QUIT
+12 ;
+13 ; Exclude if not an eligible veteran (can not enroll)
+14 IF '$$VET^DGENPTA(DFN)
QUIT
+15 ;
+16 DO SETTMP(CLINIC,DFN,APPT)
End DoDot:1
+17 QUIT
+18 ;
SETTMP(CLINIC,DFN,APPT) ;
+1 ; NOENREC is for patients without enrollment records
+2 ; SITE2 is for other excluded enrollment records
+3 ;^TMP($J,TYPE,DIVISION NAME,CLINIC NAME,CATEGORY,APPT DT/TM,DFN)
+4 ;
+5 NEW DIVNAME,CLNAME
+6 SET DIVNAME=$SELECT(DIVISION:$PIECE($$SITE^VASITE(APPT\1,DIVISION),U,2),1:" ")
+7 SET CLNAME=$PIECE($GET(^SC(CLINIC,0)),"^")
+8 IF CLNAME=""
SET CLNAME=" "
+9 ;
+10 IF $$FINDCUR^DGENA(DFN)=""
SET ^TMP($JOB,"NOENREC",DIVNAME,CLNAME,CATEGORY,APPT,DFN)=""
QUIT
+11 SET ^TMP($JOB,"STEP2",DIVNAME,CLNAME,CATEGORY,APPT,DFN)=$$STATUS^DGENA(DFN)_U_$PIECE($PIECE(^TMP($JOB,"SDAMA301",CLINIC,DFN,APPT),U,10),";",2)
+12 QUIT
+13 ;
+1 ;Description: Prints the report header.
+2 ;
+3 NEW LINE
+4 IF $Y>1
WRITE @IOF
+5 WRITE !,"Appointments for Veterans with no Enrollment Application"
+6 IF DGENRP("BEGIN")
WRITE ?70,"Date Range: "_$$FMTE^XLFDT(DGENRP("BEGIN"))_" to "_$$FMTE^XLFDT($GET(DGENRP("END")))
+7 WRITE ?120,"Page ",PAGE
+8 SET PAGE=PAGE+1
+9 WRITE !
+10 WRITE ?70," Run Date: "_$$FMTE^XLFDT(DT)
+11 WRITE !
+12 ;
+13 WRITE !,"Name",?39,"PatientID",?57,"DOB",?70,"Appt Dt/Tm",?90,"EnrollStatus",?121,"Enroll Cat"
+14 SET $PIECE(LINE,"-",132)="-"
+15 WRITE !,LINE,!
+16 QUIT
+17 ;
PAUSE ;
+1 ;Description: Screen pause. Sets QUIT=1 if user decides to quit.
+2 ;
+3 NEW DIR,X,Y
+4 FOR
IF $Y>(IOSL-3)
QUIT
WRITE !
+5 SET DIR(0)="E"
+6 DO ^DIR
+7 IF ('(+Y))!$DATA(DIRUT)
SET QUIT=1
+8 QUIT
+9 ;
PATIENTS(SUBSCRPT) ;
+1 ;Description: Prints list of patients
+2 ;
+3 NEW NODE,DIVISION,CLINIC,TIME,PATIENT,DGPAT,APPTYPE,ENRSTAT,CATEGORY
+4 ;
+5 ;
+6 SET DIVISION=""
+7 FOR
SET DIVISION=$ORDER(^TMP($JOB,SUBSCRPT,DIVISION))
IF DIVISION=""
QUIT
Begin DoDot:1
+8 DO LINE(" ")
IF QUIT
QUIT
+9 DO LINE($$LJ(" ",40)_"DIVISION: "_DIVISION)
IF QUIT
QUIT
+10 DO LINE(" ")
IF QUIT
QUIT
+11 SET CLINIC=""
+12 FOR
SET CLINIC=$ORDER(^TMP($JOB,SUBSCRPT,DIVISION,CLINIC))
IF CLINIC=""
QUIT
Begin DoDot:2
+13 DO LINE(" ")
IF QUIT
QUIT
+14 DO LINE("CLINIC: "_$$LJ(CLINIC,40)_$$LJ(" ",40)_"DIVISION: "_DIVISION)
+15 IF QUIT
QUIT
+16 SET CATEGORY=""
+17 FOR
SET CATEGORY=$ORDER(^TMP($JOB,SUBSCRPT,DIVISION,CLINIC,CATEGORY))
IF CATEGORY=""
QUIT
Begin DoDot:3
+18 DO LINE(" ")
IF QUIT
QUIT
+19 SET TIME=0
+20 FOR
SET TIME=$ORDER(^TMP($JOB,SUBSCRPT,DIVISION,CLINIC,CATEGORY,TIME))
IF 'TIME
QUIT
Begin DoDot:4
+21 SET DFN=0
+22 FOR
SET DFN=$ORDER(^TMP($JOB,SUBSCRPT,DIVISION,CLINIC,CATEGORY,TIME,DFN))
IF 'DFN
QUIT
Begin DoDot:5
+23 SET NODE=$GET(^TMP($JOB,SUBSCRPT,DIVISION,CLINIC,CATEGORY,TIME,DFN))
+24 SET ENRSTAT=$PIECE(NODE,"^")
+25 SET APPTYPE=$PIECE(NODE,"^",2)
+26 IF '$$GET^DGENPTA(DFN,.DGPAT)
QUIT
+27 SET LINE=$$LJ(DGPAT("NAME"),37)_" "_$$LJ(DGPAT("PID"),15)_" "
+28 SET LINE=LINE_$$LJ($$DATE(DGPAT("DOB")),12)_" "
+29 SET LINE=LINE_$$LJ($$DATE(TIME),20)
+30 SET LINE=LINE_" "_$$LJ($SELECT(ENRSTAT="":"NO ENROLLMENT RECORD",1:$$EXT^DGENU("STATUS",ENRSTAT)),28)
+31 SET LINE=LINE_$$LJ(" ",2)_$$EXTCAT^DGENA4(CATEGORY)
+32 DO LINE(LINE)
+33 IF QUIT
QUIT
End DoDot:5
IF QUIT
QUIT
End DoDot:4
IF QUIT
QUIT
End DoDot:3
IF QUIT
QUIT
End DoDot:2
IF QUIT
QUIT
End DoDot:1
IF QUIT
QUIT
+34 QUIT
+35 ;
DATE(DATE) ;
+1 QUIT $$FMTE^XLFDT(DATE,"1")
+2 ;
LJ(STRING,LENGTH) ;
+1 QUIT $$LJ^XLFSTR($EXTRACT(STRING,1,LENGTH),LENGTH)
+2 ;
FAPCHK() ;
+1 NEW ERR
+2 SET ERR=$ORDER(^TMP($JOB,"SDAMA301",""))
+3 IF $DATA(^TMP($JOB,"SDAMA301",ERR))=1
QUIT ^TMP($JOB,"SDAMA301",ERR)
+4 QUIT ""