| 1 | HDISVU01 ;BPFO/JRP - UTILITY CALLS;12/21/2004
 | 
|---|
| 2 |  ;;1.0;HEALTH DATA & INFORMATICS;**6**;Feb 22, 2005
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | XMLTFM(XMLDT,LTZ) ;Convert XML date/time to FM date/time
 | 
|---|
| 5 |  ; Input : XMLDT - XML date/time
 | 
|---|
| 6 |  ;         LTZ - Flag indicating if time should be converted to local
 | 
|---|
| 7 |  ;               time (XML d/t contains time zone designation)
 | 
|---|
| 8 |  ;               0 = No (default)     1 = Yes
 | 
|---|
| 9 |  ;Output : Date/time in FileMan format
 | 
|---|
| 10 |  ; Notes : Null ("") returned on error
 | 
|---|
| 11 |  N HL7DT,FMDT
 | 
|---|
| 12 |  S XMLDT=$G(XMLDT)
 | 
|---|
| 13 |  I XMLDT="" Q ""
 | 
|---|
| 14 |  S LTZ=+$G(LTZ)
 | 
|---|
| 15 |  S LTZ=$S(LTZ:"L",1:"U")
 | 
|---|
| 16 |  ;Convert to HL7 format
 | 
|---|
| 17 |  S HL7DT=$TR($P(XMLDT,"T",1),"-")_$TR($P(XMLDT,"T",2),":")
 | 
|---|
| 18 |  ;Convert HL7 format to FileMan format
 | 
|---|
| 19 |  S FMDT=$$HL7TFM^XLFDT(HL7DT,LTZ)
 | 
|---|
| 20 |  I FMDT=-1 S FMDT=""
 | 
|---|
| 21 |  Q FMDT
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | FMTXML(FMDT,NOTIME,MIDNIGHT) ;Convert FM date/time to XML date/time
 | 
|---|
| 24 |  ; Input : FMDT - FileMan date/time
 | 
|---|
| 25 |  ;         NOTIME - Flag indicating if time shouldn't be included
 | 
|---|
| 26 |  ;                  0 = No (include time)(default)   1 = Yes (no time)
 | 
|---|
| 27 |  ;         MIDNIGHT - Flag indicating if midnight should be used when
 | 
|---|
| 28 |  ;                    no time is passed in
 | 
|---|
| 29 |  ;                    0 = No (leave as is)(default)     1 = Yes
 | 
|---|
| 30 |  ;Output : Date/time in XML format
 | 
|---|
| 31 |  ; Notes : Null ("") returned on error
 | 
|---|
| 32 |  N XTRNDT,XMLDT,FLAG
 | 
|---|
| 33 |  S NOTIME=+$G(NOTIME)
 | 
|---|
| 34 |  S MIDNIGHT=+$G(MIDNIGHT)
 | 
|---|
| 35 |  I $P(FMDT,".",2)="" I 'MIDNIGHT S NOTIME=1
 | 
|---|
| 36 |  I $P(FMDT,".",2)?1."0" I 'NOTIME S MIDNIGHT=1
 | 
|---|
| 37 |  ;No time overrides midnight addition
 | 
|---|
| 38 |  I NOTIME S MIDNIGHT=0
 | 
|---|
| 39 |  ;Drop time
 | 
|---|
| 40 |  S FLAG=$S(NOTIME:"7FD",1:"7FS")
 | 
|---|
| 41 |  ;Convert
 | 
|---|
| 42 |  S XTRNDT=$$FMTE^XLFDT(FMDT,FLAG)
 | 
|---|
| 43 |  ;Append midnight
 | 
|---|
| 44 |  I MIDNIGHT I $P(XTRNDT,"@",2)="" S $P(XTRNDT,"@",2)="00:00:00"
 | 
|---|
| 45 |  S XMLDT=$TR(XTRNDT,"@ /","T0-")
 | 
|---|
| 46 |  I 'NOTIME S XMLDT=XMLDT_$$TZ^XLFDT()
 | 
|---|
| 47 |  Q XMLDT
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | ERR2XTMP(NODE,DESC,TEXTARR) ;Add error info to XTMP global
 | 
|---|
| 50 |  ; Input : NODE - Namespaced node name to store info off of
 | 
|---|
| 51 |  ;                (Defaults to "HDI")
 | 
|---|
| 52 |  ;         DESC - Error description (short text)
 | 
|---|
| 53 |  ;         TEXTARR - Array containing error text (full global ref)
 | 
|---|
| 54 |  ;Output : None
 | 
|---|
| 55 |  ; Notes : Sets the following nodes in XTMP
 | 
|---|
| 56 |  ;           ^XTMP(NODE,0) = Purge Date (T+10) ^ Create Date (NOW)
 | 
|---|
| 57 |  ;                           ^ "HDI software issues"
 | 
|---|
| 58 |  ;           ^XTMP(NODE,x,0) = Create Date (NOW) ^ DESC
 | 
|---|
| 59 |  ;           ^XTMP(NODE,x,"ERR") = TEXTARR
 | 
|---|
| 60 |  S NODE=$G(NODE)
 | 
|---|
| 61 |  S:NODE="" NODE="HDI"
 | 
|---|
| 62 |  S DESC=$G(DESC)
 | 
|---|
| 63 |  S TEXTARR=$G(TEXTARR)
 | 
|---|
| 64 |  N CDATE,PDATE,SUB
 | 
|---|
| 65 |  ;Set main node in XTMP
 | 
|---|
| 66 |  S CDATE=$$NOW^XLFDT()
 | 
|---|
| 67 |  S PDATE=$$FMADD^XLFDT(CDATE,10)
 | 
|---|
| 68 |  S ^XTMP(NODE,0)=PDATE_"^"_CDATE_"^HDI software issues"
 | 
|---|
| 69 |  ;Get next error node
 | 
|---|
| 70 |  S SUB=1+$O(^XTMP(NODE,""),-1)
 | 
|---|
| 71 |  ;Set main error node
 | 
|---|
| 72 |  S ^XTMP(NODE,SUB,0)=CDATE_"^"_DESC
 | 
|---|
| 73 |  ;Store error text
 | 
|---|
| 74 |  I TEXTARR'="" M ^XTMP(NODE,SUB,"TXT")=@TEXTARR
 | 
|---|
| 75 |  ;Done
 | 
|---|
| 76 |  Q
 | 
|---|