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

SDES2VVSJSON.m

Go to the documentation of this file.
  1. SDES2VVSJSON ;ALB/ANU - VISTA SCHEDULING RPC SDES2 GET INFO FOR VIDEO VISIT ; FEB 15,2024@11:25
  1. ;;5.3;Scheduling;**871**;Aug 13, 1993;Build 13
  1. ;;Per VHA Directive 6402, this routine should not be modified
  1. ;
  1. ; Documented API's and Integration Agreements
  1. ; -------------------------------------------
  1. ; Reference to $$GETS^DIQ,$$GETS1^DIQ in ICR #2056
  1. Q
  1. ; INPUT
  1. ;
  1. ; SDCONTEXT("ACHERON AUDIT ID") = Up to 40 Character unique ID number. Ex: 11d9dcc6-c6a2-4785-8031-8261576fca37
  1. ; SDCONTEXT("USER DUZ") = The DUZ of the user taking action in the calling application.
  1. ; SDCONTEXT("USER SECID") = The SECID of the user taking action in the calling application.
  1. ; SDINPUT("PATIENT IEN") = The DFN/IEN of the target patient from the calling application.
  1. ; SDINPUT("CLINIC IEN") = The IEN of the target clinic from the calling application.
  1. ; SDINPUT("APPT DATE TIME") = Appointment Date and Time.
  1. ;
  1. GETVVSMAKEINFO(JSON,SDCONTEXT,SDINPUT) ;Get info to make a Video Visit Web Service (VVS) call
  1. N ERRORS,SDRETURN,PARAMETERS,FDA,SDCHECKIN,IEN,ENTRY,SDUSER
  1. ;
  1. ; Validate SDCONTEXT
  1. ;
  1. D VALCONTEXT^SDES2VALCONTEXT(.ERRORS,.SDCONTEXT)
  1. I $D(ERRORS) S ERRORS("VVSMakeInfo",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
  1. ; Validate PARAMS
  1. S PARAMETERS=$$VALPARAMS(.SDINPUT,.ERRORS)
  1. I $D(ERRORS) S ERRORS("VVSMakeInfo",1)="" D BUILDJSON^SDES2JSON(.JSON,.ERRORS) Q
  1. ;
  1. S SDUSER=$S(+$G(SDCONTEXT("USER DUZ")):+SDCONTEXT("USER DUZ"),1:$G(DUZ))
  1. S PATIENTIEN=$P(PARAMETERS,"^")
  1. S CLINICIEN=$P(PARAMETERS,"^",2)
  1. S APPTDTTM=$P(PARAMETERS,"^",3)
  1. D GETVVSMAKE(.SDRETURN,PATIENTIEN,CLINICIEN,APPTDTTM)
  1. I '$D(SDRETURN) S SDRETURN("VVSMakeInfo",1)=""
  1. D BUILDJSON^SDES2JSON(.JSON,.SDRETURN)
  1. Q
  1. ;
  1. VALPARAMS(PARAMS,SDERRORS) ; Validate
  1. N STATUS,PATIENTIEN,CLINICIEN,APPTDTTM,SDVALID
  1. ;
  1. ; Validate Patient IEN
  1. S PATIENTIEN=$G(PARAMS("PATIENT IEN"))
  1. D VALFILEIEN^SDES2VALUTIL(.SDVALID,.SDERRORS,2,$G(PATIENTIEN),1,,66,2)
  1. I $G(SDVALID)'=1 Q 0
  1. ; Validate Clinic IEN
  1. S CLINICIEN=$G(PARAMS("CLINIC IEN"))
  1. D VALFILEIEN^SDES2VALUTIL(.SDVALID,.SDERRORS,44,$G(CLINICIEN),1,,67,19)
  1. I $G(SDVALID)'=1 Q 0
  1. ; Validate Appointment date and time
  1. S APPTDTTM=$G(PARAMS("APPT DATE TIME"))
  1. S APPTDTTM=$$VALISODTTM^SDES2VALISODTTM(.SDERRORS,$G(APPTDTTM),$G(CLINICIEN),1,76,77)
  1. ;
  1. Q:$D(SDERRORS) 0
  1. Q PATIENTIEN_"^"_CLINICIEN_"^"_APPTDTTM
  1. ;
  1. GETVVSMAKE(SDRETURN,PATIENTIEN,CLINICIEN,APPTDTTM) ;GET INFO TO MAKE A VIDEO VISIT WEB SERVICE (VVS) CALL
  1. ;INPUT:
  1. ; PATIENTIEN (Patient IEN)
  1. ; CLINICIEN (Clinic IEN)
  1. ; APPTDTTM - Appointment date and time external format
  1. ;
  1. ;RETURN PARMETER:
  1. ; Field List:
  1. ; (1) Patient Info
  1. ; (2) Default Provider Info
  1. ; (3) System Info
  1. ;
  1. N ERRPOP,ERR,ERRMSG,SDESI,VVSPATIENT,VVSPROVIDER,PROVIDERINFO,VVSSYSTEMINFO,PATINFO
  1. S SDESI=0
  1. S SDESI=$G(SDESI,0),ERR=""
  1. S (VVSPATIENT,VVSPROVIDER,PROVIDERINFO,VVSSYSTEMINFO)=""
  1. S ERRPOP=0,SDESI=0,ERRMSG=""
  1. ; Build VVS info
  1. S SDRETURN("VVSMakeInfo","Appointment","ApptDtTm")=$$FMTISO^SDAMUTDT(APPTDTTM,CLINICIEN)
  1. S VVSPATIENT=""
  1. D GETVVSPATIENT(.VVSPATIENT,PATIENTIEN)
  1. I VVSPATIENT'="" D
  1. .S SDESI=1
  1. .S SDRETURN("VVSMakeInfo","Patient","IEN")=$P(VVSPATIENT,"^",1)
  1. .S SDRETURN("VVSMakeInfo","Patient","DateOfBirth")=$P(VVSPATIENT,"^",2)
  1. .S SDRETURN("VVSMakeInfo","Patient","FirstName")=$P(VVSPATIENT,"^",3)
  1. .S SDRETURN("VVSMakeInfo","Patient","LastName")=$P(VVSPATIENT,"^",4)
  1. .S SDRETURN("VVSMakeInfo","Patient","SSN")=$P(VVSPATIENT,"^",5)
  1. .S SDRETURN("VVSMakeInfo","Patient","Email")=$P(VVSPATIENT,"^",6)
  1. .S SDRETURN("VVSMakeInfo","Patient","HomePhone")=$P(VVSPATIENT,"^",7)
  1. .S SDRETURN("VVSMakeInfo","Patient","CellPhone")=$P(VVSPATIENT,"^",8)
  1. .S SDRETURN("VVSMakeInfo","Patient","ICN")=$P(VVSPATIENT,"^",9)
  1. .S SDRETURN("VVSMakeInfo","Patient","ZipCode")=$P(VVSPATIENT,"^",10)
  1. D GETDPROIEN(.PROVIDERIEN,CLINICIEN)
  1. D GETPROINFO(.PROVIDERINFO,PROVIDERIEN)
  1. I PROVIDERINFO'="" D
  1. .S SDESI=1
  1. .S SDRETURN("VVSMakeInfo","Provider","IEN")=$P(PROVIDERINFO,"^",1)
  1. .S SDRETURN("VVSMakeInfo","Provider","Name")=$P(PROVIDERINFO,"^",2)
  1. .S SDRETURN("VVSMakeInfo","Provider","Email")=$P(PROVIDERINFO,"^",3)
  1. .S SDRETURN("VVSMakeInfo","Provider","Cell")=$P(PROVIDERINFO,"^",4)
  1. D GETSYSTEMINFO(.VVSSYSTEMINFO,CLINICIEN)
  1. I VVSSYSTEMINFO'="" D
  1. .S SDESI=1
  1. .S SDRETURN("VVSMakeInfo","SystemInfo","StationID")=$P(VVSSYSTEMINFO,"^",1)
  1. .S SDRETURN("VVSMakeInfo","SystemInfo","FacilityName")=$P(VVSSYSTEMINFO,"^",2)
  1. .S SDRETURN("VVSMakeInfo","SystemInfo","TimeZone")=$P(VVSSYSTEMINFO,"^",3)
  1. .S SDRETURN("VVSMakeInfo","SystemInfo","TimeZoneException")=$P(VVSSYSTEMINFO,"^",4)
  1. .S SDRETURN("VVSMakeInfo","SystemInfo","Offset")=$P(VVSSYSTEMINFO,"^",5)
  1. .S SDRETURN("VVSMakeInfo","SystemInfo","OffsetDST")=$P(VVSSYSTEMINFO,"^",6)
  1. Q
  1. ;
  1. GETVVSPATIENT(RETURN,PATIENTIEN) ;GET VIDEO VISIT SERVICE (VVS) PATIENT
  1. Q:PATIENTIEN=""
  1. N NAME,LASTNAME,FIRSTNAME,DOB,SSN,EMAIL,HOMEPHONE,CELLPHONE,ICN,ZIPCODE
  1. S NAME=$$GET1^DIQ(2,PATIENTIEN,.01)
  1. S LASTNAME=$P(NAME,",",1)
  1. S FIRSTNAME=$P($P(NAME,",",2)," ",1)
  1. S DOB=$$GET1^DIQ(2,PATIENTIEN,.03)
  1. S SSN=$$LAST4SSN^SDESINPUTVALUTL(PATIENTIEN) ;SSN
  1. S EMAIL=$$GET1^DIQ(2,PATIENTIEN,.133)
  1. S HOMEPHONE=$$GET1^DIQ(2,PATIENTIEN,.131)
  1. S CELLPHONE=$$GET1^DIQ(2,PATIENTIEN,.134)
  1. S ICN=$$GETICN^MPIF001(PATIENTIEN)
  1. S ZIPCODE=$$GET1^DIQ(2,PATIENTIEN,.116)
  1. S RETURN=PATIENTIEN_"^"_DOB_"^"_FIRSTNAME_"^"_LASTNAME_"^"_SSN_"^"_EMAIL_"^"_HOMEPHONE_"^"_CELLPHONE_"^"_ICN_"^"_ZIPCODE
  1. Q
  1. ;
  1. GETDPROIEN(RETURN,CLINICIEN) ;GET THE IEN FOR THE DEFAULT PROVIDER ASSIGNED TO A CLINIC
  1. Q:CLINICIEN=""
  1. N SDFIELDS,PROVREC
  1. S (PROVIDERIEN,PROVREC)="",SDFIELDS="2600*"
  1. K SDDATA,SDMSG
  1. D GETS^DIQ(44,CLINICIEN_",",SDFIELDS,"IE","SDDATA","SDMSG")
  1. F S PROVREC=$O(SDDATA(44.1,PROVREC)) Q:PROVREC="" D Q:$G(PROVIDERIEN)
  1. . I $G(SDDATA(44.1,PROVREC,.02,"E"))="YES" S PROVIDERIEN=$G(SDDATA(44.1,PROVREC,.01,"I"))
  1. S RETURN=PROVIDERIEN
  1. Q
  1. ;
  1. GETPROINFO(RETURN,PROVIDERIEN) ;GET PROVIDER INFO REQUIRED TO MAKE VIDEO VISIT SERVICE (VVS) CALL
  1. Q:PROVIDERIEN=""
  1. N NAME,EMAIL,CELL,TITLE,PROVCLASS
  1. S NAME=$$GET1^DIQ(200,PROVIDERIEN,.01)
  1. S EMAIL=$$GET1^DIQ(200,PROVIDERIEN,.151)
  1. S CELL=$$GET1^DIQ(200,PROVIDERIEN,.133)
  1. S TITLE=$$GET1^DIQ(200,PROVIDERIEN,8,"E")
  1. S PROVCLASS=$$GET1^DIQ(200,PROVIDERIEN,53.5,"E")
  1. S RETURN=PROVIDERIEN_"^"_NAME_"^"_EMAIL_"^"_CELL_"^"_TITLE_"^"_PROVCLASS
  1. S ^TMP(DUZ,"SDECPROIEN")=PROVIDERIEN
  1. Q
  1. ;
  1. GETSYSTEMINFO(RETURN,CLINICIEN) ;GET SYSTEM INFO NEED TO CALL MAKE VIDEO VISIT SERVICE (VVS) CALL
  1. N FACILITYSITECODE,FACILITYNAME,SYSTEMTIMEZONEI,SDDIV,CLINICSITECODE,DFTINSTITUTION,OFFSET,TIMEZONEEXECPT
  1. N OFFSETDST,SYSTEMTIMEZONEE,TIMEFRAMEIEN,TIMEFRAMEARY,POP,X,EXECPTFLG
  1. S POP=0,(OFFSET,OFFSETDST,EXECPTFLG)=""
  1. ;Removed, want site from clinic not user S FACILITYSITECODE=DUZ(2)
  1. S SDDIV=$$GET1^DIQ(44,CLINICIEN_",",3.5,"I")
  1. S CLINICSITECODE=$$GET1^DIQ(40.8,SDDIV_",",.07,"I")
  1. S SYSTEMTIMEZONEE=$$GET1^DIQ(4,CLINICSITECODE,800,"E")
  1. S SYSTEMTIMEZONEI=$$GET1^DIQ(4,CLINICSITECODE,800,"I")
  1. S EXECPTFLG=$$GET1^DIQ(4,CLINICSITECODE,802,"I")
  1. S TIMEZONEEXECPT=$S(EXECPTFLG=0:1,1:0) ;there is a timezone exception if the value = 0
  1. F X=1:1:3 D Q:POP
  1. .S TIMEFRAMEIEN=X_","_SYSTEMTIMEZONEI_","
  1. .D GETS^DIQ(1.711,TIMEFRAMEIEN,".01;.02","IE","TIMEFRAMEARY","SDMSG") ;Data from WORLD TIMEZONE file
  1. .I '$D(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.01)) S POP=1 Q
  1. .I $G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.01,"I"))="SST" S OFFSET=$G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.02,"E"))
  1. .I $G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.01,"I"))="DST" S OFFSETDST=$G(TIMEFRAMEARY(1.711,TIMEFRAMEIEN,.02,"E"))
  1. S DFTINSTITUTION=$$GET1^DIQ(8989.3,1,217,"I")
  1. S FACILITYNAME=$$GET1^DIQ(4,DFTINSTITUTION,.01)
  1. S FACILITYSITECODE=$$DEFAULTSTATION^SDECDUZ()
  1. S RETURN=FACILITYSITECODE_"^"_FACILITYNAME_"^"_SYSTEMTIMEZONEE_"^"_TIMEZONEEXECPT_"^"_OFFSET_"^"_OFFSETDST
  1. Q
  1. ;