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

SDESCHECKIN.m

Go to the documentation of this file.
  1. SDESCHECKIN ;ALB/LAB - SDES VISTA SCHEDULING RPCS CHECK IN APPOINTMENT ;Sep 14,2022@16:15
  1. ;;5.3;Scheduling;**827**;Aug 13, 1993;Build 10
  1. ;
  1. Q
  1. ;
  1. CHECKIN(SDRETURN,SDAPPTIEN,SDCHECKINDTTIM,SDPROVIDER) ;Check in appointment
  1. ;
  1. N BSDVSTN,EMSG,ERRORS,RETURN
  1. N SDECNOD,DFN,SDECSTART,DIK,DA,SDECID,SDECI,SDECIENS,SDECVEN
  1. N SDECNOEV,SDECCAN,SDRESOURCE,%DT,X,Y
  1. S SDECNOEV=1 ;Don't execute protocol
  1. ;
  1. D VALIDATEAPPT(.ERRORS,.SDAPPTIEN)
  1. D:'$D(ERRORS) ASSIGNCLININFO(SDAPPTIEN,.SDCLINICIEN,.SDCLINSTOP) ;need clinic ien for checkin time conversion
  1. D:'$D(ERRORS) VALIDATECHKINDT(.ERRORS,.SDCHECKINDTTIM,SDAPPTIEN,SDCLINICIEN)
  1. D VALIDATEPROV(.ERRORS,.SDPROVIDER)
  1. I $D(ERRORS) M RETURN=ERRORS
  1. I '$D(ERRORS) D
  1. . D PROCESSCHECKIN(SDAPPTIEN,SDPROVIDER,.ERRORS)
  1. I '$D(ERRORS) D
  1. . S RETURN("Checkin")="Checked in"
  1. D BUILDJSON^SDESBUILDJSON(.SDRETURN,.RETURN)
  1. Q
  1. ;
  1. VALIDATEAPPT(ERRORS,SDAPPTIEN) ;validate SDEC appointment ID
  1. ;invalid appointment ID is error 15
  1. I '$G(SDAPPTIEN) D ERRLOG^SDESJSON(.ERRORS,14) Q
  1. I '$D(^SDEC(409.84,SDAPPTIEN,0)) D ERRLOG^SDESJSON(.ERRORS,15)
  1. Q
  1. ;
  1. VALIDATECHKINDT(ERRORS,SDCHECKINDTTIM,SDAPPTIEN,SDCLINICIEN) ;validate checkin date/time (required)
  1. ; need to change to accept ISO 8601 date/time
  1. S SDCHECKINDTTIM=$G(SDCHECKINDTTIM)
  1. I SDCHECKINDTTIM="" D ERRLOG^SDESJSON(.ERRORS,21) Q
  1. S SDCHECKINDTTIM=$$ISOTFM^SDAMUTDT(SDCHECKINDTTIM,SDCLINICIEN)
  1. I SDCHECKINDTTIM=-1 D ERRLOG^SDESJSON(.ERRORS,22)
  1. Q
  1. ;
  1. ASSIGNCLININFO(SDAPPTIEN,SDCLINICIEN,SDCLINSTOP) ;
  1. S SDCLINICIEN=$$GET1^DIQ(409.831,$$GET1^DIQ(409.84,SDAPPTIEN,.07,"I"),.04,"I")
  1. S SDCLINSTOP=$$GET1^DIQ(44,SDCLINICIEN,8,"I")
  1. Q
  1. ;
  1. VALIDATEPROV(ERRORS,SDPROVIDER) ;validate provider (optional)
  1. S SDPROVIDER=$G(SDPROVIDER)
  1. I SDPROVIDER'="" I '$D(^VA(200,+SDPROVIDER,0)) D ERRLOG^SDESJSON(.ERRORS,54)
  1. Q
  1. ;
  1. PROCESSCHECKIN(SDAPPTIEN,SDPROVIDER,ERRORS) ;
  1. N DFN,SDECSTART,SDRESOURCE
  1. S DFN=$$GET1^DIQ(409.84,SDAPPTIEN,.05,"I") ; must use variable name DFN as it is needed to be defined for event logic.
  1. S SDECSTART=$$GET1^DIQ(409.84,SDAPPTIEN,.01,"I")
  1. S SDRESOURCE=$$GET1^DIQ(409.84,SDAPPTIEN,.07,"I")
  1. I SDRESOURCE]"",$D(^SDEC(409.831,SDRESOURCE,0)) D
  1. . S SDRESCLIN=$$GET1^DIQ(409.831,SDRESOURCE,.04,"I")
  1. . ;Hospital Location is required for CHECKIN
  1. . I 'SDRESCLIN]"",'$D(^SC(+SDRESCLIN,0)) D ERRLOG^SDESJSON(.ERRORS,342) Q
  1. . ;
  1. . ; Event driver "BEFORE" actions
  1. . ;
  1. . N SDATA,SDDA,SDCIHDL ;
  1. . S SDDA=$$FIND(DFN,SDECSTART,SDRESCLIN)
  1. . S SDATA=SDDA_U_DFN_U_SDECSTART_U_SDRESCLIN,SDCIHDL=$$HANDLE^SDAMEVT(1) ;
  1. . D BEFORE^SDAMEVT(.SDATA,DFN,SDECSTART,SDRESCLIN,SDDA,SDCIHDL) ;
  1. . ;
  1. . ; Checkin SDEC APPOINTMENT entry
  1. . ;
  1. . D SDECCHK(SDAPPTIEN,SDCHECKINDTTIM,SDPROVIDER) ; sets field .03 (Checkin), in file 409.84
  1. . D APCHK(SDRESCLIN,DFN,SDCHECKINDTTIM,SDECSTART)
  1. . ;
  1. . ; Event driver "AFTER" actions
  1. . ;
  1. . D AFTER^SDAMEVT(.SDATA,DFN,SDECSTART,SDRESCLIN,SDDA,SDCIHDL) ;
  1. . ;
  1. . ; Execute event driver. 4=check in (see #409.66), 2=non-interactive
  1. . ;
  1. . D EVT^SDAMEVT(.SDATA,4,2,SDCIHDL)
  1. . I $D(ERRORS) M RETURN=ERRORS
  1. ;
  1. Q
  1. ;
  1. SDECCHK(SDAPPTIEN,SDCHECKINDTTIM,SDPROVIDER) ;
  1. N SDECFDA,SDECMSG
  1. S SDECIENS=SDAPPTIEN_","
  1. S SDECFDA(409.84,SDECIENS,.03)=SDCHECKINDTTIM
  1. S SDECFDA(409.84,SDECIENS,.04)=$S(SDCHECKINDTTIM'="":$$NOW^XLFDT,1:"")
  1. S:$G(SDPROVIDER) SDECFDA(409.84,SDECIENS,.16)=SDPROVIDER
  1. D FILE^DIE("","SDECFDA","SDECMSG")
  1. Q
  1. ;
  1. FIND(DFN,APPTDTTM,CLINICIEN) ; -- return appt ifn for pat
  1. ; input: DFN := ifn of pat.
  1. ; APPTDTTM := appt d/t
  1. ; SDCL := ifn of clinic
  1. ; output: [returned] := ifn if pat has appt on date/time
  1. ;
  1. N CLNAPPTIEN,FND,APPTIEN
  1. S CLNAPPTIEN=99999
  1. S APPTIEN=0
  1. S FND=0
  1. F S CLNAPPTIEN=$O(^SC(CLINICIEN,"S",APPTDTTM,1,CLNAPPTIEN),-1) Q:('CLNAPPTIEN)!(FND) D
  1. . I $D(^SC(CLINICIEN,"S",APPTDTTM,1,CLNAPPTIEN,0)) D
  1. . . I DFN=+^SC(CLINICIEN,"S",APPTDTTM,1,CLNAPPTIEN,0) D
  1. . . . I $D(^DPT(+DFN,"S",APPTDTTM,0)) D
  1. . . . . I $$VALID(DFN,CLINICIEN,APPTDTTM,CLNAPPTIEN) D
  1. . . . . . S FND=1
  1. . . . . . S APPTIEN=CLNAPPTIEN
  1. Q APPTIEN
  1. ;
  1. APCHK(SDRESCLIN,DFN,SDCHECKINDTTIM,SDECSTART) ;
  1. ;Checkin appointment for patient DFN in clinic SDRESCLIN
  1. ;at time SDECSD
  1. N BSDMSG,SDECC
  1. S SDECC("PAT")=DFN
  1. S SDECC("HOS LOC")=SDRESCLIN
  1. S SDECC("CLINIC CODE")=SDCLINSTOP
  1. S SDECC("PROVIDER")=SDPROVIDER
  1. S SDECC("APPT DATE")=SDECSTART
  1. S SDECC("CDT")=SDCHECKINDTTIM
  1. S SDECC("USR")=DUZ
  1. ;Required by NEW API:
  1. S SDECC("SRV CAT")="A"
  1. S SDECC("TIME RANGE")=-1
  1. S SDECC("VISIT DATE")=SDCHECKINDTTIM
  1. S SDECC("SITE")=$G(DUZ(2))
  1. S SDECC("VISIT TYPE")="V"
  1. S SDECC("CLN")=SDECC("HOS LOC")
  1. S SDECC("ADT")=SDECC("APPT DATE")
  1. ;
  1. N SDECOUT
  1. D GETVISIT^SDECAPI4(.SDECC,.SDECOUT)
  1. Q
  1. ;
  1. VALID(DFN,CLINICIEN,APPTDTTM,SDDA) ; -- return valid appt. 1 for valid appt., 0 for not valid
  1. Q:($$GET1^DIQ(44.003,SDDA_","_APPTDTTM_","_CLINICIEN_",",310,"I")'="C") 1
  1. Q:($$GET1^DIQ(2.98,APPTDTTM_","_DFN_",",3,"I")["C") 1
  1. Q 0
  1. ;
  1. BUILDERROR(RESULT,JSONRETURN) ;
  1. NEW RETURNERROR
  1. M RETURNERROR=RESULT
  1. D BUILDJSON^SDESBUILDJSON(.JSONRETURN,.RETURNERROR)
  1. Q
  1. ;