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