[896] | 1 | TMGSIPH0 ;TMG/kst/SIPHON PROGRAM, FOR TRANSFERRING VISTA INSTANCES ;11/27/09
|
---|
| 2 | ;;1.0;TMG-LIB;**1**;11/27/09
|
---|
| 3 | ;
|
---|
| 4 | ;"TMG SIPHON PROGRAM, FOR TRANSFERRING VISTA INSTANCE
|
---|
| 5 | ;"----===== SERVER-SIDE CODE ====------
|
---|
| 6 | ;"Kevin Toppenberg MD
|
---|
| 7 | ;"GNU General Public License (GPL) applies
|
---|
| 8 | ;"11/27/09
|
---|
| 9 | ;
|
---|
| 10 | ;"=======================================================================
|
---|
| 11 | ;" API -- Public Functions.
|
---|
| 12 | ;"=======================================================================
|
---|
| 13 | ;"HANDLMSG(MESSAGE) -- A message handler for communication between VistA instances.
|
---|
| 14 | ;
|
---|
| 15 | ;"=======================================================================
|
---|
| 16 | ;" API -- Private Functions.
|
---|
| 17 | ;"=======================================================================
|
---|
| 18 | ;"HANDLGET(REF) --A handler for GET command between VistA instances. Get a ^global node
|
---|
| 19 | ;"HANDLGDD(FILENUM) -- Return Data Dictionary information about specified file.
|
---|
| 20 | ;"GETSUBDD(SUBFILENUM) -- Return DD information about subfiles (and sub-subfiles)
|
---|
| 21 | ;"HANDLORD(REF) --A handler for ORDREF command between VistA instances. Will get ^Global node that is $ORDER'd after REF
|
---|
| 22 | ;"HANDLNRS(FILENUM) -- Return the highest record number in given file.
|
---|
| 23 | ;"HANDGRXR(PARAMS) -- Return one record, and associated cross-reference entries
|
---|
| 24 | ;"SENDFLDS(FILENUM,IEN) -- send any .01 fields VALUES of any pointers OUT
|
---|
| 25 | ;"HANDLDIC(PARAMS) -- Do a ^DIC lookup in file for value.
|
---|
| 26 | ;"
|
---|
| 27 | ;"=======================================================================
|
---|
| 28 | ;"Dependancies
|
---|
| 29 | ;"=======================================================================
|
---|
| 30 | ;"DILF, XLFSTR, TMGSIPHU, TMGKERN2, TMGFMUT2
|
---|
| 31 | ;"=======================================================================
|
---|
| 32 | ;
|
---|
| 33 | ;"=============================================================
|
---|
| 34 | ;" Below will be core of server-side request handler.
|
---|
| 35 | ;"=============================================================
|
---|
| 36 | HANDLMSG(MESSAGE) ;
|
---|
| 37 | ;"Purpose: A message handler for communication between VistA instances.
|
---|
| 38 | ;"Input MESSAGE -- This is the message send from the client, who will be asking for
|
---|
| 39 | ;" information and records etc from this instance.
|
---|
| 40 | ;" Format: 'Command|parameters'
|
---|
| 41 | ;" -----------------------
|
---|
| 42 | ;" GET|REF -- Get a ^global node
|
---|
| 43 | ;" GET DD|FILENUM -- return Data Dictionary information about specified file.
|
---|
| 44 | ;" ORDREF|REF -- Get ^Global node that is $ORDER'd after REF
|
---|
| 45 | ;" NUMRECS|FILENUM -- Return the highest record number in given file
|
---|
| 46 | ;" PT XREF|FILENUM -- Prepair PT XREF for all records pointing INTO specified file.
|
---|
| 47 | ;" WIPE PT XREF| -- Delete the last run of PT XREF, so it can be refreshened.
|
---|
| 48 | ;" PREP XREFS|FILENUM^[1] -- Make a xref of cross-references (a backward xref)
|
---|
| 49 | ;" GET REF & FILE XREF|REF^FILENUM^IENS -- Return one reference, and associated FILENUM cross-reference entries
|
---|
| 50 | ;" GET RECORD & XREF|FILENUM^IEN -- Return one record, and associated cross-reference entries
|
---|
| 51 | ;" GET PTRS IN|FILENUM^IEN -- Get a listing of all pointers INTO requested record
|
---|
| 52 | ;" DO DIC|FILENUM^VALUE -- Do a ^DIC lookup in file for value.
|
---|
| 53 | ;" GET XREF AGE -- Get age of server-side PT xrefs etc, in HOURS
|
---|
| 54 | ;" GET .01 FLD|FILENUM^IEN -- Return INTERNAL format of .01 field. Doesn't support subfiles.
|
---|
| 55 | ;" DUMP REC|FILENUM^IENS^SHOWEMPTY -- Display dump of server record.
|
---|
| 56 | ;" GET IEN LIST|FILENUM -- Get a listing of all records (IEN's) in specified file.
|
---|
| 57 | ;" GET IEN HDR|FILENUM -- Get Last IEN,HighestIEN from file header.
|
---|
| 58 | ;" -----------------------
|
---|
| 59 | ;"Results: None
|
---|
| 60 | ;
|
---|
| 61 | NEW CMD SET CMD=$$UP^XLFSTR($PIECE(MESSAGE,"|",1))
|
---|
| 62 | SET CMD=$$TRIM^XLFSTR(CMD)
|
---|
| 63 | NEW PARAMS SET PARAMS=$$TRIM^XLFSTR($PIECE(MESSAGE,"|",2,99))
|
---|
| 64 | DO DEBUGMSG^TMGKERN2("In HANDLMSG. CMD="_CMD_" & PARAMS="_PARAMS)
|
---|
| 65 | DO
|
---|
| 66 | . NEW $ETRAP SET $ETRAP="write ""#ERROR TRAPPED# "",$ZSTATUS,! set $etrap="""",$ecode="""""
|
---|
| 67 | . IF CMD="GET" DO HANDLGET(PARAMS) QUIT
|
---|
| 68 | . IF CMD="GET DD" DO HANDLGDD(PARAMS) QUIT
|
---|
| 69 | . IF CMD="ORDREF" DO HANDLORD(PARAMS) QUIT
|
---|
| 70 | . IF CMD="NUMRECS" DO HANDLNRS(PARAMS) QUIT
|
---|
| 71 | . IF CMD="PT XREF" DO HNDLPTIX^TMGSIPH2(PARAMS) QUIT
|
---|
| 72 | . IF CMD="WIPE PT XREF" DO KILLPTIX^TMGFMUT2 QUIT
|
---|
| 73 | . IF CMD="GET PTRS IN" DO GETPTIN^TMGSIPH2(PARAMS) QUIT
|
---|
| 74 | . IF CMD="PREP XREFS" DO BAKXREF^TMGSIPH2(PARAMS) QUIT
|
---|
| 75 | . IF CMD="GET RECORD & XREF" DO HANDGRXR(PARAMS) QUIT
|
---|
| 76 | . IF CMD="GET REF & FILE XREF" DO HANDGRFX(PARAMS) QUIT
|
---|
| 77 | . IF CMD="DO DIC" DO HANDLDIC(PARAMS) QUIT
|
---|
| 78 | . IF CMD="GET XREF AGE" DO GETXRAGE^TMGSIPH2 QUIT
|
---|
| 79 | . IF CMD="GET .01 FLD" DO GET01FLD^TMGSIPH2(PARAMS) QUIT
|
---|
| 80 | . IF CMD="DUMP REC" DO DUMPREC(PARAMS) QUIT
|
---|
| 81 | . IF CMD="GET IEN LIST" DO HANDIENL^TMGSIPH2(PARAMS) QUIT
|
---|
| 82 | . IF CMD="GET IEN HDR" DO HANDLIENHDR^TMGSIPH2(PARAMS) QUIT
|
---|
| 83 | . ELSE DO
|
---|
| 84 | . . DO SEND^TMGKERN2("Got: ["_MESSAGE_"]. Server is $JOB="_$JOB)
|
---|
| 85 | QUIT
|
---|
| 86 | ;"=============================================================
|
---|
| 87 | ;"=============================================================
|
---|
| 88 | ;
|
---|
| 89 | HANDLGET(REF) ;
|
---|
| 90 | ;"Purpose: A handler for GET command between VistA instances. Get a ^global node
|
---|
| 91 | ;"Input --REF -- reference to a global. May be in Open or Closed format
|
---|
| 92 | ;"Results: none
|
---|
| 93 | ;"Output: Will write output to current device (should be socket to other instance)
|
---|
| 94 | ;
|
---|
| 95 | NEW OREF SET OREF=$$OREF^DILF(REF)
|
---|
| 96 | NEW LEN SET LEN=$LENGTH(OREF)
|
---|
| 97 | SET REF=$$CREF^DILF(REF)
|
---|
| 98 | NEW DONE SET DONE=0
|
---|
| 99 | FOR DO QUIT:(DONE>0)
|
---|
| 100 | . IF $DATA(@REF)#10 DO
|
---|
| 101 | . . DO SEND^TMGKERN2(REF_"=")
|
---|
| 102 | . . DO SEND^TMGKERN2("="_$GET(@REF))
|
---|
| 103 | . SET REF=$QUERY(@REF)
|
---|
| 104 | . IF (REF="")!($QSUBSCRIPT(REF,1)="") SET DONE=1 QUIT
|
---|
| 105 | . IF $EXTRACT(REF,1,LEN)'=OREF SET DONE=1 QUIT
|
---|
| 106 | QUIT
|
---|
| 107 | ;
|
---|
| 108 | ;
|
---|
| 109 | HANDLGDD(FILENUM) ; "Handle Get DD
|
---|
| 110 | ;"Purpose: to return Data Dictionary information about specified file.
|
---|
| 111 | SET FILENUM=+$GET(FILENUM)
|
---|
| 112 | NEW REF SET REF=$NAME(^DD(FILENUM))
|
---|
| 113 | DO HANDLGET(REF)
|
---|
| 114 | SET REF=$NAME(^DIC(FILENUM))
|
---|
| 115 | DO HANDLGET(REF)
|
---|
| 116 | ;"Get nodes from INDEX file
|
---|
| 117 | NEW IDX SET IDX=""
|
---|
| 118 | FOR SET IDX=$ORDER(^DD("IX","B",FILENUM,IDX)) QUIT:(IDX="") DO
|
---|
| 119 | . SET REF=$NAME(^DD("IX",IDX))
|
---|
| 120 | . DO HANDLGET(REF)
|
---|
| 121 | NEW FLD SET FLD=0
|
---|
| 122 | FOR SET FLD=$ORDER(^DD(FILENUM,FLD)) QUIT:(+FLD'>0) DO
|
---|
| 123 | . NEW PT SET PT=+$PIECE($GET(^DD(FILENUM,FLD,0)),"^",2)
|
---|
| 124 | . QUIT:(PT'>0)
|
---|
| 125 | . IF $DATA(^DD(PT,0,"UP")) DO GETSUBDD(PT)
|
---|
| 126 | QUIT
|
---|
| 127 | ;
|
---|
| 128 | ;
|
---|
| 129 | GETSUBDD(SUBFILENUM)
|
---|
| 130 | ;"Purpose: Return DD information about subfiles (and sub-subfiles)
|
---|
| 131 | NEW REF SET REF=$NAME(^DD(SUBFILENUM))
|
---|
| 132 | DO HANDLGET(REF)
|
---|
| 133 | NEW PT SET PT=+$PIECE($GET(^DD(SUBFILENUM,0)),"^",2)
|
---|
| 134 | QUIT:(PT'>0)
|
---|
| 135 | IF $DATA(^DD(PT,0,"UP")) DO GETSUBDD(PT)
|
---|
| 136 | QUIT
|
---|
| 137 | ;
|
---|
| 138 | ;
|
---|
| 139 | HANDLORD(REF) ;
|
---|
| 140 | ;"Purpose: A handler for ORDREF command between VistA instances.
|
---|
| 141 | ;" Will get ^Global node that is $ORDER'd after REF
|
---|
| 142 | ;" e.g. ^TIU(8925,"") --> returns node ^TIU(8925,0,
|
---|
| 143 | ;" ^TIU(8925, --> returns node ^TIU(8925.1,
|
---|
| 144 | ;"Input --REF -- reference to a global. May be in Open or Closed format
|
---|
| 145 | ;"Results: none
|
---|
| 146 | ;"Output: Will write output to current device (should be socket to other VistA instance)
|
---|
| 147 | ;"
|
---|
| 148 | NEW CREF SET CREF=$$CREF^DILF(REF)
|
---|
| 149 | SET REF=$$ORDREF^TMGSIPHU(CREF)
|
---|
| 150 | IF REF'="" DO HANDLGET(REF)
|
---|
| 151 | QUIT
|
---|
| 152 | ;
|
---|
| 153 | ;
|
---|
| 154 | HANDLNRS(FILENUM) ;
|
---|
| 155 | ;"Purpose: Return the highest record number in given file.
|
---|
| 156 | ;"Input: FILENUM -- The fileman number of the file to return info for.
|
---|
| 157 | ;"Results: None
|
---|
| 158 | DO SEND^TMGKERN2($$GETNUMREC^TMGSIPHU(FILENUM))
|
---|
| 159 | QUIT
|
---|
| 160 | ;
|
---|
| 161 | ;
|
---|
| 162 | HANDGRFX(PARAMS) ;" Handler for GET REF & FILE XREF|REF^FILENUM^IENS
|
---|
| 163 | ;"Purpose: Return one reference, and associated FILENUM cross-reference entries
|
---|
| 164 | ;" Note: It is anticipated that this will be used to get subfile entries.
|
---|
| 165 | ;"Input: PARAMS : REF^FILENUM^IENS
|
---|
| 166 | ;" REF -- should be in OPEN format (ending in a ',')
|
---|
| 167 | ;" FILENUM -- the subfile number.
|
---|
| 168 | ;" IENS -- A standard IENS string
|
---|
| 169 | ;"Output: Will write output to current device (should be socket). Format
|
---|
| 170 | ;" <Ref>=
|
---|
| 171 | ;" =<Value>
|
---|
| 172 | ;" <Ref>=
|
---|
| 173 | ;" =<Value>
|
---|
| 174 | ;" ...
|
---|
| 175 | ;" %PTRSOUT%^PointedToFile^IEN^FIELD_VALUE
|
---|
| 176 | ;" %PTRSOUT%^PointedToFile^IEN^FIELD_VALUE
|
---|
| 177 | ;" ...
|
---|
| 178 | ;"Result: none
|
---|
| 179 | ;"NOTE: This function will assume that an xref of all the cross-references has
|
---|
| 180 | ;" already been set up by calling BAKXREF^TMGSIPH1(FILENUM). This can be
|
---|
| 181 | ;" triggered on the client side by calling QUERY="PREP XREFS|<filenumber>"
|
---|
| 182 | SET PARAMS=$GET(PARAMS)
|
---|
| 183 | NEW GREF SET GREF="^"_$PIECE(PARAMS,"^",2) ;"Ref itself has a ^ in it.
|
---|
| 184 | NEW FILENUM SET FILENUM=$PIECE(PARAMS,"^",3)
|
---|
| 185 | NEW IENS SET IENS=$PIECE(PARAMS,"^",4)
|
---|
| 186 | DO HANDLGET(GREF) ;
|
---|
| 187 | ;"Now send XRef entries for IEN.
|
---|
| 188 | DO BAKXREF^TMGSIPH2(FILENUM_"^1") ;"organize XRefs if needed, keeping current orangization array
|
---|
| 189 | NEW REF SET REF=""
|
---|
| 190 | FOR SET REF=$ORDER(^TMG("PTXREF","XREFS",FILENUM,IENS,REF)) QUIT:(REF="") DO
|
---|
| 191 | . DO SEND^TMGKERN2(REF_"=")
|
---|
| 192 | . DO SEND^TMGKERN2("="_$GET(^TMG("PTXREF","XREFS",FILENUM,IENS,REF)))
|
---|
| 193 | DO SENDFLDS(FILENUM,IENS) ;"Send values of .01 fields for all pointers OUT from record
|
---|
| 194 | QUIT
|
---|
| 195 | ;
|
---|
| 196 | ;
|
---|
| 197 | HANDGRXR(PARAMS) ;
|
---|
| 198 | ;"Purpose: Return one record, and associated cross-reference entries
|
---|
| 199 | ;"Input: PARAMS : Filenumber^IEN
|
---|
| 200 | ;"Output: Will write output to current device (should be socket). Format
|
---|
| 201 | ;" <Ref>=
|
---|
| 202 | ;" =<Value>
|
---|
| 203 | ;" <Ref>=
|
---|
| 204 | ;" =<Value>
|
---|
| 205 | ;" ...
|
---|
| 206 | ;" %PTRSOUT%^PointedToFile^IEN^FIELD_VALUE
|
---|
| 207 | ;" %PTRSOUT%^PointedToFile^IEN^FIELD_VALUE
|
---|
| 208 | ;" ...
|
---|
| 209 | ;"Result: none
|
---|
| 210 | ;"NOTE: This function will assume that an xref of all the cross-references has
|
---|
| 211 | ;" already been set up by calling BAKXREF^TMGSIPH1(FILENUM). This can be
|
---|
| 212 | ;" triggered on the client side by calling QUERY="PREP XREFS|<filenumber>"
|
---|
| 213 | ;
|
---|
| 214 | NEW FILENUM,IEN
|
---|
| 215 | SET PARAMS=$GET(PARAMS)
|
---|
| 216 | SET FILENUM=+PARAMS
|
---|
| 217 | SET IEN=$PIECE(PARAMS,"^",2)
|
---|
| 218 | IF (FILENUM'>0)!(IEN'>0) QUIT
|
---|
| 219 | NEW GREF SET GREF=$GET(^DIC(FILENUM,0,"GL"))
|
---|
| 220 | IF GREF="" QUIT
|
---|
| 221 | DO HANDLGET(GREF_IEN_",") ;
|
---|
| 222 | ;"Now send XRef entries for IEN.
|
---|
| 223 | NEW REF SET REF=""
|
---|
| 224 | DO BAKXREF^TMGSIPH2(FILENUM_"^1") ;"organize XRefs if needed, keeping current orangization array
|
---|
| 225 | FOR SET REF=$ORDER(^TMG("PTXREF","XREFS",FILENUM,IEN,REF)) QUIT:(REF="") DO
|
---|
| 226 | . DO SEND^TMGKERN2(REF_"=")
|
---|
| 227 | . DO SEND^TMGKERN2("="_$GET(^TMG("PTXREF","XREFS",FILENUM,IEN,REF)))
|
---|
| 228 | DO SENDFLDS(FILENUM,IEN) ;"Send values of .01 fields for all pointers OUT from record
|
---|
| 229 | HGXDN QUIT
|
---|
| 230 | ;
|
---|
| 231 | ;
|
---|
| 232 | SENDFLDS(FILENUM,IEN) ;
|
---|
| 233 | ;"Purpose to send any .01 fields VALUES of any pointers OUT
|
---|
| 234 | ;"Input: FILENUM -- the file containing the record to be scanned
|
---|
| 235 | ;" IEN -- The record number being scanned.
|
---|
| 236 | ;"Results: none
|
---|
| 237 | ;"Output: Values will be sent to client via SEND^TMGKERN2. Format as follows:
|
---|
| 238 | ;" %PTRSOUT%^PointedToFile^IEN^FIELD_VALUE
|
---|
| 239 | ;" %PTRSOUT%^PointedToFile^IEN^FIELD_VALUE
|
---|
| 240 | NEW TALLY
|
---|
| 241 | KILL ^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM)
|
---|
| 242 | IF $$REAL1PTOUT^TMGSIPH1(FILENUM,IEN,.TALLY)=1 DO
|
---|
| 243 | . NEW REF SET REF=""
|
---|
| 244 | . FOR SET REF=$ORDER(^TMG("TMGSIPH","DD",FILENUM,"PTR OUT",REF)) QUIT:(REF="") DO
|
---|
| 245 | . . NEW INFO SET INFO=""
|
---|
| 246 | . . FOR SET INFO=$ORDER(^TMG("TMGSIPH","DD",FILENUM,"PTR OUT",REF,INFO)) QUIT:(INFO="") DO
|
---|
| 247 | . . . NEW PCE SET PCE=+INFO
|
---|
| 248 | . . . NEW P2FILE SET P2FILE=$PIECE(INFO,"^",2)
|
---|
| 249 | . . . NEW P2REF SET P2REF=$PIECE(INFO,"^",3)
|
---|
| 250 | . . . NEW IENDEPTH SET IENDEPTH=$PIECE(INFO,"^",4)
|
---|
| 251 | . . . NEW ISVIRT SET ISVIRT=($PIECE(INFO,"^",5)="V")
|
---|
| 252 | . . . NEW TEMP SET TEMP=IEN KILL IEN SET IEN=TEMP ;"kill subnodes
|
---|
| 253 | . . . NEW OKCOMBO
|
---|
| 254 | . . . FOR DO QUIT:(OKCOMBO=0)
|
---|
| 255 | . . . . SET OKCOMBO=$$IENCOMBO^TMGFMUT2(REF,IENDEPTH,.IEN) ;"Sets up IEN(n).. needed for @REF
|
---|
| 256 | . . . . QUIT:(OKCOMBO=0)
|
---|
| 257 | . . . . NEW PT SET PT=$PIECE($GET(@REF),"^",PCE)
|
---|
| 258 | . . . . IF ISVIRT,$PIECE(PT,";",2)'=P2REF QUIT ;"Loop to handle PTR with different INFO entry (V-Ptrs stored as IEN;OREF)
|
---|
| 259 | . . . . SET PT=+PT QUIT:(PT'>0)
|
---|
| 260 | . . . . NEW VALUE SET VALUE=$$FLD01^TMGSIPH2(P2FILE_"^"_PT) ;
|
---|
| 261 | . . . . DO SEND^TMGKERN2("%PTRSOUT%^"_P2FILE_"^"_PT_"^"_VALUE)
|
---|
| 262 | . . . KILL IEN("DONE"),IEN("INIT")
|
---|
| 263 | ;"KILL ^TMG("TMGSIPH","UNRESOLVED",FILENUM)
|
---|
| 264 | KILL ^TMG("TMGSIPH","NEEDED RECORDS","PTOUT",FILENUM)
|
---|
| 265 | KILL ^TMG("TMGSIPH","DD",FILENUM)
|
---|
| 266 | QUIT
|
---|
| 267 | ;
|
---|
| 268 | ;
|
---|
| 269 | HANDLDIC(PARAMS) ;
|
---|
| 270 | ;"Purpose: Do a ^DIC lookup in file for value.
|
---|
| 271 | ;"Input: Params: this is FILENUM^LOOKUPVALUE
|
---|
| 272 | ;"Result: Will send back value of Y to client
|
---|
| 273 | SET PARAMS=$GET(PARAMS)
|
---|
| 274 | NEW DIC SET DIC=+$PIECE(PARAMS,"^",1)
|
---|
| 275 | NEW Y,X SET X=$PIECE(PARAMS,"^",2)
|
---|
| 276 | SET DIC(0)="M"
|
---|
| 277 | DO ^DIC
|
---|
| 278 | DO SEND^TMGKERN2(Y)
|
---|
| 279 | QUIT
|
---|
| 280 | ;
|
---|
| 281 | ;
|
---|
| 282 | DUMPREC(PARAMS) ;
|
---|
| 283 | ;"Purpose: To do a record dump of a server-side record, sending output back to client
|
---|
| 284 | ;"Input: Params -- FILENUM^IENS^SHOWEMPTY
|
---|
| 285 | NEW FILENUM,IENS,SHOWEMPTY
|
---|
| 286 | SET PARAMS=$GET(PARAMS)
|
---|
| 287 | SET FILENUM=+PARAMS
|
---|
| 288 | SET IENS=$PIECE(PARAMS,"^",2)
|
---|
| 289 | IF (FILENUM'>0)!(IENS'>0) QUIT
|
---|
| 290 | SET SHOWEMPTY=+$PIECE(PARAMS,"^",3)
|
---|
| 291 | NEW OPTION
|
---|
| 292 | SET OPTION("WRITE REC FN")="WRLABEL^TMGSIPH0"
|
---|
| 293 | SET OPTION("WRITE FLD FN")="WFLABEL^TMGSIPH0"
|
---|
| 294 | SET OPTION("WRITE LINE FN")="WLINE^TMGSIPH0"
|
---|
| 295 | SET OPTION("WRITE WP LINE")="WWPLINE^TMGSIPH0"
|
---|
| 296 | NEW TMGDUMPS ;"Will be used with global scope
|
---|
| 297 | DO DumpRec2^TMGDEBUG(FILENUM,IENS,SHOWEMPTY,,.OPTION)
|
---|
| 298 | QUIT
|
---|
| 299 | ;
|
---|
| 300 | ;
|
---|
| 301 | WRLABEL(IEN,ENDER)
|
---|
| 302 | ;"Purpose: To actually write out labels for record starting and ending.
|
---|
| 303 | ;"Input: IEN -- the IEN (record number) of the record
|
---|
| 304 | ;" ENDER -- OPTIONAL if 1, then ends field.
|
---|
| 305 | ;"Note: also uses globally scoped variable TMGDUMPS
|
---|
| 306 | ;"Results: none.
|
---|
| 307 | ;"Note: Used by DumpRec2 above, with callback from TMGXMLE2
|
---|
| 308 | SET TMGDUMPS=$GET(TMGDUMPS)
|
---|
| 309 | IF +$GET(ENDER)>0 DO
|
---|
| 310 | . IF TMGDUMPS="" SET TMGDUMPS="."
|
---|
| 311 | ELSE SET TMGDUMPS=TMGDUMPS_" Multiple Entry #"_IEN
|
---|
| 312 | DO SEND^TMGKERN2(TMGDUMPS)
|
---|
| 313 | SET TMGDUMPS=""
|
---|
| 314 | QUIT
|
---|
| 315 | ;
|
---|
| 316 | WFLABEL(LABEL,FIELD,TYPE,ENDER)
|
---|
| 317 | ;"Purpose: This is the code that actually does writing of labels etc for output
|
---|
| 318 | ;" This is a CUSTOM CALL BACK function called by Write1Fld^TMGXMLE2
|
---|
| 319 | ;"Input: LABEL -- OPTIONAL -- Name of label, to write after 'label='
|
---|
| 320 | ;" FIELD -- OPTIONAL -- Name of field, to write after 'id='
|
---|
| 321 | ;" TYPE -- OPTIONAL -- TYPEof field, to write after 'type='
|
---|
| 322 | ;" ENDER -- OPTIONAL if 1, then ends field.
|
---|
| 323 | ;"Note: also uses globally scoped variable TMGDUMPS
|
---|
| 324 | ;"Note: Used by DumpRec2 above, with callback from TMGXMLE2
|
---|
| 325 | ;"To write out <FIELD label="NAME" id=".01" type="FREE TEXT"> or </FIELD>
|
---|
| 326 | SET TMGDUMPS=$GET(TMGDUMPS)
|
---|
| 327 | IF +$GET(ENDER)>0 DO
|
---|
| 328 | . IF TMGDUMPS="" SET TMGDUMPS="."
|
---|
| 329 | . DO SEND^TMGKERN2(TMGDUMPS)
|
---|
| 330 | . SET TMGDUMPS=""
|
---|
| 331 | ELSE DO
|
---|
| 332 | . IF $GET(FIELD)'="" SET TMGDUMPS=TMGDUMPS_$$RJ^XLFSTR(FIELD,6," ")_"-"
|
---|
| 333 | . IF $GET(LABEL)'="" SET TMGDUMPS=TMGDUMPS_LABEL_" "
|
---|
| 334 | . ;"IF $GET(TYPE)'="" SET TMGDUMPS=TMGDUMPS_"type="""_TYPE_""" "
|
---|
| 335 | . SET TMGDUMPS=TMGDUMPS_": "
|
---|
| 336 | QUIT
|
---|
| 337 | ;
|
---|
| 338 | WLINE(LINE)
|
---|
| 339 | ;"Purpose: To actually write out labels for record starting and ending.
|
---|
| 340 | ;"Input: Line -- The line of text to be written out.
|
---|
| 341 | ;"Note: also uses globally scoped variable TMGDUMPS
|
---|
| 342 | ;"Note: Used by DumpRec2 above, with callback from TMGXMLE2
|
---|
| 343 | SET TMGDUMPS=$GET(TMGDUMPS)_$GET(LINE)
|
---|
| 344 | QUIT
|
---|
| 345 | ;
|
---|
| 346 | WWPLINE(LINE)
|
---|
| 347 | ;"Purpose: To actually write out line from WP field
|
---|
| 348 | ;"Input: Line -- The line of text to be written out.
|
---|
| 349 | ;"Note: also uses globally scoped variable TMGDUMPS
|
---|
| 350 | ;"Note: Used by DumpRec2 above, with callback from TMGXMLE2
|
---|
| 351 | SET TMGDUMPS=$GET(TMGDUMPS)_$GET(LINE)
|
---|
| 352 | IF TMGDUMPS="" SET TMGDUMPS="."
|
---|
| 353 | DO SEND^TMGKERN2(TMGDUMPS)
|
---|
| 354 | SET TMGDUMPS=""
|
---|
| 355 | QUIT
|
---|