| 1 | XHDPTREE        ; SLC/JER - Configurator Server Calls ; 08 Oct 2003 11:00
 | 
|---|
| 2 |  ;;1.0;HEALTHEVET DESKTOP;;Jul 15, 2003
 | 
|---|
| 3 | GETTREE(XHDCY,XHDMOD)        ; Control Branching
 | 
|---|
| 4 |  N XHDCI,XHDCDA,X S X="ONERROR^XHDPTREE",@^%ZOSF("TRAP")
 | 
|---|
| 5 |  S XHDCI=0,XHDCDA=+$O(^XHD(8935.91,"AMROOT",XHDMOD,0))
 | 
|---|
| 6 |  S XHDCY=$NA(^TMP("XHDPTREE",$J)) K @XHDCY
 | 
|---|
| 7 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<?xml version=""1.0"" encoding=""UTF-8""?>"
 | 
|---|
| 8 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<getConfigurationCallResult"
 | 
|---|
| 9 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"""
 | 
|---|
| 10 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="xsi:noNamespaceSchemaLocation=""C:\reeng\main\modules\config\src\gov\va\med\hds\cd\config\xml\getConfigurationCallResult.xsd"">"
 | 
|---|
| 11 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<configTree>"
 | 
|---|
| 12 |  D GETCAT(XHDCY,XHDCDA,.XHDCI)
 | 
|---|
| 13 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</configTree>"
 | 
|---|
| 14 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</getConfigurationCallResult>"
 | 
|---|
| 15 |  S XHDCY=$NA(^TMP("XHDPTREE",$J,"XMLDOC"))
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 | FLDS() ; Get field string
 | 
|---|
| 18 |  Q ".01:1"
 | 
|---|
| 19 | GETCAT(XHDCY,XHDCDA,XHDCI)       ; Loads Top-level Fields
 | 
|---|
| 20 |  N XHDCF,XHDKI,PCATAG S XHDCF=0
 | 
|---|
| 21 |  S PCATAG=$S($$ISROOT(XHDCDA):"pluginParameterCategory",1:"parameterCategory")
 | 
|---|
| 22 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<"_PCATAG_">"
 | 
|---|
| 23 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<id>"_XHDCDA_"</id>"
 | 
|---|
| 24 |  D GETS^DIQ(8935.91,XHDCDA_",",$$FLDS,"IE",XHDCY)
 | 
|---|
| 25 |  F  S XHDCF=$O(@XHDCY@(8935.91,XHDCDA_",",XHDCF)) Q:XHDCF'>0  D
 | 
|---|
| 26 |  . N TAG,VAL
 | 
|---|
| 27 |  . S TAG=$TR($$FLDNAME(XHDCF,8935.91)," /","")
 | 
|---|
| 28 |  . S VAL=$G(@XHDCY@(8935.91,XHDCDA_",",XHDCF,$S(XHDCF=.04:"I",1:"E")))
 | 
|---|
| 29 |  . I XHDCF=.04 S VAL=+VAL
 | 
|---|
| 30 |  . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<"_TAG_">"_VAL_"</"_TAG_">"
 | 
|---|
| 31 |  K @XHDCY@(8935.91)
 | 
|---|
| 32 |  ;** get parameters **
 | 
|---|
| 33 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<parameters>"
 | 
|---|
| 34 |  D GETPARAM(XHDCY,XHDCDA,.XHDCI)
 | 
|---|
| 35 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</parameters>"
 | 
|---|
| 36 |  S XHDKI=0
 | 
|---|
| 37 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<children>"
 | 
|---|
| 38 |  F  S XHDKI=$O(^XHD(8935.91,XHDCDA,3,XHDKI)) Q:+XHDKI'>0  D
 | 
|---|
| 39 |  . N XHDKID S XHDKID=$P($G(^XHD(8935.91,XHDCDA,3,XHDKI,0)),U,2)
 | 
|---|
| 40 |  . D GETCAT(XHDCY,XHDKID,.XHDCI)
 | 
|---|
| 41 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</children>"
 | 
|---|
| 42 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</"_PCATAG_">"
 | 
|---|
| 43 |  Q
 | 
|---|
| 44 | ISROOT(XHDCDA)  ; Boolean - is record plugin root?
 | 
|---|
| 45 |  Q +$P($G(^XHD(8935.91,XHDCDA,0)),U,5)
 | 
|---|
| 46 | FLDNAME(XHDCFN,FILENUM)  ; Resolve field names
 | 
|---|
| 47 |  Q $$MIXED($P($G(^DD(FILENUM,XHDCFN,0)),U))
 | 
|---|
| 48 | MIXED(X) ; Return Mixed Case X
 | 
|---|
| 49 |  N XHDI,WORD,TMP
 | 
|---|
| 50 |  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)
 | 
|---|
| 51 |  Q TMP
 | 
|---|
| 52 | GETPARAM(XHDCY,XHDCDA,XHDCI)    ; Loads Parameters
 | 
|---|
| 53 |  N XHDI S XHDI=0
 | 
|---|
| 54 |  F  S XHDI=$O(^XHD(8935.91,XHDCDA,2,XHDI)) Q:+XHDI'>0  D
 | 
|---|
| 55 |  . N PNODE,FULLNAME,MULTIVAL,WORDPROC,PAR,PARDEF0,PARDEF1,DNAME,VDTYPE,READONLY
 | 
|---|
| 56 |  . S PNODE=$G(^XHD(8935.91,XHDCDA,2,XHDI,0))
 | 
|---|
| 57 |  . Q:PNODE']""
 | 
|---|
| 58 |  . S PAR=$P(PNODE,U,2),PARDEF0=$G(^XTV(8989.51,PAR,0)),PARDEF1=$G(^(1))
 | 
|---|
| 59 |  . S FULLNAME=$P(PARDEF0,U),DNAME=$P(PARDEF0,U,2),VDTYPE=$P(PARDEF1,U)
 | 
|---|
| 60 |  . S READONLY=$S(+$P(PARDEF0,U,6):"true",1:"false")
 | 
|---|
| 61 |  . S MULTIVAL=$S(+$P(PARDEF0,U,3):"true",1:"false")
 | 
|---|
| 62 |  . S WORDPROC=$S(VDTYPE="W":"true",1:"false")
 | 
|---|
| 63 |  . N PLIST,ERR
 | 
|---|
| 64 |  . D GETLST^XPAR(.PLIST,"ALL^"_DUZ_";VA(200,^"_$$GETSRV_";DIC(49,",PAR,$S(VDTYPE="D":"Q",1:"E"),.ERR)
 | 
|---|
| 65 |  . I ERR Q
 | 
|---|
| 66 |  . I PLIST=0 D  Q
 | 
|---|
| 67 |  . . N KEY,ENT,INST,NAME,VAL,EXTENT
 | 
|---|
| 68 |  . . S NAME=$$ESCAPE^XHDLXM(DNAME)
 | 
|---|
| 69 |  . . S INST=$S(FULLNAME="ORWOR TIMEOUT CHART":1,1:"")
 | 
|---|
| 70 |  . . S VAL=$S(FULLNAME="ORWOR TIMEOUT CHART":DTIME,1:"")
 | 
|---|
| 71 |  . . S:(MULTIVAL="true") NAME=NAME_" "_INST
 | 
|---|
| 72 |  . . S ENT=DUZ_";VA(200,",EXTENT=$$ENTNAME^XPARLIST(ENT)
 | 
|---|
| 73 |  . . S KEY=NAME_U_ENT_U_PAR_U_INST
 | 
|---|
| 74 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<parameter>"
 | 
|---|
| 75 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<id>"_PAR_"</id>"
 | 
|---|
| 76 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<name>"_NAME_"</name>"
 | 
|---|
| 77 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<fullName>"_$$ESCAPE^XHDLXM(FULLNAME)_"</fullName>"
 | 
|---|
| 78 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<key>"_KEY_"</key>"
 | 
|---|
| 79 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<readOnly>"_READONLY_"</readOnly>"
 | 
|---|
| 80 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<extEntity>"_EXTENT_"</extEntity>"
 | 
|---|
| 81 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<multiValued>"_MULTIVAL_"</multiValued>"
 | 
|---|
| 82 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<wordProcessing>"_WORDPROC_"</wordProcessing>"
 | 
|---|
| 83 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)=$S(VAL="":"<value/>",1:"<value>"_VAL_"</value>")
 | 
|---|
| 84 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<defaultValue/>"
 | 
|---|
| 85 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</parameter>"
 | 
|---|
| 86 |  . N XHDJ S XHDJ=0
 | 
|---|
| 87 |  . F  S XHDJ=$O(PLIST(XHDJ)) Q:+XHDJ'>0  D
 | 
|---|
| 88 |  . . N KEY,ENT,INST,VAL,NAME,EXTENT
 | 
|---|
| 89 |  . . S NAME=$$ESCAPE^XHDLXM(DNAME)
 | 
|---|
| 90 |  . . S INST=$P(PLIST(XHDJ),U),VAL=$P(PLIST(XHDJ),U,2)
 | 
|---|
| 91 |  . . S:(MULTIVAL="true") NAME=NAME_" "_INST
 | 
|---|
| 92 |  . . S ENT=$$GETENT(PAR,INST,VAL),EXTENT=$$ENTNAME^XPARLIST(ENT)
 | 
|---|
| 93 |  . . S KEY=NAME_U_ENT_U_PAR_U_INST
 | 
|---|
| 94 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<parameter>"
 | 
|---|
| 95 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<id>"_PAR_"</id>"
 | 
|---|
| 96 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<name>"_NAME_"</name>"
 | 
|---|
| 97 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<fullName>"_$$ESCAPE^XHDLXM(FULLNAME)_"</fullName>"
 | 
|---|
| 98 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<key>"_KEY_"</key>"
 | 
|---|
| 99 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<readOnly>"_READONLY_"</readOnly>"
 | 
|---|
| 100 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<extEntity>"_EXTENT_"</extEntity>"
 | 
|---|
| 101 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<multiValued>"_MULTIVAL_"</multiValued>"
 | 
|---|
| 102 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<wordProcessing>"_WORDPROC_"</wordProcessing>"
 | 
|---|
| 103 |  . . ; If wp, call for wp result
 | 
|---|
| 104 |  . . I (WORDPROC="true") D
 | 
|---|
| 105 |  . . . N VALIST,ERR
 | 
|---|
| 106 |  . . . D GETWP^XPAR(.VALIST,"ALL^"_$P(KEY,U,2),PAR,INST,.ERR)
 | 
|---|
| 107 |  . . . I 'ERR D
 | 
|---|
| 108 |  . . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<value>"
 | 
|---|
| 109 |  . . . . N XHDK S XHDK=0
 | 
|---|
| 110 |  . . . . F  S XHDK=$O(VALIST(XHDK)) Q:+XHDK'>0  D
 | 
|---|
| 111 |  . . . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)=$$ESCAPE^XHDLXM($G(VALIST(XHDK,0)))
 | 
|---|
| 112 |  . . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</value>"
 | 
|---|
| 113 |  . . . N DFLIST,ERR
 | 
|---|
| 114 |  . . . D GETWP^XPAR(.DFLIST,"PKG",PAR,INST,.ERR)
 | 
|---|
| 115 |  . . . I 'ERR D
 | 
|---|
| 116 |  . . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<defaultValue>"
 | 
|---|
| 117 |  . . . . N XHDK S XHDK=0
 | 
|---|
| 118 |  . . . . F  S XHDK=$O(VALIST(XHDK)) Q:+XHDK'>0  D
 | 
|---|
| 119 |  . . . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)=$$ESCAPE^XHDLXM($G(VALIST(XHDK,0)))
 | 
|---|
| 120 |  . . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</defaultValue>"
 | 
|---|
| 121 |  . . E  D
 | 
|---|
| 122 |  . . . N DVAL S DVAL=$$GET^XPAR("PKG",PAR,INST,$S(VDTYPE="D":"Q",1:"E"))
 | 
|---|
| 123 |  . . . S VAL=$$XFORM(VAL,VDTYPE)
 | 
|---|
| 124 |  . . . S DVAL=$$XFORM(DVAL,VDTYPE)
 | 
|---|
| 125 |  . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<value>"_$$ESCAPE^XHDLXM(VAL)_"</value>"
 | 
|---|
| 126 |  . . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<defaultValue>"_$$ESCAPE^XHDLXM(DVAL)_"</defaultValue>"
 | 
|---|
| 127 |  . . S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</parameter>"
 | 
|---|
| 128 |  Q
 | 
|---|
| 129 | GETSRV()        ; Get user's Service/Section
 | 
|---|
| 130 |  Q $P($G(^VA(200,DUZ,5)),U)
 | 
|---|
| 131 | XFORM(VAL,VDTYPE)       ; Transform values for select data types
 | 
|---|
| 132 |  N XHDY S XHDY=VAL
 | 
|---|
| 133 |  I VDTYPE="D" S XHDY=$$FMTHL7^XLFDT(VAL) G XFORMX
 | 
|---|
| 134 |  I VDTYPE="Y" S XHDY=$S(VAL="YES":"true",VAL="NO":"false",1:VAL)
 | 
|---|
| 135 | XFORMX Q XHDY
 | 
|---|
| 136 | GETENT(PAR,INST,VAL)    ; Find entity, given parameter, instance, and value
 | 
|---|
| 137 |  N VLIST,ERR,ENTITY S ENTITY=0
 | 
|---|
| 138 |  D ENVAL^XPAR(.VLIST,PAR,INST,.ERR)
 | 
|---|
| 139 |  I 'ERR D
 | 
|---|
| 140 |  . N XHDENT S XHDENT=0
 | 
|---|
| 141 |  . F  S XHDENT=$O(VLIST(XHDENT)) Q:+XHDENT'>0!+ENTITY  D
 | 
|---|
| 142 |  . . I $P(XHDENT,";",2)="VA(200,",(+XHDENT'=DUZ) Q
 | 
|---|
| 143 |  . . I ($G(VLIST(XHDENT,INST))=VAL) S ENTITY=XHDENT
 | 
|---|
| 144 |  S:'+ENTITY ENTITY=DUZ_";VA(200,"
 | 
|---|
| 145 |  Q ENTITY
 | 
|---|
| 146 | ONERROR ; Trap errors
 | 
|---|
| 147 |  N XHDCI S XHDCI=4
 | 
|---|
| 148 |  ; remove remnant of DIQ1 call result
 | 
|---|
| 149 |  K @XHDCY@(8935.91)
 | 
|---|
| 150 |  ; remove partial configTree node
 | 
|---|
| 151 |  F  S XHDCI=$O(@XHDCY@("XMLDOC",XHDCI)) Q:+XHDCI'>0  K @XHDCY@("XMLDOC",XHDCI)
 | 
|---|
| 152 |  ; append error node to call result
 | 
|---|
| 153 |  S XHDCI=4
 | 
|---|
| 154 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<error>"
 | 
|---|
| 155 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="<![CDATA["_$$EC^%ZOSV_"]]>"
 | 
|---|
| 156 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</error>"
 | 
|---|
| 157 |  S XHDCI=XHDCI+1,@XHDCY@("XMLDOC",XHDCI)="</getConfigurationCallResult>"
 | 
|---|
| 158 |  S XHDCY=$NA(^TMP("XHDPTREE",$J,"XMLDOC"))
 | 
|---|
| 159 |  D ^%ZTER
 | 
|---|
| 160 |  Q
 | 
|---|