1 | SDAMA308 ;BPOIFO/JFW-Filter API Appointment Statuses; 5/10/04 8:13am [5/17/04 10:14am]
|
---|
2 | ;;5.3;Scheduling;**301,406**;13 Aug 1993
|
---|
3 | ;
|
---|
4 | ;** GET APPOINTMENT STATUS **
|
---|
5 | ; - Replaces $$STATUS^SDAM1 -
|
---|
6 | ;*****************************************************************
|
---|
7 | ; CHANGE LOG
|
---|
8 | ;
|
---|
9 | ; DATE PATCH DESCRIPTION
|
---|
10 | ;-------- ---------- -----------------------------------------
|
---|
11 | ;12/04/03 SD*5.3*301 ROUTINE COMPLETED
|
---|
12 | ;10/11/06 SD*5.3*406 PRINT STATUS TEXT UPDATED
|
---|
13 | ;
|
---|
14 | ;*****************************************************************
|
---|
15 | ;
|
---|
16 | STATUS(DFN,SDT,SDCL,SDSTS,SDCHKIN,SDCHKOUT,SDEIFN) ;Retrieve Appointment Status
|
---|
17 | ;
|
---|
18 | ; Input: DFN := IFN of Patient
|
---|
19 | ; SDT := Appointment Date/Time (FM Format)
|
---|
20 | ; SDCL := IFN of Clinic
|
---|
21 | ; SDSTS := Current VistA Appointment Status (Optional)
|
---|
22 | ; SDCHKIN := Appointment Check-In Date/Time (Optional)
|
---|
23 | ; SDCHKOUT := Appointment Check-Out Date/Time (Optional)
|
---|
24 | ; SDEIFN := Outpatient Encounter IFN for Appointment (Optional)
|
---|
25 | ; Output: Appoinment Status IFN ; Status Name ; Print Status ;
|
---|
26 | ; Check In Date/Time ; Check Out Date/Time ;
|
---|
27 | ; Admission Movement IFN
|
---|
28 | ; -1 if errors with DFN,SDT or SDCL
|
---|
29 | ;
|
---|
30 | ; Initialize Global Variables
|
---|
31 | N SDI,SDQUIT,SDCODE,SDSTSD,SDPSTS,SDINDCTR,SDAMVT,VADMVT,VAINDT
|
---|
32 | S SDQUIT=0
|
---|
33 | ;Validate parameters
|
---|
34 | F SDI="VDFN","FMDATE","VCLIN" Q:SDQUIT D @SDI
|
---|
35 | Q:SDQUIT -1
|
---|
36 | ; Set initial Status value, if no value set to NULL
|
---|
37 | S SDSTSD=$S($G(SDSTS)]"":$P($T(@SDSTS),";;",3),1:"")
|
---|
38 | ; No R appt status in original VistA code
|
---|
39 | S:$G(SDSTS)="R" SDSTSD=""
|
---|
40 | ; If Status is null check for non-count clinic
|
---|
41 | I $G(SDSTSD)="" S SDCODE=$$GETSTOP^SDAMA305($G(SDCL)) S:$P($G(SDCODE),"^",3)="Y" SDSTSD="NON-COUNT"
|
---|
42 | ;Get admission movement ifn
|
---|
43 | S VAINDT=$G(SDT) D ADM^VADPT2
|
---|
44 | ;Inpatient? (Check Status, Admission IFN?, Domicillary Ward?, Ward Location = "D"?)
|
---|
45 | I SDSTSD["INPATIENT",$S('+VADMVT:1,'$P(^DG(43,1,0),"^",21):0,1:$P($G(^DIC(42,+$P($G(^DGPM(VADMVT,0)),"^",6),0)),"^",3)="D") S SDSTSD=""
|
---|
46 | ; Determine Checked In/Out Indicator
|
---|
47 | S SDINDCTR=$S(+$G(SDCHKOUT):"CHECKED OUT",+$G(SDCHKIN):"CHECKED IN",SDSTSD]"":"",$G(SDT)>(DT+.2359):"FUTURE",1:"NO ACTION TAKEN") S:SDSTSD="" SDSTSD=SDINDCTR
|
---|
48 | I SDSTSD="NO ACTION TAKEN",$P($G(SDT),".")=DT,SDINDCTR'["CHECKED" S SDINDCTR="TODAY"
|
---|
49 | I SDSTSD="CHECKED OUT"!(SDSTSD="CHECKED IN"),SDT'<$$REQDT^SDM1A,'$P($G(^SCE(+$G(SDEIFN),0)),"^",7) S SDSTSD="NO ACTION TAKEN"
|
---|
50 | ; Determine PRINT STATUS
|
---|
51 | S SDPSTS=$S(SDSTSD=SDINDCTR!(SDINDCTR=""):SDSTSD,1:"")
|
---|
52 | I SDPSTS="" D
|
---|
53 | .I SDSTSD["INPATIENT",$P($G(^SC(SDCL,0)),U,17)'="Y",$P($G(^SCE(+$G(SDEIFN),0)),U,7)="" S SDPSTS=$P(SDSTSD," ")_"/ACT REQ" Q
|
---|
54 | .I SDSTSD="NO ACTION TAKEN",SDINDCTR="CHECKED OUT"!(SDINDCTR="CHECKED IN") S SDPSTS="ACT REQ/"_SDINDCTR Q
|
---|
55 | .S SDPSTS=$S(SDSTSD="NO ACTION TAKEN":SDSTSD,1:$P(SDSTSD," "))_"/"_SDINDCTR
|
---|
56 | I SDSTSD["INPATIENT",SDINDCTR="" D
|
---|
57 | .I SDT>(DT+.2359) S SDPSTS=$P(SDSTSD," ")_"/FUTURE" Q
|
---|
58 | .S SDPSTS=$P(SDSTSD," ")_"/NO ACT TAKN"
|
---|
59 | ;Get Appointment Status IFN
|
---|
60 | S SDAMVT=+$O(^SD(409.63,"AC",SDSTSD,0))
|
---|
61 | Q SDAMVT_";"_SDSTSD_";"_SDPSTS_";"_$G(SDCHKIN)_";"_$G(SDCHKOUT)_";"_+VADMVT
|
---|
62 | VDFN ; Verify for valid patient dfn
|
---|
63 | I $G(DFN)="" S SDQUIT=1
|
---|
64 | E I '$D(^DPT(DFN)) S SDQUIT=1
|
---|
65 | Q
|
---|
66 | VCLIN ; Verify for valid clinic dfn
|
---|
67 | I $G(SDCL)="" S SDQUIT=1
|
---|
68 | E I '$D(^SC(SDCL,0)) S SDQUIT=1
|
---|
69 | Q
|
---|
70 | FMDATE ;
|
---|
71 | ; Appointment Date must be a valid internal FileMan Format
|
---|
72 | N X,Y,%H,%T,%Y
|
---|
73 | S Y=$G(SDT) D DD^%DT I Y=-1 S SDQUIT=1
|
---|
74 | ; Appointment Date cannot be imprecise
|
---|
75 | I 'SDQUIT S X=$G(SDT) D H^%DTC I %H=0 S SDQUIT=1
|
---|
76 | Q
|
---|
77 | ;
|
---|
78 | ;LIST OF VISTA STATUS CODES /NEW DESCRIPTIONS /OLD DESCRIPTIONS
|
---|
79 | CC ;;CANCELLED BY CLINIC;;CANCELLED BY CLINIC
|
---|
80 | CCR ;;CANCELLED BY CLINIC & RESCHEDULED;;CANCELLED BY CLINIC & AUTO RE-BOOK
|
---|
81 | CP ;;CANCELLED BY PATIENT;;CANCELLED BY PATIENT
|
---|
82 | CPR ;;CANCELLED BY PATIENT & RESCHEDULED;;CANCELLED BY PATIENT & AUTO-REBOOK
|
---|
83 | R ;;SCHEDULED/KEPT;;
|
---|
84 | I ;;INPATIENT;;INPATIENT APPOINTMENT
|
---|
85 | NS ;;NO-SHOW;;NO-SHOW
|
---|
86 | NSR ;;NO-SHOW & RESCHEDULED;;NO-SHOW & AUTO RE-BOOK
|
---|
87 | NT ;;NO ACTION TAKEN;;NO ACTION TAKEN
|
---|