1 | GMRCSTLM ;SLC/DCM,dee,MA - List Manager Format Routine - Get Active Consults by service - pending,active,scheduled,incomplete,etc. ;11/21/02 05:29
|
---|
2 | ;;3.0;CONSULT/REQUEST TRACKING;**1,7,21,23,22,29**;DEC 27, 1997
|
---|
3 | ; Patch #21 added a initialization KILL for ^TMP("GMRCTOT",$J)
|
---|
4 | ; Patch #23 remove the default prompt "ALL SERVICES"
|
---|
5 | Q
|
---|
6 | ;
|
---|
7 | EN ;Ask for new service and date range
|
---|
8 | K GMRCQUT
|
---|
9 | N DIROUT,DTOUT,DUOUT,DIR
|
---|
10 | ;
|
---|
11 | ;Ask for service
|
---|
12 | N Y
|
---|
13 | S DIR(0)="PO^123.5:EMQ",DIR("??")="^D LISTALL^GMRCASV"
|
---|
14 | S DIR("A")="Select Service/Specialty"
|
---|
15 | D ^DIR
|
---|
16 | I Y<1 S VALMBCK="Q" Q
|
---|
17 | S GMRCDG=+Y,GMRCSVNM=$P(Y,U,2)
|
---|
18 | D SERV1^GMRCASV
|
---|
19 | I '$O(^TMP("GMRCSLIST",$J,0)) S VALMBCK="Q" Q
|
---|
20 | ;
|
---|
21 | ;Ask for date range
|
---|
22 | D ^GMRCSPD
|
---|
23 | I $D(GMRCQUT) S VALMBCK="Q" G EXIT
|
---|
24 | D LISTDATE^GMRCSTU1(GMRCDT1,GMRCDT2,.GMRCEDT1,.GMRCEDT2)
|
---|
25 | Q
|
---|
26 | ;
|
---|
27 | ENOR(RETURN,GMRCSVC,GMRCDT1,GMRCDT2,GMRCSTAT,GMRCCTRL,GMRCARRN) ;Entry point for GUI interface.
|
---|
28 | ;.RETURN: This is the root to the returned temp array.
|
---|
29 | ;GMRCSVC: Service for which consults are to be displayed.
|
---|
30 | ;GMRCDT1: Starting date or "ALL"
|
---|
31 | ;GMRCDT2: Ending date if not GMRCDT1="ALL"
|
---|
32 | ;GMRCSTAT: The list of status to include separated by commas
|
---|
33 | ;GMRCCTRL: 0, null or not define then just the display list is
|
---|
34 | ; displayed
|
---|
35 | ; 1 then the list will be two pieces with the first piece
|
---|
36 | ; being the ien of the consult for selection in the gui
|
---|
37 | ; and the second piece being the display text.
|
---|
38 | ; 10 then the consults will have a line number on them for
|
---|
39 | ; selection
|
---|
40 | ; 20 then the consults will have the consult number displayed
|
---|
41 | ; 100 then use abbreviations for the statuses
|
---|
42 | ; 1, (10 or 20) and 100 can be added together to add there features
|
---|
43 | ;GMRCARRN: List Template Array Name
|
---|
44 | ; "CP": pending; "IFC": inter-facility
|
---|
45 | ;
|
---|
46 | ;This temp array is used internally by the report:
|
---|
47 | ;^TMP("GMRCSLIST",$J,n)=ien^name^parient ien^"+" if grouper^status
|
---|
48 | ; status is "" tracking and/or grouper
|
---|
49 | ; 1 grouper only
|
---|
50 | ; 2 tracking only
|
---|
51 | ; 9 disabled
|
---|
52 | ;
|
---|
53 | N GMRCEDT1,GMRCEDT2,GMRCDG,GMRCHEAD,GMRCCT,GMRCGRP,VALMCNT,VALMBCK
|
---|
54 | K ^TMP("GMRCR",$J,GMRCARRN)
|
---|
55 | S RETURN="^TMP(""GMRCR"",$J,GMRCARRN)"
|
---|
56 | I '($D(GMRCSVC)#2) S GMRCSVC=1
|
---|
57 | Q:'$D(^GMR(123.5,$G(GMRCSVC),0))
|
---|
58 | ;Build service array
|
---|
59 | S GMRCDG=GMRCSVC
|
---|
60 | D SERV1^GMRCASV
|
---|
61 | ;Get external form of date range
|
---|
62 | I '($D(GMRCDT1)#2) S GMRCDT1="ALL"
|
---|
63 | S:GMRCDT1="ALL" GMRCDT2=0
|
---|
64 | D LISTDATE^GMRCSTU1(GMRCDT1,$G(GMRCDT2),.GMRCEDT1,.GMRCEDT2)
|
---|
65 | G ENORSTR
|
---|
66 | ;
|
---|
67 | ENORLM(GMRCARRN) ;Entry point for List Manager interface.
|
---|
68 | ; Input -- GMRCARRN List Template Array Name
|
---|
69 | ; "CP": pending; "IFC": inter-facility
|
---|
70 | ; Output - None
|
---|
71 | D WAIT^DICD
|
---|
72 | ;
|
---|
73 | ENORSTR ;Common part
|
---|
74 | N GMRCDA,NUMCLIN,INDEX,STATUS,LOOP,GROUPER
|
---|
75 | N STS,GMRCD,GMRCDT,GMRCSVCG,TEMP
|
---|
76 | N GMRCPT,CTRLTEMP,LINETEMP,GMRCLINE
|
---|
77 | N GMRCPTN,GMRCPTSN,GMRCDLA,GMRCXDT,GMRCLOC,GMRCSVCP
|
---|
78 | N GRP,GMRCIRF,GMRCIRFN,GMRCIDD,GMRCST,GMRCRDT
|
---|
79 | S:'$D(GMRCARRN) GMRCARRN="CP"
|
---|
80 | ;
|
---|
81 | ; Patch #21 added the kill for ^TMP("GMRCTOT",$J)
|
---|
82 | K ^TMP("GMRCR",$J,GMRCARRN),^TMP("GMRCRINDEX",$J),^TMP("GMRCTOT",$J)
|
---|
83 | ;
|
---|
84 | S GMRCCT=0
|
---|
85 | S NUMCLIN=0
|
---|
86 | S GMRCLINE=0
|
---|
87 | S GROUPER=0
|
---|
88 | S GROUPER(0)=0
|
---|
89 | S GMRCCT=GMRCCT+1
|
---|
90 | I '($D(GMRCCTRL)#2) S GMRCCTRL=0 ;default to just the list
|
---|
91 | S CTRLTEMP=$S(GMRCCTRL#2:"^",1:"")
|
---|
92 | I GMRCARRN="IFC" D
|
---|
93 | .S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP_$J("",18)_"IF Consult/Request By Status - "_$S(GMRCIS="R":"Requesting",1:"Consulting")_" Site"
|
---|
94 | E D
|
---|
95 | .S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP_$J("",28)_"Consult/Request By Status"
|
---|
96 | S GMRCCT=GMRCCT+1
|
---|
97 | S TEMP="FROM: "_GMRCEDT1_" TO: "_GMRCEDT2
|
---|
98 | S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP_$J("",40-($L(TEMP)/2)+.5)_TEMP
|
---|
99 | I GMRCARRN="IFC",$D(GMRCRF),$D(GMRCREMP) D
|
---|
100 | .S GMRCCT=GMRCCT+1
|
---|
101 | .S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP_"Routing Facility - "_$$GET1^DIQ(4,GMRCRF,.01)
|
---|
102 | .S GMRCCT=GMRCCT+1
|
---|
103 | .S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP_"Remote Ordering Provider - "_GMRCREMP
|
---|
104 | I GMRCCTRL=120 D
|
---|
105 | .S GMRCCT=GMRCCT+1
|
---|
106 | .S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP
|
---|
107 | .S GMRCCT=GMRCCT+1
|
---|
108 | .S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=" Number St Last Action Req Dt Patient Name Patient Location"_$S(GMRCARRN="IFC":" Routing Facility Days Diff"_$S(GMRCIS="C":" Rec Dt",1:""),1:"")
|
---|
109 | ;
|
---|
110 | I '($D(GMRCSVC)#2) S GMRCSVC=1
|
---|
111 | I '($D(GMRCDT1)#2) S GMRCDT1="ALL",GMRCDT2=0
|
---|
112 | I '($D(GMRCDT2)#2) S GMRCDT2=""
|
---|
113 | I '($D(GMRCSTAT)#2),GMRCARRN="CP" S GMRCSTAT="3,4,5,6,8,9,11,99" ;pending consults
|
---|
114 | I '($D(GMRCSTAT)#2),GMRCARRN="IFC" S GMRCSTAT="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,99"
|
---|
115 | ;
|
---|
116 | CAPTION ;Set the List Mangager Caption Line
|
---|
117 | ; Does GMRCCTRL contain 10 i.e. display line numbers
|
---|
118 | ; or 20 i.e. display consult number
|
---|
119 | I $G(VALMAR)="^TMP(""GMRCR"",$J,""CP"")"!($G(VALMAR)="^TMP(""GMRCR"",$J,""IFC"")") D
|
---|
120 | .I GMRCCTRL#100\10 D
|
---|
121 | ..I GMRCCTRL#100\10=1 D
|
---|
122 | ...; Does GMRCCTRL contain 100 i.e. use abbreviations for the statuses
|
---|
123 | ...I GMRCCTRL#1000\100 D CHGCAP^VALM("CAPTION LINE"," St Last Action Request Date Patient Name Pt Location")
|
---|
124 | ...; Do not use abbreviations for the statuses
|
---|
125 | ...E D CHGCAP^VALM("CAPTION LINE"," Status Last Action Request Date Patient Name Pt Location")
|
---|
126 | ..; Do not display consult number
|
---|
127 | ..E D
|
---|
128 | ...; Does GMRCCTRL contain 100 i.e. use abbreviations for the statuses
|
---|
129 | ...I GMRCCTRL#1000\100 D CHGCAP^VALM("CAPTION LINE"," Number St Last Action Request Date Patient Name Pt Location")
|
---|
130 | ...; Do not use abbreviations for the statuses
|
---|
131 | ...E D CHGCAP^VALM("CAPTION LINE"," Number Status Last Action Request Date Patient Name Pt Location")
|
---|
132 | .E D
|
---|
133 | ..; Does GMRCCTRL contain 100 i.e. use abbreviations for the statuses
|
---|
134 | ..I GMRCCTRL#1000\100 D CHGCAP^VALM("CAPTION LINE","St Last Action Request Date Patient Name Pt Location")
|
---|
135 | ..; Do not use abbreviations for the statuses
|
---|
136 | ..E D CHGCAP^VALM("CAPTION LINE","Status Last Action Request Date Patient Name Pt Location")
|
---|
137 | .I GMRCARRN="IFC" D
|
---|
138 | ..D CHGCAP^VALM("CAPTION LINE 1","Routing Facility Days Diff"_$S(GMRCIS="C":" Rec Date",1:""))
|
---|
139 | ;Set screen width
|
---|
140 | S VALM("RM")=$S(GMRCARRN="CP":$$CWIDTH^GMRCPC(GMRCCTRL),1:$$CWIDTH^GMRCIR(GMRCCTRL))
|
---|
141 | ;
|
---|
142 | S GMRCHEAD=$P($G(^TMP("GMRCSLIST",$J,+$O(^TMP("GMRCSLIST",$J,"")))),"^",2)
|
---|
143 | S INDEX=""
|
---|
144 | SVC ;Loop on Service
|
---|
145 | F S INDEX=$O(^TMP("GMRCSLIST",$J,INDEX)) Q:INDEX="" D
|
---|
146 | .S GMRCSVC=$P(^TMP("GMRCSLIST",$J,INDEX),"^",1)
|
---|
147 | .S GMRCSVCP=$P(^TMP("GMRCSLIST",$J,INDEX),"^",2)
|
---|
148 | .S GMRCSVCG=$P(^TMP("GMRCSLIST",$J,INDEX),"^",3)
|
---|
149 | .S ^TMP("GMRCTOT",$J,1,GMRCSVC,"T")=0
|
---|
150 | .S ^TMP("GMRCTOT",$J,1,GMRCSVC,"P")=0
|
---|
151 | .S ^TMP("GMRCTOT",$J,2,GMRCSVC,"T")=0
|
---|
152 | .S ^TMP("GMRCTOT",$J,2,GMRCSVC,"P")=0
|
---|
153 | .I GMRCARRN="IFC" D
|
---|
154 | ..S GMRCST(1,GMRCSVC)="0^0"
|
---|
155 | ..S GMRCST(2,GMRCSVC)="0^0"
|
---|
156 | GROUPER .;Check if starting a new Grouper
|
---|
157 | .F Q:GROUPER(GROUPER)=GMRCSVCG D
|
---|
158 | ..;End of a group so print the group totals
|
---|
159 | ..D LISTTOT^GMRCSTL1(.GMRCCT,2,GROUPER(GROUPER),$P(^GMR(123.5,GROUPER(GROUPER),0),"^",1),"",GMRCCTRL,GMRCARRN)
|
---|
160 | ..;pop grouper from stack
|
---|
161 | ..S GROUPER=GROUPER-1
|
---|
162 | .I $P(^TMP("GMRCSLIST",$J,INDEX),"^",4)="+" D
|
---|
163 | ..;Start of a new group so print the group heading.
|
---|
164 | ..S GMRCCT=GMRCCT+1
|
---|
165 | ..S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP
|
---|
166 | ..S GMRCCT=GMRCCT+1
|
---|
167 | ..S TEMP="GROUPER: "_GMRCSVCP
|
---|
168 | ..S:GMRCSVCG>0 TEMP=TEMP_" in Group: "_$P(^GMR(123.5,GMRCSVCG,0),"^",1)
|
---|
169 | ..S ^TMP("GMRCR",$J,GMRCARRN,GMRCCT,0)=CTRLTEMP_$J("",40-(($L(TEMP)/2)+.5))_TEMP
|
---|
170 | ..;push new grouper on stack
|
---|
171 | ..S GROUPER=GROUPER+1
|
---|
172 | ..S GROUPER(GROUPER)=GMRCSVC
|
---|
173 | STAT .;Loop for one status at a time
|
---|
174 | .F LOOP=1:1:$L(GMRCSTAT,",") S STATUS=$P(GMRCSTAT,",",LOOP) D ONESTAT^GMRCSTL2(GMRCARRN)
|
---|
175 | .F GRP=GROUPER:-1:1 D
|
---|
176 | ..; pending for this service to all of its groupers
|
---|
177 | ..S ^TMP("GMRCTOT",$J,2,GROUPER(GRP),"P")=$G(^TMP("GMRCTOT",$J,2,GROUPER(GRP),"P"))+^TMP("GMRCTOT",$J,1,GMRCSVC,"P")
|
---|
178 | ..; for all status for this service to all of its groupers
|
---|
179 | ..S ^TMP("GMRCTOT",$J,2,GROUPER(GRP),"T")=$G(^TMP("GMRCTOT",$J,2,GROUPER(GRP),"T"))+^TMP("GMRCTOT",$J,1,GMRCSVC,"T")
|
---|
180 | ..;IF Consults
|
---|
181 | ..I GMRCARRN="IFC" S GMRCIRFN="" F S GMRCIRFN=$O(^TMP("GMRCTOT",$J,1,GMRCSVC,"F",GMRCIRFN)) Q:GMRCIRFN="" D
|
---|
182 | ...I '$D(^TMP("GMRCTOT",$J,2,GROUPER(GRP),"F",GMRCIRFN)) D
|
---|
183 | ....S ^TMP("GMRCTOT",$J,2,GROUPER(GRP),"F",GMRCIRFN)=0
|
---|
184 | ....S GMRCST(2,GROUPER(GRP),GMRCIRFN)="0^0"
|
---|
185 | ...S ^TMP("GMRCTOT",$J,2,GROUPER(GRP),"F",GMRCIRFN)=$G(^TMP("GMRCTOT",$J,2,GROUPER(GRP),"F",GMRCIRFN))+^TMP("GMRCTOT",$J,1,GMRCSVC,"F",GMRCIRFN)
|
---|
186 | ...I +$P(GMRCST(1,GMRCSVC,GMRCIRFN),"^",2)>0 D
|
---|
187 | ....S $P(GMRCST(2,GROUPER(GRP),GMRCIRFN),"^")=($P(GMRCST(2,GROUPER(GRP)),"^"))+($P(GMRCST(1,GMRCSVC,GMRCIRFN),"^"))
|
---|
188 | ....S $P(GMRCST(2,GROUPER(GRP),GMRCIRFN),"^",2)=($P(GMRCST(2,GROUPER(GRP),GMRCIRFN),"^",2))+($P(GMRCST(1,GMRCSVC,GMRCIRFN),"^",2))
|
---|
189 | ..I GMRCARRN="IFC" D
|
---|
190 | ...S $P(GMRCST(2,GROUPER(GRP)),"^")=($P(GMRCST(2,GROUPER(GRP)),"^"))+($P(GMRCST(1,GMRCSVC),"^"))
|
---|
191 | ...S $P(GMRCST(2,GROUPER(GRP)),"^",2)=($P(GMRCST(2,GROUPER(GRP)),"^",2))+($P(GMRCST(1,GMRCSVC),"^",2))
|
---|
192 | .;
|
---|
193 | PRINTST .;Print the totals for this service that are >0
|
---|
194 | .I ^TMP("GMRCTOT",$J,1,GMRCSVC,"T")>0 D LISTTOT^GMRCSTL1(.GMRCCT,1,GMRCSVC,GMRCSVCP,$P($G(^GMR(123.5,GMRCSVCG,0)),"^",1),GMRCCTRL,GMRCARRN)
|
---|
195 | ;
|
---|
196 | ;Done so
|
---|
197 | ;Now list the group totals for the current groups
|
---|
198 | F GROUPER=GROUPER:-1:1 D
|
---|
199 | .D LISTTOT^GMRCSTL1(.GMRCCT,2,GROUPER(GROUPER),$P(^GMR(123.5,GROUPER(GROUPER),0),"^",1),"",GMRCCTRL,GMRCARRN)
|
---|
200 | ;
|
---|
201 | S VALMCNT=$O(^TMP("GMRCR",$J,GMRCARRN," "),-1)
|
---|
202 | I $D(IOBM),$D(IOTM) S VALMBCK="R"
|
---|
203 | EXIT Q
|
---|
204 | ;
|
---|