[796] | 1 | TMGSDAC ;TMG/kst/API FOR CANCELLING APPTS;2/23/09
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;2/23/09
|
---|
| 3 | ;
|
---|
| 4 | ;"Called into from TMGRPC5
|
---|
| 5 | ;
|
---|
| 6 | ;"=======================================================================
|
---|
| 7 | ;" API -- Public Functions.
|
---|
| 8 | ;"=======================================================================
|
---|
| 9 | ;"CANCAPPT(DFN,APPTDATE,CLINIC,INFO) -- CANCEL AN APPOINTMENT
|
---|
| 10 | ;
|
---|
| 11 | ;"=======================================================================
|
---|
| 12 | ;"Dependancies
|
---|
| 13 | ;"=======================================================================
|
---|
| 14 | ;"=======================================================================
|
---|
| 15 | ;
|
---|
| 16 | CANCAPPT(DFN,APPTDATE,CLINIC,INFO) ;
|
---|
| 17 | ;"Purpose: CANCEL AN APPOINTMENT
|
---|
| 18 | ;"INPUT: DFN -- The IEN of the patient for appt to cancel
|
---|
| 19 | ;" APPTDATE -- Appointment Date & Time to be cancelled -- FM format
|
---|
| 20 | ;" CLINIC -- IEN of Clinic for appt (file 44)
|
---|
| 21 | ;" INFO -- PASS BY REFERENCE.
|
---|
| 22 | ;" INFO("REASON IEN")= IEN of cancellation reason, from 409.2
|
---|
| 23 | ;" INFO("COMMENT") = Comment (3-160 chars length) (OPTIONAL)
|
---|
| 24 | ;"Result: 1 = OK,APPOINTMENT SUCCESSFULLY CANCELLED
|
---|
| 25 | ;" NEG NUMBER= ErrorNum^ErrorMessage.
|
---|
| 26 | ;
|
---|
| 27 | NEW RESULT SET RESULT="-1^NO MATCHING APPT FOUND TO DELETE" ;"Default to FAILURE
|
---|
| 28 | NEW DATEMADE SET DATEMADE=0
|
---|
| 29 | ;
|
---|
| 30 | IF $DATA(^SC(CLINIC))=0 DO GOTO CANCDONE
|
---|
| 31 | . SET RESULT="-1^INVALID CLINIC IEN: "_CLINIC
|
---|
| 32 | IF $DATA(^SC(CLINIC,"S",APPTDATE))=0 DO GOTO CANCDONE
|
---|
| 33 | . SET RESULT="-1^NO APPT FOUND AT SPECIFIED TIME"
|
---|
| 34 | NEW REASNIEN SET REASNIEN=+$GET(INFO("REASON IEN"))
|
---|
| 35 | IF (REASNIEN=0)!($DATA(^SD(409.2,REASNIEN))=0) DO GOTO CANCDONE
|
---|
| 36 | . SET RESULT="-1^INVALID CANCELLATION IEN: "_REASNIEN
|
---|
| 37 | NEW IEN SET IEN=0
|
---|
| 38 | FOR SET IEN=$ORDER(^SC(CLINIC,"S",APPTDATE,1,IEN)) QUIT:(+IEN'>0) DO
|
---|
| 39 | . NEW S SET S=$GET(^SC(CLINIC,"S",APPTDATE,1,IEN,0))
|
---|
| 40 | . IF +S'=DFN QUIT ;"Ignore appt if patient doesn't match.
|
---|
| 41 | . SET DATEMADE=+$PIECE(S,"^",7) ;"Store for later
|
---|
| 42 | . KILL ^SC(CLINIC,"S",APPTDATE,1,IEN) ;"<-- DELETION OF APPT (Part 1)
|
---|
| 43 | ;
|
---|
| 44 | IF DATEMADE=0 GOTO CANCDONE ;"Apparently no matching appt found above
|
---|
| 45 | IF $DATA(^DPT(DFN,"S",APPTDATE))=0 GOTO CANCDONE
|
---|
| 46 | ;
|
---|
| 47 | NEW TMGFDA,IENS,%,REASNSTR
|
---|
| 48 | SET REASNSTR=$EXTRACT($GET(INFO("REASON IEN")),1,160)
|
---|
| 49 | DO NOW^%DTC ;"Returns NOW in %
|
---|
| 50 | SET IENS=APPTDATE_","_DFN_","
|
---|
| 51 | SET TMGFDA(2.98,IENS,3)="C" ;"STATUS
|
---|
| 52 | SET TMGFDA(2.98,IENS,14)=DUZ ;"NO-SHOW/CANCELLED BY
|
---|
| 53 | SET TMGFDA(2.98,IENS,15)=% ;"NO-SHOW/CANCEL DATE/TIME
|
---|
| 54 | SET TMGFDA(2.98,IENS,16)=REASNIEN ;"CANCELLATION REASON
|
---|
| 55 | SET TMGFDA(2.98,IENS,19)=DUZ ;"DATA ENTRY CLERK
|
---|
| 56 | SET TMGFDA(2.98,IENS,20)=DATEMADE ;"DATE APPT. MADE
|
---|
| 57 | SET TMGFDA(2.98,IENS,17)=REASNSTR ;"CANCELLATION REMARKS
|
---|
| 58 | ;
|
---|
| 59 | DO FILE^DIE("","TMGFDA","TMGMSG") ;"File in INTERNAL format
|
---|
| 60 | IF $DATA(TMGMSG) DO GOTO CANCDONE
|
---|
| 61 | . SET RESULT="-1^"_$$GETERSTR(.TMGMSG)
|
---|
| 62 | ;
|
---|
| 63 | ;"send event to rest of system!!!
|
---|
| 64 | ;
|
---|
| 65 | SET RESULT=1 ;"Change to success if no problems at the end of the process.
|
---|
| 66 | ;
|
---|
| 67 | CANCDONE ;
|
---|
| 68 | QUIT RESULT
|
---|
| 69 | ;
|
---|
| 70 | ;
|
---|
| 71 | GETERSTR(TMGEARRAY) ;
|
---|
| 72 | ;"Purpose: convert a standard DIERR array into a string for output
|
---|
| 73 | ;"Input: TMGEARRAY -- PASS BY REFERENCE. example:
|
---|
| 74 | ;" array("DIERR")="1^1"
|
---|
| 75 | ;" array("DIERR",1)=311
|
---|
| 76 | ;" array("DIERR",1,"PARAM",0)=3
|
---|
| 77 | ;" array("DIERR",1,"PARAM","FIELD")=.02
|
---|
| 78 | ;" array("DIERR",1,"PARAM","FILE")=2
|
---|
| 79 | ;" array("DIERR",1,"PARAM","IENS")="+1,"
|
---|
| 80 | ;" array("DIERR",1,"TEXT",1)="The new record '+1,' lacks some required identifiers."
|
---|
| 81 | ;" array("DIERR","E",311,1)=""
|
---|
| 82 | ;"Results: returns one long equivalent string from above array.
|
---|
| 83 | ;"Note: This is a copy of the function GetErrStr^TMGDEBUG
|
---|
| 84 | ;" I copied it here so that this file has no TMG* dependencies.
|
---|
| 85 | ;
|
---|
| 86 | NEW TMGESTR,TMGIDX,TMGENUM
|
---|
| 87 | SET TMGESTR=""
|
---|
| 88 | FOR TMGENUM=1:1:+$GET(TMGEARRAY("DIERR")) DO
|
---|
| 89 | . SET TMGESTR=TMGESTR_"Fileman says: '"
|
---|
| 90 | . IF TMGENUM'=1 SET TMGESTR=TMGESTR_"(Error# "_TMGENUM_") "
|
---|
| 91 | . SET TMGIDX=$ORDER(TMGEARRAY("DIERR",TMGENUM,"TEXT",""))
|
---|
| 92 | . IF TMGIDX'="" FOR DO QUIT:(TMGIDX="")
|
---|
| 93 | . . SET TMGESTR=TMGESTR_$GET(TMGEARRAY("DIERR",TMGENUM,"TEXT",TMGIDX))_" "
|
---|
| 94 | . . SET TMGIDX=$ORDER(TMGEARRAY("DIERR",TMGENUM,"TEXT",TMGIDX))
|
---|
| 95 | . IF $GET(TMGEARRAY("DIERR",TMGENUM,"PARAM",0))>0 DO
|
---|
| 96 | . . SET TMGIDX=$ORDER(TMGEARRAY("DIERR",TMGENUM,"PARAM",0))
|
---|
| 97 | . . SET TMGESTR=TMGESTR_"Details: "
|
---|
| 98 | . . FOR DO QUIT:(TMGIDX="")
|
---|
| 99 | . . . IF TMGIDX="" QUIT
|
---|
| 100 | . . . SET TMGESTR=TMGESTR_"["_TMGIDX_"]="_$GET(TMGEARRAY("DIERR",1,"PARAM",TMGIDX))_" "
|
---|
| 101 | . . . SET TMGIDX=$ORDER(TMGEARRAY("DIERR",TMGENUM,"PARAM",TMGIDX))
|
---|
| 102 | ;
|
---|
| 103 | QUIT TMGESTR
|
---|
| 104 | ;
|
---|
| 105 |
|
---|
| 106 |
|
---|
| 107 | ;"------------------------------------------
|
---|
| 108 | ;"I think the code below can be delete later. It is done automatically by
|
---|
| 109 | ;" the XREF
|
---|
| 110 | ;"
|
---|
| 111 |
|
---|
| 112 | ;"Input: DA(1) = DFN -- patient IEN
|
---|
| 113 | ;" DA -- appt time
|
---|
| 114 |
|
---|
| 115 | ;"K Q8 F Q7=0:0 S Q7=$N(^SC($P(^DPT(DA(1),"S",DA,0),"^"),"S",DA,1,Q7)) Q:Q7'>0 I $P(^(Q7,0),"^")=DA(1),$P(^(0),"^",9)="C" S Q8="" Q
|
---|
| 116 | ;"I '$D(Q8) S ^DPT("ASDCN",$P(^DPT(DA(1),"S",DA,0),"^"),DA,DA(1))=$S($P(^DPT(DA(1),"S",DA,0),"^",2)["P":1,1:"")
|
---|
| 117 | ;"K Q7,Q8 Q
|
---|
| 118 |
|
---|
| 119 |
|
---|
| 120 | ;"This is called when setting STATUS field (#3, 0;2) in PATIENT file
|
---|
| 121 |
|
---|
| 122 | K Q8
|
---|
| 123 | set Q7=0
|
---|
| 124 | set SC=$P(^DPT(DFN,"S",APTTIME,0),"^",1)
|
---|
| 125 | F S Q7=$order(^SC(SC,"S",APTTIME,1,Q7)) Q:Q7'>0 DO quit:$data(Q8)
|
---|
| 126 | . if $P(^SC(SC,"S",APTTIME,1,Q7,0),"^",1)'=DFN quit ;"0;1 = Patient IEN
|
---|
| 127 | . if $P(^SC(SC,"S",APTTIME,1,Q7,0),"^",9)="C" S Q8="" ;"0;9 = APPOINTMENT CANCELLED?
|
---|
| 128 | I '$D(Q8) DO ;"i.e. do this if APPOINTMENT CANCELLED <> 'C'
|
---|
| 129 | . new status set status=$P(^DPT(DFN,"S",APTTIME,0),"^",2) ;"0;2 = STATUS
|
---|
| 130 | . set ^DPT("ASDCN",SC,APTTIME,DFN)=$S(status["P":1,1:"") ;"P --> cancelled by patient
|
---|
| 131 | K Q7,Q8
|
---|
| 132 | Q
|
---|