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

SDESRTVCLN.m

Go to the documentation of this file.
  1. SDESRTVCLN ;ALB/MGD,ANU - Get Clinic Info based on Clinic IEN ;July 19, 2022
  1. ;;5.3;Scheduling;**799,805,807,813,820,823**;Aug 13, 1993;Build 9
  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 is supported by IA #2056
  1. ; Reference to $$GETS1^DIQ is supported by IA #2056
  1. Q
  1. ;
  1. JSONCLNINFO(SDCLNJSON,SDCLNIEN,SDEAS) ;Get Clinic info
  1. ;INPUT - SDCLNIEN (Clinic IEN)
  1. ; - SDEAS [optional] - Enterprise Appointment Scheduling (EAS) Tracking Number associated to an appointment.
  1. ;RETURN PARAMETER:
  1. ; Clinic information from HOSPITAL LOCATION (#44) File. Data is in JSON format.
  1. ; Field List:
  1. ; (1) Clinic Name
  1. ; (2) Abbreviation
  1. ; (3) Patient Friendly Name
  1. ; (4) Clinic Meets at this Facility
  1. ; (5) ALLOW DIRECT PATIENT SCHEDULING?
  1. ; (6) DISPLAY CLIN APPT TO PATIENTS?
  1. ; (7) SERVICE
  1. ; (8) NON-COUNT CLINIC? (Y OR N)
  1. ; (9) DIVISION
  1. ; (10) STOP CODE NUMBER
  1. ; (11) DEFAULT APPOINTMENT TYPE
  1. ; (12) ADMINISTER INPATIENT MEDS?
  1. ; (13) TELEPHONE
  1. ; (14) REQUIRE X-RAY FILMS?
  1. ; (15) REQUIRE ACTION PROFILES?
  1. ; (16) NO SHOW LETTER
  1. ; (17) PRE-APPOINTMENT LETTER
  1. ; (18) CLINIC CANCELLATION LETTER
  1. ; (19) APPT. CANCELLATION LETTER
  1. ; (20) ASK FOR CHECK IN/OUT TIME
  1. ; (21) PROVIDER - This is a multiple
  1. ; (22) Flag indicating the provider is the default for the clinic
  1. ; (23) DEFAULT TO PC PRACTITIONER?
  1. ; (24) DIAGNOSIS - This is a multiple
  1. ; (25) Flag indicating the diagnosis is the default for the clinic
  1. ; (26) WORKLOAD VALIDATION AT CHK OUT
  1. ; (27) ALLOWABLE CONSECUTIVE NO-SHOWS
  1. ; (28) MAX # DAYS FOR FUTURE BOOKING
  1. ; (29) SCHEDULE ON HOLIDAYS?
  1. ; (30) CREDIT STOP CODE
  1. ; (31) PROHIBIT ACCESS TO CLINIC?
  1. ; (32) PHYSICAL LOCATION
  1. ; (33) PRINCIPAL Clinic
  1. ; (34) OVERBOOKS/DAY MAXIMUM
  1. ; (35) SPECIAL INSTRUCTIONS - This is a multiple
  1. ; (36) E-CHECKIN ALLOWED
  1. ; (37) PRE-CHECKIN ALLOWED
  1. ; (38) LENGTH OF APP'T
  1. ; (39) VARIABLE APP'NTMENT LENGTH
  1. ; (40) DISPLAY INCREMENTS PER HOUR
  1. ; (41) CHAR4
  1. ; (42) HOUR CLINIC DISPLAY BEGINS
  1. ; (43) TIMEZONE
  1. ; (44) INACTIVATE DATE
  1. ; (45) REACTIVATE DATE
  1. ;
  1. N SDCLNSREC,ERRPOP,ERR,ERRMSG,SDECI
  1. D INIT
  1. D VALIDATE
  1. I ERRPOP D BLDJSON Q
  1. D BLDCLNREC
  1. D BLDJSON
  1. Q
  1. ;
  1. INIT ; initialize values needed
  1. S SDECI=0
  1. S SDECI=$G(SDECI,0),ERR=""
  1. S ERRPOP=0,ERRMSG=""
  1. Q
  1. ;
  1. VALIDATE ; validate incoming parameters
  1. I SDCLNIEN="" D ERRLOG^SDESJSON(.SDCLNSREC,18) S ERRPOP=1 Q
  1. I SDCLNIEN'="" D
  1. .I '$D(^SC(SDCLNIEN,0)) D ERRLOG^SDESJSON(.SDCLNSREC,19) S ERRPOP=1
  1. ;validate EAS
  1. S SDEAS=$G(SDEAS,"")
  1. I $L(SDEAS) S SDEAS=$$EASVALIDATE^SDESUTIL(SDEAS)
  1. I SDEAS=-1 D ERRLOG^SDESJSON(.SDCLNSREC,142) S ERRPOP=1
  1. Q
  1. ;
  1. BLDJSON ;
  1. ;D ENCODE^SDESJSON(.SDCLNSREC,.SDCLNJSON,.ERR)
  1. D BUILDJSON^SDESBUILDJSON(.SDCLNJSON,.SDCLNSREC)
  1. K SDCLNSREC
  1. Q
  1. ;
  1. BLDCLNREC ;Build a list of Providers
  1. ;
  1. N SDFIELDS,SDDATA,SDMSG,SDX,SDC,TIMEZONE
  1. ;S SDFIELDS=".01;1;3.5;8;9;10;24;60;61;62;1914;2502;2504;2507;2802;99;2000;2000.5;2508;2509;2510;2511;2801;30;2001;2002;1918.5;2503;2500;1916;1918;20;21;1912;1913;1917"
  1. S SDFIELDS=".01;1;3.5;8;9;10;24;60;61;62;1914;2502;2504;2505;2506;2507;2802;99;2000;2000.5;2508;2509;2510;2511;2801;30;2001;2002;1918.5;2503;2500;1916;1918;20;21;1912;1913;1917"
  1. D GETS^DIQ(44,SDCLNIEN_",",SDFIELDS,"IE","SDDATA","SDMSG")
  1. S SDECI=SDECI+1
  1. S SDCLNSREC("Clinic","Name")=$G(SDDATA(44,SDCLNIEN_",",.01,"E")) ;Clinic Name
  1. S SDCLNSREC("Clinic","Abbreviation")=$G(SDDATA(44,SDCLNIEN_",",1,"E")) ;Clinic Abbreviation
  1. S SDCLNSREC("Clinic","PatientFriendlyName")=$G(SDDATA(44,SDCLNIEN_",",60,"E")) ;Patient Friendly Name
  1. S SDCLNSREC("Clinic","MeetsAtThisFacility")=$G(SDDATA(44,SDCLNIEN_",",2504,"E")) ;Clinic meets at this facility?
  1. S SDCLNSREC("Clinic","AllowPatScheduling")=$G(SDDATA(44,SDCLNIEN_",",61,"E")) ;Allow Direct Patient Scheduling?
  1. S SDCLNSREC("Clinic","DisplayClinicAppt")=$G(SDDATA(44,SDCLNIEN_",",62,"E")) ;DISPLAY CLIN APPT TO PATIENTS?
  1. S SDCLNSREC("Clinic","Service")=$G(SDDATA(44,SDCLNIEN_",",9,"E")) ;Service
  1. S SDCLNSREC("Clinic","NonCountClinic")=$G(SDDATA(44,SDCLNIEN_",",2502,"E")) ;NON-COUNT CLINIC? (Y OR N)
  1. S SDCLNSREC("Clinic","Division")=$G(SDDATA(44,SDCLNIEN_",",3.5,"E")) ;Division
  1. S SDCLNSREC("Clinic","StopCodeName")=$G(SDDATA(44,SDCLNIEN_",",8,"E")) ;Stop Code Name
  1. S SDCLNSREC("Clinic","StopCodeNum")=$G(SDDATA(44,SDCLNIEN_",",8,"I")) ;Stop Code Number
  1. S SDCLNSREC("Clinic","DefaultApptType")=$G(SDDATA(44,SDCLNIEN_",",2507,"E")) ;Default Appointment type
  1. S SDCLNSREC("Clinic","AdminInpatientMeds")=$G(SDDATA(44,SDCLNIEN_",",2802,"E")) ;ADMINISTER INPATIENT MEDS?
  1. S SDCLNSREC("Clinic","Telephone")=$G(SDDATA(44,SDCLNIEN_",",99,"E")) ;TELEPHONE
  1. S SDCLNSREC("Clinic","ReqXrayFilms")=$G(SDDATA(44,SDCLNIEN_",",2000,"E")) ;REQUIRE X-RAY FILMS?
  1. S SDCLNSREC("Clinic","ReqActionProfiles")=$G(SDDATA(44,SDCLNIEN_",",2000.5,"E")) ;REQUIRE ACTION PROFILES?
  1. S SDCLNSREC("Clinic","NoShowLetter")=$G(SDDATA(44,SDCLNIEN_",",2508,"E")) ;NO SHOW LETTER
  1. S SDCLNSREC("Clinic","NoShowLetterIEN")=$G(SDDATA(44,SDCLNIEN_",",2508,"I")) ;NO SHOW IEN
  1. S SDCLNSREC("Clinic","PreApptLetter")=$G(SDDATA(44,SDCLNIEN_",",2509,"E")) ;PRE-APPOINTMENT LETTER
  1. S SDCLNSREC("Clinic","CancelLetter")=$G(SDDATA(44,SDCLNIEN_",",2510,"E")) ;CLINIC CANCELLATION LETTER
  1. S SDCLNSREC("Clinic","ApptCancelLetter")=$G(SDDATA(44,SDCLNIEN_",",2511,"E")) ;APPT. CANCELLATION LETTER
  1. S SDCLNSREC("Clinic","CheckinCheckoutTime")=$G(SDDATA(44,SDCLNIEN_",",24,"E")) ;ASK FOR CHECK IN/OUT TIME
  1. ;S SDCLNSREC("Clinic","Provider")=$G(SDDATA(44,SDCLNIEN_",",.01,"E")) ;PROVIDER - This is a multiple
  1. S SDCLNSREC("Clinic","DefaultToPCPractitioner")=$G(SDDATA(44,SDCLNIEN_",",2801,"E")) ;DEFAULT TO PC PRACTITIONER?
  1. ;S SDCLNSREC("Clinic","Diagnosis")=$G(SDDATA(44,SDCLNIEN_",",.01,"E")) ;DIAGNOSIS - This is a multiple
  1. S SDCLNSREC("Clinic","WorkloadValidationCheckout")=$G(SDDATA(44,SDCLNIEN_",",30,"E")) ;WORKLOAD VALIDATION AT CHK OUT
  1. S SDCLNSREC("Clinic","AllowableConsecutiveNoShows")=$G(SDDATA(44,SDCLNIEN_",",2001,"E")) ;ALLOWABLE CONSECUTIVE NO-SHOWS
  1. S SDCLNSREC("Clinic","MaxDaysForFutureBooking")=$G(SDDATA(44,SDCLNIEN_",",2002,"E")) ;MAX # DAYS FOR FUTURE BOOKING
  1. S SDCLNSREC("Clinic","HolidaySchedule")=$G(SDDATA(44,SDCLNIEN_",",1918.5,"E")) ;SCHEDULE ON HOLIDAYS?
  1. S SDCLNSREC("Clinic","CreditStopCode")=$G(SDDATA(44,SDCLNIEN_",",2503,"E")) ;CREDIT STOP CODE
  1. S SDCLNSREC("Clinic","ProhibitAccessToClinic")=$G(SDDATA(44,SDCLNIEN_",",2500,"E")) ;PROHIBIT ACCESS TO CLINIC?
  1. S SDCLNSREC("Clinic","PhysicalLocation")=$G(SDDATA(44,SDCLNIEN_",",10,"E")) ;PHYSICAL LOCATION
  1. S SDCLNSREC("Clinic","Principal")=$G(SDDATA(44,SDCLNIEN_",",1916,"E")) ;PRINCIPAL Clinic
  1. S SDCLNSREC("Clinic","OverbooksPerDayMax")=$G(SDDATA(44,SDCLNIEN_",",1918,"E")) ;OVERBOOKS/DAY MAXIMUM
  1. S SDCLNSREC("Clinic","ECheckinAllowed")=$G(SDDATA(44,SDCLNIEN_",",20,"E")) ;E-CHECKIN ALLOWED
  1. S SDCLNSREC("Clinic","PreCheckinAllowed")=$G(SDDATA(44,SDCLNIEN_",",21,"E")) ;PRE-CHECKIN ALLOWED NO
  1. S SDCLNSREC("Clinic","LengthOfAppt")=$G(SDDATA(44,SDCLNIEN_",",1912,"E")) ;LENGTH OF APP'T
  1. S SDCLNSREC("Clinic","VariableApptLength")=$G(SDDATA(44,SDCLNIEN_",",1913,"E")) ;VARIABLE APP'NTMENT LENGTH
  1. S SDCLNSREC("Clinic","IncrementsPerHr")=$G(SDDATA(44,SDCLNIEN_",",1917,"E")) ;DISPLAY INCREMENTS PER HOUR
  1. S SDCLNSREC("Clinic","HourClinicDisplayBegins")=$S($G(SDDATA(44,SDCLNIEN_",",1914,"E"))'="":$G(SDDATA(44,SDCLNIEN_",",1914,"E")),1:8) ; HOUR CLINIC DISPLAY BEGINS
  1. S TIMEZONE=$$TIMEZONEDATA^SDESUTIL($G(SDCLNIEN)),TIMEZONE=$P($G(TIMEZONE),U)
  1. S SDCLNSREC("Clinic","Timezone")=TIMEZONE
  1. S SDCLNSREC("Clinic","Inactivate Date")=$$FMTISO^SDAMUTDT($G(SDDATA(44,SDCLNIEN_",",2505,"I"))) ;Inactivate Date
  1. S SDCLNSREC("Clinic","Reactivate Date")=$$FMTISO^SDAMUTDT($G(SDDATA(44,SDCLNIEN_",",2506,"I"))) ;Reactivate Date
  1. ; Get CHAR4 Data
  1. N CHAR4
  1. S CHAR4=$$CHAR4^SDESUTIL($G(SDDATA(44,SDCLNIEN_",",.01,"E")))
  1. S SDCLNSREC("Clinic","CHAR4")=CHAR4
  1. ; Special Instructions Multiple
  1. S SDX="",SDC=0
  1. S SDFIELDS="1910*"
  1. K SDDATA,SDMSG
  1. D GETS^DIQ(44,SDCLNIEN_",",SDFIELDS,"E","SDDATA","SDMSG")
  1. F S SDX=$O(SDDATA(44.03,SDX)) Q:SDX="" D
  1. . S SDC=SDC+1
  1. . S SDCLNSREC("Clinic","Special Instructions "_SDC)=$G(SDDATA(44.03,SDX,.01,"E"))
  1. ; Providers Multiple
  1. S SDX="",SDC=0
  1. S SDFIELDS="2600*"
  1. K SDDATA,SDMSG
  1. D GETS^DIQ(44,SDCLNIEN_",",SDFIELDS,"E","SDDATA","SDMSG")
  1. F S SDX=$O(SDDATA(44.1,SDX)) Q:SDX="" D
  1. . S SDC=SDC+1
  1. . S SDCLNSREC("Clinic","Provider",SDC,"Name")=$G(SDDATA(44.1,SDX,.01,"E"))
  1. . S SDCLNSREC("Clinic","Provider",SDC,"DefaultForClinic")=$G(SDDATA(44.1,SDX,.02,"E"))
  1. ; Diagnosis Multiple
  1. S SDX="",SDC=0
  1. S SDFIELDS="2700*"
  1. K SDDATA,SDMSG
  1. D GETS^DIQ(44,SDCLNIEN_",",SDFIELDS,"E","SDDATA","SDMSG")
  1. F S SDX=$O(SDDATA(44.11,SDX)) Q:SDX="" D
  1. . S SDC=SDC+1
  1. . S SDCLNSREC("Clinic","Diagnosis",SDC,"Code")=$G(SDDATA(44.11,SDX,.01,"E"))
  1. . S SDCLNSREC("Clinic","Diagnosis",SDC,"DefaultForClinic")=$G(SDDATA(44.11,SDX,.02,"E"))
  1. I '$D(SDCLNSREC("Clinic")) S SDCLNSREC("Clinic")=""
  1. I SDECI=0 D
  1. . ;create error message - No Clinic found that match Clinic IEN
  1. . D ERRLOG^SDESJSON(.SDCLNSREC,19)
  1. . S ERRPOP=1
  1. Q
  1. ;