HDISVU01 ;BPFO/JRP - UTILITY CALLS;12/21/2004
;;1.0;HEALTH DATA & INFORMATICS;**6**;Feb 22, 2005
;
XMLTFM(XMLDT,LTZ) ;Convert XML date/time to FM date/time
; Input : XMLDT - XML date/time
; LTZ - Flag indicating if time should be converted to local
; time (XML d/t contains time zone designation)
; 0 = No (default) 1 = Yes
;Output : Date/time in FileMan format
; Notes : Null ("") returned on error
N HL7DT,FMDT
S XMLDT=$G(XMLDT)
I XMLDT="" Q ""
S LTZ=+$G(LTZ)
S LTZ=$S(LTZ:"L",1:"U")
;Convert to HL7 format
S HL7DT=$TR($P(XMLDT,"T",1),"-")_$TR($P(XMLDT,"T",2),":")
;Convert HL7 format to FileMan format
S FMDT=$$HL7TFM^XLFDT(HL7DT,LTZ)
I FMDT=-1 S FMDT=""
Q FMDT
;
FMTXML(FMDT,NOTIME,MIDNIGHT) ;Convert FM date/time to XML date/time
; Input : FMDT - FileMan date/time
; NOTIME - Flag indicating if time shouldn't be included
; 0 = No (include time)(default) 1 = Yes (no time)
; MIDNIGHT - Flag indicating if midnight should be used when
; no time is passed in
; 0 = No (leave as is)(default) 1 = Yes
;Output : Date/time in XML format
; Notes : Null ("") returned on error
N XTRNDT,XMLDT,FLAG
S NOTIME=+$G(NOTIME)
S MIDNIGHT=+$G(MIDNIGHT)
I $P(FMDT,".",2)="" I 'MIDNIGHT S NOTIME=1
I $P(FMDT,".",2)?1."0" I 'NOTIME S MIDNIGHT=1
;No time overrides midnight addition
I NOTIME S MIDNIGHT=0
;Drop time
S FLAG=$S(NOTIME:"7FD",1:"7FS")
;Convert
S XTRNDT=$$FMTE^XLFDT(FMDT,FLAG)
;Append midnight
I MIDNIGHT I $P(XTRNDT,"@",2)="" S $P(XTRNDT,"@",2)="00:00:00"
S XMLDT=$TR(XTRNDT,"@ /","T0-")
I 'NOTIME S XMLDT=XMLDT_$$TZ^XLFDT()
Q XMLDT
;
ERR2XTMP(NODE,DESC,TEXTARR) ;Add error info to XTMP global
; Input : NODE - Namespaced node name to store info off of
; (Defaults to "HDI")
; DESC - Error description (short text)
; TEXTARR - Array containing error text (full global ref)
;Output : None
; Notes : Sets the following nodes in XTMP
; ^XTMP(NODE,0) = Purge Date (T+10) ^ Create Date (NOW)
; ^ "HDI software issues"
; ^XTMP(NODE,x,0) = Create Date (NOW) ^ DESC
; ^XTMP(NODE,x,"ERR") = TEXTARR
S NODE=$G(NODE)
S:NODE="" NODE="HDI"
S DESC=$G(DESC)
S TEXTARR=$G(TEXTARR)
N CDATE,PDATE,SUB
;Set main node in XTMP
S CDATE=$$NOW^XLFDT()
S PDATE=$$FMADD^XLFDT(CDATE,10)
S ^XTMP(NODE,0)=PDATE_"^"_CDATE_"^HDI software issues"
;Get next error node
S SUB=1+$O(^XTMP(NODE,""),-1)
;Set main error node
S ^XTMP(NODE,SUB,0)=CDATE_"^"_DESC
;Store error text
I TEXTARR'="" M ^XTMP(NODE,SUB,"TXT")=@TEXTARR
;Done
Q
HDISVU01 ;BPFO/JRP - UTILITY CALLS;12/21/2004
+1 ;;1.0;HEALTH DATA & INFORMATICS;**6**;Feb 22, 2005
+2 ;
XMLTFM(XMLDT,LTZ) ;Convert XML date/time to FM date/time
+1 ; Input : XMLDT - XML date/time
+2 ; LTZ - Flag indicating if time should be converted to local
+3 ; time (XML d/t contains time zone designation)
+4 ; 0 = No (default) 1 = Yes
+5 ;Output : Date/time in FileMan format
+6 ; Notes : Null ("") returned on error
+7 NEW HL7DT,FMDT
+8 SET XMLDT=$GET(XMLDT)
+9 IF XMLDT=""
QUIT ""
+10 SET LTZ=+$GET(LTZ)
+11 SET LTZ=$SELECT(LTZ:"L",1:"U")
+12 ;Convert to HL7 format
+13 SET HL7DT=$TRANSLATE($PIECE(XMLDT,"T",1),"-")_$TRANSLATE($PIECE(XMLDT,"T",2),":")
+14 ;Convert HL7 format to FileMan format
+15 SET FMDT=$$HL7TFM^XLFDT(HL7DT,LTZ)
+16 IF FMDT=-1
SET FMDT=""
+17 QUIT FMDT
+18 ;
FMTXML(FMDT,NOTIME,MIDNIGHT) ;Convert FM date/time to XML date/time
+1 ; Input : FMDT - FileMan date/time
+2 ; NOTIME - Flag indicating if time shouldn't be included
+3 ; 0 = No (include time)(default) 1 = Yes (no time)
+4 ; MIDNIGHT - Flag indicating if midnight should be used when
+5 ; no time is passed in
+6 ; 0 = No (leave as is)(default) 1 = Yes
+7 ;Output : Date/time in XML format
+8 ; Notes : Null ("") returned on error
+9 NEW XTRNDT,XMLDT,FLAG
+10 SET NOTIME=+$GET(NOTIME)
+11 SET MIDNIGHT=+$GET(MIDNIGHT)
+12 IF $PIECE(FMDT,".",2)=""
IF 'MIDNIGHT
SET NOTIME=1
+13 IF $PIECE(FMDT,".",2)?1."0"
IF 'NOTIME
SET MIDNIGHT=1
+14 ;No time overrides midnight addition
+15 IF NOTIME
SET MIDNIGHT=0
+16 ;Drop time
+17 SET FLAG=$SELECT(NOTIME:"7FD",1:"7FS")
+18 ;Convert
+19 SET XTRNDT=$$FMTE^XLFDT(FMDT,FLAG)
+20 ;Append midnight
+21 IF MIDNIGHT
IF $PIECE(XTRNDT,"@",2)=""
SET $PIECE(XTRNDT,"@",2)="00:00:00"
+22 SET XMLDT=$TRANSLATE(XTRNDT,"@ /","T0-")
+23 IF 'NOTIME
SET XMLDT=XMLDT_$$TZ^XLFDT()
+24 QUIT XMLDT
+25 ;
ERR2XTMP(NODE,DESC,TEXTARR) ;Add error info to XTMP global
+1 ; Input : NODE - Namespaced node name to store info off of
+2 ; (Defaults to "HDI")
+3 ; DESC - Error description (short text)
+4 ; TEXTARR - Array containing error text (full global ref)
+5 ;Output : None
+6 ; Notes : Sets the following nodes in XTMP
+7 ; ^XTMP(NODE,0) = Purge Date (T+10) ^ Create Date (NOW)
+8 ; ^ "HDI software issues"
+9 ; ^XTMP(NODE,x,0) = Create Date (NOW) ^ DESC
+10 ; ^XTMP(NODE,x,"ERR") = TEXTARR
+11 SET NODE=$GET(NODE)
+12 IF NODE=""
SET NODE="HDI"
+13 SET DESC=$GET(DESC)
+14 SET TEXTARR=$GET(TEXTARR)
+15 NEW CDATE,PDATE,SUB
+16 ;Set main node in XTMP
+17 SET CDATE=$$NOW^XLFDT()
+18 SET PDATE=$$FMADD^XLFDT(CDATE,10)
+19 SET ^XTMP(NODE,0)=PDATE_"^"_CDATE_"^HDI software issues"
+20 ;Get next error node
+21 SET SUB=1+$ORDER(^XTMP(NODE,""),-1)
+22 ;Set main error node
+23 SET ^XTMP(NODE,SUB,0)=CDATE_"^"_DESC
+24 ;Store error text
+25 IF TEXTARR'=""
MERGE ^XTMP(NODE,SUB,"TXT")=@TEXTARR
+26 ;Done
+27 QUIT