rpcw ;BMI/BI RPC WEB Viewer. ;09/27/2013
 Quit
 ;
list   ;public
 New name Set name=""
 Write "  <table>",!
 For x=1:1 Set name=$Order(^XWB(8994,"B",name)) Quit:name=""  Do list1(name)
 Write "  </table>",!
 Quit
list1(name)
 New ien Set ien=0
 For  Set ien=$Order(^XWB(8994,"B",name,ien)) Quit:+ien=0  Do list2(name,ien)
 Quit
list2(name,ien)
 Write "    <tr><td><a href=""rpcw.php?fn=main&ien="_ien_""" target=""main"">"_name_"</a></td></tr>",!
 Quit
 ;
main   ;public
 New ien,fda,descx,paraien,parasn
 Set ien=$zcmdline Quit:'ien  Do loadfda(ien,.fda)
 Write "<center><h1>"_fda("NAME")_"</h1></center>",!
 Write "<table width=""100%"">",!
 Write "<tr><th style=""width:175px"">TITLE</th><th colspan=2>VALUE</th></tr>",!
 Write "<tr><td>NAME</td><td colspan=2>"_fda("NAME")_"</td></tr>",!
 Write "<tr><td>DESCRIPTION</td><td colspan=2>"
 Set descx=0
 For  Set descx=$Order(fda("DESCRIPTION",descx)) Quit:+descx=0  Do
 . Write $$clean(fda("DESCRIPTION",descx))_"<br />",!
 Write "</td></tr>",!
 Write "<tr><td>TAG</td><td colspan=2>"_fda("TAG")_"</td></tr>",!
 Write "<tr><td>ROUTINE</td><td colspan=2>"_fda("ROUTINE")_"</td></tr>",!
 Set paraien=0
 For  Set paraien=$Order(fda(paraien)) Quit:+paraien=0  Do
 . Set parasn(fda(paraien,"SEQUENCE NUMBER"))=paraien 
 Set parax=0
 For  Set parax=$Order(parasn(parax)) Quit:+parax=0  Do
 . Set paraien=parasn(parax)
 . Write "<tr><td>INPUT PARAMETERS</td><td>SEQUENCE NUMBER</td><td>"_fda(paraien,"SEQUENCE NUMBER")_"</td></tr>",!
 . Write "<tr><td></td><td>INPUT PARAMETER</td><td>"_fda(paraien,"INPUT PARAMETER")_"</td></tr>",!
 . Write "<tr><td></td><td>DESCRIPTION</td><td>"
 . Set descx=0
 . For  Set descx=$Order(fda(paraien,"DESCRIPTION",descx)) Quit:+descx=0  Do
 .. Write $$clean(fda(paraien,"DESCRIPTION",descx))_"<br />",!
 . Write "</td></tr>",!
 . Write "<tr><td></td><td>PARAMETER TYPE</td><td>"_fda(paraien,"PARAMETER TYPE")_"</td></tr>",!
 . Write "<tr><td></td><td>REQUIRED</td><td>"_fda(paraien,"REQUIRED")_"</td></tr>",!
 . Write "<tr><td></td><td>MAXIMUM DATA LENGTH</td><td>"_fda(paraien,"MAXIMUM DATA LENGTH")_"</td></tr>",!
 . Write "<tr><td colspan=3><hr /></td></tr>",!
 Write "<tr><td>RETURN VALUE TYPE</td><td colspan=2>"_fda("RETURN VALUE TYPE")_"</td></tr>",!
 Write "<tr><td>RETURN PARAMETER DESCRIPTION</td><td colspan=2>"
 Set descx=0
 For  Set descx=$Order(fda("RETURN PARAMETER DESCRIPTION",descx)) Quit:+descx=0  Do
 . Write $$clean(fda("RETURN PARAMETER DESCRIPTION",descx))_"<br />",!
 Write "</td></tr>",!
 Write "<tr><td>AVAILABILITY</td><td colspan=2>"_fda("AVAILABILITY")_"</td></tr>",!
 Write "<tr><td>INACTIVE</td><td colspan=2>"_fda("INACTIVE")_"</td></tr>",!
 Write "<tr><td>CLIENT MANAGER</td><td colspan=2>"_fda("CLIENT MANAGER")_"</td></tr>",!
 Write "<tr><td>WORD WRAP ON</td><td colspan=2>"_fda("WORD WRAP ON")_"</td></tr>",!
 Write "<tr><td>VERSION</td><td colspan=2>"_fda("VERSION")_"</td></tr>",!
 Write "<tr><td>SUPPRESS RDV USER SETUP</td><td colspan=2>"_fda("SUPPRESS RDV USER SETUP")_"</td></tr>",!
 Write "<tr><td>APP PROXY ALLOWED</td><td colspan=2>"_fda("APP PROXY ALLOWED")_"</td></tr>",!
 Write "</table>",!
 Quit
 ;
loadfda(ien,fda)
 New ien02,x02,FDA
 Do GETS^DIQ(8994,ien,"**","R","FDA")
 Merge fda=FDA(8994,ien_",")
 Set ien02=""
 For x02=1:1 Set ien02=$Order(FDA(8994.02,ien02)) Quit:ien02=""  Do
 . Merge fda(x02)=FDA(8994.02,ien02)
 Quit
 ;
clean(input)
 New x,output1,output2,sl Set output1="",output2=""
 For x=1:1:$Length(inputSet sl=$Extract(input,xSet:$ascii(sl)<129 output1=output1_sl
 For x=1:1:$Length(output1Set sl=$Extract(output1,xSet:$ascii(sl)>31 output2=output2_sl
 Quit output2