| 1 | ONCSAPIT ;Hines OIFO/SG - COLLABORATIVE STAGING (TABLES)  ; 12/7/06 11:26am
 | 
|---|
| 2 |  ;;2.11;ONCOLOGY;**40,41,47**;Mar 07, 1995;Build 19
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;--- STRUCTURE OF THE RESPONSE
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ; <?xml version="1.0" encoding="utf-8"?>
 | 
|---|
| 7 |  ; <soap:Envelope
 | 
|---|
| 8 |  ;   xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
 | 
|---|
| 9 |  ;   soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
 | 
|---|
| 10 |  ;   <soap:Body>
 | 
|---|
| 11 |  ;     <CS-RESPONSE xmlns="http://vista.med.va.gov/oncology">
 | 
|---|
| 12 |  ;       <SCHEMA>...</SCHEMA>
 | 
|---|
| 13 |  ;       <TABLE>
 | 
|---|
| 14 |  ;         <NUMBER>...</NUMBER>
 | 
|---|
| 15 |  ;         <PATTERN>...</PATTERN>
 | 
|---|
| 16 |  ;         <ROLE>...</ROLE>
 | 
|---|
| 17 |  ;         <SUBTITLE>...</SUBTITLE>
 | 
|---|
| 18 |  ;         <TITLE>...</TITLE>
 | 
|---|
| 19 |  ;         <ROWS>
 | 
|---|
| 20 |  ;           <ROW>
 | 
|---|
| 21 |  ;             <CODE>...</CODE>
 | 
|---|
| 22 |  ;             <DESCR>
 | 
|---|
| 23 |  ;               <P>...</P>
 | 
|---|
| 24 |  ;               ...
 | 
|---|
| 25 |  ;             </DESCR>
 | 
|---|
| 26 |  ;             <AC>...</AC>
 | 
|---|
| 27 |  ;             ...
 | 
|---|
| 28 |  ;           </ROW>
 | 
|---|
| 29 |  ;           ...
 | 
|---|
| 30 |  ;         </ROWS>
 | 
|---|
| 31 |  ;         <NOTES>
 | 
|---|
| 32 |  ;           <TN>
 | 
|---|
| 33 |  ;             <P>...</P>
 | 
|---|
| 34 |  ;             ...
 | 
|---|
| 35 |  ;           </TN>
 | 
|---|
| 36 |  ;           ...
 | 
|---|
| 37 |  ;           <FN>
 | 
|---|
| 38 |  ;             <P>...</P>
 | 
|---|
| 39 |  ;             ...
 | 
|---|
| 40 |  ;           </FN>
 | 
|---|
| 41 |  ;           ...
 | 
|---|
| 42 |  ;         </NOTES>
 | 
|---|
| 43 |  ;       </TABLE>
 | 
|---|
| 44 |  ;       ...
 | 
|---|
| 45 |  ;     </CS-RESPONSE>
 | 
|---|
| 46 |  ;     <soap:Fault>
 | 
|---|
| 47 |  ;       <faultcode> ... </faultcode>
 | 
|---|
| 48 |  ;       <faultstring> ... </faultstring>
 | 
|---|
| 49 |  ;       <detail>
 | 
|---|
| 50 |  ;         <RC> ... </RC>
 | 
|---|
| 51 |  ;       </detail>
 | 
|---|
| 52 |  ;     </soap:Fault>
 | 
|---|
| 53 |  ;   </soap:Body >
 | 
|---|
| 54 |  ; </soap:Envelope>
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 |  ;
 | 
|---|
| 58 |  ;***** LOADS THE CS CODE DESCRIPTION
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 |  ; [.ONCSAPI]    Reference to the API descriptor (see the ^ONCSAPI)
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; SITE          Primary site
 | 
|---|
| 63 |  ; HIST          Histology
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  ; TABLE         Table number (see the ^ONCSAPI routine)
 | 
|---|
| 66 |  ; CODE          Primary code of a table row
 | 
|---|
| 67 |  ;
 | 
|---|
| 68 |  ; ONC8DST       Closed reference of the destination buffer
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 |  ; Return Values:
 | 
|---|
| 71 |  ;        0  Ok
 | 
|---|
| 72 |  ;       <0  Error code
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | CODEDESC(ONCSAPI,SITE,HIST,TABLE,CODE,ONC8DST) ;
 | 
|---|
| 75 |  N I,NODE,RC,ROW,TBLIEN,TMP
 | 
|---|
| 76 |  D CLEAR^ONCSAPIE()  K @ONC8DST
 | 
|---|
| 77 |  Q:$G(CODE)?." " $$ERROR^ONCSAPIE(-6,,"CODE",$G(CODE))
 | 
|---|
| 78 |  ;---
 | 
|---|
| 79 |  L +^XTMP("ONCSAPI","TABLES","JOB",$J):5  E  D  Q RC
 | 
|---|
| 80 |  . S RC=$$ERROR^ONCSAPIE(-15,,"access control node")
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  S RC=0  D
 | 
|---|
| 83 |  . ;--- Get the table IEN
 | 
|---|
| 84 |  . S TBLIEN=$$GETCSTBL(.ONCSAPI,SITE,HIST,TABLE)
 | 
|---|
| 85 |  . I TBLIEN<0  S RC=TBLIEN  Q
 | 
|---|
| 86 |  . S NODE=$NA(^XTMP("ONCSAPI","TABLES",TBLIEN))
 | 
|---|
| 87 |  . S CODE=+$G(CODE)
 | 
|---|
| 88 |  . ;--- Check the single code
 | 
|---|
| 89 |  . S ROW=$G(@NODE@("C",CODE))
 | 
|---|
| 90 |  . ;--- Check the interval
 | 
|---|
| 91 |  . I ROW'>0  D  I ROW'>0  S RC=$$ERROR^ONCSAPIE(-6,,"CODE",CODE)  Q
 | 
|---|
| 92 |  . . S TMP=$O(@NODE@("C",CODE),-1)  Q:TMP=""
 | 
|---|
| 93 |  . . S ROW=$G(@NODE@("C",TMP))
 | 
|---|
| 94 |  . . S:CODE>$P(ROW,U,2) ROW=0
 | 
|---|
| 95 |  . ;--- Load the description
 | 
|---|
| 96 |  . M @ONC8DST=@NODE@(+ROW,3)
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  L -^XTMP("ONCSAPI","TABLES","JOB",$J)
 | 
|---|
| 99 |  Q $S(RC<0:RC,1:0)
 | 
|---|
| 100 |  ;
 | 
|---|
| 101 |  ;***** END ELEMENT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  ; ELMT          Name of the element
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | ENDEL(ELMT) ;
 | 
|---|
| 106 |  N I,J,L,L2E,L3E,SUBS,TMP
 | 
|---|
| 107 |  S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L)
 | 
|---|
| 108 |  S L3E=$P(ONCXML("PATH"),",",L-2,L)
 | 
|---|
| 109 |  D ENDEL^ONCSAPIX(ELMT)
 | 
|---|
| 110 |  ;---
 | 
|---|
| 111 |  I L2E="CS-RESPONSE,TABLE"  D  Q
 | 
|---|
| 112 |  . N NAME,SCHEMA,TABLE
 | 
|---|
| 113 |  . S SCHEMA=+$G(ONCXML("SCHEMA")),TABLE=+$P(ONCTBDSC,U,3)
 | 
|---|
| 114 |  . S NAME=$P(ONCTBDSC,U,5)
 | 
|---|
| 115 |  . I (SCHEMA'>0)!(TABLE'>0)!(NAME="")  K @ONCXML@(ONCTBIEN)  Q
 | 
|---|
| 116 |  . S $P(ONCTBDSC,U,2)=SCHEMA
 | 
|---|
| 117 |  . ;---
 | 
|---|
| 118 |  . S @ONCXML@(ONCTBIEN,0)=$E(ONCTBDSC,1,254)
 | 
|---|
| 119 |  . S @ONCXML@("ST",SCHEMA,TABLE)=ONCTBIEN
 | 
|---|
| 120 |  ;---
 | 
|---|
| 121 |  I L2E="ROW,CODE"  D  Q
 | 
|---|
| 122 |  . S $P(@ONCXML@(ONCTBIEN,ONCTBROW,1),U)=ONCXML("ROWCODE")
 | 
|---|
| 123 |  . Q:ONCXML("ROWCODE")?."-"
 | 
|---|
| 124 |  . S TMP=ONCTBROW
 | 
|---|
| 125 |  . S:ONCXML("ROWCODE")["-" $P(TMP,U,2)=+$P(ONCXML("ROWCODE"),"-",2)
 | 
|---|
| 126 |  . S @ONCXML@(ONCTBIEN,"C",+ONCXML("ROWCODE"))=TMP
 | 
|---|
| 127 |  I L3E="ROW,DESCR,P"  D  Q
 | 
|---|
| 128 |  . S J=+$O(@ONCXML@(ONCTBIEN,ONCTBROW,3,""),-1)
 | 
|---|
| 129 |  . S I=""
 | 
|---|
| 130 |  . F  S I=$O(^UTILITY($J,"W",1,I))  Q:I=""  D
 | 
|---|
| 131 |  . . S TMP=$G(^UTILITY($J,"W",1,I,0)),J=J+1
 | 
|---|
| 132 |  . . S @ONCXML@(ONCTBIEN,ONCTBROW,3,J)=$$TRIM^XLFSTR(TMP,"R")
 | 
|---|
| 133 |  ;---
 | 
|---|
| 134 |  I (L3E="NOTES,FN,P")!(L3E="NOTES,TN,P")  D  Q
 | 
|---|
| 135 |  . S SUBS=$P(L3E,",",2)
 | 
|---|
| 136 |  . S J=+$O(@ONCXML@(ONCTBIEN,SUBS,ONCXML(SUBS),""),-1)
 | 
|---|
| 137 |  . S I=""
 | 
|---|
| 138 |  . F  S I=$O(^UTILITY($J,"W",1,I))  Q:I=""  D
 | 
|---|
| 139 |  . . S TMP=$G(^UTILITY($J,"W",1,I,0)),J=J+1
 | 
|---|
| 140 |  . . S @ONCXML@(ONCTBIEN,SUBS,ONCXML(SUBS),J)=$$TRIM^XLFSTR(TMP,"R")
 | 
|---|
| 141 |  Q
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  ;***** RETURNS THE TABLE IEN (LOADS THE TABLES IF NECESSARY)
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 |  ; [.ONCSAPI]    Reference to the API descriptor (see the ^ONCSAPI)
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  ; SITE          Primary site
 | 
|---|
| 148 |  ; HIST          Histology
 | 
|---|
| 149 |  ; TABLE         Table number                    (see the ^ONCSAPI)
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  ; The ^TMP("ONCSAPIT",$J) global node is used by this function.
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 |  ; Return Values:
 | 
|---|
| 154 |  ;       >0  IEN of the table
 | 
|---|
| 155 |  ;       <0  Error code
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 | GETCSTBL(ONCSAPI,SITE,HIST,TABLE) ;
 | 
|---|
| 158 |  N ONCTBDSC      ; Descriptor of the table
 | 
|---|
| 159 |  N ONCTBIEN      ; IEN of the table
 | 
|---|
| 160 |  N ONCTBROW      ; Row number
 | 
|---|
| 161 |  ;
 | 
|---|
| 162 |  N DST,ONCREQ,ONCRSP,ONCXML,SCHEMA,URL,XHIST,XSITE
 | 
|---|
| 163 |  D CLEAR^ONCSAPIE()
 | 
|---|
| 164 |  Q:TABLE'>0 $$ERROR^ONCSAPIE(-6,,"TABLE",TABLE)
 | 
|---|
| 165 |  ;--- Initialize constants and variables
 | 
|---|
| 166 |  S ONCXML=$NA(^XTMP("ONCSAPI","TABLES"))
 | 
|---|
| 167 |  S ONCXML("XSITE")=$S(SITE'="":SITE,1:" ")
 | 
|---|
| 168 |  S ONCXML("XHIST")=$S(HIST'="":HIST,1:" ")
 | 
|---|
| 169 |  ;
 | 
|---|
| 170 |  ;--- Check if the schema number is available
 | 
|---|
| 171 |  S SCHEMA=+$G(@ONCXML@("SH",ONCXML("XSITE"),ONCXML("XHIST")))
 | 
|---|
| 172 |  I SCHEMA'>0  D  Q:SCHEMA<0 SCHEMA
 | 
|---|
| 173 |  . S SCHEMA=+$$SCHEMA^ONCSAPIS(.ONCSAPI,SITE,HIST)
 | 
|---|
| 174 |  ;
 | 
|---|
| 175 |  ;--- Check if the table is available
 | 
|---|
| 176 |  S ONCTBIEN=+$G(@ONCXML@("ST",SCHEMA,TABLE))
 | 
|---|
| 177 |  Q:ONCTBIEN>0 ONCTBIEN
 | 
|---|
| 178 |  S ONCRSP=$NA(^TMP("ONCSAPIT",$J))  K @ONCRSP
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 |  ;---  Get the server URL
 | 
|---|
| 181 |  S URL=$$GETCSURL^ONCSAPIU()
 | 
|---|
| 182 |  ;
 | 
|---|
| 183 |  L +@ONCXML@("ST",SCHEMA,TABLE):5
 | 
|---|
| 184 |  E  Q $$ERROR^ONCSAPIE(-15,,"local CS table")
 | 
|---|
| 185 |  S RC=0  D
 | 
|---|
| 186 |  . ;--- Check if the table has become available
 | 
|---|
| 187 |  . S ONCTBIEN=+$G(@ONCXML@("ST",SCHEMA,TABLE))  Q:ONCTBIEN>0
 | 
|---|
| 188 |  . ;--- Prepare the request data
 | 
|---|
| 189 |  . S DST="ONCREQ"
 | 
|---|
| 190 |  . D HEADER^ONCSAPIR(.DST,"CS-GET-TABLES")
 | 
|---|
| 191 |  . D PUT^ONCSAPIR(.DST,"SCHEMA",SCHEMA)
 | 
|---|
| 192 |  . D PUT^ONCSAPIR(.DST,"TABLE",TABLE)
 | 
|---|
| 193 |  . D TRAILER^ONCSAPIR(.DST)
 | 
|---|
| 194 |  . K DST
 | 
|---|
| 195 |  . ;--- Send the request and get the response
 | 
|---|
| 196 |  . D:$G(ONCSAPI("DEBUG"))
 | 
|---|
| 197 |  . . D ZW^ONCSAPIU("ONCREQ","*** 'TABLE' REQUEST ***")
 | 
|---|
| 198 |  . S RC=$$REQUEST^ONCSAPIR(URL,ONCRSP,"ONCREQ")  Q:RC<0
 | 
|---|
| 199 |  . D:$G(ONCSAPI("DEBUG"))
 | 
|---|
| 200 |  . . D ZW^ONCSAPIU(ONCRSP,"*** 'TABLE' RESPONSE ***")
 | 
|---|
| 201 |  . ;--- Load the table into the XTMP global
 | 
|---|
| 202 |  . D SETCBK(.CBK),EN^MXMLPRSE(ONCRSP,.CBK,"W")
 | 
|---|
| 203 |  . ;--- Check for parsing and web service errors
 | 
|---|
| 204 |  . S RC=$$CHKERR^ONCSAPIR(.ONCXML)  Q:RC<0
 | 
|---|
| 205 |  L -@ONCXML@("ST",SCHEMA,TABLE)
 | 
|---|
| 206 |  ;
 | 
|---|
| 207 |  ;--- Cleanup
 | 
|---|
| 208 |  K @ONCRSP
 | 
|---|
| 209 |  Q $S(RC<0:RC,1:+$G(ONCTBIEN))
 | 
|---|
| 210 |  ;
 | 
|---|
| 211 |  ;***** SETS THE EVENT INTERFACE ENTRY POINTS
 | 
|---|
| 212 |  ;
 | 
|---|
| 213 |  ; .CBK          Reference to the destination list
 | 
|---|
| 214 |  ;
 | 
|---|
| 215 | SETCBK(CBK) ;
 | 
|---|
| 216 |  ;;CHARACTERS  ^   TEXT^ONCSAPIT
 | 
|---|
| 217 |  ;;ENDELEMENT  ^  ENDEL^ONCSAPIT
 | 
|---|
| 218 |  ;;STARTELEMENT^STARTEL^ONCSAPIT
 | 
|---|
| 219 |  ;
 | 
|---|
| 220 |  D SETCBK^ONCSAPIX(.CBK,"SETCBK^ONCSAPIT")
 | 
|---|
| 221 |  Q
 | 
|---|
| 222 |  ;
 | 
|---|
| 223 |  ;***** START ELEMENT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 224 |  ;
 | 
|---|
| 225 |  ; ELMT          Name of the element
 | 
|---|
| 226 |  ;
 | 
|---|
| 227 |  ; .ATTR         List of attributes and their values
 | 
|---|
| 228 |  ;
 | 
|---|
| 229 | STARTEL(ELMT,ATTR) ;
 | 
|---|
| 230 |  N L,L2E,L3E,SUBS,TBLIEN
 | 
|---|
| 231 |  D STARTEL^ONCSAPIX(ELMT,.ATTR)
 | 
|---|
| 232 |  S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L)
 | 
|---|
| 233 |  S L3E=$P(ONCXML("PATH"),",",L-2,L)
 | 
|---|
| 234 |  ;---
 | 
|---|
| 235 |  I L2E="CS-RESPONSE,TABLE"  D  Q
 | 
|---|
| 236 |  . S ONCTBIEN=+$O(@ONCXML@(" "),-1)+1
 | 
|---|
| 237 |  . S ONCTBDSC="",ONCTBROW=0
 | 
|---|
| 238 |  . S (ONCXML("FN"),ONCXML("TN"))=0
 | 
|---|
| 239 |  ;---
 | 
|---|
| 240 |  I L2E="ROWS,ROW"  D  Q
 | 
|---|
| 241 |  . S ONCXML("ROWCODE")="",ONCXML("AC")=1
 | 
|---|
| 242 |  . S ONCTBROW=ONCTBROW+1
 | 
|---|
| 243 |  ;---
 | 
|---|
| 244 |  I L2E="ROW,AC"  S ONCXML("AC")=ONCXML("AC")+1  Q
 | 
|---|
| 245 |  I L3E="ROW,DESCR,P"  K ^UTILITY($J,"W")  Q
 | 
|---|
| 246 |  ;---
 | 
|---|
| 247 |  I (L2E="NOTES,FN")!(L2E="NOTES,TN")  D   Q
 | 
|---|
| 248 |  . S SUBS=$P(L2E,",",2),ONCXML(SUBS)=$G(ONCXML(SUBS))+1 ; Note number
 | 
|---|
| 249 |  I L3E="NOTES,FN,P"   K ^UTILITY($J,"W")  Q
 | 
|---|
| 250 |  I L3E="NOTES,TN,P"   K ^UTILITY($J,"W")  Q
 | 
|---|
| 251 |  Q
 | 
|---|
| 252 |  ;
 | 
|---|
| 253 |  ;***** RETURNS THE TABLE TITLE AND SUBTITLE
 | 
|---|
| 254 |  ;
 | 
|---|
| 255 |  ; [.ONCSAPI]    Reference to the API descriptor (see the ^ONCSAPI)
 | 
|---|
| 256 |  ;
 | 
|---|
| 257 |  ; SITE          Primary site
 | 
|---|
| 258 |  ; HIST          Histology
 | 
|---|
| 259 |  ; TABLE         Table number                    (see the ^ONCSAPI)
 | 
|---|
| 260 |  ;
 | 
|---|
| 261 |  ; Tables other than site specific factors (10-15) usually do not
 | 
|---|
| 262 |  ; have subtitles.
 | 
|---|
| 263 |  ;
 | 
|---|
| 264 |  ; Return Values:
 | 
|---|
| 265 |  ;       <0  Error code
 | 
|---|
| 266 |  ;        0  0^Title^Subtitle
 | 
|---|
| 267 |  ;
 | 
|---|
| 268 | TBLTTL(ONCSAPI,SITE,HIST,TABLE) ;
 | 
|---|
| 269 |  N TBLIEN
 | 
|---|
| 270 |  ;--- Make sure that table info is loaded
 | 
|---|
| 271 |  S TBLIEN=$$GETCSTBL(.ONCSAPI,SITE,HIST,TABLE)  Q:TBLIEN<0 TBLIEN
 | 
|---|
| 272 |  ;--- Return the table subtitle
 | 
|---|
| 273 |  Q 0_U_$P($G(^XTMP("ONCSAPI","TABLES",TBLIEN,0)),U,5,6)
 | 
|---|
| 274 |  ;
 | 
|---|
| 275 |  ;***** TEXT CALLBACK FOR THE SAX PARSER
 | 
|---|
| 276 |  ;
 | 
|---|
| 277 |  ; TXT           Line of unmarked text
 | 
|---|
| 278 |  ;
 | 
|---|
| 279 | TEXT(TXT) ;
 | 
|---|
| 280 |  N I,L,L2E,L3E,TMP
 | 
|---|
| 281 |  S L=$L(ONCXML("PATH"),","),L2E=$P(ONCXML("PATH"),",",L-1,L)
 | 
|---|
| 282 |  S L3E=$P(ONCXML("PATH"),",",L-2,L)
 | 
|---|
| 283 |  ;---
 | 
|---|
| 284 |  I L2E="CS-RESPONSE,SCHEMA"  S ONCXML("SCHEMA")=TXT  Q
 | 
|---|
| 285 |  ;--- Table descriptor
 | 
|---|
| 286 |  I L2E="TABLE,NUMBER"   S $P(ONCTBDSC,U,3)=$P(ONCTBDSC,U,3)_TXT  Q
 | 
|---|
| 287 |  I L2E="TABLE,PATTERN"  S $P(ONCTBDSC,U,4)=$P(ONCTBDSC,U,4)_TXT  Q
 | 
|---|
| 288 |  I L2E="TABLE,SUBTITLE" S $P(ONCTBDSC,U,6)=$P(ONCTBDSC,U,6)_TXT  Q
 | 
|---|
| 289 |  I L2E="TABLE,TITLE"    S $P(ONCTBDSC,U,5)=$P(ONCTBDSC,U,5)_TXT  Q
 | 
|---|
| 290 |  ;--- Codes
 | 
|---|
| 291 |  I L2E="ROW,AC"  D  Q
 | 
|---|
| 292 |  . S $P(@ONCXML@(ONCTBIEN,ONCTBROW,1),U,ONCXML("AC"))=TXT
 | 
|---|
| 293 |  I L2E="ROW,CODE"  D  Q
 | 
|---|
| 294 |  . S ONCXML("ROWCODE")=ONCXML("ROWCODE")_TXT
 | 
|---|
| 295 |  ;--- Row description
 | 
|---|
| 296 |  I L3E="ROW,DESCR,P"  D WW(.TXT,70)  Q
 | 
|---|
| 297 |  ;--- Notes
 | 
|---|
| 298 |  I L3E="NOTES,FN,P"  D WW(.TXT,75)  Q
 | 
|---|
| 299 |  I L3E="NOTES,TN,P"  D WW(.TXT,75)  Q
 | 
|---|
| 300 |  ;--- Default processing
 | 
|---|
| 301 |  D TEXT^ONCSAPIX(TXT)
 | 
|---|
| 302 |  Q
 | 
|---|
| 303 |  ;
 | 
|---|
| 304 |  ;***** REFORMATS THE TEXT AND WRAPS THE LINES
 | 
|---|
| 305 | WW(TXT,DIWR) ;
 | 
|---|
| 306 |  N CR,DIWF,DIWL,I,ONCI1,ONCI2,LF,X
 | 
|---|
| 307 |  S DIWF="|",DIWL=1
 | 
|---|
| 308 |  S ONCI1=1,(ONCI2,L)=$L(TXT)
 | 
|---|
| 309 |  F  D  Q:ONCI2>L  S ONCI1=ONCI2
 | 
|---|
| 310 |  . S ONCI2=$F(TXT,$C(13),ONCI1),(CR,LF)=0
 | 
|---|
| 311 |  . I ONCI2>0  S CR=1  S:$A(TXT,ONCI2)=10 LF=1,ONCI2=ONCI2+1
 | 
|---|
| 312 |  . E  D
 | 
|---|
| 313 |  . . S ONCI2=$F(TXT,$C(10),ONCI1)
 | 
|---|
| 314 |  . . I ONCI2>0  S LF=1
 | 
|---|
| 315 |  . . E  S ONCI2=L+1
 | 
|---|
| 316 |  . F I=ONCI1:1:ONCI2  Q:$E(TXT,I)'=" "
 | 
|---|
| 317 |  . S X=$E(TXT,(I+ONCI1)\2,ONCI2-1-CR-LF)
 | 
|---|
| 318 |  . D ^DIWP
 | 
|---|
| 319 |  Q
 | 
|---|