[796] | 1 | TMGRPC5 ;TMG/kst/RPC Functions for Scheduling ;01/12/09
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;01/12/09
|
---|
| 3 | ;
|
---|
| 4 | ;"TMG RPC FUNCTIONS for working with Scheduling GUI application
|
---|
| 5 | ;
|
---|
| 6 | ;"Kevin Toppenberg MD
|
---|
| 7 | ;"GNU General Public License (GPL) applies
|
---|
| 8 | ;"01/12/09
|
---|
| 9 | ;"=======================================================================
|
---|
| 10 | ;" RPC -- Public Functions.
|
---|
| 11 | ;"=======================================================================
|
---|
| 12 | ;"MAKEAPPT(RESULT,PATIENT,APPT,CLINIC,MODE,INFO) -- MAKE AN APPOINTMENT
|
---|
| 13 | ;"APPTLIST(RESULT,STRTDATE,ENDDATE,FILTER,TMGMSG) --return a listing of appts
|
---|
| 14 | ;"GETAVAIL(RESULT,CLINIC,STRTDATE,ENDDATE) -- Return array with appt slot info
|
---|
| 15 | ;"SETAVAIL(RESULT,CLINIC,PATTERN,FLAGS) -- API to set availability for clinic
|
---|
| 16 | ;"CANCAPPT(RESULT,PATIENT,APPT,CLINIC,MODE,INFO)--CANCEL AN APPOINTMENT
|
---|
| 17 | ;"=======================================================================
|
---|
| 18 | ;"Dependencies:
|
---|
| 19 | ;" TMGSDAM2,TMGSDAG,TMGSDAVG,TMGSDAVS,TMGSDAU2
|
---|
| 20 | ;"=======================================================================
|
---|
| 21 | ;
|
---|
| 22 | MAKEAPPT(RESULT,PATIENT,APPT,CLINIC,MODE,INFO) ;
|
---|
| 23 | ;"Purpose: MAKE AN APPOINTMENT
|
---|
| 24 | ;"INPUT: RESULTS -- PASS BY REFERENCE, an OUT PARAMETER (See values below)
|
---|
| 25 | ;" PATIENT -- Patient Name (must be unique) or IEN
|
---|
| 26 | ;" APPT -- Desired Appointment Date & Time -- External, or FM format
|
---|
| 27 | ;" CLINIC -- Name, or IEN, of Clinic for appt (file 44)
|
---|
| 28 | ;" MODE -- Mode. See STYPE in EN^TMGSDAM2() below for reference
|
---|
| 29 | ;" INFO -- PASS BY REFERENCE. See SDARRAY in EN^TMGSDAM2() below for reference
|
---|
| 30 | ;"Result: None
|
---|
| 31 | ;"Output: RESULTS variable filled as follows
|
---|
| 32 | ;" 1 = OK,APPOINTMENT SUCCESSFULLY MADE
|
---|
| 33 | ;" NEG NUMBER= ErrorNum^ErrorMessage. See also EN^TMGSDAM2() for values
|
---|
| 34 | ;
|
---|
| 35 | new UseStored set UseStored=0 ;"default
|
---|
| 36 | ;"set UseStored=1
|
---|
| 37 | if UseStored=0 do
|
---|
| 38 | . kill ^TMG("TMP","RPC","MAKEAPPT")
|
---|
| 39 | . merge ^TMG("TMP","RPC","MAKEAPPT","PATIENT")=PATIENT
|
---|
| 40 | . merge ^TMG("TMP","RPC","MAKEAPPT","APPT")=APPT
|
---|
| 41 | . merge ^TMG("TMP","RPC","MAKEAPPT","CLINIC")=CLINIC
|
---|
| 42 | . merge ^TMG("TMP","RPC","MAKEAPPT","MODE")=MODE
|
---|
| 43 | . merge ^TMG("TMP","RPC","MAKEAPPT","INFO")=INFO
|
---|
| 44 | else if UseStored=1 do
|
---|
| 45 | . merge PATIENT=^TMG("TMP","RPC","MAKEAPPT","PATIENT")
|
---|
| 46 | . merge APPT=^TMG("TMP","RPC","MAKEAPPT","APPT")
|
---|
| 47 | . merge CLINIC=^TMG("TMP","RPC","MAKEAPPT","CLINIC")
|
---|
| 48 | . merge MODE=^TMG("TMP","RPC","MAKEAPPT","MODE")
|
---|
| 49 | . merge INFO=^TMG("TMP","RPC","MAKEAPPT","INFO")
|
---|
| 50 | ;
|
---|
| 51 | KILL RESULT
|
---|
| 52 | NEW DFN,SC,APPTDATE
|
---|
| 53 | SET RESULT(0)=1 ;"Default to success.
|
---|
| 54 | SET DFN=$$GETDFN^TMGSDAU2(.PATIENT)
|
---|
| 55 | IF DFN<1 DO GOTO ENRDONE
|
---|
| 56 | . SET RESULT(0)="-1^Invalid Patient: "_$GET(PATIENT)
|
---|
| 57 | SET SC=$$GETCLIEN^TMGSDAU2(.CLINIC)
|
---|
| 58 | IF SC<1 DO GOTO ENRDONE
|
---|
| 59 | . SET RESULT(0)="-1^Can't find clinic: "_$GET(CLINIC)
|
---|
| 60 | SET APPTDATE=$$GETDATE^TMGSDAU2(.APPT)
|
---|
| 61 | IF APPTDATE<1 DO GOTO ENRDONE
|
---|
| 62 | . SET RESULT(0)="-1^Invalid appt Date: "_$GET(APPT)
|
---|
| 63 | ;
|
---|
| 64 | SET RESULT(0)=$$EN^TMGSDAM2(DFN,APPTDATE,SC,MODE,.INFO)
|
---|
| 65 | ;
|
---|
| 66 | ENRDONE ;
|
---|
| 67 | QUIT
|
---|
| 68 | ;
|
---|
| 69 | ;
|
---|
| 70 | APPTLIST(RESULT,STRTDATE,ENDDATE,FILTER)
|
---|
| 71 | ;"Purpose: To return a listing of appts, based on dates and filters). Provide a wrapper to $$SDAPI^SDAMA301
|
---|
| 72 | ;" that accepts data in external formats, and returns custom results in array.
|
---|
| 73 | ;"Input:RESULTS: PASS BY REFERENCE. An OUT PARAMATER. (See format below)
|
---|
| 74 | ;" STRTDATE -- Starting Date (in FMDate format, OR External format, e.g. Jan 1, 2005) (Time ignored)
|
---|
| 75 | ;" If value="I" or "" (i.e. 'indefinite'), then all dates up to End Date on returned
|
---|
| 76 | ;" ENDDATE -- OPTIONAL. Ending date (in FMDate, OR External format) (Time ignored)
|
---|
| 77 | ;" If not provided, then only dates for Starting date returned
|
---|
| 78 | ;" If value="I" (i.e. 'indefinite'), then all dates from Start Date on returned
|
---|
| 79 | ;" FILTER -- PASS BY REFERENCE. OPTIONAL. Format below. Any or all of the filters can be applied at once.
|
---|
| 80 | ;" See APPTLIST^TMGSDAG for reference
|
---|
| 81 | ;"Results: None
|
---|
| 82 | ;"Output: RESULT is filled with results. Format below:
|
---|
| 83 | ;" RESULT(0)=# of found matching appts, or 0 if none, or -1 if error.
|
---|
| 84 | ;" RESULT(Count)=-1^ErrCode^Message <-- (if any)
|
---|
| 85 | ;" RESULT(Count)=-1^ErrCode^Message
|
---|
| 86 | ;" RESULT(Count)=-1^ErrCode^Message
|
---|
| 87 | ;" RESULT(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 88 | ;" RESULT(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 89 | ;" RESULT(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 90 | ;" NOTE: If there are no appts for time period, then one entry will be
|
---|
| 91 | ;" returned as follows. This value can be used as a place holder
|
---|
| 92 | ;" to show that a search has taken place
|
---|
| 93 | ;" RESULT(Count)="0;<NONE>^FMFormatApptDateTime"
|
---|
| 94 | ;
|
---|
| 95 | if 1=0 do
|
---|
| 96 | . kill ^TMG("TMP","RPC","APPTLIST")
|
---|
| 97 | . merge ^TMG("TMP","RPC","APPTLIST","FILTER")=FILTER
|
---|
| 98 | . merge ^TMG("TMP","RPC","APPTLIST","STRTDATE")=STRTDATE
|
---|
| 99 | . merge ^TMG("TMP","RPC","APPTLIST","ENDDATE")=ENDDATE
|
---|
| 100 | else if 0=1 do
|
---|
| 101 | . merge FILTER=^TMG("TMP","RPC","APPTLIST","FILTER")
|
---|
| 102 | . merge STRTDATE=^TMG("TMP","RPC","APPTLIST","STRTDATE")
|
---|
| 103 | . merge ENDDATE=^TMG("TMP","RPC","APPTLIST","ENDDATE")
|
---|
| 104 | ;
|
---|
| 105 | NEW TMGMSG,TMGRESULT
|
---|
| 106 | NEW COUNT SET COUNT=0
|
---|
| 107 | SET RESULT(COUNT)=$$APPTLIST^TMGSDAG(.STRTDATE,.ENDDATE,.FILTER,.TMGRESULT,.TMGMSG)
|
---|
| 108 | NEW IDX SET IDX=""
|
---|
| 109 | FOR SET IDX=$ORDER(TMGMSG(IDX)) QUIT:(IDX="") DO
|
---|
| 110 | . SET COUNT=COUNT+1
|
---|
| 111 | . SET RESULT(COUNT)=TMGMSG(IDX)
|
---|
| 112 | SET IDX=""
|
---|
| 113 | IF $DATA(TMGRESULT)=0 DO
|
---|
| 114 | . NEW TMGSTRTDT SET TMGSTRTDT=$$GETDATE^TMGSDAU2(.STRTDATE)
|
---|
| 115 | . SET COUNT=COUNT+1
|
---|
| 116 | . SET RESULT(COUNT)="0;<NONE>^"_TMGSTRTDT
|
---|
| 117 | ELSE FOR SET IDX=$ORDER(TMGRESULT(IDX)) QUIT:(IDX="") DO
|
---|
| 118 | . SET COUNT=COUNT+1
|
---|
| 119 | . SET RESULT(COUNT)=TMGRESULT(IDX)
|
---|
| 120 | QUIT
|
---|
| 121 | ;
|
---|
| 122 | ;
|
---|
| 123 | GETAVAIL(RESULT,CLINIC,STRTDATE,ENDDATE)
|
---|
| 124 | ;"Purpose: Return an array with appt slot information: time, availibility
|
---|
| 125 | ;"Input:RESULTS: PASS BY REFERENCE. An OUT PARAMATER. (See format below)
|
---|
| 126 | ;" CLINIC-- Name, or IEN, of Clinic for appt (file 44)
|
---|
| 127 | ;" STRTDATE -- The beginning of the date range requested
|
---|
| 128 | ;" ENDDATE -- The end of the date range requested
|
---|
| 129 | ;"Results: None
|
---|
| 130 | ;"Output: RESULT is filled with results. Format below:
|
---|
| 131 | ;" RESULT(0)=1 for Success, 0 for Intermed success, -1^Msg for error
|
---|
| 132 | ;" RESULT(Count)=-1^Message <-- (if any)
|
---|
| 133 | ;" RESULT(Count)=-1^Message
|
---|
| 134 | ;" RESULT(Count)="INFO^APPTLEN"^LengthOfApptSlot
|
---|
| 135 | ;" RESULT(Count)=Date^SlotStartTime^NumOpenings^NumScheduled^NumTotalSlotsAtTime
|
---|
| 136 | ;" RESULT(Count)=Date^SlotStartTime^NumOpenings^NumScheduled^NumTotalSlotsAtTime
|
---|
| 137 | ;"Note: If a clinic is not set up for a given day in date range, no results will be
|
---|
| 138 | ;" returned for that invalid day.
|
---|
| 139 | ;
|
---|
| 140 | if 1=0 do
|
---|
| 141 | . kill ^TMG("TMP","RPC","GETAVAIL")
|
---|
| 142 | . merge ^TMG("TMP","RPC","GETAVAIL","CLINIC")=CLINIC
|
---|
| 143 | . merge ^TMG("TMP","RPC","GETAVAIL","STRTDATE")=STRTDATE
|
---|
| 144 | . merge ^TMG("TMP","RPC","GETAVAIL","ENDDATE")=ENDDATE
|
---|
| 145 | else if 1=0 do
|
---|
| 146 | . merge CLINIC=^TMG("TMP","RPC","GETAVAIL","CLINIC")
|
---|
| 147 | . merge STRTDATE=^TMG("TMP","RPC","GETAVAIL","STRTDATE")
|
---|
| 148 | . merge ENDDATE=^TMG("TMP","RPC","GETAVAIL","ENDDATE")
|
---|
| 149 | ;
|
---|
| 150 | NEW SC SET SC=$$GETCLIEN^TMGSDAU2(.CLINIC)
|
---|
| 151 | IF SC<1 DO GOTO GADONE
|
---|
| 152 | . SET RESULT(0)="-1^Bad clinic name: '"_$GET(CLINIC)_"'"
|
---|
| 153 | NEW TMGSTRTDT SET TMGSTRTDT=$$GETDATE^TMGSDAU2(.STRTDATE)
|
---|
| 154 | IF TMGSTRTDT<1 DO GOTO GADONE
|
---|
| 155 | . SET RESULT(0)="-1^Bad starting date: '"_$GET(TMGSTRTDT)_"'"
|
---|
| 156 | NEW TMGENDDT SET TMGENDDT=$$GETDATE^TMGSDAU2(.ENDDATE)
|
---|
| 157 | IF TMGENDDT<1 DO GOTO GADONE
|
---|
| 158 | . SET RESULT(0)="-1^Bad ending date: '"_$GET(TMGENDDT)_"'"
|
---|
| 159 | ;
|
---|
| 160 | NEW TMGAVAIL,TMGMSG
|
---|
| 161 | NEW COUNT SET COUNT=0
|
---|
| 162 | SET RESULT(COUNT)=$$GETAVAIL^TMGSDAVG(SC,TMGSTRTDT,TMGENDDT,.TMGAVAIL,.TMGMSG)
|
---|
| 163 | ;
|
---|
| 164 | NEW IDX SET IDX=""
|
---|
| 165 | FOR SET IDX=$ORDER(TMGMSG(IDX)) QUIT:(IDX="") DO
|
---|
| 166 | . SET COUNT=COUNT+1
|
---|
| 167 | . SET RESULT(COUNT)=TMGMSG(IDX)
|
---|
| 168 | NEW DATE SET DATE=""
|
---|
| 169 | FOR SET DATE=$ORDER(TMGAVAIL(DATE)) QUIT:(DATE="") DO
|
---|
| 170 | . NEW TIME SET TIME=""
|
---|
| 171 | . FOR SET TIME=$ORDER(TMGAVAIL(DATE,TIME)) QUIT:(TIME="") DO
|
---|
| 172 | . . SET COUNT=COUNT+1
|
---|
| 173 | . . SET RESULT(COUNT)=DATE_"^"_TIME_"^"_$GET(TMGAVAIL(DATE,TIME))
|
---|
| 174 | GADONE ;
|
---|
| 175 | QUIT
|
---|
| 176 | ;
|
---|
| 177 | ;
|
---|
| 178 | SETAVAIL(RESULT,CLINIC,FLAGS,PATTERN) ;
|
---|
| 179 | ;"Purpose: API to set availability for a given clinic
|
---|
| 180 | ;"NOTE: **See expanded notes in SETAVAIL^TMGSDAVS**
|
---|
| 181 | ;"Input: CLINIC -- IEN in HOSPITAL LOCATION file.
|
---|
| 182 | ;" FLAGS -- "D" = Delete appts (if not present then appts are SET)
|
---|
| 183 | ;" "I" = Ignore existing appts when changing slots (TO BE IMPLEMENTED)
|
---|
| 184 | ;" PATTERN -- PASS BY REFERENCE. Array Format:
|
---|
| 185 | ;" PATTERN(COUNT)=ADate^EndDate^ExtTime^ApptsPerSlot
|
---|
| 186 | ;" PATTERN(COUNT)=ADate^EndDate^ExtTime^ApptsPerSlot
|
---|
| 187 | ;" PATTERN(COUNT)=ADate^EndDate^ExtTime^ApptsPerSlot
|
---|
| 188 | ;"Results: None
|
---|
| 189 | ;"Output: RESULT is filled with results. Format below:
|
---|
| 190 | ;" RESULT(Count)=-1^ErrCode^Message <-- (if any)
|
---|
| 191 | ;" RESULT(Count)=-1^ErrCode^Message
|
---|
| 192 | ;" or RESULT(1)="1^Success"
|
---|
| 193 | ;
|
---|
| 194 | NEW SC SET SC=$$GETCLIEN^TMGSDAU2(.CLINIC)
|
---|
| 195 | IF SC<1 DO GOTO SDADONE
|
---|
| 196 | . SET RESULT(0)="-1^Bad clinic name: '"_$GET(CLINIC)_"'"
|
---|
| 197 | NEW TMGPATRN,ADATE,ENDDATE,EXTTIME,APS
|
---|
| 198 | NEW COUNT SET COUNT=""
|
---|
| 199 | FOR SET COUNT=$ORDER(PATTERN(COUNT)) DO
|
---|
| 200 | . NEW PAT SET PAT=$GET(PATTERN(COUNT)) ;"ADate^EndDate^ExtTime^ApptsPerSlot
|
---|
| 201 | . QUIT:PAT=""
|
---|
| 202 | . SET ADATE=$P(PAT,"^",1)
|
---|
| 203 | . SET ENDDATE=$P(PAT,"^",2)
|
---|
| 204 | . SET EXTTIME=$P(PAT,"^",3)
|
---|
| 205 | . SET APS=$P(PAT,"^",4)
|
---|
| 206 | . SET TMGPATRN(ADATE_"^"_ENDDATE,EXTTIME)=APS
|
---|
| 207 | ;
|
---|
| 208 | NEW TMGMSG,TEMP
|
---|
| 209 | NEW COUNT SET COUNT=0
|
---|
| 210 | SET RESULT(COUNT)=$$SETAVAIL^TMGSDAVS(SC,.TMGPATRN,FLAGS,.TMGMSG)
|
---|
| 211 | ;
|
---|
| 212 | NEW IDX SET IDX=""
|
---|
| 213 | FOR SET IDX=$ORDER(TMGMSG(IDX)) QUIT:(IDX="") DO
|
---|
| 214 | . SET COUNT=COUNT+1
|
---|
| 215 | . SET RESULT(COUNT)=TMGMSG(IDX)
|
---|
| 216 | IF COUNT=0 SET RESULT(1)="1^Success"
|
---|
| 217 | SDADONE ;
|
---|
| 218 | QUIT
|
---|
| 219 | ;
|
---|
| 220 | ;
|
---|
| 221 | CANCAPPT(RESULT,PATIENT,APPT,CLINIC,INFO) ;
|
---|
| 222 | ;"Purpose: CANCEL AN APPOINTMENT
|
---|
| 223 | ;"INPUT: RESULTS -- PASS BY REFERENCE, an OUT PARAMETER (See values below)
|
---|
| 224 | ;" PATIENT -- Patient Name (must be unique) or IEN
|
---|
| 225 | ;" APPT -- Appointment Date & Time to be cancelled -- External, or FM format
|
---|
| 226 | ;" CLINIC -- Name, or IEN, of Clinic for appt (file 44)
|
---|
| 227 | ;" INFO -- PASS BY REFERENCE.
|
---|
| 228 | ;" INFO("REASON IEN")= IEN of cancellation reason, from 409.2
|
---|
| 229 | ;" INFO("COMMENT") = Comment (3-160 chars length) (OPTIONAL)
|
---|
| 230 | ;"Result: None
|
---|
| 231 | ;"Output: RESULTS variable filled as follows
|
---|
| 232 | ;" RESULT(1) = 1 --> OK,APPOINTMENT SUCCESSFULLY CANCELLED
|
---|
| 233 | ;" RESULT(1) = -1^ErrorMessage.
|
---|
| 234 | ;
|
---|
| 235 | if 1=1 do
|
---|
| 236 | . kill ^TMG("TMP","RPC","CANCAPPT")
|
---|
| 237 | . merge ^TMG("TMP","RPC","CANCAPPT","PATIENT")=PATIENT
|
---|
| 238 | . merge ^TMG("TMP","RPC","CANCAPPT","APPT")=APPT
|
---|
| 239 | . merge ^TMG("TMP","RPC","CANCAPPT","CLINIC")=CLINIC
|
---|
| 240 | . merge ^TMG("TMP","RPC","CANCAPPT","INFO")=INFO
|
---|
| 241 | else if 1=0 do
|
---|
| 242 | . merge PATIENT=^TMG("TMP","RPC","CANCAPPT","PATIENT")
|
---|
| 243 | . merge APPT=^TMG("TMP","RPC","CANCAPPT","APPT")
|
---|
| 244 | . merge CLINIC=^TMG("TMP","RPC","CANCAPPT","CLINIC")
|
---|
| 245 | . merge INFO=^TMG("TMP","RPC","CANCAPPT","INFO")
|
---|
| 246 | ;
|
---|
| 247 | KILL RESULT
|
---|
| 248 | NEW DFN,SC,APPTDATE
|
---|
| 249 | SET RESULT(0)=1 ;"Default to success.
|
---|
| 250 | SET DFN=$$GETDFN^TMGSDAU2(.PATIENT)
|
---|
| 251 | IF DFN<1 DO GOTO CANCDONE
|
---|
| 252 | . SET RESULT(0)="-1^Invalid Patient: "_$GET(PATIENT)
|
---|
| 253 | SET SC=$$GETCLIEN^TMGSDAU2(.CLINIC)
|
---|
| 254 | IF SC<1 DO GOTO CANCDONE
|
---|
| 255 | . SET RESULT(0)="-1^Can't find clinic: "_$GET(CLINIC)
|
---|
| 256 | SET APPTDATE=$$GETDATE^TMGSDAU2(.APPT)
|
---|
| 257 | IF APPTDATE<1 DO GOTO CANCDONE
|
---|
| 258 | . SET RESULT(0)="-1^Invalid appt Date: "_$GET(APPT)
|
---|
| 259 | ;
|
---|
| 260 | SET RESULT(0)=$$CANCAPPT^TMGSDAC(DFN,APPTDATE,SC,.INFO)
|
---|
| 261 | ;
|
---|
| 262 | CANCDONE ;
|
---|
| 263 | QUIT |
---|