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

SDAMUTDT.m

Go to the documentation of this file.
  1. SDAMUTDT ;BPOIFO/JFW-Scheduling Encapsulation Utilities ; 5/17/04 1:00pm
  1. ;;5.3;Scheduling;**266,1015**;13 Aug 1993;Build 21
  1. ;
  1. ;*****************************************************************
  1. ; CHANGE LOG
  1. ;
  1. ; DATE PATCH DESCRIPTION
  1. ;-------- ---------- -----------------------------------------
  1. ;1/24/06 SD*5.3*413 ROUTINE COMPLETED
  1. ;
  1. ;*****************************************************************
  1. ;
  1. FMTGMT(SDFMDT) ;convert internal fileman format to extended GMT
  1. ;initialize variables
  1. ;*****************************************************************
  1. ;INPUT SDFMDT - Fileman date/time
  1. ;OUTPUT -1 error occurred in translation
  1. ; GMT date/time in ISO 8601 extended format (No Errors)
  1. ;*****************************************************************
  1. N SDDTM,SDGMT,SDTIME,SDOFFSET
  1. S SDDTM=$$FMTHL7^XLFDT(SDFMDT)
  1. Q:SDDTM<0 -1
  1. ;extract out date and convert to ISO 8601 extended format
  1. S SDGMT=$E(SDDTM,1,4)_"-"_$E(SDDTM,5,6)_"-"_$E(SDDTM,7,8)
  1. ;if time is included, extract and convert to ISO 8601 external format
  1. I $L(SDDTM)>8 D
  1. .S SDTIME=$E(+SDDTM,9,99),SDOFFSET=$$TZ^XLFDT()
  1. .;determine if seconds are included in time
  1. .I $L(SDTIME)<5 D
  1. ..;no seconds included in date/time
  1. ..S SDGMT=SDGMT_"T"_$E(SDDTM,9,10)_":"_$E(SDDTM,11,99)
  1. .;seconds included in date/time
  1. .E S SDGMT=SDGMT_"T"_$E(SDTIME,1,2)_":"_$E(SDTIME,3,4)_":"_$E(SDTIME,5,6)_SDOFFSET
  1. Q SDGMT
  1. ;
  1. GMTTFM(SDGMTDT) ;convert ISO 8601 extended GMT date/time to fileman format
  1. ;initialize variables
  1. ;*****************************************************************
  1. ;INPUT SDGMTDT - ISO 8601 extended GMT date/time
  1. ;OUTPUT -1 error occurred in translation
  1. ; FM date/time (No Errors)
  1. ;*****************************************************************
  1. N SDFM,SDTIME,SDOFFSET,SDFMDTM,X,Y,%DT
  1. ;get offset for VistA Instance
  1. S SDOFFSET=$$TZ^XLFDT()
  1. ;pattern match date(/time) for correctness
  1. Q:((SDGMTDT["T")&'(SDGMTDT?4N1"-"2N1"-"2N1"T"2N1":"2N.E)) -1
  1. Q:((SDGMTDT'["T")&'(SDGMTDT?4N1"-"2N1"-"2N)) -1
  1. ;extract out date, removing punctuation
  1. S SDFM=$E(SDGMTDT,1,4)_$E(SDGMTDT,6,7)_$E(SDGMTDT,9,10)
  1. ;set parameters to validate date/time
  1. S %DT="TXS"
  1. ;extract out time if entered, removing all punctuation except for TZ offset
  1. I SDGMTDT>10 D
  1. .S SDTIME=$P($E(SDGMTDT,12,99),$E(SDOFFSET,1,1))
  1. .;exclude time if 0's else FMTE returns previous date with .24
  1. .Q:((SDTIME["00:00")!(SDTIME["00:00:00"))
  1. .;determine if seconds are included in time
  1. .I $L(SDTIME)<6 D
  1. ..;no seconds include in date/time
  1. ..S SDFM=SDFM_$E(SDGMTDT,12,13)_$E(SDGMTDT,15,99)
  1. .;seconds included in date/time
  1. .E S SDFM=SDFM_$E(SDTIME,1,2)_$E(SDTIME,4,5)_$E(SDTIME,7,8)_"-"_SDOFFSET
  1. ;convert date(/time) from HL7 format back to Fileman
  1. S SDFMDTM=$$HL7TFM^XLFDT(SDFM)
  1. Q:SDFMDTM<0 SDFMDTM ;error occurred in conversion
  1. ;check validity of date (including leap year check)
  1. S X=$$FMTE^XLFDT(SDFMDTM)
  1. D ^%DT
  1. Q:Y<0 -1 ;date(/time) not valid
  1. Q SDFMDTM
  1. ;
  1. SDAPIERR() ; SDAPI Error Messages.
  1. ;*****************************************************************
  1. ;INPUT N/A
  1. ;OUTPUT Extrinsic call returns error message
  1. ;*****************************************************************
  1. N SDERR S SDERR=$O(^TMP($J,"SDAMA301",""))
  1. I SDERR="" Q ""
  1. I +SDERR=101 Q "Error 101: The Appointment Database is not currently available. Please try again later."
  1. I +SDERR=115 Q "Error 115: Appointment request contains invalid values. Please contact National Help Desk."
  1. Q "Error 117: An error has occurred, check the RSA Error Log."
  1. ;