[796] | 1 | TMGSDAG ;TMG/kst/API FOR GETTING LIST OF APPTS;1/11/09
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;1/11/09
|
---|
| 3 | ;
|
---|
| 4 | ;"Called into from TMGRPC5
|
---|
| 5 | ;
|
---|
| 6 | ;"=======================================================================
|
---|
| 7 | ;" API -- Public Functions.
|
---|
| 8 | ;"=======================================================================
|
---|
| 9 | ;"APPTLIST(STRTDATE,ENDDATE,FILTER,RESULTS,TMGMSG)
|
---|
| 10 | ;
|
---|
| 11 | ;"=======================================================================
|
---|
| 12 | ;"Dependancies
|
---|
| 13 | ;"=======================================================================
|
---|
| 14 | ;"SDAMA301,DIC
|
---|
| 15 | ;"=======================================================================
|
---|
| 16 | ;
|
---|
| 17 | APPTLIST(STRTDATE,ENDDATE,FILTER,RESULTS,TMGMSG)
|
---|
| 18 | ;"Purpose: To return a listing of appts, based on dates and filters). Provide a wrapper to $$SDAPI^SDAMA301
|
---|
| 19 | ;" that accepts data in external formats, and returns custom results in array.
|
---|
| 20 | ;"Input:STRTDATE -- Starting Date (in FMDate format, OR External format, e.g. Jan 1, 2005) (Time ignored)
|
---|
| 21 | ;" If value="I" or "" (i.e. 'indefinite'), then all dates up to End Date on returned
|
---|
| 22 | ;" ENDDATE -- OPTIONAL. Ending date (in FMDate, OR External format) (Time ignored)
|
---|
| 23 | ;" If not provided, then only dates for Starting date returned
|
---|
| 24 | ;" If value="I" (i.e. 'indefinite'), then all dates from Start Date on returned
|
---|
| 25 | ;" FILTER -- PASS BY REFERENCE. OPTIONAL. Format below. Any or all of the filters can be applied at once.
|
---|
| 26 | ;" All filters are optional.
|
---|
| 27 | ;" 1. LOCATION FILTER: "CLINIC"
|
---|
| 28 | ;" Specify one or more clinic names or IEN's, separated by "^", so that only
|
---|
| 29 | ;" appointments for these clincs will be retuned
|
---|
| 30 | ;" e.g. FILTER("CLINIC")="TEST CLINIC"
|
---|
| 31 | ;" e.g. FILTER("CLINIC")="PULM CLINIC^GYN CLINIC"
|
---|
| 32 | ;" e.g. FILTER("CLINIC")="123" <-- IEN in file 44 (HOSPITAL LOCATION)
|
---|
| 33 | ;" e.g. FILTER("CLINIC")="123^234^345" etc.
|
---|
| 34 | ;" 2. STATUS FILTER - "STATUS"
|
---|
| 35 | ;" Specify one or more status values, separated by "^", so that only
|
---|
| 36 | ;" appointments matching these status values will be returned
|
---|
| 37 | ;" Possible codEs:
|
---|
| 38 | ;" R -- Appointment cept
|
---|
| 39 | ;" I -- Inpatient
|
---|
| 40 | ;" NS -- No Show
|
---|
| 41 | ;" NSR -- No-show, rescheduled
|
---|
| 42 | ;" CP -- Cancelled by patient
|
---|
| 43 | ;" CPR -- Cancelled by patient, rescheduled
|
---|
| 44 | ;" CC -- Cancelled by clinic
|
---|
| 45 | ;" CCR -- Cancelled by clinic, rescheduled
|
---|
| 46 | ;" NT -- No action taken
|
---|
| 47 | ;" e.g. FILTER("STATUS")="NS"
|
---|
| 48 | ;" e.g. FILTER("STATUS")="CP^CPR^I" etc.
|
---|
| 49 | ;" 3. PATIENT FILTER -- "PATIENT"
|
---|
| 50 | ;" Specify one or more Patient names (External format) or IEN's, separated by "^",
|
---|
| 51 | ;" so that only appointments for these patients will be returned.
|
---|
| 52 | ;" e.g. FILTER("PATIENT")="JONES,DAVID S"
|
---|
| 53 | ;" e.g. FILTER("PATIENT")="JONES,DAVID S^SMITH,JOHN A" etc.
|
---|
| 54 | ;" e.g. FILTER("PATIENT")="123456" <-- IEN in PATIENT file
|
---|
| 55 | ;" e.g. FILTER("PATIENT")="123456^234567^345678" etc.
|
---|
| 56 | ;" 4. STOP CODES FILTER -- "STOP CODE"
|
---|
| 57 | ;" Specify one or more valid Primary Stop Code values (not IEN's), separated by "^",
|
---|
| 58 | ;" so that only appointments matching these values will be returned.
|
---|
| 59 | ;" Stop Code must be a valied AMIS REPORTING STOP CODE (field #1) on the CLINIC STOP file (#40.7)
|
---|
| 60 | ;" e.g. FILTER("STOP CODE")="197" <-- STOP CODE, not IEN
|
---|
| 61 | ;" e.g. FILTER("STOP CODE")="197^234^345"
|
---|
| 62 | ;" 5. QUANTITY FILTER -- "MAX"
|
---|
| 63 | ;" Specify a value, such that only the first N appts will be returned. If specified, then must
|
---|
| 64 | ;" be whole value > 0
|
---|
| 65 | ;" e.g. FILTER("MAX")=25 <-- Only return 1st 25 found appts
|
---|
| 66 | ;" NOTE: The $$SDAPI^SDAMA301 seems to support more filters. I could add support for them later...
|
---|
| 67 | ;" RESULTS: PASS BY REFERENCE. An OUT PARAMATER.
|
---|
| 68 | ;" RESULTS(Count)=RESULTS(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 69 | ;" RESULTS(Count)=RESULTS(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 70 | ;" RESULTS(Count)=RESULTS(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 71 | ;" TMGMSG: PASS BY REFERENCE. An OUT PARAMETER -- Used for passing back errors.
|
---|
| 72 | ;" TMGMSG=Max count of error messages
|
---|
| 73 | ;" TMGMSG(Count)=ErrCode^Message (Count starts at 1,2,3...)
|
---|
| 74 | ;" TMGMSG(Count)=ErrCode^Message
|
---|
| 75 | ;" TMGMSG(Count)=ErrCode^Message
|
---|
| 76 | ;"Results: Returns # of found matching appts, or 0 if none, or -1 if error.
|
---|
| 77 | ;
|
---|
| 78 | NEW TMGRESULT SET TMGRESULT=0
|
---|
| 79 | SET TMGMSG=0
|
---|
| 80 | NEW TMGSDATE,TMGEDATE,TMGARRAY
|
---|
| 81 | KILL RESULTS
|
---|
| 82 | DO SETDATES(.STRTDATE,.ENDDATE,.TMGARRAY,.TMGMSG)
|
---|
| 83 | IF TMGMSG>0 SET TMGRESULT=-1 GOTO ALDONE
|
---|
| 84 | ;
|
---|
| 85 | IF $DATA(FILTER("CLINIC")) DO FILTR2(.FILTER,.TMGARRAY,.TMGMSG)
|
---|
| 86 | IF $DATA(FILTER("STATUS")) DO FILTR3(.FILTER,.TMGARRAY,.TMGMSG)
|
---|
| 87 | IF $DATA(FILTER("PATIENT")) DO FILTR4(.FILTER,.TMGARRAY,.TMGMSG)
|
---|
| 88 | IF $DATA(FILTER("STOP CODE")) DO FILTR13(.FILTER,.TMGARRAY,.TMGMSG)
|
---|
| 89 | IF TMGMSG>0 SET TMGRESULT=-1 GOTO ALDONE
|
---|
| 90 | ;
|
---|
| 91 | SET TMGARRAY("FLDS")="1;2;3"
|
---|
| 92 | SET TMGARRAY("SORT")="P" ;"Specify output format"
|
---|
| 93 | SET TMGRESULT=$$SDAPI^SDAMA301(.TMGARRAY)
|
---|
| 94 | IF TMGRESULT<0 DO
|
---|
| 95 | . DO HANDLERR(.TMGMSG)
|
---|
| 96 | ELSE DO GETRSLTS(.RESULTS)
|
---|
| 97 | ;
|
---|
| 98 | ALDONE QUIT TMGRESULT
|
---|
| 99 | ;
|
---|
| 100 | ;
|
---|
| 101 | SETDATES(TMGSDATE,TMGEDATE,TMGARRAY,TMGMSG)
|
---|
| 102 | ;"Purpose: convert external dates into internal format, Validate dates,
|
---|
| 103 | ;" and insert into TMGARRAY(1) filter
|
---|
| 104 | ;"Result: None
|
---|
| 105 | NEW DATE1,DATE2
|
---|
| 106 | SET TMGSDATE=$GET(TMGSDATE)
|
---|
| 107 | SET TMGEDATE=$GET(TMGEDATE)
|
---|
| 108 | IF TMGEDATE="" SET TMGEDATE=TMGSDATE
|
---|
| 109 | IF +TMGSDATE=TMGSDATE SET DATE1=TMGSDATE
|
---|
| 110 | ELSE DO GOTO:TMGMSG>0 SDDONE
|
---|
| 111 | . IF (TMGSDATE="I")!(TMGSDATE="") SET DATE1="" QUIT
|
---|
| 112 | . NEW MSG
|
---|
| 113 | . DO DT^DILF("T",TMGSDATE,.MSG)
|
---|
| 114 | . IF MSG=-1 DO QUIT
|
---|
| 115 | . . SET TMGMSG=TMGMSG+1
|
---|
| 116 | . . SET TMGMSG(TMGMSG)="-1^Invalid Start Date"
|
---|
| 117 | . SET DATE1=MSG\1
|
---|
| 118 | IF +TMGEDATE=TMGEDATE SET DATE2=TMGEDATE
|
---|
| 119 | ELSE DO
|
---|
| 120 | . IF (TMGEDATE="I")!(TMGEDATE="") SET DATE2="" QUIT
|
---|
| 121 | . NEW MSG
|
---|
| 122 | . DO DT^DILF("T",TMGEDATE,.MSG)
|
---|
| 123 | . IF MSG=-1 DO QUIT
|
---|
| 124 | . . SET TMGMSG=+$GET(TMGMSG)+1
|
---|
| 125 | . . SET TMGMSG(TMGMSG)="-1^Invalid End Date"
|
---|
| 126 | . SET DATE2=MSG\1
|
---|
| 127 | IF (DATE1="")&(DATE2="") GOTO SDDONE
|
---|
| 128 | SET DATE1=DATE1\1
|
---|
| 129 | SET DATE2=DATE2\1
|
---|
| 130 | SET TMGARRAY(1)=DATE1_";"_DATE2
|
---|
| 131 | SDDONE ;
|
---|
| 132 | QUIT
|
---|
| 133 | ;
|
---|
| 134 | ;
|
---|
| 135 | FILTR2(FILTER,TMGARRAY,TMGMSG)
|
---|
| 136 | ;"Purpose: To take and validate user input, and insert into TMGARRAY(2) filter
|
---|
| 137 | ;
|
---|
| 138 | NEW PLACES SET PLACES=$GET(FILTER("CLINIC"))
|
---|
| 139 | NEW LOC,STR
|
---|
| 140 | SET STR=""
|
---|
| 141 | FOR SET LOC=$PIECE(PLACES,"^",1) QUIT:(LOC="") DO
|
---|
| 142 | . IF +LOC'=LOC DO
|
---|
| 143 | . . NEW DIC,X,Y
|
---|
| 144 | . . SET DIC=44,DIC(0)="M"
|
---|
| 145 | . . SET X=LOC DO ^DIC
|
---|
| 146 | . . IF +Y>0 SET LOC=+Y
|
---|
| 147 | . . ELSE DO
|
---|
| 148 | . . . SET TMGMSG=+$GET(TMGMSG)+1
|
---|
| 149 | . . . SET TMGMSG(TMGMSG)="-1^'"_LOC_"' clinic location NOT FOUND."
|
---|
| 150 | . IF LOC>0 DO
|
---|
| 151 | . . IF STR'="" SET STR=STR_";"
|
---|
| 152 | . . SET STR=STR_LOC
|
---|
| 153 | . IF $LENGTH(PLACES,"^")=1 SET PLACES="" QUIT
|
---|
| 154 | . ELSE SET PLACES=$PIECE(PLACES,2,$LENGTH(PLACES,"^"))
|
---|
| 155 | IF STR'="" SET TMGARRAY(2)=STR
|
---|
| 156 | ;
|
---|
| 157 | F2DONE QUIT
|
---|
| 158 | ;
|
---|
| 159 | ;
|
---|
| 160 | FILTR3(FILTER,TMGARRAY,TMGMSG)
|
---|
| 161 | ;"Purpose: To take user input, and insert into TMGARRAY(3) filter
|
---|
| 162 | NEW STR SET STR=$GET(FILTER("STATUS"))
|
---|
| 163 | SET STR=$TRANSLATE(STR,"^",";")
|
---|
| 164 | IF STR'="" SET TMGARRAY(3)=STR
|
---|
| 165 | QUIT
|
---|
| 166 | ;
|
---|
| 167 | ;
|
---|
| 168 | FILTR4(FILTER,TMGARRAY,TMGMSG)
|
---|
| 169 | ;"Purpose: To take and validate user input, and insert into TMGARRAY(4) filter
|
---|
| 170 | ;
|
---|
| 171 | NEW NAMES SET NAMES=$GET(FILTER("PATIENT"))
|
---|
| 172 | NEW ANAME,STR,DFN
|
---|
| 173 | SET STR=""
|
---|
| 174 | FOR SET ANAME=$PIECE(NAMES,"^",1) QUIT:(ANAME="") DO
|
---|
| 175 | . SET DFN=0
|
---|
| 176 | . IF +ANAME'=ANAME DO
|
---|
| 177 | . . NEW TMG2MSG
|
---|
| 178 | . . DO FIND^DIC(2,,".01","MP",ANAME,"*","","","","TMG2MSG")
|
---|
| 179 | . . NEW NUM SET NUM=+$GET(TMG2MSG("DILIST",0))
|
---|
| 180 | . . IF NUM=0 DO QUIT
|
---|
| 181 | . . . SET TMGMSG=+$GET(TMGMSG)+1
|
---|
| 182 | . . . SET TMGMSG(TMGMSG)="-1^Patient name: '"_ANAME_"' NOT FOUND"
|
---|
| 183 | . . IF NUM>1 DO QUIT
|
---|
| 184 | . . . SET TMGMSG=+$GET(TMGMSG)+1
|
---|
| 185 | . . . SET TMGMSG(TMGMSG)="-1^Name: "_ANAME_" Not specific. Multiple patients with this name exist."
|
---|
| 186 | . . SET DFN=+$GET(TMG2MSG("DILIST",1,0))
|
---|
| 187 | . IF DFN>0 DO
|
---|
| 188 | . . IF STR'="" SET STR=STR_";"
|
---|
| 189 | . . SET STR=STR_DFN
|
---|
| 190 | . IF $LENGTH(NAMES,"^")=1 SET NAMES="" QUIT
|
---|
| 191 | . ELSE SET NAMES=$PIECE(NAMES,2,$LENGTH(NAMES,"^"))
|
---|
| 192 | IF STR'="" SET TMGARRAY(4)=STR
|
---|
| 193 | ;
|
---|
| 194 | F4DONE QUIT
|
---|
| 195 | ;
|
---|
| 196 | ;
|
---|
| 197 | FILTR13(FILTER,TMGARRAY,TMGMSG)
|
---|
| 198 | ;"Purpose: To take user input, and insert into TMGARRAY(13) filter
|
---|
| 199 | NEW STR SET STR=$GET(FILTER("STOP CODE"))
|
---|
| 200 | SET STR=$TRANSLATE(STR,"^",";")
|
---|
| 201 | IF STR'="" SET TMGARRAY(13)=STR
|
---|
| 202 | QUIT
|
---|
| 203 | ;
|
---|
| 204 | ;
|
---|
| 205 | HANDLERR(TMGMSG)
|
---|
| 206 | ;"Purpose: repackage errors into format for this function
|
---|
| 207 | ;"
|
---|
| 208 | NEW CODE SET CODE=0
|
---|
| 209 | FOR SET CODE=$ORDER(^TMG($J,"SDAMA301",CODE)) QUIT:(CODE="") DO
|
---|
| 210 | . NEW DESCR SET DESCR=$GET(^TMG($J,"SDAMA301",CODE))
|
---|
| 211 | . SET TMGMSG=+$GET(TMGMSG)+1
|
---|
| 212 | . SET TMGMSG(TMGMSG)=CODE_"^"_DESCR
|
---|
| 213 | QUIT
|
---|
| 214 | ;
|
---|
| 215 | ;
|
---|
| 216 | GETRSLTS(RESULTS)
|
---|
| 217 | ;"Purpose: To repackage results into format for this function
|
---|
| 218 | ;"Input: RESULTS -- PASS BY REFERENCE. An OUT PARAMETER.
|
---|
| 219 | ;"Output: RESULTS(Count)=PatientIEN;PatientName^DOB^FMFormatApptDateTime;ExtFormatApptDateTime^ClinicIEN;ClinicName^StatusCode;StatusName
|
---|
| 220 | KILL RESULTS
|
---|
| 221 | NEW COUNT SET COUNT=0
|
---|
| 222 | NEW DFN SET DFN=0
|
---|
| 223 | FOR SET DFN=$ORDER(^TMP($J,"SDAMA301",DFN)) QUIT:(DFN="") DO
|
---|
| 224 | . NEW NAME SET NAME=$PIECE($GET(^DPT(DFN,0)),"^",1)
|
---|
| 225 | . NEW STR SET STR=DFN_";"_NAME
|
---|
| 226 | . NEW DOB SET DOB=$PIECE($GET(^DPT(DFN,0)),"^",3)
|
---|
| 227 | . SET DOB=$PIECE($$FMTE^XLFDT(DOB,+5),"@",1)
|
---|
| 228 | . SET STR=STR_"^"_DOB
|
---|
| 229 | . NEW APPT SET APPT=""
|
---|
| 230 | . FOR SET APPT=$ORDER(^TMP($J,"SDAMA301",DFN,APPT)) QUIT:(APPT="") DO
|
---|
| 231 | . . NEW VALUE SET VALUE=$GET(^TMP($J,"SDAMA301",DFN,APPT)) QUIT:VALUE=""
|
---|
| 232 | . . NEW TIME SET TIME=$$FMTE^XLFDT(APPT,+5) ;"+5 = MM/DD/YYYY@HH:MM:SS format
|
---|
| 233 | . . SET $PIECE(VALUE,"^",1)=APPT_";"_TIME
|
---|
| 234 | . . SET VALUE=STR_"^"_VALUE
|
---|
| 235 | . . SET COUNT=COUNT+1
|
---|
| 236 | . . SET RESULTS(COUNT)=VALUE
|
---|
| 237 | ;
|
---|
| 238 | QUIT |
---|