CIAUDT ;MSC/IND/DKM - FM date to formatted date;04-May-2006 08:19;DKM
;;1.2;CIA UTILITIES;;Mar 20, 2007
;;Copyright 2000-2006, Medsphere Systems Corporation
;=================================================================
; Inputs:
; CIADAT = date to format (DHCP format or $H format)
; CIAFMT = date and time format control (optional)
; xxx0 = dd-mmm-yyyy
; xxx1 = mmm dd,yyyy
; xxx2 = mm/dd/yyyy
; xxx3 = mm-dd-yyyy
; xx0x = hh:mm
; xx1x = hh:mm xx
; x0xx = use space to separate date/time
; x1xx = use @ to separate date/time
; 0xxx = allow leading zeros
; 1xxx = remove leading zeros
; Outputs:
; Returns formatted date
;=================================================================
ENTRY(CIADAT,CIAFMT) ; EP
S CIADAT=$G(CIADAT,$H)
Q:'CIADAT ""
N CIAZ1,CIAZ2,CIAZ3,CIAZ4,CIADLM,CIATM
S:CIADAT?1.N1",".N CIADAT=$$HTFM^XLFDT(CIADAT)
S CIAFMT=$G(CIAFMT)#100000,CIAFMT=CIAFMT#10000,CIAZ4=CIAFMT\1000,CIAFMT=CIAFMT#1000,CIADLM=$S(CIAFMT>99:"@",1:" "),CIAFMT=CIAFMT#100,CIATM=CIAFMT\10,CIAFMT=CIAFMT#10
I CIADAT\1 D
.S CIAZ3=CIADAT\1+17000000,CIAZ1=$E(CIAZ3,7,8),CIAZ2=$E(CIAZ3,5,6),CIAZ3=$E(CIAZ3,1,4)
.S:CIAZ4 CIAZ1=+CIAZ1,CIAZ2=+CIAZ2
.S:CIAFMT<2 CIAZ2=$P("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",",",CIAZ2)
.S CIAZ1=$S('CIAFMT:CIAZ1_"-"_CIAZ2_"-"_CIAZ3,CIAFMT=1:CIAZ2_" "_CIAZ1_","_CIAZ3,CIAFMT=2:CIAZ2_"/"_CIAZ1_"/"_CIAZ3,1:CIAZ2_"-"_CIAZ1_"-"_CIAZ3)
E S CIAZ1=""
S CIAZ2=CIADAT#1*10000+10000\1
I CIAZ2=10000!(CIAZ2>12400) S CIAZ2=""
E D
.S:CIATM CIAZ2=$S(CIAZ2=12400:CIAZ2-1200_" am",CIAZ2>11299:CIAZ2-1200_" pm",CIAZ2>11199:CIAZ2_" pm",CIAZ2<10099:CIAZ2+1200_" am",1:CIAZ2_" am")
.S CIAZ3=$S(CIAZ4:+$E(CIAZ2,2,3),1:$E(CIAZ2,2,3)),CIAZ2=CIAZ3_":"_$E(CIAZ2,4,8)
Q CIAZ1_$S('$L(CIAZ2):"",$L(CIAZ1):CIADLM,1:"")_CIAZ2
CIAUDT ;MSC/IND/DKM - FM date to formatted date;04-May-2006 08:19;DKM
+1 ;;1.2;CIA UTILITIES;;Mar 20, 2007
+2 ;;Copyright 2000-2006, Medsphere Systems Corporation
+3 ;=================================================================
+4 ; Inputs:
+5 ; CIADAT = date to format (DHCP format or $H format)
+6 ; CIAFMT = date and time format control (optional)
+7 ; xxx0 = dd-mmm-yyyy
+8 ; xxx1 = mmm dd,yyyy
+9 ; xxx2 = mm/dd/yyyy
+10 ; xxx3 = mm-dd-yyyy
+11 ; xx0x = hh:mm
+12 ; xx1x = hh:mm xx
+13 ; x0xx = use space to separate date/time
+14 ; x1xx = use @ to separate date/time
+15 ; 0xxx = allow leading zeros
+16 ; 1xxx = remove leading zeros
+17 ; Outputs:
+18 ; Returns formatted date
+19 ;=================================================================
ENTRY(CIADAT,CIAFMT) ; EP
+1 SET CIADAT=$GET(CIADAT,$HOROLOG)
+2 IF 'CIADAT
QUIT ""
+3 NEW CIAZ1,CIAZ2,CIAZ3,CIAZ4,CIADLM,CIATM
+4 IF CIADAT?1.N1",".N
SET CIADAT=$$HTFM^XLFDT(CIADAT)
+5 SET CIAFMT=$GET(CIAFMT)#100000
SET CIAFMT=CIAFMT#10000
SET CIAZ4=CIAFMT\1000
SET CIAFMT=CIAFMT#1000
SET CIADLM=$SELECT(CIAFMT>99:"@",1:" ")
SET CIAFMT=CIAFMT#100
SET CIATM=CIAFMT\10
SET CIAFMT=CIAFMT#10
+6 IF CIADAT\1
Begin DoDot:1
+7 SET CIAZ3=CIADAT\1+17000000
SET CIAZ1=$EXTRACT(CIAZ3,7,8)
SET CIAZ2=$EXTRACT(CIAZ3,5,6)
SET CIAZ3=$EXTRACT(CIAZ3,1,4)
+8 IF CIAZ4
SET CIAZ1=+CIAZ1
SET CIAZ2=+CIAZ2
+9 IF CIAFMT<2
SET CIAZ2=$PIECE("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",",",CIAZ2)
+10 SET CIAZ1=$SELECT('CIAFMT:CIAZ1_"-"_CIAZ2_"-"_CIAZ3,CIAFMT=1:CIAZ2_" "_CIAZ1_","_CIAZ3,CIAFMT=2:CIAZ2_"/"_CIAZ1_"/"_CIAZ3,1:CIAZ2_"-"_CIAZ1_"-"_CIAZ3)
End DoDot:1
+11 IF '$TEST
SET CIAZ1=""
+12 SET CIAZ2=CIADAT#1*10000+10000\1
+13 IF CIAZ2=10000!(CIAZ2>12400)
SET CIAZ2=""
+14 IF '$TEST
Begin DoDot:1
+15 IF CIATM
SET CIAZ2=$SELECT(CIAZ2=12400:CIAZ2-1200_" am",CIAZ2>11299:CIAZ2-1200_" pm",CIAZ2>11199:CIAZ2_" pm",CIAZ2<10099:CIAZ2+1200_" am",1:CIAZ2_" am")
+16 SET CIAZ3=$SELECT(CIAZ4:+$EXTRACT(CIAZ2,2,3),1:$EXTRACT(CIAZ2,2,3))
SET CIAZ2=CIAZ3_":"_$EXTRACT(CIAZ2,4,8)
End DoDot:1
+17 QUIT CIAZ1_$SELECT('$LENGTH(CIAZ2):"",$LENGTH(CIAZ1):CIADLM,1:"")_CIAZ2