| 1 | XHDLXM ; SLC/JER - XML Library calls for CM ; 25 Jul 2003  9:42 AM
 | 
|---|
| 2 |  ;;1.0;HEALTHEVET DESKTOP;;Jul 15, 2003
 | 
|---|
| 3 | XMLHDR(XHDY,ROOTEL,XHDI) ; Create XML Header for Mresult pass root element
 | 
|---|
| 4 |  ; as ROOTEL
 | 
|---|
| 5 |  S XHDI=+$G(XHDI)+1
 | 
|---|
| 6 |  S @XHDY@(XHDI)="<?xml version=""1.0"" encoding=""UTF-8"" ?>"
 | 
|---|
| 7 |  S XHDI=XHDI+1
 | 
|---|
| 8 |  S @XHDY@(XHDI)="<"_ROOTEL_">"
 | 
|---|
| 9 |  Q
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 | XMLFOOT(XHDY,ROOTEL,XHDI) ; Appends XML closing tags
 | 
|---|
| 12 |  S XHDI=+$G(XHDI)+1,@XHDY@(XHDI)="</"_ROOTEL_">"
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | ESCAPE(DATA) ; Escapes XML special characters in data
 | 
|---|
| 16 |  N SPEC
 | 
|---|
| 17 |  S SPEC("<")="<",SPEC(">")=">",SPEC("""")="""
 | 
|---|
| 18 |  S SPEC("'")="'",SPEC("&")="&"
 | 
|---|
| 19 |  Q $$REPLACE^XLFSTR(DATA,.SPEC)
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 | FILENTRY(XHDY,FILE,IENS,FLDS,INCID,XHDI)        ; Produce XML representation of entry
 | 
|---|
| 22 |  N XHDF,XHDKI,PCATAG S XHDF=0,XHDI=+$G(XHDI)
 | 
|---|
| 23 |  I +$G(INCID) D
 | 
|---|
| 24 |  . S XHDI=XHDI+1,@XHDY@("XMLDOC",XHDI)="<id>"_+IENS_"</id>"
 | 
|---|
| 25 |  D GETS^DIQ(FILE,IENS,$$FLDS(.FLDS),"IE",XHDY)
 | 
|---|
| 26 |  F  S XHDF=$O(@XHDY@(FILE,IENS,XHDF)) Q:XHDF'>0  D
 | 
|---|
| 27 |  . N TAG,VAL
 | 
|---|
| 28 |  . S TAG=$TR($$FLDNAME(XHDF,FILE)," /","")
 | 
|---|
| 29 |  . S VAL=$G(@XHDY@(FILE,IENS,XHDF,$S($L(FLDS(XHDF),U)=2:$P(FLDS(XHDF),U,2),1:"E")))
 | 
|---|
| 30 |  . S XHDI=XHDI+1,@XHDY@("XMLDOC",XHDI)="<"_TAG_">"_VAL_"</"_TAG_">"
 | 
|---|
| 31 |  K @XHDY@(FILE)
 | 
|---|
| 32 |  Q
 | 
|---|
| 33 | FLDS(FLDS)      ; Iterate through field list, build DR-string
 | 
|---|
| 34 |  N XHDI,XHDY S XHDI=0,XHDY=""
 | 
|---|
| 35 |  F  S XHDI=$O(FLDS(XHDI)) Q:+XHDI'>0  D
 | 
|---|
| 36 |  . S XHDY=XHDY_$S(XHDY="":"",1:";")_XHDI
 | 
|---|
| 37 |  Q XHDY
 | 
|---|
| 38 | FLDNAME(XHDFN,FILENUM)  ; Resolve field names
 | 
|---|
| 39 |  Q $$MIXED($P($G(^DD(FILENUM,XHDFN,0)),U))
 | 
|---|
| 40 | MIXED(X) ; Return Mixed Case X
 | 
|---|
| 41 |  N XHDI,WORD,TMP
 | 
|---|
| 42 |  S TMP="" F XHDI=1:1:$L(X," ") S WORD=$$LOW^XLFSTR($P(X," ",XHDI)),$E(WORD)=$S(XHDI=1:$E(WORD),1:$$UP^XLFSTR($E(WORD))),TMP=$S(TMP="":WORD,1:TMP_WORD)
 | 
|---|
| 43 |  Q TMP
 | 
|---|