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

SDES2GETSTATUS.m

Go to the documentation of this file.
  1. SDES2GETSTATUS ;ALB/LAB,BWF - VISTA CALL TO GET STATUS; JUL 22, 2024
  1. ;;5.3;Scheduling;**871,886**;Aug 13, 1993;Build 13
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. Q
  1. ;
  1. ; This is a rewrite of SDEC50 code - rewritten by BWF and then pulled in by LAB
  1. APPTSTATUS(APPTIEN,CLINIEN) ;Get current status for an entry in the SDEC APPOINTMENT file in the style of STATUS^SDAM1
  1. ;APPTIEN (R)- IEN of entry in the SDEC APPOINTMENT file (#409.84)
  1. ;CLINIEN (O)- IEN of entry in the HOSPITAL LOCATION file (#44); non-count will not be checked via clinic if not passed in (can check via OE)
  1. N STATUS,OUTENCIEN,DFN,APPTDTTM,VAINDT,VADMVT,CHKIO,RET,OESTS,CANCELREASON,CANCELREASONTYP,CANCELSTATUS,STATUSDATE
  1. N APPTIENS,ORIGSTATUSINT,NOSHOW,CANCELDTTM,CHECKOUTDT,NONCOUNT,CKOUTCOMP,APPTDATA,OESTATUS,CHECKINDT
  1. S APPTIENS=APPTIEN_","
  1. D GETS^DIQ(409.84,APPTIENS,".01;.03;.05;.1;.101;.12;.122;.14;.17","IE","APPTDATA","APPTERR")
  1. S APPTDTTM=$G(APPTDATA(409.84,APPTIENS,.01,"I"))
  1. S DFN=$G(APPTDATA(409.84,APPTIENS,.05,"I"))
  1. S OUTENCIEN=$$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",21,"I")
  1. S CHKIO=""
  1. ;
  1. ;set initial status value ; non-count clinic?
  1. ;
  1. S ORIGSTATUSINT=$G(APPTDATA(409.84,APPTIENS,.17,"I"))
  1. S STATUS=$G(APPTDATA(409.84,APPTIENS,.17,"E"))
  1. ;
  1. ; initial status date is set to the cancelled date/time
  1. ;
  1. S (STATUSDATE,CANCELDTTM)=$G(APPTDATA(409.84,APPTIENS,.12,"I"))
  1. S NONCOUNT=$$GET1^DIQ(44,CLINIEN,2502,"I")
  1. I STATUS="",CLINIEN,NONCOUNT="Y" S STATUS="NON-COUNT" ;check for non-count clinic don't crash if resource/clinic not available
  1. I CLINIEN'="",STATUS="NO ACTION TAKEN",OUTENCIEN'="" S STATUS=""
  1. ;
  1. ;no show?
  1. ;
  1. S NOSHOW=$G(APPTDATA(409.84,APPTIENS,.1,"I"))
  1. I NOSHOW=1 D
  1. . I STATUSDATE]"" D Q ;handle cancel after no-show -- appt STATUS doesn't get updated with cxl but pt status does; 745 STATUSDATE
  1. . .S CANCELREASON=$G(APPTDATA(409.84,APPTIENS,.122,"I"))
  1. . .; Line below revised to use appointment status (field .17) to calculate status when reason is missing
  1. . . I CANCELREASON="" S STATUS=$S(ORIGSTATUSINT="C":"CANCELLED BY CLINIC",ORIGSTATUSINT="PC":"CANCELLED BY PATIENT",1:"CANCELLED") Q
  1. . . S CANCELREASONTYP=$$GET1^DIQ(409.2,CANCELREASON,2,"I")
  1. . . I CANCELREASONTYP="C" S STATUS="CANCELLED BY CLINIC" Q
  1. . . I CANCELREASONTYP="P" S STATUS="CANCELLED BY PATIENT" Q
  1. . . S CANCELSTATUS=$$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",100)
  1. . . I CANCELSTATUS["CANCELLED" S STATUS=CANCELSTATUS Q
  1. . . S STATUS="CANCELLED BY CLINIC" ;default to clinic if information is lost
  1. . S STATUS="NO-SHOW",STATUSDATE=$G(APPTDATA(409.84,APPTIENS,.101,"I"))
  1. I STATUS=""!(ORIGSTATUSINT="I"),$$INP^SDAM2(DFN,APPTDTTM)="I" D
  1. . S STATUS=$S(CANCELDTTM="":"INPATIENT",$$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",3,"I")="PC":"CANCELLED BY PATIENT",1:"CANCELLED BY CLINIC")
  1. N SDNEXTIEN
  1. S SDNEXTIEN=$O(^SDEC(409.84,"APTDT",DFN,APPTDTTM,APPTIEN))
  1. I +$G(SDNEXTIEN),(ORIGSTATUSINT="I"),(CANCELDTTM'="") S STATUS="INPATIENT/CANCELLED"
  1. Q:STATUS="INPATIENT/CANCELLED" STATUS
  1. S VAINDT=APPTDTTM D ADM^VADPT2 ;ADM^VADPT2 assumes VAINDT and returns in VADMVT
  1. ;
  1. ; Reference to DOMICILIARY WARDS IN MAS PARAMETERS IA #483
  1. ; Reference to SERIVCE in WARD LOCATION - IA #1377
  1. ; Reference to WARD LOCATION in PATIENT MOVEMENT - IA #358
  1. ;
  1. I STATUS["INPATIENT",$S('VADMVT:1,'$$GET1^DIQ(43,1,16,"I"):0,1:$$GET1^DIQ(42,+$$GET1^DIQ(405,VADMVT,.06,"I"),.03,"I")="D") S STATUS=""
  1. ; -- determine ci/co indicator
  1. S CHECKINDT=$G(APPTDATA(409.84,APPTIENS,.03,"I"))
  1. S CHECKOUTDT=$G(APPTDATA(409.84,APPTIENS,.14,"I"))
  1. S CHKIO=$S(CHECKOUTDT]"":"CHECKED OUT",CHECKINDT]"":"CHECKED IN",APPTDTTM>(DT+.2400):"FUTURE",1:"NO ACTION TAKEN")
  1. ;
  1. ; Look for check-in time in the Location file (#44) if check-in/out indicator is NO ACTION TAKEN.
  1. ;
  1. I CHKIO="NO ACTION TAKEN",CLINIEN'="" D
  1. . N SFIEN S SFIEN=$$FIND^SDAM2(DFN,APPTDTTM,CLINIEN) I SFIEN,$$GET1^DIQ(44.003,SFIEN_","_APPTDTTM_","_CLINIEN_",",309)'="" S CHKIO="CHECKED IN" ;
  1. S:STATUS="" STATUS=CHKIO
  1. ;If NO ACTION TAKEN, If cancelled in Patient(by SDCANCEL)
  1. I STATUS'["CANCELLED" D ;
  1. . I $$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",.01,"I")'=CLINIEN Q ;If appointment does not match, leave status alone.
  1. . S STATUS=$S($$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",3,"I")="PC":"CANCELLED BY PATIENT",$$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",3,"I")="C":"CANCELLED BY CLINIC",1:STATUS)
  1. ;
  1. I (STATUS="NO ACTION TAKEN"),($P(APPTDTTM,".")=DT),(CHKIO'["CHECKED") S CHKIO="TODAY"
  1. ; -- determine print status
  1. I STATUS["CANCELLED" Q STATUS_"^"_STATUSDATE
  1. S RET=$S(STATUS=CHKIO!(CHKIO=""):STATUS,1:"")
  1. S CKOUTCOMP=$$GET1^DIQ(409.68,OUTENCIEN,.07,"I")
  1. I RET="" D
  1. . I STATUS["INPATIENT",$P(APPTDTTM,".",1)>DT S RET=$P(STATUS," ",1)_"/FUTURE" Q
  1. . I (STATUS["INPATIENT"),(CLINIEN]""),(NONCOUNT'="Y"),OUTENCIEN="" S RET=$P(STATUS," ",1)_"/ACT REQ" Q ;no outpatient encounter for inpatient
  1. . I (STATUS["INPATIENT"),(CLINIEN]""),(NONCOUNT'="Y"),(CKOUTCOMP="") S RET=$P(STATUS," ",1)_"/ACT REQ" Q
  1. . I (STATUS="NO ACTION TAKEN"),((CHKIO="CHECKED OUT")!(CHKIO="CHECKED IN")) S RET="ACT REQ/"_CHKIO D Q
  1. . . I (OUTENCIEN),(CKOUTCOMP) S RET="CHECKED OUT"
  1. . I ((STATUS="NO-SHOW")!(STATUS="NON-COUNT")) S RET=STATUS Q:CHKIO="NO ACTION TAKEN"
  1. . S RET=STATUS_"/"_CHKIO
  1. I STATUS["INPATIENT",((CHKIO="")!(CHKIO="NO ACTION TAKEN")) D
  1. . I APPTDTTM>(DT+.2359) S RET=$P(STATUS," ")_"/FUTURE" Q
  1. . S RET=$P(STATUS," ")_"/NO ACT TAKN"
  1. I STATUS["INPATIENT" Q RET
  1. I STATUS["NO-SHOW" Q RET_"^"_STATUSDATE ;745
  1. I ($G(OUTENCIEN)),($D(^SCE(OUTENCIEN,0))) D
  1. . S OESTATUS=$$GET1^DIQ(409.68,OUTENCIEN,.12,"E")
  1. . I $G(OESTATUS)="NON-COUNT" D Q
  1. . . I CHECKOUTDT S RET="NON-COUNT/CHECKED OUT" Q
  1. . . I CHECKINDT S RET="NON-COUNT/CHECKED IN"
  1. . I $G(OESTATUS)="CHECKED OUT" S RET="CHECKED OUT" Q
  1. . I CHECKOUTDT S RET="ACT REQ/CHECKED OUT" D Q
  1. . . I ($G(OESTATUS)=""),(CKOUTCOMP) S RET="CHECKED OUT"
  1. . I CHECKINDT S RET="ACT REQ/CHECKED IN"
  1. Q RET
  1. ;