| 1 | SCRPW61 ;BP-CIOFO/KEITH - Patient Appointment Statistics (cont.) ; 07 May 99  4:33 PM
 | 
|---|
| 2 |  ;;5.3;Scheduling;**163,176,194**;AUG 13, 1993
 | 
|---|
| 3 | CNT ;Count clinic statistics
 | 
|---|
| 4 |  S SDIV="" F  S SDIV=$O(^TMP("SCRPW",$J,SDIV)) Q:SDIV=""!SDOUT  D
 | 
|---|
| 5 |  .S SDCLN="" F  S SDCLN=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN)) Q:SDCLN=""  D STOP Q:SDOUT  D
 | 
|---|
| 6 |  ..S SDCL=0 F  S SDCL=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL)) Q:'SDCL  D
 | 
|---|
| 7 |  ...S SDPTNA="" F  S SDPTNA=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL,SDPTNA)) Q:SDPTNA=""  D
 | 
|---|
| 8 |  ....S DFN=0 F  S DFN=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL,SDPTNA,DFN)) Q:'DFN  D
 | 
|---|
| 9 |  .....I SDPL,SDPLO'="D" S ^TMP("SCRPW",$J,SDIV,0,SDCLN,SDCL,$$ORD(),SDPTNA,DFN)=""
 | 
|---|
| 10 |  .....S $P(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL),U,3)=$P($G(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL)),U,3)+1
 | 
|---|
| 11 |  .....S SDDAY=0 F  S SDDAY=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL,SDPTNA,DFN,SDDAY)) Q:'SDDAY  D
 | 
|---|
| 12 |  ......S $P(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL),U,2)=$P($G(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL)),U,2)+1
 | 
|---|
| 13 |  ......S SDAPP=0 F  S SDAPP=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL,SDPTNA,DFN,SDDAY,SDAPP)) Q:'SDAPP  D
 | 
|---|
| 14 |  .......I SDPL,SDPLO="D" S ^TMP("SCRPW",$J,SDIV,0,SDCLN,SDCL,SDAPP,SDPTNA,DFN)=""
 | 
|---|
| 15 |  .......S $P(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL),U)=$P($G(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL)),U)+1 Q
 | 
|---|
| 16 |  ......Q
 | 
|---|
| 17 |  .....Q
 | 
|---|
| 18 |  ....Q
 | 
|---|
| 19 |  ...Q
 | 
|---|
| 20 |  ..Q
 | 
|---|
| 21 |  .Q:SDOUT
 | 
|---|
| 22 |  .;Count division statistics
 | 
|---|
| 23 |  .S SDPTNA="" F  S SDPTNA=$O(^TMP("SCRPW",$J,SDIV,2,SDPTNA)) Q:SDPTNA=""  D
 | 
|---|
| 24 |  ..S DFN=0 F  S DFN=$O(^TMP("SCRPW",$J,SDIV,2,SDPTNA,DFN)) Q:'DFN  D
 | 
|---|
| 25 |  ...S $P(^TMP("SCRPW",$J,SDIV,4),U,3)=$P($G(^TMP("SCRPW",$J,SDIV,4)),U,3)+1
 | 
|---|
| 26 |  ...S SDDAY=0 F  S SDDAY=$O(^TMP("SCRPW",$J,SDIV,2,SDPTNA,DFN,SDDAY)) Q:'SDDAY  D
 | 
|---|
| 27 |  ....S $P(^TMP("SCRPW",$J,SDIV,4),U,2)=$P($G(^TMP("SCRPW",$J,SDIV,4)),U,2)+1
 | 
|---|
| 28 |  ....S SDAPP=0 F  S SDAPP=$O(^TMP("SCRPW",$J,SDIV,2,SDPTNA,DFN,SDDAY,SDAPP)) Q:'SDAPP  D
 | 
|---|
| 29 |  .....S $P(^TMP("SCRPW",$J,SDIV,4),U)=$P($G(^TMP("SCRPW",$J,SDIV,4)),U)+1 Q
 | 
|---|
| 30 |  ....Q
 | 
|---|
| 31 |  ...Q
 | 
|---|
| 32 |  ..Q
 | 
|---|
| 33 |  .Q
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | ORD() ;Determine collating value for patient list
 | 
|---|
| 37 |  Q:SDPLO="A" SDPTNA
 | 
|---|
| 38 |  S SDSSN=$P(^DPT(DFN,0),U,9) Q $E(SDSSN,8,9)_$E(SDSSN,6,7)_$E(SDSSN,4,5)_$E(SDSSN,1,3)_"."
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | STOP ;Check for stop task request
 | 
|---|
| 41 |  S:$G(ZTQUEUED) (SDOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 | AC ;Gather all clinics
 | 
|---|
| 44 |  S SDCL=0 F  S SDCL=$O(^SC(SDCL)) Q:'SDCL  S SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC SET
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | A1 S:$P(SDCL0,U,3)="C" SDAC=1 Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | SC ;Gather selected clinics
 | 
|---|
| 50 |  S SDCL=0 F  S SDCL=$O(SDCL(SDCL)) Q:'SDCL  S SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC SET
 | 
|---|
| 51 |  Q
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | RC ;Gather range of clinics
 | 
|---|
| 54 |  S SDCLN=$O(SDCL("")),SDECL=$O(SDCL(SDCLN)),SDCL=SDCL(SDCLN),SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC SET
 | 
|---|
| 55 |  F  S SDCLN=$O(^SC("B",SDCLN)) Q:(SDCLN=""!(SDCLN]SDECL))  S SDCL=0 F  S SDCL=$O(^SC("B",SDCLN,SDCL)) Q:'SDCL  S SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC SET
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 | SS ;Gather clinics with selected Stop Codes
 | 
|---|
| 59 |  S SDCL=0 F  S SDCL=$O(^SC(SDCL)) Q:'SDCL  S SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC SS1
 | 
|---|
| 60 |  Q
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | SS1 S SDCSC=$P(SDCL0,U,7),SDCSC=$P($G(^DIC(40.7,+SDCSC,0)),U,2) I $D(SDCL(+SDCSC)) D SET
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | RS ;Gather clinics in range of Stop Codes
 | 
|---|
| 66 |  S SDBCS=$O(SDCL("")),SDECS=$O(SDCL(SDBCS)),SDCL=0 S:'SDECS SDECS=SDBCS F  S SDCL=$O(^SC(SDCL)) Q:'SDCL  S SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC RC1
 | 
|---|
| 67 |  Q
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 | RC1 S SDCSC=$P(SDCL0,U,7),SDCSC=$P($G(^DIC(40.7,+SDCSC,0)),U,2) Q:('SDCSC!(SDCSC<SDBCS!(SDCSC>SDECS)))  D SET Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 | CG ;Gather clinics with selected clinic group
 | 
|---|
| 72 |  S SDCG=$O(SDCL(0)),SDCL=0 F  S SDCL=$O(^SC("ASCRPW",SDCG,SDCL)) Q:'SDCL  S SDCL0=^SC(SDCL,0),SDIV=$P(SDCL0,U,15),SDAC=0 I $$DIV() D STOP Q:SDOUT  D A1 D:SDAC SET
 | 
|---|
| 73 |  Q
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 | DIV() ;Check division
 | 
|---|
| 76 |  S:'$L(SDIV) SDIV=$$PRIM^VASITE()
 | 
|---|
| 77 |  Q:'SDDIV 1  Q $D(SDDIV(+SDIV))
 | 
|---|
| 78 |  ;
 | 
|---|
| 79 | SET ;Set ^TMP global
 | 
|---|
| 80 |  N SDPAS
 | 
|---|
| 81 |  S SDDAY=SDBDAY F  S SDDAY=$O(^SC(SDCL,"S",SDDAY)) Q:'SDDAY!(SDDAY>SDEDAY)  S SDI=0 F  S SDI=$O(^SC(SDCL,"S",SDDAY,1,SDI)) Q:'SDI  D
 | 
|---|
| 82 |  .S SDCP0=$G(^SC(SDCL,"S",SDDAY,1,SDI,0)) Q:'$L(SDCP0)  Q:$P(SDCP0,U,9)="C"
 | 
|---|
| 83 |  .S DFN=$P(SDCP0,U),SDPTNA=$P($G(^DPT(+DFN,0)),U) Q:'$L(SDPTNA)
 | 
|---|
| 84 |  .S SDPAS=$P($G(^DPT(DFN,"S",SDDAY,0)),U,2) I $L(SDPAS),"NA"[SDPAS Q
 | 
|---|
| 85 |  .D SET1(SDIV) D:SDMD SET1(0) Q
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 | SET1(SDIV) S ^TMP("SCRPW",$J,SDIV,1,$P(SDCL0,U),SDCL,SDPTNA,DFN,$P(SDDAY,"."),SDDAY)=""
 | 
|---|
| 89 |  S ^TMP("SCRPW",$J,SDIV,2,SDPTNA,DFN,$P(SDDAY,"."),SDDAY)=""
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 | FOOT ;Report footer
 | 
|---|
| 93 |  N SDI
 | 
|---|
| 94 |  F SDI=1:1:80 Q:$Y>(IOSL-8)  W !
 | 
|---|
| 95 |  W SDLINE,!?(SDCOL),"NOTE: This report reflects appointment workload that is not defined as cancelled"
 | 
|---|
| 96 |  W !?(SDCOL+6),"or no-showed, including walk-in (unscheduled) appointments.  It does not"
 | 
|---|
| 97 |  W !?(SDCOL+6),"represent all outpatient activity.  Report totals are tabulated separately",!?(SDCOL+6),"and will not necessarily be equal to the sum of the sub-total columns.",!,SDLINE Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | DPRT(SDIV) ;Print report for a division
 | 
|---|
| 100 |  D DHDR^SCRPW40(4,.SDT)
 | 
|---|
| 101 |  I '$D(^TMP("SCRPW",$J,SDIV)) D HDR^SCRPW60 S SDX="No appointments found for this division within report parameters!" W !!?(132-$L(SDX)\2),SDX Q
 | 
|---|
| 102 |  I SDPL,SDIV S SDCLN="" F  S SDCLN=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN)) Q:SDCLN=""!SDOUT  D
 | 
|---|
| 103 |  .S SDCL=0 F  S SDCL=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL)) Q:'SDCL!SDOUT  D
 | 
|---|
| 104 |  ..S SDT(5)="Patient list for clinic: "_SDCLN D HDR^SCRPW60,HD1 Q:SDOUT
 | 
|---|
| 105 |  ..S SDORD="" F  S SDORD=$O(^TMP("SCRPW",$J,SDIV,0,SDCLN,SDCL,SDORD)) Q:SDORD=""!SDOUT  D
 | 
|---|
| 106 |  ...S SDPTNA="" F  S SDPTNA=$O(^TMP("SCRPW",$J,SDIV,0,SDCLN,SDCL,SDORD,SDPTNA)) Q:SDPTNA=""!SDOUT  D
 | 
|---|
| 107 |  ....S DFN=0 F  S DFN=$O(^TMP("SCRPW",$J,SDIV,0,SDCLN,SDCL,SDORD,SDPTNA,DFN)) Q:'DFN!SDOUT  D
 | 
|---|
| 108 |  .....I SDPLO="D" D PLINE(SDORD) Q
 | 
|---|
| 109 |  .....S SDDAY=0 F  S SDDAY=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL,SDPTNA,DFN,SDDAY)) Q:'SDDAY!SDOUT  D
 | 
|---|
| 110 |  ......S SDAPP=0 F  S SDAPP=$O(^TMP("SCRPW",$J,SDIV,1,SDCLN,SDCL,SDPTNA,DFN,SDDAY,SDAPP)) Q:'SDAPP!SDOUT  D
 | 
|---|
| 111 |  .......D PLINE(SDAPP) Q
 | 
|---|
| 112 |  ......Q
 | 
|---|
| 113 |  .....Q
 | 
|---|
| 114 |  ....Q
 | 
|---|
| 115 |  ...Q
 | 
|---|
| 116 |  ..Q
 | 
|---|
| 117 |  .Q
 | 
|---|
| 118 |  Q:SDOUT  K SDT(5) D HDR^SCRPW60,HD2 Q:SDOUT
 | 
|---|
| 119 |  S SDCLN="" F  S SDCLN=$O(^TMP("SCRPW",$J,SDIV,3,SDCLN)) Q:SDCLN=""!SDOUT  D
 | 
|---|
| 120 |  .S SDCL=0 F  S SDCL=$O(^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL)) Q:'SDCL!SDOUT  D
 | 
|---|
| 121 |  ..D CLINE Q
 | 
|---|
| 122 |  .Q
 | 
|---|
| 123 |  Q:SDOUT  D DTOT,FOOT Q
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 | PLINE(SDAPP) ;Print patient detail line
 | 
|---|
| 126 |  ;Input: SDAPP=patient appointment date/time
 | 
|---|
| 127 |  S SDSSN=$P(^DPT(DFN,0),U,9) D:$Y>(IOSL-4) HDR^SCRPW60,HD1 Q:SDOUT
 | 
|---|
| 128 |  W !?(SDCOL+8),SDPTNA,?(SDCOL+40),$E(SDSSN,1,3),"-",$E(SDSSN,4,5),"-",$E(SDSSN,6,10) S Y=SDAPP X ^DD("DD") W ?(SDCOL+54),$P(Y,":",1,2) Q
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 | CLINE ;Print clinic sub-total line
 | 
|---|
| 131 |  S SDCTOT=^TMP("SCRPW",$J,SDIV,3,SDCLN,SDCL) D:$Y>(IOSL-11) FOOT,HDR^SCRPW60,HD2 Q:SDOUT
 | 
|---|
| 132 |  W !?(SDCOL+5),SDCLN F SDI=1:1:3 W ?(SDCOL+27+(12*SDI)),$J($P(SDCTOT,U,SDI),12,0)
 | 
|---|
| 133 |  Q
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 | DTOT ;Print division total
 | 
|---|
| 136 |  S SDTOT=^TMP("SCRPW",$J,SDIV,4) W !?(SDCOL+4),$E(SDTLINE,1,32) F SDI=1:1:3 W ?(SDCOL+30+(12*SDI)),$E(SDTLINE,1,10)
 | 
|---|
| 137 |  W !?(SDCOL+5),$S(SDIV:"DIVISION",1:"REPORT")," TOTAL:" F SDI=1:1:3 W ?(SDCOL+27+(12*SDI)),$J($P(SDTOT,U,SDI),12,0)
 | 
|---|
| 138 |  Q
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | HD1 ;Print patient list sub-header
 | 
|---|
| 141 |  Q:SDOUT  W !?(SDCOL+8),"Patient",?(SDCOL+40),"SSN",?(SDCOL+54),"Appt. date/time"
 | 
|---|
| 142 |  W !?(SDCOL+7),$E(SDLINE,1,31),?(SDCOL+40),$E(SDLINE,1,12),?(SDCOL+54),$E(SDLINE,1,18)
 | 
|---|
| 143 |  Q
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | HD2 ;Print clinic list sub-header
 | 
|---|
| 146 |  Q:SDOUT  W !?(SDCOL+5),"Clinic",?(SDCOL+45),"Appts.",?(SDCOL+57),"Visits",?(SDCOL+68),"Uniques"
 | 
|---|
| 147 |  W !?(SDCOL+4),$E(SDLINE,1,32) F SDI=1:1:3 W ?(SDCOL+30+(12*SDI)),$E(SDLINE,1,10)
 | 
|---|
| 148 |  Q
 | 
|---|