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

SDESCKNSTEP.m

Go to the documentation of this file.
  1. SDESCKNSTEP ;ALB/BLB,TAW,MGD - VISTA SCHEDULING RPCS ;July 19, 2022
  1. ;;5.3;Scheduling;**788,790,792,800,805,807,819,820**;Aug 13, 1993;Build 10
  1. ;;Per VHA Directive 2004-038, this routine should not be modified;
  1. Q
  1. SETAPPTCKNSTEP(SDECY,IEN,STATUS,EAS) ; File check-in status and date/time in 409.843,.01/1
  1. N STATPOINTER,SIEN,DATETIME,FDA,SDCHECKIN
  1. I '$G(IEN) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,14),BUILDER Q
  1. I '$D(^SDEC(409.84,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,15),BUILDER Q ;invalid appt IEN
  1. I $G(STATUS)="" S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q
  1. I '$D(^SDEC(409.842,STATUS,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,37),BUILDER Q
  1. I $$GET1^DIQ(409.84,IEN,.17,"E")["CANCEL" S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,31),BUILDER Q ;appt status is "C" (canceled)
  1. S EAS=$TR($G(EAS),"^"," ")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. S SIEN=0,STATPOINTER=0
  1. F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN!(STATPOINTER=STATUS) D
  1. .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I")
  1. I STATPOINTER=STATUS S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,32),BUILDER Q ; duplicate status entry, will not file
  1. S DATETIME=$$NOW^XLFDT
  1. S FDA(409.843,"+1,"_IEN_",",.01)=STATUS
  1. S FDA(409.843,"+1,"_IEN_",",1)=DATETIME
  1. D UPDATE^DIE(,"FDA",,"ERR") K FDA
  1. S FDA(409.84,IEN_",",100)=$G(EAS)
  1. D FILE^DIE(,"FDA") K FDA
  1. I '$D(ERR) D Q
  1. .S SDCHECKIN("ApptCheckInSteps","FilingSuccess")=1 D BUILDER
  1. .I STATUS=6 D
  1. ..D CHECKIN(IEN)
  1. I $D(ERR) D ERRLOG^SDESJSON(.SDCHECKIN,36) D BUILDER
  1. Q
  1. ;
  1. CHECKIN(IEN) ;
  1. S DATETIME=$$NOW^XLFDT,DATETIME=$$FMTE^XLFDT(DATETIME)
  1. D CHECKIN^SDEC25(.SDECY,IEN,DATETIME,,,"FALSE",,"FALSE",,,"FALSE","FALSE")
  1. Q
  1. ;
  1. GETAPPTCKNSTEP(SDECY,IEN,STATUS,EAS) ; Get check-in status associated appointment IEN and passed in status
  1. N SDCHECKIN,SIEN,STATPOINTER,STAT,DATETIME
  1. I '$G(IEN) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,14),BUILDER Q
  1. I $G(STATUS)="" S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q
  1. I '$D(^SDEC(409.84,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,15),BUILDER Q ;invalid appt IEN
  1. S EAS=$G(EAS,"")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. ;
  1. S SIEN=0
  1. F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D
  1. .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I")
  1. .I STATPOINTER'=STATUS Q ; no match
  1. .S STAT=$$GET1^DIQ(409.842,STATPOINTER,.01,"E")
  1. .S DATETIME=$$GET1^DIQ(409.843,SIEN_","_IEN_",",1,"E"),DATETIME=$$FMTE^XLFDT(DATETIME)
  1. .S EAS=$$GET1^DIQ(409.84,IEN,100,"E")
  1. .D CKNBUILDER(STATPOINTER,STAT,DATETIME,"GETAPPTCKNSTEP")
  1. I '$D(SDCHECKIN("ApptCheckInSteps")) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,30) ;no status match found, will not pass back status
  1. D BUILDER
  1. Q
  1. GETAPPTCKNSTEPS(SDECY,IEN,EAS) ; Get a list of checkin statuses associated with an appointment IEN
  1. N SDCHECKIN,SIEN,STATPOINTER,STAT,DATETIME,NUM
  1. I '$G(IEN) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,14),BUILDER Q
  1. I '$D(^SDEC(409.84,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,15),BUILDER Q ;invalid appt IEN
  1. S EAS=$G(EAS,"")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. S SIEN=0,NUM=0
  1. F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D
  1. .S NUM=NUM+1
  1. .S STATPOINTER=$$GET1^DIQ(409.843,SIEN_","_IEN_",",.01,"I")
  1. .S STAT=$$GET1^DIQ(409.842,STATPOINTER,.01,"E")
  1. .S DATETIME=$$GET1^DIQ(409.843,SIEN_","_IEN_",",1,"E"),DATETIME=$$FMTE^XLFDT(DATETIME)
  1. .S EAS=$$GET1^DIQ(409.84,IEN,100,"E")
  1. .D CKNBUILDER(STATPOINTER,STAT,DATETIME,"GETAPPTCKNSTEPS")
  1. .D BUILDER
  1. I '$D(SDCHECKIN("ApptCheckInSteps")) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,33),BUILDER Q ;no statuses found, will not pass back list
  1. Q
  1. SETCKNSTEP(SDECY,STATUS,EAS) ;create new status entry in check-in step status file
  1. N FDA,SDCHECKIN,IEN,ENTRY
  1. I $G(STATUS)="" S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q
  1. I $L(STATUS)<3!($L(STATUS)>30) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,39),BUILDER Q
  1. I STATUS'?.E1A.E!(STATUS?1P.E) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,41),BUILDER Q
  1. S EAS=$G(EAS,"")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. S IEN=0,ENTRY=""
  1. F S IEN=$O(^SDEC(409.842,IEN)) Q:'IEN!(STATUS=ENTRY) D
  1. .S ENTRY=$$GET1^DIQ(409.842,IEN,.01,"E")
  1. I STATUS=ENTRY S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,32),BUILDER Q ; duplicate status entry, will not file
  1. S FDA(409.842,"+1,",.01)=STATUS
  1. D UPDATE^DIE(,"FDA",,"ERR") K FDA,ERR
  1. I '$D(ERR) S SDCHECKIN("CheckInSteps",0,"FilingSuccess")=1 D BUILDER Q
  1. I $D(ERR) D ERRLOG^SDESJSON(.SDCHECKIN,34),BUILDER
  1. Q
  1. EDITCKNSTEP(SDECY,IEN,STATUS,EAS) ; edit entry in check-in step status file
  1. N FDA,SDCHECKIN,ENTRY,SIEN
  1. I '$G(IEN) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,40),BUILDER Q
  1. I $G(STATUS)="" S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,38),BUILDER Q
  1. I STATUS'="@",$L(STATUS)<3!($L(STATUS)>30) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,39),BUILDER Q
  1. I STATUS'="@",STATUS'?.E1A.E!(STATUS?1P.E) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,41),BUILDER Q
  1. I '$D(^SDEC(409.842,IEN,0)) S SDCHECKIN("ApptCheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,37),BUILDER Q
  1. S EAS=$G(EAS,"")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. ;
  1. S SIEN=0,ENTRY=""
  1. F S SIEN=$O(^SDEC(409.842,SIEN)) Q:'SIEN!(STATUS=ENTRY) D
  1. .S ENTRY=$$GET1^DIQ(409.842,SIEN,.01,"E")
  1. I STATUS=ENTRY S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,32),BUILDER Q ; duplicate status entry, will not file
  1. S FDA(409.842,IEN_",",.01)=STATUS
  1. D FILE^DIE(,"FDA","ERR") K FDA
  1. I '$D(ERR) S SDCHECKIN("CheckInSteps",0,"FilingSuccess")=1 D BUILDER Q
  1. I $D(ERR) D ERRLOG^SDESJSON(.SDCHECKIN,35),BUILDER
  1. Q
  1. GETCKNSTEP(SDECY,IEN,EAS) ;get status from check-in step status file
  1. N SDCHECKIN,STATUS
  1. I '$G(IEN) S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,40),BUILDER Q
  1. S EAS=$G(EAS,"")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. S STATUS=$$GET1^DIQ(409.842,IEN,.01,"E")
  1. D CKNBUILDER(IEN,STATUS,"","GETCKNSTEP")
  1. I $G(STATUS)="" S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,37),BUILDER Q
  1. D BUILDER
  1. Q
  1. GETCKNSTEPS(SDECY,EAS) ;
  1. N SDCHECKIN,IEN,NUM
  1. S EAS=$G(EAS,"")
  1. I $L(EAS) S EAS=$$EASVALIDATE^SDESUTIL(EAS)
  1. I EAS=-1 S SDCHECKIN("CheckInSteps")="" D ERRLOG^SDESJSON(.SDCHECKIN,142),BUILDER Q
  1. S IEN=0,NUM=0
  1. F S IEN=$O(^SDEC(409.842,IEN)) Q:'IEN D
  1. .S NUM=NUM+1
  1. .S STATUS=$$GET1^DIQ(409.842,IEN,.01,"E")
  1. .D CKNBUILDER(IEN,STATUS,"","GETCKNSTEPS")
  1. .D BUILDER
  1. Q
  1. BUILDER ;
  1. D ENCODE^XLFJSON("SDCHECKIN","SDECY","ERR")
  1. Q
  1. CKNBUILDER(IEN,STATUS,DATETIME,TAG) ;
  1. ;single appt check-in step
  1. I $G(TAG)="GETAPPTCKNSTEP" D
  1. .S SDCHECKIN("ApptCheckInSteps","IEN")=$G(IEN)
  1. .S SDCHECKIN("ApptCheckInSteps","Status")=$G(STATUS)
  1. .S SDCHECKIN("ApptCheckInSteps","DateTime")=$G(DATETIME)
  1. .S SDCHECKIN("ApptCheckInSteps","EASTrackingNumber")=$G(EAS)
  1. I $G(TAG)="GETAPPTCKNSTEP",$D(SDCHECKIN("ApptCheckInSteps")) Q
  1. ;list of appt check-in steps
  1. I $G(TAG)="GETAPPTCKNSTEPS" D
  1. .S SDCHECKIN("ApptCheckInSteps",NUM,"IEN")=$G(IEN)
  1. .S SDCHECKIN("ApptCheckInSteps",NUM,"Status")=$G(STAT)
  1. .S SDCHECKIN("ApptCheckInSteps",NUM,"DateTime")=$G(DATETIME)
  1. .S SDCHECKIN("ApptCheckInSteps",NUM,"EASTrackingNumber")=$G(EAS)
  1. I $G(TAG)="GETAPPTCKNSTEPS",$D(SDCHECKIN("ApptCheckInSteps")) Q
  1. ;single check-in step
  1. I $G(TAG)="GETCKNSTEP" D
  1. .S SDCHECKIN("CheckInSteps","IEN")=$G(IEN)
  1. .S SDCHECKIN("CheckInSteps",0,"Status")=STATUS
  1. I $G(TAG)="GETCKNSTEP",$D(SDCHECKIN("CheckInSteps")) Q
  1. ;list of check-in steps
  1. I $G(TAG)="GETCKNSTEPS" D
  1. .S SDCHECKIN("CheckInSteps",NUM,"IEN")=$G(IEN)
  1. .S SDCHECKIN("CheckInSteps",NUM,"Status")=STATUS
  1. I $G(TAG)="GETCKNSTEPS",$D(SDCHECKIN("CheckInSteps")) Q
  1. Q
  1. ;
  1. HASCKNSTEP(IEN,STATUS) ;
  1. ; Function will confirm if a STATUS is on the Appointment IEN
  1. ; IEN - IEN from SDEC Appointment
  1. ; STATUS - IEN from SDEC CHECK-IN STEP STATUS
  1. N SIEN,RET
  1. S (SIEN,RET)=0
  1. F S SIEN=$O(^SDEC(409.84,IEN,3,SIEN)) Q:'SIEN D Q:RET
  1. .I STATUS=$P($G(^SDEC(409.84,IEN,3,SIEN,0)),"^",1) S RET=1
  1. Q RET
  1. ;
  1. LASTCKNSTEP(IEN) ;
  1. ; Function will return the last Check In Step on the Appointment IEN
  1. ; IEN - IEN from SDEC Appointment
  1. N SIEN,RET,STEP
  1. S (SIEN,RET)=""
  1. S SIEN=$O(^SDEC(409.84,IEN,3,9999999999),-1)
  1. IF +SIEN S STEP=$P($G(^SDEC(409.84,IEN,3,SIEN,0)),"^",1),RET=$$GET1^DIQ(409.842,STEP,.01,"E")
  1. Q RET