- 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
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HHDISVU01 2744 printed Feb 18, 2025@23:23:27 Page 2
- 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