1 | SCRPO1 ;BP-CIOFO/KEITH - Historical Patient Position Assignment Listing ; 20 Aug 99 7:49 AM
|
---|
2 | ;;5.3;Scheduling;**177**;AUG 13, 1993
|
---|
3 | ;
|
---|
4 | EN ;Queue report
|
---|
5 | N LIST,SORT,SCSP,RTN,DESC
|
---|
6 | S LIST="DIV,TEAM,POS,PCP,ASPR,CLINIC",SORT="DV,TM,TP,PR,EC,PA"
|
---|
7 | S SCSP="PA",RTN="RUN^SCRPO1"
|
---|
8 | S DESC="Historical Patient Position Assignment Listing"
|
---|
9 | D PROMPT(LIST,SORT,SCSP,RTN,DESC) Q
|
---|
10 | ;
|
---|
11 | PROMPT(LIST,SORT,SCSP,SCRTN,SCDESC) ;Prompt for report parameters, queue report
|
---|
12 | ;Input: LIST=comma delimited string of list subscripts to prompt for
|
---|
13 | ;Input: SORT=comma delimited string of sort acronyms to prompt for
|
---|
14 | ;Input: SCSP=acronym of last sort to add if not selected (optional)
|
---|
15 | ;Input: SCRTN=report routine entry point
|
---|
16 | ;Input: SCDESC=tasked job description
|
---|
17 | ;
|
---|
18 | N SCDIV,SCBDT,SCEDT,SC,SCI,SCX,SCOUT,SCT
|
---|
19 | S SC="^TMP(""SC"",$J)" K @SC S SCOUT=0
|
---|
20 | D TITL^SCRPW50(SCDESC)
|
---|
21 | D SUBT^SCRPW50("**** Date Range Selection ****")
|
---|
22 | S (SCBDT("B"),SCEDT("B"))="TODAY"
|
---|
23 | G:'$$DTR^SCRPO(.SC,.SCBDT,.SCEDT) END
|
---|
24 | D SUBT^SCRPW50("**** Report Parameter Selection ****")
|
---|
25 | G:'$$ATYPE^SCRPO(.SC) END
|
---|
26 | G:'$$DSUM^SCRPO(.SC) END
|
---|
27 | F SCI=1:1:$L(LIST,",") S SCX=$P(LIST,",",SCI) D Q:SCOUT
|
---|
28 | .S SCOUT='$$LIST^SCRPO(.SC,SCX,1)
|
---|
29 | .Q
|
---|
30 | G:SCOUT END
|
---|
31 | D SUBT^SCRPW50("**** Output sort order (optional) ****")
|
---|
32 | G:'$$SORT^SCRPO(.SC,SORT,SCSP) END
|
---|
33 | S SCT(1)="**** Report Parameters Selected ****" D SUBT^SCRPW50(SCT(1))
|
---|
34 | G:'$$PPAR^SCRPO(.SC,1,.SCT) END
|
---|
35 | W !!,"This report requires 132 column output!"
|
---|
36 | W ! N ZTSAVE S ZTSAVE("^TMP(""SC"",$J,")="",ZTSAVE("SC")=""
|
---|
37 | D EN^XUTMDEVQ(SCRTN,SCDESC,.ZTSAVE)
|
---|
38 | END K ^TMP("SC",$J) D DISP0^SCRPW23,END^SCRPW50 Q
|
---|
39 | ;
|
---|
40 | RUN ;Print report
|
---|
41 | N SCFMT,SCTITL,SCTITL2,SCLINE,SCPAGE,SCOUT,SCFF,SCX,SCFF,SCLINE,SCPAGE
|
---|
42 | N SC1,SC2,SC3,SC4,SC5,SC6,SC7,SCN,SCASP,SCUNP,SCI,SCPNOW
|
---|
43 | S SCFMT=$E(^TMP("SC",$J,"FMT")),(SCFF,SCOUT,SCUNP)=0
|
---|
44 | D BUILD(SCFMT) Q:SCOUT S SCI=0
|
---|
45 | F S SCI=$O(^TMP("SCRPT",$J,0,"UNIQUES",SCI)) Q:'SCI S SCUNP=SCUNP+1
|
---|
46 | D HINI D:$E(IOST)="C" DISP0^SCRPW23
|
---|
47 | S SCTITL(2)=$$HDRX("P") D HDR^SCRPO(.SCTITL,132) Q:SCOUT S SCOUT=$$PPAR^SCRPO(.SC,,.SCTITL)=0
|
---|
48 | Q:SCOUT
|
---|
49 | I '$D(^TMP("SCRPT",$J,0)) D G EXIT
|
---|
50 | .K SCTITL(2) D HDR^SCRPO(.SCTITL,132) Q:SCOUT
|
---|
51 | .S SCX="No patient position assignments found within selected report parameters!"
|
---|
52 | .W !!?(132-$L(SCX)\2),SCX
|
---|
53 | .Q
|
---|
54 | S SCPAGE=1
|
---|
55 | I SCFMT="D" S SCTITL(2)=$$HDRX("D") D HDR^SCRPO(.SCTITL,132),SHDR("D") Q:SCOUT D
|
---|
56 | .S SC1=""
|
---|
57 | .F S SC1=$O(^TMP("SCRPT",$J,1,SC1)) Q:SC1=""!SCOUT D
|
---|
58 | ..S SC2=""
|
---|
59 | ..F S SC2=$O(^TMP("SCRPT",$J,1,SC1,SC2)) Q:SC2=""!SCOUT D
|
---|
60 | ...S SC3=""
|
---|
61 | ...F S SC3=$O(^TMP("SCRPT",$J,1,SC1,SC2,SC3)) Q:SC3=""!SCOUT D
|
---|
62 | ....S SCN=^TMP("SCRPT",$J,1,SC1,SC2,SC3),SC4=""
|
---|
63 | ....F S SC4=$O(^TMP("SCRPT",$J,2,SCN,SC4)) Q:SC4=""!SCOUT D
|
---|
64 | .....S SC5=""
|
---|
65 | .....F S SC5=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5)) Q:SC5=""!SCOUT D
|
---|
66 | ......S SC6=""
|
---|
67 | ......F S SC6=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6)) Q:SC6=""!SCOUT D
|
---|
68 | .......S SC7=""
|
---|
69 | .......F S SC7=$O(^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6,SC7)) Q:SC7=""!SCOUT D
|
---|
70 | ........S SCX=^TMP("SCRPT",$J,2,SCN,SC4,SC5,SC6,SC7)
|
---|
71 | ........I $Y>(IOSL-9) D FOOT1,HDR^SCRPO(.SCTITL,132),SHDR("D") Q:SCOUT
|
---|
72 | ........S SCY="0^20^27^39^43^57^73^89^94^110^122" W !
|
---|
73 | ........F SCI=1:1:11 W ?($P(SCY,U,SCI)),$P(SCX,U,SCI)
|
---|
74 | .......Q
|
---|
75 | ......Q
|
---|
76 | .....Q
|
---|
77 | ....Q
|
---|
78 | ...Q
|
---|
79 | ..Q
|
---|
80 | .D:'SCOUT FOOT1
|
---|
81 | .Q
|
---|
82 | G:SCOUT EXIT
|
---|
83 | S SCTITL(2)=$$HDRX("S") D HDR^SCRPO(.SCTITL,132),SHDR("S") G:SCOUT EXIT
|
---|
84 | S SCASP=^TMP("SCRPT",$J,0,"ASSIGNMENTS")
|
---|
85 | F SCI="PRIMARY ELIGIBILITY","MEANS TEST CATEGORY","GENDER","AGE GROUP","NATIONAL ENROLLMENT PRIORITY","TEAM","PRIMARY CARE","ASSIGNED PROVIDER","PRECEPTOR PROVIDER","DIVISION" D Q:SCOUT
|
---|
86 | .Q:'$D(^TMP("SCRPT",$J,0,SCI))
|
---|
87 | .D:$Y>(IOSL-9) FOOT2,HDR^SCRPO(.SCTITL,132),SHDR("S") Q:SCOUT
|
---|
88 | .W ! D SLINE("--"_SCI_"--") S SCX=""
|
---|
89 | .F S SCX=$O(^TMP("SCRPT",$J,0,SCI,SCX)) Q:SCX=""!SCOUT D
|
---|
90 | ..S SCY=^TMP("SCRPT",$J,0,SCI,SCX)
|
---|
91 | ..S SCZ=SCY*100/SCASP
|
---|
92 | ..D:$Y>(IOSL-5) HDR^SCRPO(.SCTITL,132),SHDR("S") Q:SCOUT
|
---|
93 | ..D SLINE(SCX,SCY,SCZ)
|
---|
94 | ..Q
|
---|
95 | .Q
|
---|
96 | G:SCOUT EXIT
|
---|
97 | W ! D SLINE("Total assignments that meet the parameters of this report:",SCASP,100)
|
---|
98 | D SLINE("Total unique patients that meet the parameters of this report:",SCUNP,100)
|
---|
99 | D FOOT2
|
---|
100 | ;
|
---|
101 | EXIT I $E(IOST)="C",'$G(SCOUT) N DIR S DIR(0)="E" D ^DIR
|
---|
102 | F SCI="SC","SCARR","SCRPT" K ^TMP(SCI,$J)
|
---|
103 | K SC D END^SCRPW50 Q
|
---|
104 | ;
|
---|
105 | SLINE(SCX,SCY,SCZ) ;Print summary line
|
---|
106 | ;Input: SCX=element
|
---|
107 | ;Input: SCY=count
|
---|
108 | ;Input: SCZ=percent
|
---|
109 | ;
|
---|
110 | W !,$J($P(SCX,U),70) I $L($G(SCY)) W ?71,$J(SCY,10),?81,$J(SCZ,10,2)
|
---|
111 | Q
|
---|
112 | ;
|
---|
113 | SHDR(SCX) ;Print report subheader
|
---|
114 | ;Input: SCX='D' for detail, 'S' for summary
|
---|
115 | Q:SCOUT
|
---|
116 | I SCX="S" D Q
|
---|
117 | .W !!?62,"Category",?76,"Count",?84,"Percent"
|
---|
118 | .W !?30,$E(SCLINE,1,40)," -------- --------"
|
---|
119 | .Q
|
---|
120 | W !?20,"Pat.",?27,"Primary",?38,"MT",?94,"Enrolled",!,"Patient Name"
|
---|
121 | W ?20,"Id.",?27,"Elig.",?38,"Cat",?43,"Team",?57,"Provider"
|
---|
122 | W ?73,"Team Position",?89,"PC?",?94,"Clinic",?110,"Act. Date"
|
---|
123 | W ?122,"Inac. Date",!
|
---|
124 | W "------------------ ----- --------- --- ------------ -------------- -------------- --- -------------- ---------- ----------"
|
---|
125 | Q
|
---|
126 | ;
|
---|
127 | HDRX(SCX) ;extra header line
|
---|
128 | ;Input: SCX='P' for parameters, 'D' for detail, 'S' for summary
|
---|
129 | Q:SCX="P" "Selected Report Parameters"
|
---|
130 | Q $S(SCX="D":"Detail",1:"Summary")_" for Patient Position Assignments Effective: "_^TMP("SC",$J,"DTR","PBDT")_" to "_^TMP("SC",$J,"DTR","PEDT")
|
---|
131 | ;
|
---|
132 | HINI ;Initialize header variables
|
---|
133 | N Y
|
---|
134 | S SCTITL(1)="<*> HISTORICAL PATIENT POSITION ASSIGNMENT LISTING <*>"
|
---|
135 | S SCLINE="",$P(SCLINE,"-",133)="",SCPAGE=1
|
---|
136 | S Y=$$NOW^XLFDT() X ^DD("DD") S SCPNOW=$P(Y,":",1,2)
|
---|
137 | Q
|
---|
138 | ;
|
---|
139 | STOP ;Check for stop task request
|
---|
140 | S:$D(ZTQUEUED) (SCOUT,ZTSTOP)=$S($$S^%ZTLOAD:1,1:0) Q
|
---|
141 | ;
|
---|
142 | BUILD(SCFMT) ;Build report data
|
---|
143 | ;Input: SCFMT=report format (detail or summary)
|
---|
144 | N SCTM,SCTP
|
---|
145 | ;Build from position list
|
---|
146 | I $O(^TMP("SC",$J,"POS",0)) S SCTP=0 D Q
|
---|
147 | .F S SCTP=$O(^TMP("SC",$J,"POS",SCTP)) Q:'SCTP!SCOUT D
|
---|
148 | ..D CKPOS(SCTP,SCFMT),STOP
|
---|
149 | ..Q
|
---|
150 | .Q
|
---|
151 | ;Build from all positions
|
---|
152 | S SCTP=0 F S SCTP=$O(^SCTM(404.57,SCTP)) Q:'SCTP!SCOUT D
|
---|
153 | .D CKPOS(SCTP,SCFMT),STOP
|
---|
154 | .Q
|
---|
155 | Q
|
---|
156 | ;
|
---|
157 | CKPOS(SCTP,SCFMT) ;Check team position
|
---|
158 | ;Input: SCTP=TEAM POSITION ifn
|
---|
159 | ;Input: SCFMT=report format (detail or summary)
|
---|
160 | ;
|
---|
161 | N SCDIV,SCTEAM,SCPOS,SCLINIC,SCTP0,SCX
|
---|
162 | S SCTP0=$G(^SCTM(404.57,+SCTP,0)) Q:'$L(SCTP0)
|
---|
163 | S SCX=$P(SCTP0,U) Q:'$L(SCX)
|
---|
164 | S SCPOS=SCX_U_SCTP
|
---|
165 | S SCTEAM=$P(SCTP0,U,2) Q:'$$TMDV(.SCTEAM,.SCDIV)
|
---|
166 | S SCLINIC=$P(SCTP0,U,9) Q:'$$TPCL(.SCLINIC)
|
---|
167 | D BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
|
---|
168 | Q
|
---|
169 | ;
|
---|
170 | TPCL(SCLINIC) ;Get team position associated clinic
|
---|
171 | ;Input: SCLINIC=associated clinic pointer from team position
|
---|
172 | ; (returned as name^ifn, if successful and one exists)
|
---|
173 | ;Output: '1' if success, '0' otherwise
|
---|
174 | ;
|
---|
175 | I $O(^TMP("SC",$J,"CLINIC",0)),'$D(^TMP("SC",$J,"CLINIC",+SCLINIC)) Q 0
|
---|
176 | Q:SCLINIC<1 1
|
---|
177 | S SCLINIC=$P($G(^SC(SCLINIC,0)),U)_U_SCLINIC
|
---|
178 | Q 1
|
---|
179 | ;
|
---|
180 | TMDV(SCTEAM,SCDIV) ;Get team and division
|
---|
181 | ;Input: SCTEAM=team ifn (returned as name^ifn, if successful)
|
---|
182 | ;Input: SCDIV=variable to return division as name^ifn
|
---|
183 | ;Output: '1' if success, '0' otherwise
|
---|
184 | N SCTM0,SCX
|
---|
185 | Q:SCTEAM<1 0
|
---|
186 | I $O(^TMP("SC",$J,"TEAM",0)),'$D(^TMP("SC",$J,"TEAM",SCTEAM)) Q 0
|
---|
187 | S SCTM0=$G(^SCTM(404.51,SCTEAM,0)) Q:'$L(SCTM0) 0
|
---|
188 | S SCX=$P(SCTM0,U) Q:'$L(SCX) 0
|
---|
189 | S SCTEAM=SCX_U_SCTEAM
|
---|
190 | S SCDIV=$P(SCTM0,U,7) Q:SCDIV<1 0
|
---|
191 | I $O(^TMP("SC",$J,"DIV",0)),'$D(^TMP("SC",$J,"DIV",SCDIV)) Q 0
|
---|
192 | S SCX=$P($G(^DIC(4,SCDIV,0)),U) Q:'$L(SCX) 0
|
---|
193 | S SCDIV=SCX_U_SCDIV
|
---|
194 | Q 1
|
---|
195 | ;
|
---|
196 | BTPOS(SCTP,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT) ;Build list of patients for a position
|
---|
197 | ;Input: SCTP=team position ifn
|
---|
198 | ;Input: SCDIV=division^ifn
|
---|
199 | ;Input: SCTEAM=team^ifn
|
---|
200 | ;Input: SCPOS=team position^ifn
|
---|
201 | ;Input: SCLINIC=associated clinic^ifn (if one exists)
|
---|
202 | ;Input: SCFMT=report format (detail or summary)
|
---|
203 | ;
|
---|
204 | N SCARR,SCDT,SCI,SCPASS
|
---|
205 | S SCARR="^TMP(""SCARR"",$J,1)" K @SCARR
|
---|
206 | M SCDT=^TMP("SC",$J,"DTR") S SCDT="SCDT"
|
---|
207 | S SCI=$$PTTP^SCAPMC(SCTP,.SCDT,SCARR),SCI=0
|
---|
208 | F S SCI=$O(^TMP("SCARR",$J,1,SCI)) Q:'SCI D
|
---|
209 | .S SCPASS=^TMP("SCARR",$J,1,SCI)
|
---|
210 | .D BPTPA^SCRPO2(SCPASS,SCDIV,SCTEAM,SCPOS,SCLINIC,SCFMT)
|
---|
211 | .Q
|
---|
212 | Q
|
---|
213 | ;
|
---|
214 | FOOT1 ;Detail report footer
|
---|
215 | N SCI
|
---|
216 | F SCI=1:1:80 W ! Q:$Y>(IOSL-7)
|
---|
217 | W !,SCLINE
|
---|
218 | W !,"NOTE: More than one provider may be associated with a single patient position assignment. This output returns a separate output"
|
---|
219 | W !?6,"line for each related provider during the date range selected."
|
---|
220 | W !!?6,"'PC?' represents provider type: AP = Associate provider, PCP = Primary Care Provider, NPC = Non-Primary Care Provider."
|
---|
221 | W !,SCLINE
|
---|
222 | Q
|
---|
223 | ;
|
---|
224 | FOOT2 ;Summary report footer
|
---|
225 | N SCI
|
---|
226 | F SCI=1:1:80 W ! Q:$Y>(IOSL-7)
|
---|
227 | W !,SCLINE
|
---|
228 | W !,"NOTE: More than one provider may be associated with a single patient position assignment. The sum of assignments related to"
|
---|
229 | W !?6,"providers detailed in this summary is likely to be greater than the actual number of patient position assignments"
|
---|
230 | W !?6,"returned by this report."
|
---|
231 | W !,SCLINE
|
---|
232 | Q
|
---|