[796] | 1 | TMGSDAM2 ;TMG/kst/ENHANCED MAKE AN APPOINTMENT SDAPI ;1/9/09
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;1/9/09
|
---|
| 3 | ;
|
---|
| 4 | ;"NOTE: Original header:
|
---|
| 5 | ;"SDVWMKPI ;ENHANCED MAKE AN APPOINTMENT SDAPI 11/18/06
|
---|
| 6 | ;" ;VWSD*3.2;;;;;Build 8
|
---|
| 7 | ;"(Moved to this namespace for customization/alteration)
|
---|
| 8 | ;
|
---|
| 9 | ;"Called into from TMGRPC5
|
---|
| 10 | ;
|
---|
| 11 | ;"=======================================================================
|
---|
| 12 | ;" API -- Public Functions.
|
---|
| 13 | ;"=======================================================================
|
---|
| 14 | ;"EN(DFN,APPTDATE,SC,STYP,SDARRAY) -- MAKE AN APPOINTMENT
|
---|
| 15 | ;
|
---|
| 16 | ;"=======================================================================
|
---|
| 17 | ;" API -- Public Functions.
|
---|
| 18 | ;"=======================================================================
|
---|
| 19 | ;"CHKAVAIL(SAVE,APPTDATE)
|
---|
| 20 | ;
|
---|
| 21 | ;"=======================================================================
|
---|
| 22 | ;"Dependancies
|
---|
| 23 | ;"=======================================================================
|
---|
| 24 | ;
|
---|
| 25 | ;"=======================================================================
|
---|
| 26 | ;
|
---|
| 27 | EN(DFN,APPTDATE,SC,STYP,SDARRAY) ;
|
---|
| 28 | ;"Purpose: MAKE AN APPOINTMENT
|
---|
| 29 | ;"INPUT: DFN -- PATIENT IEN (REQUIRED)
|
---|
| 30 | ;" APPTDATE -- APPOINTMENT DATE (REQUIRED) -- FM format
|
---|
| 31 | ;" SC -- IEN of CLINIC FOR APPOINTMENT (REQUIRED) (file 44)
|
---|
| 32 | ;" STYP (REQUIRED)
|
---|
| 33 | ;" =1 C&P
|
---|
| 34 | ;" =2 10-10
|
---|
| 35 | ;" =3 SCHEDULED APPOINTMENT
|
---|
| 36 | ;" =4 UNSCHEDULED VISIT
|
---|
| 37 | ;" SDARRAY -- PASS BY REFERENCE. Format:
|
---|
| 38 | ;" SDARRAY("DATE NOW") (REQ AT TIME REQUEST MADE) (OPTIONAL. Defaults to NOW is not provide)
|
---|
| 39 | ;" SDARRAY("LAB DATE TIME ASSOCIATED") = "" OR DATE/TIME (OPTIONAL)
|
---|
| 40 | ;" SDARRAY("X-RAY DATE TIME ASSOCIATED") = "" OR DATE/TIME (OPTIONAL)
|
---|
| 41 | ;" SDARRAY("EKG DATE TIME ASSOCIATED") = "" OR DATE/TIME (OPTIONAL)
|
---|
| 42 | ;" SDARRAY("APPT TYPE") = 9 (REQUIRED)
|
---|
| 43 | ;" 9 for REGULAR APPOINTMENT TYPE (ptr 409.1)
|
---|
| 44 | ;" SDARRAY("APPT SUB-CATEGORY") = "0" (NOT USED)
|
---|
| 45 | ;" "0" for none (ptr 35.2)
|
---|
| 46 | ;" SDARRAY("SCHED_REQ_TYPE")='O' (REQUIRED)
|
---|
| 47 | ;" 'O' FOR OTHER THAN 'NEXT AVA.' APPT.; (set of codes)
|
---|
| 48 | ;" --I think this is for File 2, field 1900, subfield 25
|
---|
| 49 | ;" N:'NEXT AVAILABLE' APPT.
|
---|
| 50 | ;" C:OTHER THAN 'NEXT AVA.' (CLINICIAN REQ.)
|
---|
| 51 | ;" P:OTHER THAN 'NEXT AVA.' (PATIENT REQ.)
|
---|
| 52 | ;" W:WALKIN APPT.
|
---|
| 53 | ;" M:MULTIPLE APPT. BOOKING
|
---|
| 54 | ;" A:AUTO REBOOK
|
---|
| 55 | ;" O:OTHER THAN 'NEXT AVA.' APPT.
|
---|
| 56 | ;" SDARRAY("NEXT APPT IND")=0 (REQUIRED) (0 FOR NO)
|
---|
| 57 | ;" SDARRAY("DESIRED DATE TIME OF APPT")=APPTDATE (OPTIONAL)
|
---|
| 58 | ;" SDARRAY("FOLLOWUP VISIT INDICATOR")= (REQUIRED)
|
---|
| 59 | ;" "0" FOR NO
|
---|
| 60 | ;" "1" FOR YES
|
---|
| 61 | ;" SDARRAY("X RAY DATA FREE TEXT")= (OPTIONAL)
|
---|
| 62 | ;" SDARRAY("OTHER DATA FREE TEXT")= (OPTIONAL)
|
---|
| 63 | ;" SDARRAY("OTHER WARD LOCATION")= (OPTIONAL)
|
---|
| 64 | ;" SDARRAY("DATA ENTRY CLERK")= (DEFAULTS TO DUZ IF NOT PROVIDED)
|
---|
| 65 | ;" DUZ OR NEW PERSON (FILE 200) PTR
|
---|
| 66 | ;" SDARRAY("PRIOR XRAY RESULTS TO CLINIC")= (OPTIONAL)
|
---|
| 67 | ;" "Y" OR ""
|
---|
| 68 | ;" SDARRAY("CHECKED-IN DATE")= (OPTIONAL)
|
---|
| 69 | ;" "" OR DATE APPOINTMENT MADE
|
---|
| 70 | ;" FOR AN UNSCHEDULED VISIT
|
---|
| 71 | ;"
|
---|
| 72 | ;"XQSDVWSI ; EXIST AS NON-INTERACTIVE SILENT NODE W/O WRITE FOR XQOR ROUTINES
|
---|
| 73 | ;"SDVWNVAI ; EXIST AS NON-VA RELATED PFSS EVENT MODE
|
---|
| 74 | ;" = "D" DISABLING THE NEED FOR ICN
|
---|
| 75 | ;" = "O" AS OTHER NON-VA ICN SYSTEM ( FUTURE)
|
---|
| 76 | ;"
|
---|
| 77 | ;"RESULTS: 1 = OK,APPOINTMENT SUCCESSFULLY MADE
|
---|
| 78 | ;" NEG NUMBER= ERROR
|
---|
| 79 | ;" -101 INVALID PATIENT DFN
|
---|
| 80 | ;" -102 INVALID HOSPITAL LOCATION IEN (SC)
|
---|
| 81 | ;" -103 APPTDATE < DATE NOW
|
---|
| 82 | ;" -104 INVALID STYP or MODE
|
---|
| 83 | ;" // (removed) -105 IF $GET(SDARRAY("DATE NOW"))=""
|
---|
| 84 | ;" -106 IF $GET(SDARRAY("APPT TYPE"))=""
|
---|
| 85 | ;" -107 IF $GET(SDARRAY("SCHED_REQ_TYPE"))=""
|
---|
| 86 | ;" -108 IF $GET(SDARRAY("NEXT APPT IND"))=""
|
---|
| 87 | ;" // (removed) -109 IF $GET(SDARRAY("DATA ENTRY CLERK"))=""
|
---|
| 88 | ;" -110 IF $GET(SDARRAY("FOLLOWUP VISIT INDICATOR")=""
|
---|
| 89 | ;" -111 NO SCHEDULED SLOT WHERE SCHED APPT IS WANTED
|
---|
| 90 | ;
|
---|
| 91 | N TIMEDD
|
---|
| 92 | N SDCL,SDT,SDDA,SDMODE,SDORG
|
---|
| 93 | N CNT,SDY,DAYW,NDOW,TMG1DATE,FOUND,VAL,MULTM,START,INCRM
|
---|
| 94 | N APTTIME,OV2,VAL2
|
---|
| 95 | N SDSL,SL,SDSDATE,STARTDAY,SDHDL,SDEMP,SDMKHDL,SDMADE,SDLOCK,SDAPTYP,SDCOL
|
---|
| 96 | N TMGRESULT SET TMGRESULT=1 ;"Default to success
|
---|
| 97 | N TMGMSG
|
---|
| 98 | ;
|
---|
| 99 | N PURVISIT,SAVENOW,OVERBOOK,ELIGIB,OVERBOKM
|
---|
| 100 | ;
|
---|
| 101 | ;"VALIDATE DFN, SC AS VALID PATIENTS AND CLINIC
|
---|
| 102 | IF '$D(^DPT(DFN,0)) SET TMGRESULT="-101^INVALID PATIENT DFN" GOTO ENDONE
|
---|
| 103 | IF '$D(^SC(SC,0)) SET TMGRESULT="-102^INVALID HOSPITAL LOCATION IEN" GOTO ENDONE
|
---|
| 104 | ;
|
---|
| 105 | ;"CHECK DATE>=NOW
|
---|
| 106 | IF $GET(SDARRAY("DATE NOW"))="" SET SDARRAY("DATE NOW")="NOW"
|
---|
| 107 | . ;"SET TMGRESULT=-105 GOTO ENDONE
|
---|
| 108 | SET SDARRAY("DATE NOW")=$$E2IDATE(SDARRAY("DATE NOW"))
|
---|
| 109 | SET (SAVENOW,X)=SDARRAY("DATE NOW")
|
---|
| 110 | IF APPTDATE<SAVENOW SET TMGRESULT="-103^APPTDATE < DATE NOW" GOTO ENDONE
|
---|
| 111 | IF STYP=4 SET APPTDATE=X ;"If unscheduled visit, force date to NOW
|
---|
| 112 | ;"FORMAT APPTDATE BELOW SHOULD BE FOUND IN NODE BELOW
|
---|
| 113 | IF $GET(^SC(SC,"S",APPTDATE,0))=APPTDATE DO
|
---|
| 114 | . SET CNT=0
|
---|
| 115 | . FOR SET CNT=$ORDER(^SC(SC,"S",APPTDATE,1,CNT)) Q:CNT="" DO
|
---|
| 116 | . . SET SDY=CNT+1
|
---|
| 117 | ELSE DO
|
---|
| 118 | . SET SDY=1
|
---|
| 119 | IF (STYP<1)!(STYP>4) SET TMGRESULT="-104^INVALID STYP or MODE" GOTO ENDONE
|
---|
| 120 | ;
|
---|
| 121 | IF $GET(SDARRAY("DATA ENTRY CLERK"))="" DO
|
---|
| 122 | . SET SDARRAY("DATA ENTRY CLERK")=DUZ
|
---|
| 123 | . ;"SET TMGRESULT=-109 GOTO ENDONE
|
---|
| 124 | ;
|
---|
| 125 | ;"CHECK OTHER REQUIRED VARIABLES
|
---|
| 126 | IF $GET(SDARRAY("APPT TYPE"))="" DO GOTO ENDONE
|
---|
| 127 | . SET TMGRESULT="-106^APPT TYPE NOT SPECIFIED"
|
---|
| 128 | IF $GET(SDARRAY("SCHED_REQ_TYPE"))="" DO GOTO ENDONE
|
---|
| 129 | . SET TMGRESULT="-107^SCHED REQ TYPE NOT SPECIFIED"
|
---|
| 130 | IF $GET(SDARRAY("NEXT APPT IND"))="" DO GOTO ENDONE
|
---|
| 131 | . SET TMGRESULT="-108^NEXT APPT IND NOT SPECIFIED"
|
---|
| 132 | IF $GET(SDARRAY("FOLLOWUP VISIT INDICATOR"))="" DO GOTO ENDONE
|
---|
| 133 | . SET TMGRESULT="-110^FOLLOWUP VISIT INDICATOR NOT SPECIFIED"
|
---|
| 134 | ;
|
---|
| 135 | ;"ENSURE EXISTANCE OF VARIABLES / CONVERT DATES IF NEEDED
|
---|
| 136 | SET SDARRAY("CHECKED-IN DATE")=$$E2IDATE($GET(SDARRAY("CHECKED-IN DATE")))
|
---|
| 137 | SET SDARRAY("LAB DATE TIME ASSOCIATED")=$$E2IDATE($GET(SDARRAY("LAB DATE TIME ASSOCIATED")))
|
---|
| 138 | SET SDARRAY("X-RAY DATE TIME ASSOCIATED")=$$E2IDATE($GET(SDARRAY("X-RAY DATE TIME ASSOCIATED")))
|
---|
| 139 | SET SDARRAY("EKG DATE TIME ASSOCIATED")=$$E2IDATE($GET(SDARRAY("EKG DATE TIME ASSOCIATED")))
|
---|
| 140 | SET SDARRAY("APPT TYPE")=$GET(SDARRAY("APPT TYPE"))
|
---|
| 141 | SET SDARRAY("SCHED_REQ_TYPE")=$GET(SDARRAY("SCHED_REQ_TYPE"))
|
---|
| 142 | SET SDARRAY("NEXT APPT IND")=$GET(SDARRAY("NEXT APPT IND"))
|
---|
| 143 | SET SDARRAY("DESIRED DATE TIME OF APPT")=$$E2IDATE($GET(SDARRAY("DESIRED DATE TIME OF APPT")))
|
---|
| 144 | SET SDARRAY("FOLLOWUP VISIT INDICATOR")=$GET(SDARRAY("FOLLOWUP VISIT INDICATOR"))
|
---|
| 145 | SET SDARRAY("FOLLOWUP VISIT INDICATOR")=$GET(SDARRAY("FOLLOWUP VISIT INDICATOR"))
|
---|
| 146 | ;
|
---|
| 147 | SET OV2=0
|
---|
| 148 | IF STYP'=4 DO ;"i.e. 1 (C&P), 2 (10-10), or 3 (SCHEDULED APPOINTMENT)
|
---|
| 149 | . ;"BEFORE MAKE APPT
|
---|
| 150 | . ;"THIS MAY ALSO DO CHECKIN AN APPOINTMENT
|
---|
| 151 | . ;"ALSO NEED TO CHECK AGAINST SCHEDULE FOR THAT DAY
|
---|
| 152 | . ;"DETERMINE LAST RELATIVE ENTRY # FOR
|
---|
| 153 | . ;"THIS APPOINTMENT DATE (IF ANY) ON THIS CLINIC
|
---|
| 154 | . ;
|
---|
| 155 | . ;"TO SEE IF OVERBOOK MAX ACHIEVED OR APPOINTMENT NOT AVAILABLE
|
---|
| 156 | . ;"FOR THAT TIME AND DATE.
|
---|
| 157 | . ;"GET DATE
|
---|
| 158 | . SET APTTIME=$P(APPTDATE,".",2) ;"get just time
|
---|
| 159 | . FOR Q:$L(APTTIME)>3 SET APTTIME=APTTIME_"0" ;"PAD OUT TIME TO 4 DIGITS
|
---|
| 160 | . ;"CHECK WHAT MULTIPLE OF DAY OF WEEK FOR APPOINTMENT START
|
---|
| 161 | . ;"GET DAY OF WEEK
|
---|
| 162 | . SET X=APPTDATE DO DW^%DTC IF X="" QUIT ;"Must be invalid date
|
---|
| 163 | . SET DAYW=$E(X,1,2) ;"e.g. MO for MONDAY
|
---|
| 164 | . SET DOW=$$DOW^XLFDT(APPTDATE,1) ;"DOW=Day of Week (0-6)
|
---|
| 165 | . ;"FIND DAY OF WEEK ENTRY IN "ST" MULT , THEN FIND STARTING TIME AND
|
---|
| 166 | . ;"TIME MATCH IN SAME "T" MULT.
|
---|
| 167 | . SET TMG1DATE=APPTDATE\1
|
---|
| 168 | . SET FOUND=0
|
---|
| 169 | . FOR DO SET TMG1DATE=$ORDER(^SC(SC,"ST",TMG1DATE),-1) QUIT:(+TMG1DATE'>0)!(FOUND=1)
|
---|
| 170 | . . SET VAL=$GET(^SC(SC,"ST",TMG1DATE,1)) ;" e.g. MO 05 | [1 1|0 1 1 1|1 1 1 1|1 1] "
|
---|
| 171 | . . IF ($E(VAL,1,2)'=DAYW) QUIT ;"Skip if null, or not matching day of week
|
---|
| 172 | . . IF $$CHKAVAIL(TMG1DATE,APTTIME)=0 QUIT
|
---|
| 173 | . . SET FOUND=1
|
---|
| 174 | . . SET INCR=0
|
---|
| 175 | . . ;"Now find T node that applies to APPTDATE
|
---|
| 176 | . . NEW TEMPDATE SET TEMPDATE=TMG1DATE
|
---|
| 177 | . . FOR DO QUIT:(OV2=1) SET TEMPDATE=$ORDER(^SC(SC,"T",TEMPDATE),-1) QUIT:(+TEMPDATE'>0)
|
---|
| 178 | . . . IF $DATA(^SC(SC,"T",TEMPDATE))=0 QUIT
|
---|
| 179 | . . . IF $$DOW^XLFDT(TEMPDATE,1)'=DOW QUIT
|
---|
| 180 | . . . FOR SET INCR=$ORDER(^SC(SC,"T",TEMPDATE,2,INCR)) QUIT:(INCR="")!(OV2=1) DO
|
---|
| 181 | . . . . SET VAL2=$GET(^SC(SC,"T",TEMPDATE,2,INCR,0)) ;"e.g. 0830^1
|
---|
| 182 | . . . . SET VAL2=$PIECE(VAL2,"^",1)
|
---|
| 183 | . . . . IF VAL2=APTTIME SET OV2=1
|
---|
| 184 | . IF OV2=1 DO
|
---|
| 185 | . . ;"NOW CHECK IN "S" ARRAY TO SEE IF APPT ALREADY MADE
|
---|
| 186 | . . IF SDY'=1 DO ;"Should this be SDY>1 DO ??
|
---|
| 187 | . . . ;"CHECK IF OVERBOOKS ALLOWED
|
---|
| 188 | . . . IF $PIECE($GET(^SC(SC,"SL")),"^",7)=0 SET OV2=0
|
---|
| 189 | ELSE DO ;"i.e. STYP=4 UNSCHEDULED VISIT
|
---|
| 190 | . ;"ALSO
|
---|
| 191 | . SET OV2=1
|
---|
| 192 | ;
|
---|
| 193 | IF OV2'=1 DO GOTO ENDONE
|
---|
| 194 | . SET TMGRESULT="-111^NO SCHEDULED SLOT WHERE SCHED APPT IS WANTED"
|
---|
| 195 | ;
|
---|
| 196 | SET SDCL=SC
|
---|
| 197 | SET SDT=APPTDATE
|
---|
| 198 | SET SDDA=SDY
|
---|
| 199 | SET SDMODE=2
|
---|
| 200 | SET SDORG=1
|
---|
| 201 | ;"ADDITIONAL
|
---|
| 202 | SET SL=$P(^SC(SC,"SL"),"^",1)
|
---|
| 203 | SET SDSDATE=APPTDATE
|
---|
| 204 | ;"SET STARTDAY
|
---|
| 205 | ;
|
---|
| 206 | ;"START PREPARING DATA FROM SDARRAY INTO NODES
|
---|
| 207 | ;
|
---|
| 208 | ;"FIRST INITIAL TOP NODE FOR APPOINTMENT SUB-FILE
|
---|
| 209 | SET ^DPT(DFN,"S",0)="^2.98P^^"
|
---|
| 210 | LOCK +^DPT(DFN,"S",0):5
|
---|
| 211 | ;"NEXT NODE 0
|
---|
| 212 | SET PURVISIT=STYP
|
---|
| 213 | SET TIMEDD=$P(APPTDATE,".",1)
|
---|
| 214 | NEW TEMPS
|
---|
| 215 | SET TEMPS=SC_"^^"_SDARRAY("LAB DATE TIME ASSOCIATED")_"^"
|
---|
| 216 | SET TEMPS=TEMPS_SDARRAY("X-RAY DATE TIME ASSOCIATED")_"^"
|
---|
| 217 | SET TEMPS=TEMPS_SDARRAY("EKG DATE TIME ASSOCIATED")
|
---|
| 218 | SET ^DPT(DFN,"S",APPTDATE,0)=TEMPS
|
---|
| 219 | SET TEMPS=^DPT(DFN,"S",APPTDATE,0)_"^^"_PURVISIT
|
---|
| 220 | SET TEMPS=TEMPS_"^^^^^^^^^"_SDARRAY("APPT TYPE")_"^^^"_TIMEDD_"^^^^^"_0
|
---|
| 221 | SET ^DPT(DFN,"S",APPTDATE,0)=TEMPS
|
---|
| 222 | SET TEMPS=^DPT(DFN,"S",APPTDATE,0)_"^"_SDARRAY("SCHED_REQ_TYPE")_"^"
|
---|
| 223 | SET TEMPS=TEMPS_SDARRAY("NEXT APPT IND")
|
---|
| 224 | SET ^DPT(DFN,"S",APPTDATE,0)=TEMPS
|
---|
| 225 | ;"NEXT NODE 1
|
---|
| 226 | IF SDARRAY("DESIRED DATE TIME OF APPT")'="" DO
|
---|
| 227 | . SET ^DPT(DFN,"S",APPTDATE,1)=SDARRAY("DESIRED DATE TIME OF APPT")_"^"_SDARRAY("FOLLOWUP VISIT INDICATOR")
|
---|
| 228 | ELSE DO
|
---|
| 229 | . SET ^DPT(DFN,"S",APPTDATE,1)=TIMEDD_"^"_SDARRAY("FOLLOWUP VISIT INDICATOR")
|
---|
| 230 | LOCK -^DPT(DFN,"S",0)
|
---|
| 231 | ;"NOW FILE 44 MULTIPLE IN APPOINTMENT SUB-FILE
|
---|
| 232 | ;"FIRST TOP NODE IN CLINIC FOR DATE
|
---|
| 233 | SET ^SC(SC,"S",0)="^44.001DA^^"
|
---|
| 234 | LOCK +^SC(SC,"S",0):5
|
---|
| 235 | ;"NEXT DATE MULTIPLE
|
---|
| 236 | SET ^SC(SC,"S",APPTDATE,0)=APPTDATE
|
---|
| 237 | ;"NEXT TOP NODE UNDER DATE FOR PATIENT
|
---|
| 238 | SET ^SC(SC,"S",APPTDATE,1,0)="^44.003PA^^"
|
---|
| 239 | ;"NEXT MULTIPLE ENTRY PER PATIENT
|
---|
| 240 | SET ^SC(SC,"S",APPTDATE,1,SDY,0)=DFN_"^"_SL_"^"_$GET(SDARRAY("X RAY DATA FREE TEXT"))_"^"_$GET(SDARRAY("OTHER DATA FREE TEXT"))_"^"_$GET(SDARRAY("OTHER WARD LOCATION"))
|
---|
| 241 | SET ^SC(SC,"S",APPTDATE,1,SDY,0)=^SC(SC,"S",APPTDATE,1,SDY,0)_"^"_$GET(SDARRAY("DATA ENTRY CLERK"))_"^"_SAVENOW
|
---|
| 242 | IF STYP=4 SET ^SC(SC,"S",APPTDATE,1,SDY,0)=^SC(SC,"S",APPTDATE,1,SDY,0)_"^"_$GET(SDARRAY("PRIOR X-RAY RESULTS TO CLINIC"))
|
---|
| 243 | ;
|
---|
| 244 | ;"Change PATTERN ("ST") nodes to reflext currently available slots.
|
---|
| 245 | IF $$ENSUR1ST^TMGSDAU(SC,APPTDATE,.TMGMSG)'=1 DO ;"Create ST node, if doesn't exist
|
---|
| 246 | . SET TMGRESULT="-200^"_$GET(TMGMSG(1)) KILL TMGMSG
|
---|
| 247 | IF $$DEC1SLOT^TMGSDAU(SC,APPTDATE,.TMGMSG)=-1 DO ;"Don't quit, appt was made-->so trigger event
|
---|
| 248 | . SET TMGRESULT="-200^Error updating PATTERN (ST nodes). "_$GET(TMGMSG(1))
|
---|
| 249 | . KILL TMGMSG
|
---|
| 250 | ;
|
---|
| 251 | ;"DETERMINE ANY OVERBOOK AND ELIGIBILITY HERE
|
---|
| 252 | SET OVERBOKM=$P(^SC(SC,"SL"),"^",7)
|
---|
| 253 | IF SDY>OVERBOKM DO
|
---|
| 254 | . SET OVERBOOK="O"
|
---|
| 255 | . SET ^SC(SC,"S",APPTDATE,1,SDY,"OB")="0"
|
---|
| 256 | ELSE DO
|
---|
| 257 | . SET OVERBOOK=""
|
---|
| 258 | ;"ELIGIBILITY NEXT
|
---|
| 259 | DO ELIG^VADPT SET ELIGIB=$P(VAEL(1),"^",1)
|
---|
| 260 | IF STYP=4 SET ^SC(SC,"S",APPTDATE,1,SDY,0)=^SC(SC,"S",APPTDATE,1,SDY,0)_"^"_"^"_"^"_ELIGIB
|
---|
| 261 | ;"NOW UNSCHEDULED VISITS EXTRA DATA
|
---|
| 262 | ;"REALLY LATER MAY NEED ELIGIBILITY FOR NON-VA SYSTEMS PATIENTS WITH
|
---|
| 263 | ;"SCHEDULED APPTS AND UNSCHEDULED VISITS ( HUMANITARIAN, REIMBURSABLE INSURANCE, ETC)
|
---|
| 264 | IF STYP=4 DO
|
---|
| 265 | .SET ^SC(SC,"S",APPTDATE,1,SDY,"C")=SD_"^"_$GET(SDARRAY("DATA ENTRY CLERK"))_"^^^"_SD
|
---|
| 266 | LOCK -^SC(SC,"S",0)
|
---|
| 267 | ;"EVENT GENERATION ALSO FOR PFSS SYSTEM WHICH CAN BE USED WITH AN EXTERNAL SCHEDULING SYSTEM
|
---|
| 268 | ;"FOR MAKE APPT EVENTS AS WELL AS CHECKIN,CHECKOUT,CANCEL,DELETE, AND OUTPATIENT ENCOUNTER DATA
|
---|
| 269 | DO MAKE^SDAMEVT(DFN,SDT,SDCL,SDDA,SDMODE)
|
---|
| 270 | ENDONE ;
|
---|
| 271 | QUIT TMGRESULT
|
---|
| 272 | ;
|
---|
| 273 | ;
|
---|
| 274 | CHKAVAIL(TMG1DATE,APTTIME) ;
|
---|
| 275 | ;"Purpose: CHECK IF SLOT ALLOWED FOR THAT DAY/TIME SLOT
|
---|
| 276 | ;"Input TMG1DATE -- DATE in FM format to check on.
|
---|
| 277 | ;" APTTIME -- Time of appt, in military format, e.g. '1345'
|
---|
| 278 | ;"Globally Scoped Vars used: SC - IEN in 44
|
---|
| 279 | ;"Results: 0 -- not available
|
---|
| 280 | ;" 1 -- available
|
---|
| 281 | ;
|
---|
| 282 | N SL,VAL,DATE,STARTTIM,SL,POS,COUNT
|
---|
| 283 | NEW CODES SET CODES="{}&%?#@!$* XXWVUTSRQPONMLKJIHGFEDCBA0123456789jklmnopqrstuvwxyz"
|
---|
| 284 | ;
|
---|
| 285 | SET SL=$P($GET(^SC(SC,"SL")),"^",1) ;"LENGTH OF APPT
|
---|
| 286 | SET VAL=$GET(^SC(SC,"ST",TMG1DATE,1)) ;" e.g. 'MO 05 | [1 1|0 1 1 1|1 1 1 1|1 1] '
|
---|
| 287 | ;"START AT 9TH PIECE TO SEE IF NON-BLANK
|
---|
| 288 | ;"FORMAT DATE+STARTTIME
|
---|
| 289 | SET STARTTIM=$P($GET(^SC(SC,"SL")),"^",3) ;"DISPLAY START TIME
|
---|
| 290 | IF $L(STARTTIM)=1 SET STARTTIM="0"_STARTTIM
|
---|
| 291 | FOR Q:$L(STARTTIM)>3 SET STARTTIM=STARTTIM_"0" ;"PAD OUT TIME TO 4 DIGITS
|
---|
| 292 | FOR Q:$L(APTTIME)>3 SET APTTIME=APTTIME_"0" ;"PAD OUT TIME TO 4 DIGITS
|
---|
| 293 | ;"SET DIFF=APTTIME-STARTTIM
|
---|
| 294 | SET DIFF=$$MILDELTA^TMGSDAU1(STARTTIM,APTTIME)
|
---|
| 295 | ;"SET SL=$P(^SC(SC,"SL"),"^",1)
|
---|
| 296 | SET COUNT=DIFF/SL
|
---|
| 297 | SET POS=9+(2*COUNT)
|
---|
| 298 | ;"IF $E(VAL,POS,POS)'=" " Q 1
|
---|
| 299 | NEW CH SET CH=$E(VAL,POS,POS)
|
---|
| 300 | NEW NUMAVAIL SET NUMAVAIL=$FIND(CODES,CH)-$FIND(CODES,"0")
|
---|
| 301 | IF NUMAVAIL>0 QUIT 1
|
---|
| 302 | QUIT 0
|
---|
| 303 | ;
|
---|
| 304 | E2IDATE(TMGDATE)
|
---|
| 305 | ;"Purpose: To return a FM-format Date from TMGDATE, converting if needed.
|
---|
| 306 | ;"Input: TMGDATE: A date in external format, or FM-Date format
|
---|
| 307 | ;" Note: if date is invalid, then "" is returned.
|
---|
| 308 | NEW TMGRESULT SET TMGRESULT=$GET(TMGDATE)
|
---|
| 309 | IF (TMGRESULT'=""),(+TMGRESULT'=TMGRESULT) DO
|
---|
| 310 | . NEW MSG
|
---|
| 311 | . DO DT^DILF("T",TMGDATE,.MSG)
|
---|
| 312 | . SET TMGRESULT=MSG
|
---|
| 313 | QUIT TMGRESULT
|
---|
| 314 | ; |
---|