| 1 | SCMCBK1 ;LB/SCK - Broker Utilities for multiple patient assignments;
|
---|
| 2 | ;;5.3;Scheduling;**41,51,210,297**;AUG 13, 1993
|
---|
| 3 | ;;1T1;;
|
---|
| 4 | Q
|
---|
| 5 | ;
|
---|
| 6 | PARSE(SC) ;
|
---|
| 7 | S SCTEAM=$G(SC("TEAM"),"")
|
---|
| 8 | S SCPOS=$G(SC("POSITION"),"")
|
---|
| 9 | S SCDTVAR=$G(SC("DATE"),DT)
|
---|
| 10 | S SCDTRNG("BEGIN")=$G(SC("BEGIN"),DT)
|
---|
| 11 | S SCDTRNG("END")=$G(SC("END"),DT)
|
---|
| 12 | S SCDTRNG("INCL")=$G(SC("INCL"),0)
|
---|
| 13 | S SCJOB=$G(SC("JOB"),"")
|
---|
| 14 | S SCSTART=$G(SC("BSTART"),0)
|
---|
| 15 | S SCEND=$G(SC("BEND"),0)
|
---|
| 16 | S SCLAST=$G(SC("BLAST"),0)
|
---|
| 17 | S SCFILE=$G(SC("FILE"),"")
|
---|
| 18 | S SCJOBID=$G(SC("JOBID"),"")
|
---|
| 19 | S SCNUM=$G(SC("MAX"),300)
|
---|
| 20 | S SCCLN=$G(SC("CLINIC"),"")
|
---|
| 21 | S SCSCDE=$G(SC("STOPCODE"),"")
|
---|
| 22 | S SCFRMTM=$G(SC("FROMTEAM"),"")
|
---|
| 23 | S SCFRMPOS=$G(SC("FROMPOS"),"")
|
---|
| 24 | S SCDFN=$G(SC("DFN"),"")
|
---|
| 25 | S SCMORE=$G(SC("MORE"),"")
|
---|
| 26 | Q
|
---|
| 27 | ;
|
---|
| 28 | NEWVAR ;
|
---|
| 29 | ;bp/cmf 210t0 begin
|
---|
| 30 | D CLRVAR Q
|
---|
| 31 | ;bp/cmf 210t0 end
|
---|
| 32 | N SCCLN,SCSCDE,SCTEAM,SCDTRNG,SCLOC,SCERMSG,SCNUM,SCCOUNT,SCMORE,SCOK1,SCER2,SCOUT,BLOCK,SCBLOCK,SCFRMTM,SCFRMPOS,SCSRCE,SCSRCTYP
|
---|
| 33 | N SCADDFLD,SCNEW,SCOLD,SCBAD,SUBRTN,SCX,SCTMP
|
---|
| 34 | ;
|
---|
| 35 | K ^TMP($J,"SC PCMM IN")
|
---|
| 36 | K ^TMP($J,"PCMM TMP")
|
---|
| 37 | K ^TMP("SC TMP LIST",$J)
|
---|
| 38 | K ^TMP($J,"SC PATIENT LIST")
|
---|
| 39 | ;
|
---|
| 40 | Q
|
---|
| 41 | ;
|
---|
| 42 | CLRVAR ; Clear all parsing variables
|
---|
| 43 | ;
|
---|
| 44 | K SCNUM,SCSCDE,SCCLN,SCJOBID,SCFILE,SCLAST,SCEND,SCSTART,SCJOB,SCDTRNG
|
---|
| 45 | K SCDTVAR,SCPOS,SCTEAM,SCFRMTM,SCFRMPOS,SCDFN,BLOCK,SCBLOCK,SCX,SUBRTN
|
---|
| 46 | K SCTMP,SCBAD,SCOLD,SCNEW,SCLOC,SCERMSG,SCCOUNT,SCMORE,SCOK1
|
---|
| 47 | K SCER2,SCOUT,SCSRCE,SCSRCTYP,SCADDFLD
|
---|
| 48 | ;
|
---|
| 49 | K ^TMP($J,"SC PCMM IN")
|
---|
| 50 | K ^TMP($J,"PCMM TMP")
|
---|
| 51 | K ^TMP("SC TMP LIST",$J)
|
---|
| 52 | K ^TMP($J,"SC PATIENT LIST")
|
---|
| 53 | Q
|
---|
| 54 | ;
|
---|
| 55 | PTCLEN(SCOK,SC) ; Enroll patient in associated clinic for a position
|
---|
| 56 | ; ' SC PAT ENROLL CLN '
|
---|
| 57 | ;
|
---|
| 58 | N SCCLN,SCDFN,SCDTVAR,SCERMSG,SCADDFLD
|
---|
| 59 | ;
|
---|
| 60 | D CHK^SCUTBK
|
---|
| 61 | D TMP^SCUTBK
|
---|
| 62 | ;
|
---|
| 63 | D PARSE(.SC)
|
---|
| 64 | S SCADDFLD(1)=$G(SC("ADD1"),"O")
|
---|
| 65 | S SCOK=0
|
---|
| 66 | ;
|
---|
| 67 | ;Enroll Patient in all associated clincs not entrolled in
|
---|
| 68 | F SCCLN=0:0 S SCCLN=$O(^SCTM(404.57,SCPOS,5,SCCLN)) Q:'SCCLN D
|
---|
| 69 | .I $D(^DPT(SCDFN,"DE","B",SCCLN)) Q
|
---|
| 70 | .S SCOK=$$ACPTCL^SCAPMC18(SCDFN,SCCLN,"SCADDFLD",SCDTVAR,"SCERMSG")
|
---|
| 71 | ;
|
---|
| 72 | D CLRVAR
|
---|
| 73 | Q
|
---|
| 74 | ;
|
---|
| 75 | CHKPOS(SCOK,SC) ; Check for primary care pratitioner and attending positions for patient
|
---|
| 76 | ; ' SC CHECK FOR PC POS '
|
---|
| 77 | ; Piece 1 of SCOK = 1 if ok for practitioner role
|
---|
| 78 | ; 0 if not ok
|
---|
| 79 | ; Piece 2 of SCOK = 1 if ok for ateending role
|
---|
| 80 | ; 0 if not ok
|
---|
| 81 | ;
|
---|
| 82 | N SCPOS,SCDTVAR,SCDFN
|
---|
| 83 | ;
|
---|
| 84 | D CHK^SCUTBK
|
---|
| 85 | D TMP^SCUTBK
|
---|
| 86 | ;
|
---|
| 87 | D PARSE(.SC)
|
---|
| 88 | ;
|
---|
| 89 | S SCOK=$$PCRLPTTP^SCMCTPU2(SCDFN,SCPOS,SCDTVAR)
|
---|
| 90 | ;
|
---|
| 91 | D CLRVAR
|
---|
| 92 | Q
|
---|
| 93 | ;
|
---|
| 94 | NOPCTM(SCOK,SC) ; Build list of patients with a primary care assignment, but no primary care team;
|
---|
| 95 | ; ' SC BLD NOPC TM LIST '
|
---|
| 96 | ;
|
---|
| 97 | N I1
|
---|
| 98 | D NEWVAR
|
---|
| 99 | ;
|
---|
| 100 | D CHK^SCUTBK
|
---|
| 101 | D TMP^SCUTBK
|
---|
| 102 | ;
|
---|
| 103 | D PARSE(.SC)
|
---|
| 104 | ;
|
---|
| 105 | K ^TMP($J,"SCPCNO")
|
---|
| 106 | ; Build exclude list
|
---|
| 107 | S BLOCK=$S(SCPOS'="":"BLKPOS^SCMCBK",1:"BLKTM^SCMCBK")
|
---|
| 108 | S SCBLOCK=$S(SCPOS'="":SCPOS,1:SCTEAM)
|
---|
| 109 | D @BLOCK
|
---|
| 110 | ;
|
---|
| 111 | S SCOK=0
|
---|
| 112 | ;
|
---|
| 113 | S SCLOC="^TMP($J,""SC PCMM IN"")"
|
---|
| 114 | D PTPCNOTM^SCAPMC20(.SCLOC,SCDTVAR)
|
---|
| 115 | K ^TMP("SCMC",$J,"EXCLUDE PT")
|
---|
| 116 | ;
|
---|
| 117 | S I=""
|
---|
| 118 | F S I=$O(^TMP($J,"SC PCMM IN",I)) Q:'I D
|
---|
| 119 | . S ^TMP($J,"PCMM TMP",I)=^TMP($J,"SC PCMM IN",I)
|
---|
| 120 | ;
|
---|
| 121 | D ALPHA^SCAPMCU2("^TMP($J,""PCMM TMP"")","^TMP($J,""SCPCNO"")")
|
---|
| 122 | S I1="" F S I1=$O(^TMP($J,"SCPCNO",I1)) Q:'I1 S I=I1
|
---|
| 123 | ;
|
---|
| 124 | S SCOK=$J_U_+I_U_1
|
---|
| 125 | ;
|
---|
| 126 | D CLRVAR
|
---|
| 127 | Q
|
---|
| 128 | ;
|
---|
| 129 | ASGNALL(SCOK,SC) ; Assign all entries for the selection source to the appropriate team.
|
---|
| 130 | ; ' SC FILE ALL PAT TM ASGN '
|
---|
| 131 | ;
|
---|
| 132 | D NEWVAR
|
---|
| 133 | ;
|
---|
| 134 | D CHK^SCUTBK
|
---|
| 135 | D TMP^SCUTBK
|
---|
| 136 | ;
|
---|
| 137 | D PARSE(.SC)
|
---|
| 138 | S SCSRCE=$G(SC("SOURCE"),"")
|
---|
| 139 | S SCADDFLD(.08)=$G(SC("TYPE"),99)
|
---|
| 140 | S SCADDFLD(.1)=$G(SC("RESTRICT"),0)
|
---|
| 141 | S SCADDFLD(.11)=DUZ
|
---|
| 142 | S SCADDFLD(.12)=DT
|
---|
| 143 | ;
|
---|
| 144 | S DTMP=$G(SCDTRNG("END"))
|
---|
| 145 | S SCDTTRNG("END")=3990101
|
---|
| 146 | S SCOK2=$$PTTM^SCAPMC(SCTEAM,"SCDTRNG","^TMP(""SCMC"",$J,""EXCLUDE PT"")","SCER2")
|
---|
| 147 | S SCDTRNG("END")=DTMP
|
---|
| 148 | ;
|
---|
| 149 | S SCSRCTYP=$P(SCSRCE,U,1)
|
---|
| 150 | D @SCSRCTYP
|
---|
| 151 | ;
|
---|
| 152 | K SCBAD,SCOLD,SCNEW
|
---|
| 153 | S SCX=$$ACPTATM^SCAPMC6("^TMP($J,""SC PATIENT LIST"")",SCTEAM,"SCADDFLD",SCDTVAR,"SCERMSG","SCNEW","SCOLD","SCBAD")
|
---|
| 154 | ;
|
---|
| 155 | K ^TMP("SCMC",$J,"EXCLUDE PT")
|
---|
| 156 | D BAD(.SCBAD,.SCOLD,.SCOK)
|
---|
| 157 | S SCOK(.1)=SCX
|
---|
| 158 | ;
|
---|
| 159 | D CLRVAR
|
---|
| 160 | Q
|
---|
| 161 | ;
|
---|
| 162 | CLN ; File all patients in selected clinic.
|
---|
| 163 | ;
|
---|
| 164 | S SCOK1=$$PTCLBR^SCAPMC26($P($G(SCSRCE),U,2),.SCTEAM,"SCDTRNG")
|
---|
| 165 | S I=0 F S I=$O(^TMP($J,"SCCLPT",I)) Q:'I D
|
---|
| 166 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"SCCLPT",I)),U))=""
|
---|
| 167 | K ^TMP($J,"SCCLPT")
|
---|
| 168 | Q
|
---|
| 169 | ;
|
---|
| 170 | STOPC ; File all patients in the selected stop code
|
---|
| 171 | ;
|
---|
| 172 | S SCOK1=$$PTST^SCAPMC27($P($G(SCSRCE),U,2),"SCDTRNG",SCNUM,.SCTMP,"ERRMSG",0)
|
---|
| 173 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 174 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 175 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 176 | Q
|
---|
| 177 | ;
|
---|
| 178 | APPT ; File all patients for the selected clinic appointment range
|
---|
| 179 | S SCOK1=$$PTAP^SCAPMC28($P($G(SCSRCE),U,2),"SCDTRNG",SCNUM,.SCTMP,"SCERMSG",0)
|
---|
| 180 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 181 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 182 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 183 | Q
|
---|
| 184 | ;
|
---|
| 185 | TEAM ; File all patients for the selected team
|
---|
| 186 | S SCOK1=$$PTTM^SCAPMC2($P($G(SCSRCE),U,2),"SCDTRNG",.SCTMP,"SCERMSG")
|
---|
| 187 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 188 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 189 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 190 | Q
|
---|
| 191 | ;
|
---|
| 192 | ASGALLP(SCOK,SC) ; Assign all entries in the selected source to the selected team and position
|
---|
| 193 | ;
|
---|
| 194 | N DTMP
|
---|
| 195 | D NEWVAR
|
---|
| 196 | D CHK^SCUTBK
|
---|
| 197 | D TMP^SCUTBK
|
---|
| 198 | ;
|
---|
| 199 | D PARSE(.SC)
|
---|
| 200 | S SCSRCE=$G(SC("SOURCE"),"")
|
---|
| 201 | S SCADDFLD(.05)=$G(SC("TYPE"),0)
|
---|
| 202 | S SCADDFLD(.06)=DUZ
|
---|
| 203 | S SCADDFLD(.07)=DT
|
---|
| 204 | ;
|
---|
| 205 | S DTMP=$G(SCDTRNG("END"))
|
---|
| 206 | S SCDTRNG("END")=3990101
|
---|
| 207 | S SCOK2=$$PTTP^SCAPMC(SCPOS,"SCDTRNG","^TMP(""SCMC"",$J,""EXCLUDE PT"")","SCER2")
|
---|
| 208 | S SCDTRNG("END")=DTMP
|
---|
| 209 | ;
|
---|
| 210 | S SCSRCTYP=$P(SCSRCE,U,1)
|
---|
| 211 | D @SCSRCTYP
|
---|
| 212 | ;
|
---|
| 213 | K SCBAD,SCOLD,SCNEW
|
---|
| 214 | S SCX=$$ACPTATP^SCAPMC21("^TMP($J,""SC PATIENT LIST"")",SCPOS,"SCADDFLD",SCDTVAR,"SCERRMSG",1,"","SCNEW","SCNEW1","SCOLD","SCBAD")
|
---|
| 215 | ;
|
---|
| 216 | K ^TMP("SCMC",$J,"EXCLUDE PT")
|
---|
| 217 | D BAD2(.SCBAD,.SCOLD,.SCOK)
|
---|
| 218 | S SCOK(.1)=SCX
|
---|
| 219 | ;
|
---|
| 220 | D CLRVAR
|
---|
| 221 | Q
|
---|
| 222 | ;
|
---|
| 223 | PCLN ; File all patients in selected clinic to the new position and team
|
---|
| 224 | ;
|
---|
| 225 | S SCOK1=$$PTCLBR^SCAPMC26($P($G(SCSRCE),U,2),.SCTEAM,"SCDTRNG")
|
---|
| 226 | S I=0 F S I=$O(^TMP($J,"SCCLPT",I)) Q:'I D
|
---|
| 227 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"SCCLPT",I)),U))=""
|
---|
| 228 | ;
|
---|
| 229 | Q
|
---|
| 230 | ;
|
---|
| 231 | PSTOPC ; File all patients in with the selected stop code to the new position and team
|
---|
| 232 | ;
|
---|
| 233 | S SCOK1=$$PTST^SCAPMC27($P($G(SCSRCE),U,2),"SCDTRNG",500,.SCTMP,"SCERMSG",0)
|
---|
| 234 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 235 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 236 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 237 | Q
|
---|
| 238 | ;
|
---|
| 239 | PAPPT ;
|
---|
| 240 | S SCOK1=$$PTAP^SCAPMC28($P($G(SCSRCE),U,2),"SCDTRNG",500,.SCTMP,"SCERMSG",0)
|
---|
| 241 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 242 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 243 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 244 | Q
|
---|
| 245 | ;
|
---|
| 246 | PTEAM ;
|
---|
| 247 | S SCOK1=$$PTTM^SCAPMC2($P($G(SCSRCE),U,2),"SCDTRNG",.SCTMP,"SCERMSG")
|
---|
| 248 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 249 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 250 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 251 | Q
|
---|
| 252 | ;
|
---|
| 253 | PPOS ;
|
---|
| 254 | S SCOK1=$$PTTP^SCAPMC11($P($G(SCSRCE),U,2),"SCDTRNG",.SCTMP,"SCERMSG")
|
---|
| 255 | M ^TMP($J,"PCMM TMP")=@SCTMP
|
---|
| 256 | S I=0 F S I=$O(^TMP($J,"PCMM TMP",I)) Q:'I D
|
---|
| 257 | . S ^TMP($J,"SC PATIENT LIST",$P($G(^TMP($J,"PCMM TMP",I)),U))=""
|
---|
| 258 | Q
|
---|
| 259 | ;
|
---|
| 260 | BAD(SCBAD,SCOLD,SCOK) ;
|
---|
| 261 | N SCDFN,SCPARM,DIERR
|
---|
| 262 | S SCDFN=0
|
---|
| 263 | F S SCDFN=$O(SCBAD(SCDFN)) Q:'SCDFN D
|
---|
| 264 | . S SCPARM("PATIENT")=$P($G(^DPT(SCDFN,0)),U)_" "_$P($G(^DPT(SCDFN,.36)),U,4)
|
---|
| 265 | . D BLD^DIALOG(40442001.001,.SCPARM,"","SCOK","S")
|
---|
| 266 | ;
|
---|
| 267 | F S SCDFN=$O(SCOLD(SCDFN)) Q:'SCDFN D
|
---|
| 268 | . S SCPARM("PATIENT")=$P($G(^DPT(SCDFN,0)),U)_" "_$P($G(^DPT(SCDFN,.36)),U,4)
|
---|
| 269 | . D BLD^DIALOG(40442001.002,.SCPARM,"","SCOK","S")
|
---|
| 270 | D HDREC^SCUTBK3(.SCOK,$G(DIERR),"Patient Assignment to Teams")
|
---|
| 271 | Q
|
---|
| 272 | ;
|
---|
| 273 | BAD2(SCBAD,SCOLD,SCOK) ;
|
---|
| 274 | N SCDFN,SCPARM,DIERR
|
---|
| 275 | S SCDFN=0
|
---|
| 276 | F S SCDFN=$O(SCBAD(SCDFN)) Q:'SCDFN D
|
---|
| 277 | . S SCPARM("PATIENT")=$P($G(^DPT(SCDFN,0)),U)_" "_$P($G(^DPT(SCDFN,.36)),U,4)
|
---|
| 278 | . D BLD^DIALOG(40443001.001,.SCPARM,"","SCOK","S")
|
---|
| 279 | ;
|
---|
| 280 | F S SCDFN=$O(SCOLD(SCDFN)) Q:'SCDFN D
|
---|
| 281 | . S SCPARM("PATIENT")=$P($G(^DPT(SCDFN,0)),U)_" "_$P($G(^DPT(SCDFN,.36)),U,4)
|
---|
| 282 | . D BLD^DIALOG(40443001.002,.SCPARM,"","SCOK","S")
|
---|
| 283 | D HDREC^SCUTBK3(.SCOK,$G(DIERR),"Patient Assignment to Positions")
|
---|
| 284 | Q
|
---|