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
|
---|