Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: SDAMA308

SDAMA308.m

Go to the documentation of this file.
  1. SDAMA308 ;BPOIFO/JFW-Filter API Appointment Statuses; 5/10/04 8:13am [5/17/04 10:14am]
  1. ;;5.3;Scheduling;**301,406,1015**;13 Aug 1993;Build 21
  1. ;
  1. ;** GET APPOINTMENT STATUS **
  1. ; - Replaces $$STATUS^SDAM1 -
  1. ;*****************************************************************
  1. ; CHANGE LOG
  1. ;
  1. ; DATE PATCH DESCRIPTION
  1. ;-------- ---------- -----------------------------------------
  1. ;12/04/03 SD*5.3*301 ROUTINE COMPLETED
  1. ;10/11/06 SD*5.3*406 PRINT STATUS TEXT UPDATED
  1. ;
  1. ;*****************************************************************
  1. ;
  1. STATUS(DFN,SDT,SDCL,SDSTS,SDCHKIN,SDCHKOUT,SDEIFN) ;Retrieve Appointment Status
  1. ;
  1. ; Input: DFN := IFN of Patient
  1. ; SDT := Appointment Date/Time (FM Format)
  1. ; SDCL := IFN of Clinic
  1. ; SDSTS := Current VistA Appointment Status (Optional)
  1. ; SDCHKIN := Appointment Check-In Date/Time (Optional)
  1. ; SDCHKOUT := Appointment Check-Out Date/Time (Optional)
  1. ; SDEIFN := Outpatient Encounter IFN for Appointment (Optional)
  1. ; Output: Appoinment Status IFN ; Status Name ; Print Status ;
  1. ; Check In Date/Time ; Check Out Date/Time ;
  1. ; Admission Movement IFN
  1. ; -1 if errors with DFN,SDT or SDCL
  1. ;
  1. ; Initialize Global Variables
  1. N SDI,SDQUIT,SDCODE,SDSTSD,SDPSTS,SDINDCTR,SDAMVT,VADMVT,VAINDT
  1. S SDQUIT=0
  1. ;Validate parameters
  1. F SDI="VDFN","FMDATE","VCLIN" Q:SDQUIT D @SDI
  1. Q:SDQUIT -1
  1. ; Set initial Status value, if no value set to NULL
  1. S SDSTSD=$S($G(SDSTS)]"":$P($T(@SDSTS),";;",3),1:"")
  1. ; No R appt status in original VistA code
  1. S:$G(SDSTS)="R" SDSTSD=""
  1. ; If Status is null check for non-count clinic
  1. I $G(SDSTSD)="" S SDCODE=$$GETSTOP^SDAMA305($G(SDCL)) S:$P($G(SDCODE),"^",3)="Y" SDSTSD="NON-COUNT"
  1. ;Get admission movement ifn
  1. S VAINDT=$G(SDT) D ADM^VADPT2
  1. ;Inpatient? (Check Status, Admission IFN?, Domicillary Ward?, Ward Location = "D"?)
  1. 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=""
  1. ; Determine Checked In/Out Indicator
  1. 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
  1. I SDSTSD="NO ACTION TAKEN",$P($G(SDT),".")=DT,SDINDCTR'["CHECKED" S SDINDCTR="TODAY"
  1. I SDSTSD="CHECKED OUT"!(SDSTSD="CHECKED IN"),SDT'<$$REQDT^SDM1A,'$P($G(^SCE(+$G(SDEIFN),0)),"^",7) S SDSTSD="NO ACTION TAKEN"
  1. ; Determine PRINT STATUS
  1. S SDPSTS=$S(SDSTSD=SDINDCTR!(SDINDCTR=""):SDSTSD,1:"")
  1. I SDPSTS="" D
  1. .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
  1. .I SDSTSD="NO ACTION TAKEN",SDINDCTR="CHECKED OUT"!(SDINDCTR="CHECKED IN") S SDPSTS="ACT REQ/"_SDINDCTR Q
  1. .S SDPSTS=$S(SDSTSD="NO ACTION TAKEN":SDSTSD,1:$P(SDSTSD," "))_"/"_SDINDCTR
  1. I SDSTSD["INPATIENT",SDINDCTR="" D
  1. .I SDT>(DT+.2359) S SDPSTS=$P(SDSTSD," ")_"/FUTURE" Q
  1. .S SDPSTS=$P(SDSTSD," ")_"/NO ACT TAKN"
  1. ;Get Appointment Status IFN
  1. S SDAMVT=+$O(^SD(409.63,"AC",SDSTSD,0))
  1. Q SDAMVT_";"_SDSTSD_";"_SDPSTS_";"_$G(SDCHKIN)_";"_$G(SDCHKOUT)_";"_+VADMVT
  1. VDFN ; Verify for valid patient dfn
  1. I $G(DFN)="" S SDQUIT=1
  1. E I '$D(^DPT(DFN)) S SDQUIT=1
  1. Q
  1. VCLIN ; Verify for valid clinic dfn
  1. I $G(SDCL)="" S SDQUIT=1
  1. E I '$D(^SC(SDCL,0)) S SDQUIT=1
  1. Q
  1. FMDATE ;
  1. ; Appointment Date must be a valid internal FileMan Format
  1. N X,Y,%H,%T,%Y
  1. S Y=$G(SDT) D DD^%DT I Y=-1 S SDQUIT=1
  1. ; Appointment Date cannot be imprecise
  1. I 'SDQUIT S X=$G(SDT) D H^%DTC I %H=0 S SDQUIT=1
  1. Q
  1. ;
  1. ;LIST OF VISTA STATUS CODES /NEW DESCRIPTIONS /OLD DESCRIPTIONS
  1. CC ;;CANCELLED BY CLINIC;;CANCELLED BY CLINIC
  1. CCR ;;CANCELLED BY CLINIC & RESCHEDULED;;CANCELLED BY CLINIC & AUTO RE-BOOK
  1. CP ;;CANCELLED BY PATIENT;;CANCELLED BY PATIENT
  1. CPR ;;CANCELLED BY PATIENT & RESCHEDULED;;CANCELLED BY PATIENT & AUTO-REBOOK
  1. R ;;SCHEDULED/KEPT;;
  1. I ;;INPATIENT;;INPATIENT APPOINTMENT
  1. NS ;;NO-SHOW;;NO-SHOW
  1. NSR ;;NO-SHOW & RESCHEDULED;;NO-SHOW & AUTO RE-BOOK
  1. NT ;;NO ACTION TAKEN;;NO ACTION TAKEN