- SCRPW62 ;BP-CIOFO/KEITH - SC veterans awaiting appointments ; 23 August 2002@20:23 ; Compiled August 20, 2007 14:21:08
- ;;5.3;Scheduling;**267,269,358,491,1015**;AUG 13, 1993;Build 21
- ;
- ;Prompt for report parameters
- ;
- N SDOUT,DIR,DTOUT,DUOUT,SDFMT,SDATES,SDDIV,SDRPT,SDSCVT
- N SDELIM,SDX,ZTSAVE,X,Y
- S SDOUT=0
- D TITL^SCRPW50("SC Veterans Awaiting Appointments")
- W !,"Note: Once the scheduling replacement application has been implemented at your"
- W !,"site, this report will no longer be accurate."
- RPT D SUBT^SCRPW50("**** Report Type Selection ****")
- S DIR(0)="S^E:ENTERED WITH NO APPOINTMENT PROVIDED;A:APPOINTMENTS BEYOND DATE DESIRED",DIR("A")="Select report type"
- S DIR("?",1)="Specify 'E' to return SC veterans entered but not yet provided an appointment,"
- S DIR("?")="'A' to return SC veterans with appointments beyond the date desired."
- W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SDOUT=1 G EXIT
- K DIR S SDRPT=Y D ENT:SDRPT="E",APPT:SDRPT="A" G:SDOUT EXIT
- D SUBT^SCRPW50("**** Patient Eligibility Selection ****")
- S DIR(0)="S^1:50-100% SC Veterans;2:0-50% SC Veterans;3:All SC Veterans"
- S DIR("A")="Select eligibility type"
- S DIR("?")="Specify the eligibility of the patients you wish to include."
- W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SDOUT=1 G EXIT
- K DIR S SDSCVT=Y
- FMT D SUBT^SCRPW50("**** Report Format Selection ****")
- S DIR(0)="S^D:DETAILED REPORT;S:STATISTICS ONLY"
- S DIR("A")="Select report format"
- S DIR("?")="Specify the report format desired."
- W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SDOUT=1 G EXIT
- K DIR S SDFMT=Y
- I SDFMT="S" S SDELIM=0 G QUE
- D SUBT^SCRPW50("**** Output Format Selection ****")
- S DIR(0)="Y",DIR("A")="Return report output in delimited format"
- S DIR("B")="NO"
- S DIR("?",1)="Specify if you would like the report output to be in delimited format for"
- S DIR("?",2)="transfer to a spreadsheet. The delimited output will not include rated SC"
- S DIR("?")="disabilities for 0-50% SC veterans (as included in the text formatted report)."
- W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SDOUT=1 G EXIT
- S SDELIM=Y
- ;
- QUE ;Queue output
- ;W !!,"This report requires ",$S(SDELIM:"greater than ",1:""),"132 columns for output!"
- W !!,"This report requires the following steps to be converted to 'EXCEL':"
- W !,"1 - Copy it into WORD and replace '!^p' with null"
- W !,"2 - Save this file as *.txt format"
- W !,"3 - Open this file in 'EXCEL' with the All Files(*.*) type of file, listing it with one delimiter: '^'."
- F SDX="SDELIM","SDRPT","SDSCVT","SDATES","SDDIV","SDDIV(","SDFMT" S ZTSAVE(SDX)=""
- W ! D EN^XUTMDEVQ("START^SCRPW62","SC Veterans Awaiting Appointments",.ZTSAVE) D DISP0^SCRPW23
- Q
- ;
- ENT ;Date entered parameters
- S SDATES=1 Q
- ;
- ;Following logic suppressed by request
- D SUBT^SCRPW50("**** Report Time Frame ****")
- S DIR(0)="S^1:THE PAST YEAR;2:THE PAST TWO YEARS;3:THE PAST 3 YEARS"
- S DIR("A")="Include SC veterans entered during"
- S DIR("?")="Specify the time frame in which these patients were entered in VistA."
- W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SDOUT=1 Q
- S SDATES=Y
- Q
- ;
- APPT ;Appointment delay parameters
- I '$$DIVA^SCRPW17(.SDDIV) S SDOUT=1 Q
- S SDATES=30 Q
- ;
- ;Following logic suppressed by request
- D SUBT^SCRPW50("**** Report Time Frame ****")
- S DIR(0)="S^30:>30 DAYS BEYOND 'DESIRED DATE';60:>60 DAYS BEYOND 'DESIRED DATE;90:>90 DAYS BEYOND 'DESIRED DATE';180:>180 DAYS BEYOND 'DESIRED DATE'"
- S DIR("A")="Include SC veterans with future appointments greater than"
- S DIR("?")="Specify the difference between 'desired date' and the appointement date."
- W ! D ^DIR I $D(DTOUT)!$D(DUOUT) S SDOUT=1 Q
- S SDATES=Y
- Q
- ;
- START ;Gather report data
- N SDSTOP,SDOUT,SDSTOP,SDPAGE,SDLINE,SDPNOW,SDT,SDX
- I '$D(ZTQUEUED),$E(IOST)="C" D WAIT^DICD
- K ^TMP("SCRPW",$J) S (SDSTOP,SDOUT)=0,SDPAGE=1,SDLINE=""
- S $P(SDLINE,"-",(IOM+1))=""
- S SDPNOW=$$FMTE^XLFDT($E($$NOW^XLFDT(),1,12))
- S SDX=$S(SDSCVT=1:"SC 50-100% ",SDSCVT=2:"SC < 50% ",1:"")
- S SDT(1)="<*> SC VETERANS AWAITING APPOINTMENTS <*>"
- S SDT(2)=$S(SDRPT="E":SDX_"PATIENTS ENTERED IN THE PAST "_$S(SDATES=1:"YEAR",1:SDATES_" YEARS")_" WITHOUT AN APPOINTMENT",1:SDX_"PATIENTS WAITING > "_SDATES_" DAYS BEYOND APPOINTMENT 'DESIRED DATE'")
- D @(SDRPT_"^SCRPW63") W !!
- D EXIT
- Q
- ;
- SCEL(SDE,SDSCVT) ;Gather SC eligibility codes
- ;Input: SDE=array to return list of codes in the format SDE(n) where
- ; 'n' is the ifn in file #8 (pass by reference)
- ; SDSCVT=type of SC vets to include
- N SDE81,SDX,SDI,SDII
- S SDI=0 F S SDI=$O(^DIC(8.1,SDI)) Q:'SDI D
- .S SDX=$G(^DIC(8.1,SDI,0))
- .Q:$P(SDX,U,5)'="Y" S SDX=$P(SDX,U,4)
- .I SDSCVT=1,SDX'=1 Q ;50-100% SC only
- .I SDSCVT=2,SDX'=3 Q ;0-50% SC only
- .I SDSCVT=3,(SDX'=1&(SDX'=3)) Q ;SC only
- .S SDII=0 F S SDII=$O(^DIC(8,"D",SDI,SDII)) Q:'SDII D
- ..S SDE(SDII)=SDX
- ..Q
- .Q
- Q
- ;
- EXIT K ZTQUEUED,ZTSTOP,SDATES,SDDIV,SDFMT,SDRPT,SDELIM
- D END^SCRPW50 Q
- ;
- HDR ;Print report header
- N X
- I SDELIM D HDRD Q
- I $E(IOST)="C",SDPAGE>1 N DIR S DIR(0)="E" D ^DIR S SDOUT=Y'=1 Q:SDOUT
- D STOP^SCRPW63 Q:SDOUT
- W:SDPAGE>1!($E(IOST)="C") $$XY^SCRPW50(IOF,1,0)
- W:$X $$XY^SCRPW50("",0,0) W SDLINE
- S X=0 F S X=$O(SDT(X)) Q:'X W !?(IOM-$L(SDT(X))\2),SDT(X)
- W !,SDLINE,!,"Date printed: ",SDPNOW,?((IOM-6)-$L(SDPAGE)),"Page: "
- W SDPAGE,!,SDLINE S SDPAGE=SDPAGE+1 Q
- ;
- HDRD ;Header for delimited report
- Q:SDPAGE>1
- W !,SDLINE S X=0 F S X=$O(SDT(X)) Q:'X W !,SDT(X)
- W !,"Date printed: ",SDPNOW,!,SDLINE
- N ARR S ARR(1)="NAME^SSN^PRIM. ELIG.^DATE ENTERED^STREET ADDRESS^CITY^STATE^ZIP^PHONE NUMBER"
- S:SDRPT="A" ARR(1)=ARR(1)_"^APPOINTMENT DATE^CLINIC^CREDIT PAIR^DIVISION^DATE APPT. ENTERED^DESIRED DATE^DIFFERENCE (DESIRED DATE - APPT. DATE)^DIFFERENCE (DATE APPT. ENTERED - DESIRED DATE)"
- D DELIM(.ARR)
- S SDPAGE=SDPAGE+1 Q
- Q
- ;W !,"NAME^SSN^PRIM. ELIG.^DATE ENTERED^STREET ADDRESS^CITY^STATE^ZIP^PHONE NUMBER"
- ;W:SDRPT="A" "^APPOINTMENT DATE^CLINIC^CREDIT PAIR^DIVISION^DATE APPT. ENTERED^DESIRED DATE^DIFFERENCE (DESIRED DATE - APPT. DATE)^DIFFERENCE (DATE APPT. ENTERED - DESIRED DATE)"
- ;S SDPAGE=SDPAGE+1 Q
- DELIM(ARR) ;enter delimiter in the end of wrapped line
- ;ARR - array of lines
- N DELIM,II,LN,LL,JJ
- S DELIM="!"
- F II=1:1 S LN=$G(ARR(II)),LL=$L(LN) Q:'LL S LN=$P(LN," ")_DELIM_$P(LN," ",2,$L(LN," ")) F JJ=1:79:LL W !,$E(LN,JJ,JJ+78) W:JJ+79<LL DELIM I JJ+79=LL W $E(LN,LL) Q
- SCRPW62 ;BP-CIOFO/KEITH - SC veterans awaiting appointments ; 23 August 2002@20:23 ; Compiled August 20, 2007 14:21:08
- +1 ;;5.3;Scheduling;**267,269,358,491,1015**;AUG 13, 1993;Build 21
- +2 ;
- +3 ;Prompt for report parameters
- +4 ;
- +5 NEW SDOUT,DIR,DTOUT,DUOUT,SDFMT,SDATES,SDDIV,SDRPT,SDSCVT
- +6 NEW SDELIM,SDX,ZTSAVE,X,Y
- +7 SET SDOUT=0
- +8 DO TITL^SCRPW50("SC Veterans Awaiting Appointments")
- +9 WRITE !,"Note: Once the scheduling replacement application has been implemented at your"
- +10 WRITE !,"site, this report will no longer be accurate."
- RPT DO SUBT^SCRPW50("**** Report Type Selection ****")
- +1 SET DIR(0)="S^E:ENTERED WITH NO APPOINTMENT PROVIDED;A:APPOINTMENTS BEYOND DATE DESIRED"
- SET DIR("A")="Select report type"
- +2 SET DIR("?",1)="Specify 'E' to return SC veterans entered but not yet provided an appointment,"
- +3 SET DIR("?")="'A' to return SC veterans with appointments beyond the date desired."
- +4 WRITE !
- DO ^DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET SDOUT=1
- GOTO EXIT
- +5 KILL DIR
- SET SDRPT=Y
- IF SDRPT="E"
- DO ENT
- IF SDRPT="A"
- DO APPT
- IF SDOUT
- GOTO EXIT
- +6 DO SUBT^SCRPW50("**** Patient Eligibility Selection ****")
- +7 SET DIR(0)="S^1:50-100% SC Veterans;2:0-50% SC Veterans;3:All SC Veterans"
- +8 SET DIR("A")="Select eligibility type"
- +9 SET DIR("?")="Specify the eligibility of the patients you wish to include."
- +10 WRITE !
- DO ^DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET SDOUT=1
- GOTO EXIT
- +11 KILL DIR
- SET SDSCVT=Y
- FMT DO SUBT^SCRPW50("**** Report Format Selection ****")
- +1 SET DIR(0)="S^D:DETAILED REPORT;S:STATISTICS ONLY"
- +2 SET DIR("A")="Select report format"
- +3 SET DIR("?")="Specify the report format desired."
- +4 WRITE !
- DO ^DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET SDOUT=1
- GOTO EXIT
- +5 KILL DIR
- SET SDFMT=Y
- +6 IF SDFMT="S"
- SET SDELIM=0
- GOTO QUE
- +7 DO SUBT^SCRPW50("**** Output Format Selection ****")
- +8 SET DIR(0)="Y"
- SET DIR("A")="Return report output in delimited format"
- +9 SET DIR("B")="NO"
- +10 SET DIR("?",1)="Specify if you would like the report output to be in delimited format for"
- +11 SET DIR("?",2)="transfer to a spreadsheet. The delimited output will not include rated SC"
- +12 SET DIR("?")="disabilities for 0-50% SC veterans (as included in the text formatted report)."
- +13 WRITE !
- DO ^DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET SDOUT=1
- GOTO EXIT
- +14 SET SDELIM=Y
- +15 ;
- QUE ;Queue output
- +1 ;W !!,"This report requires ",$S(SDELIM:"greater than ",1:""),"132 columns for output!"
- +2 WRITE !!,"This report requires the following steps to be converted to 'EXCEL':"
- +3 WRITE !,"1 - Copy it into WORD and replace '!^p' with null"
- +4 WRITE !,"2 - Save this file as *.txt format"
- +5 WRITE !,"3 - Open this file in 'EXCEL' with the All Files(*.*) type of file, listing it with one delimiter: '^'."
- +6 FOR SDX="SDELIM","SDRPT","SDSCVT","SDATES","SDDIV","SDDIV(","SDFMT"
- SET ZTSAVE(SDX)=""
- +7 WRITE !
- DO EN^XUTMDEVQ("START^SCRPW62","SC Veterans Awaiting Appointments",.ZTSAVE)
- DO DISP0^SCRPW23
- +8 QUIT
- +9 ;
- ENT ;Date entered parameters
- +1 SET SDATES=1
- QUIT
- +2 ;
- +3 ;Following logic suppressed by request
- +4 DO SUBT^SCRPW50("**** Report Time Frame ****")
- +5 SET DIR(0)="S^1:THE PAST YEAR;2:THE PAST TWO YEARS;3:THE PAST 3 YEARS"
- +6 SET DIR("A")="Include SC veterans entered during"
- +7 SET DIR("?")="Specify the time frame in which these patients were entered in VistA."
- +8 WRITE !
- DO ^DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET SDOUT=1
- QUIT
- +9 SET SDATES=Y
- +10 QUIT
- +11 ;
- APPT ;Appointment delay parameters
- +1 IF '$$DIVA^SCRPW17(.SDDIV)
- SET SDOUT=1
- QUIT
- +2 SET SDATES=30
- QUIT
- +3 ;
- +4 ;Following logic suppressed by request
- +5 DO SUBT^SCRPW50("**** Report Time Frame ****")
- +6 SET DIR(0)="S^30:>30 DAYS BEYOND 'DESIRED DATE';60:>60 DAYS BEYOND 'DESIRED DATE;90:>90 DAYS BEYOND 'DESIRED DATE';180:>180 DAYS BEYOND 'DESIRED DATE'"
- +7 SET DIR("A")="Include SC veterans with future appointments greater than"
- +8 SET DIR("?")="Specify the difference between 'desired date' and the appointement date."
- +9 WRITE !
- DO ^DIR
- IF $DATA(DTOUT)!$DATA(DUOUT)
- SET SDOUT=1
- QUIT
- +10 SET SDATES=Y
- +11 QUIT
- +12 ;
- START ;Gather report data
- +1 NEW SDSTOP,SDOUT,SDSTOP,SDPAGE,SDLINE,SDPNOW,SDT,SDX
- +2 IF '$DATA(ZTQUEUED)
- IF $EXTRACT(IOST)="C"
- DO WAIT^DICD
- +3 KILL ^TMP("SCRPW",$JOB)
- SET (SDSTOP,SDOUT)=0
- SET SDPAGE=1
- SET SDLINE=""
- +4 SET $PIECE(SDLINE,"-",(IOM+1))=""
- +5 SET SDPNOW=$$FMTE^XLFDT($EXTRACT($$NOW^XLFDT(),1,12))
- +6 SET SDX=$SELECT(SDSCVT=1:"SC 50-100% ",SDSCVT=2:"SC < 50% ",1:"")
- +7 SET SDT(1)="<*> SC VETERANS AWAITING APPOINTMENTS <*>"
- +8 SET SDT(2)=$SELECT(SDRPT="E":SDX_"PATIENTS ENTERED IN THE PAST "_$SELECT(SDATES=1:"YEAR",1:SDATES_" YEARS")_" WITHOUT AN APPOINTMENT",1:SDX_"PATIENTS WAITING > "_SDATES_" DAYS BEYOND APPOINTMENT 'DESIRED DATE'")
- +9 DO @(SDRPT_"^SCRPW63")
- WRITE !!
- +10 DO EXIT
- +11 QUIT
- +12 ;
- SCEL(SDE,SDSCVT) ;Gather SC eligibility codes
- +1 ;Input: SDE=array to return list of codes in the format SDE(n) where
- +2 ; 'n' is the ifn in file #8 (pass by reference)
- +3 ; SDSCVT=type of SC vets to include
- +4 NEW SDE81,SDX,SDI,SDII
- +5 SET SDI=0
- FOR
- SET SDI=$ORDER(^DIC(8.1,SDI))
- IF 'SDI
- QUIT
- Begin DoDot:1
- +6 SET SDX=$GET(^DIC(8.1,SDI,0))
- +7 IF $PIECE(SDX,U,5)'="Y"
- QUIT
- SET SDX=$PIECE(SDX,U,4)
- +8 ;50-100% SC only
- IF SDSCVT=1
- IF SDX'=1
- QUIT
- +9 ;0-50% SC only
- IF SDSCVT=2
- IF SDX'=3
- QUIT
- +10 ;SC only
- IF SDSCVT=3
- IF (SDX'=1&(SDX'=3))
- QUIT
- +11 SET SDII=0
- FOR
- SET SDII=$ORDER(^DIC(8,"D",SDI,SDII))
- IF 'SDII
- QUIT
- Begin DoDot:2
- +12 SET SDE(SDII)=SDX
- +13 QUIT
- End DoDot:2
- +14 QUIT
- End DoDot:1
- +15 QUIT
- +16 ;
- EXIT KILL ZTQUEUED,ZTSTOP,SDATES,SDDIV,SDFMT,SDRPT,SDELIM
- +1 DO END^SCRPW50
- QUIT
- +2 ;
- HDR ;Print report header
- +1 NEW X
- +2 IF SDELIM
- DO HDRD
- QUIT
- +3 IF $EXTRACT(IOST)="C"
- IF SDPAGE>1
- NEW DIR
- SET DIR(0)="E"
- DO ^DIR
- SET SDOUT=Y'=1
- IF SDOUT
- QUIT
- +4 DO STOP^SCRPW63
- IF SDOUT
- QUIT
- +5 IF SDPAGE>1!($EXTRACT(IOST)="C")
- WRITE $$XY^SCRPW50(IOF,1,0)
- +6 IF $X
- WRITE $$XY^SCRPW50("",0,0)
- WRITE SDLINE
- +7 SET X=0
- FOR
- SET X=$ORDER(SDT(X))
- IF 'X
- QUIT
- WRITE !?(IOM-$LENGTH(SDT(X))\2),SDT(X)
- +8 WRITE !,SDLINE,!,"Date printed: ",SDPNOW,?((IOM-6)-$LENGTH(SDPAGE)),"Page: "
- +9 WRITE SDPAGE,!,SDLINE
- SET SDPAGE=SDPAGE+1
- QUIT
- +10 ;
- HDRD ;Header for delimited report
- +1 IF SDPAGE>1
- QUIT
- +2 WRITE !,SDLINE
- SET X=0
- FOR
- SET X=$ORDER(SDT(X))
- IF 'X
- QUIT
- WRITE !,SDT(X)
- +3 WRITE !,"Date printed: ",SDPNOW,!,SDLINE
- +4 NEW ARR
- SET ARR(1)="NAME^SSN^PRIM. ELIG.^DATE ENTERED^STREET ADDRESS^CITY^STATE^ZIP^PHONE NUMBER"
- +5 IF SDRPT="A"
- SET ARR(1)=ARR(1)_"^APPOINTMENT DATE^CLINIC^CREDIT PAIR^DIVISION^DATE APPT. ENTERED^DESIRED DATE^DIFFERENCE (DESIRED DATE - APPT. DATE)^DIFFERENCE (DATE APPT. ENTERED - DESIRED DATE)"
- +6 DO DELIM(.ARR)
- +7 SET SDPAGE=SDPAGE+1
- QUIT
- +8 QUIT
- +9 ;W !,"NAME^SSN^PRIM. ELIG.^DATE ENTERED^STREET ADDRESS^CITY^STATE^ZIP^PHONE NUMBER"
- +10 ;W:SDRPT="A" "^APPOINTMENT DATE^CLINIC^CREDIT PAIR^DIVISION^DATE APPT. ENTERED^DESIRED DATE^DIFFERENCE (DESIRED DATE - APPT. DATE)^DIFFERENCE (DATE APPT. ENTERED - DESIRED DATE)"
- +11 ;S SDPAGE=SDPAGE+1 Q
- DELIM(ARR) ;enter delimiter in the end of wrapped line
- +1 ;ARR - array of lines
- +2 NEW DELIM,II,LN,LL,JJ
- +3 SET DELIM="!"
- +4 FOR II=1:1
- SET LN=$GET(ARR(II))
- SET LL=$LENGTH(LN)
- IF 'LL
- QUIT
- SET LN=$PIECE(LN," ")_DELIM_$PIECE(LN," ",2,$LENGTH(LN," "))
- FOR JJ=1:79:LL
- WRITE !,$EXTRACT(LN,JJ,JJ+78)
- IF JJ+79<LL
- WRITE DELIM
- IF JJ+79=LL
- WRITE $EXTRACT(LN,LL)
- QUIT