[613] | 1 | SDAMUTDT ;BPOIFO/JFW-Scheduling Encapsulation Utilities ; 5/17/04 1:00pm
|
---|
| 2 | ;;5.3;Scheduling;**266**;13 Aug 1993
|
---|
| 3 | ;
|
---|
| 4 | ;*****************************************************************
|
---|
| 5 | ; CHANGE LOG
|
---|
| 6 | ;
|
---|
| 7 | ; DATE PATCH DESCRIPTION
|
---|
| 8 | ;-------- ---------- -----------------------------------------
|
---|
| 9 | ;1/24/06 SD*5.3*413 ROUTINE COMPLETED
|
---|
| 10 | ;
|
---|
| 11 | ;*****************************************************************
|
---|
| 12 | ;
|
---|
| 13 | FMTGMT(SDFMDT) ;convert internal fileman format to extended GMT
|
---|
| 14 | ;initialize variables
|
---|
| 15 | ;*****************************************************************
|
---|
| 16 | ;INPUT SDFMDT - Fileman date/time
|
---|
| 17 | ;OUTPUT -1 error occurred in translation
|
---|
| 18 | ; GMT date/time in ISO 8601 extended format (No Errors)
|
---|
| 19 | ;*****************************************************************
|
---|
| 20 | N SDDTM,SDGMT,SDTIME,SDOFFSET
|
---|
| 21 | S SDDTM=$$FMTHL7^XLFDT(SDFMDT)
|
---|
| 22 | Q:SDDTM<0 -1
|
---|
| 23 | ;extract out date and convert to ISO 8601 extended format
|
---|
| 24 | S SDGMT=$E(SDDTM,1,4)_"-"_$E(SDDTM,5,6)_"-"_$E(SDDTM,7,8)
|
---|
| 25 | ;if time is included, extract and convert to ISO 8601 external format
|
---|
| 26 | I $L(SDDTM)>8 D
|
---|
| 27 | .S SDTIME=$E(+SDDTM,9,99),SDOFFSET=$$TZ^XLFDT()
|
---|
| 28 | .;determine if seconds are included in time
|
---|
| 29 | .I $L(SDTIME)<5 D
|
---|
| 30 | ..;no seconds included in date/time
|
---|
| 31 | ..S SDGMT=SDGMT_"T"_$E(SDDTM,9,10)_":"_$E(SDDTM,11,99)
|
---|
| 32 | .;seconds included in date/time
|
---|
| 33 | .E S SDGMT=SDGMT_"T"_$E(SDTIME,1,2)_":"_$E(SDTIME,3,4)_":"_$E(SDTIME,5,6)_SDOFFSET
|
---|
| 34 | Q SDGMT
|
---|
| 35 | ;
|
---|
| 36 | GMTTFM(SDGMTDT) ;convert ISO 8601 extended GMT date/time to fileman format
|
---|
| 37 | ;initialize variables
|
---|
| 38 | ;*****************************************************************
|
---|
| 39 | ;INPUT SDGMTDT - ISO 8601 extended GMT date/time
|
---|
| 40 | ;OUTPUT -1 error occurred in translation
|
---|
| 41 | ; FM date/time (No Errors)
|
---|
| 42 | ;*****************************************************************
|
---|
| 43 | N SDFM,SDTIME,SDOFFSET,SDFMDTM,X,Y,%DT
|
---|
| 44 | ;get offset for VistA Instance
|
---|
| 45 | S SDOFFSET=$$TZ^XLFDT()
|
---|
| 46 | ;pattern match date(/time) for correctness
|
---|
| 47 | Q:((SDGMTDT["T")&'(SDGMTDT?4N1"-"2N1"-"2N1"T"2N1":"2N.E)) -1
|
---|
| 48 | Q:((SDGMTDT'["T")&'(SDGMTDT?4N1"-"2N1"-"2N)) -1
|
---|
| 49 | ;extract out date, removing punctuation
|
---|
| 50 | S SDFM=$E(SDGMTDT,1,4)_$E(SDGMTDT,6,7)_$E(SDGMTDT,9,10)
|
---|
| 51 | ;set parameters to validate date/time
|
---|
| 52 | S %DT="TXS"
|
---|
| 53 | ;extract out time if entered, removing all punctuation except for TZ offset
|
---|
| 54 | I SDGMTDT>10 D
|
---|
| 55 | .S SDTIME=$P($E(SDGMTDT,12,99),$E(SDOFFSET,1,1))
|
---|
| 56 | .;exclude time if 0's else FMTE returns previous date with .24
|
---|
| 57 | .Q:((SDTIME["00:00")!(SDTIME["00:00:00"))
|
---|
| 58 | .;determine if seconds are included in time
|
---|
| 59 | .I $L(SDTIME)<6 D
|
---|
| 60 | ..;no seconds include in date/time
|
---|
| 61 | ..S SDFM=SDFM_$E(SDGMTDT,12,13)_$E(SDGMTDT,15,99)
|
---|
| 62 | .;seconds included in date/time
|
---|
| 63 | .E S SDFM=SDFM_$E(SDTIME,1,2)_$E(SDTIME,4,5)_$E(SDTIME,7,8)_"-"_SDOFFSET
|
---|
| 64 | ;convert date(/time) from HL7 format back to Fileman
|
---|
| 65 | S SDFMDTM=$$HL7TFM^XLFDT(SDFM)
|
---|
| 66 | Q:SDFMDTM<0 SDFMDTM ;error occurred in conversion
|
---|
| 67 | ;check validity of date (including leap year check)
|
---|
| 68 | S X=$$FMTE^XLFDT(SDFMDTM)
|
---|
| 69 | D ^%DT
|
---|
| 70 | Q:Y<0 -1 ;date(/time) not valid
|
---|
| 71 | Q SDFMDTM
|
---|
| 72 | ;
|
---|
| 73 | SDAPIERR() ; SDAPI Error Messages.
|
---|
| 74 | ;*****************************************************************
|
---|
| 75 | ;INPUT N/A
|
---|
| 76 | ;OUTPUT Extrinsic call returns error message
|
---|
| 77 | ;*****************************************************************
|
---|
| 78 | N SDERR S SDERR=$O(^TMP($J,"SDAMA301",""))
|
---|
| 79 | I SDERR="" Q ""
|
---|
| 80 | I +SDERR=101 Q "Error 101: The Appointment Database is not currently available. Please try again later."
|
---|
| 81 | I +SDERR=115 Q "Error 115: Appointment request contains invalid values. Please contact National Help Desk."
|
---|
| 82 | Q "Error 117: An error has occurred, check the RSA Error Log."
|
---|
| 83 | ;
|
---|