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