Why would you hack around Studio to mimic what is ready to use in Atelier ?
- Log in to post comments
Why would you hack around Studio to mimic what is ready to use in Atelier ?
just for better readability of the audience I transformed your WHEN condition that dictates speed.
It shows me that you basically check on (HL7.{RGSgrp(1).AIL:LocationResourceID(1).Room}
I see not much opportunity for optimization of CONTAINS
But for your StartsWith you may try this construct:
In(SubString((HL7.{RGSgrp(1).AIL:LocationResourceID(1).Room},1,6),"HOC OR","HOC EN")
or
In(SubString((HL7.{RGSgrp(1).AIL:LocationResourceID(1).Room},1,6),"ONT EN","GAL OR","GAL EN",BUC OR")
An HealthShare expert might be able to answer if it is possible to have an index on the fields of your WHEN condition.
A different approach could be to handle the whole WHEN in a Custom Utility Function
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…
the code is already included in the CSP example
the file comes a MIME data in %request:
<!-- As form is submitted to this page look to see if we have the stream in the %request object -->
<csp:if condition='($data(%request.MimeData("FileStream",1)))'>
<hr><br>
Submitted filename: <b>#(..EscapeHTML(%request.MimeData("FileStream",1).FileName))#</b><br>
Size of file: <b>#(..EscapeHTML(%request.MimeData("FileStream",1).Size))#</b><br>
Mime Section: <b>#(..EscapeHTML(%request.MimeData("FileStream",1).MimeSection))#</b><br>
Type of stream: <b>#(..EscapeHTML($classname(%request.MimeData("FileStream",1))))#</b><br>
Content Type: <b>#(..EscapeHTML(%request.MimeData("FileStream",1).ContentType))#</b><br>
<br>
First 200 characters of stream:<br>
<ul>
<script language="Cache" runat="server">
See also doc on %CSP.Request
http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?…
It seems you try to call ans Action that is not defined / compiled
Method GetMsgClass(action As %String, messageChildlist As %Integer, Output methodName As %String, bodyStream As %GlobalCharacterStream = "") As %String [ Internal, ServerOnly = 1 ]
{
Set (methodName,className,msgClass,methodList)=""
Set class=$classname()
Set methodList=$get($$$SOAPParametersSoapActionList(class,action))
>>>> this is line +3 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
this translates to and there is no attempt to write something.
But finally: . . . . stNow"),h:\dev5\</text>
Does your Caché Server Instance have access right to the bolded directory location ???? This smells like <PROTECT>
Hey, Nicole
That's excellent !!!
What ever I click on shows up in "Atelier Documentation" Tab.
Thanks for the hint! ![]()
You may try to cheat it by changing the <input> tag to
and you get in CHROME and Firefox
C:\fakepath\EUR_Meldung.pdf
and fakepath doesn't exist obviously
while IE11 and EDGE on Windows10 tell me the real path (!)
C:\Users\ich\Desktop\EUR\EUR_Meldung.pdf
I give no further comment related to security & privacy on products from M$
OK, you look for something different than I understood.
The CLASS REFERENCE to DocBook seems to be not directly available as in Studio.
Just by external access to Documentation ....
Part of it is found if you have an class in your editor and move your cursor over a class name
then you get a volatile class description that you can nail down by clicking or <F2>
Its's pretty similar to the DocBook version EXCEPT that you have no further references (e.g. Data Types or %Status or ...)
So it's not a multi level navigation like in browser!
For illustration I have done this for %Persitent. For %Populate, %XML.Adaptor you have do again and again.
Easier:
in tab Server Explorer clickk to ADD NEW Sever Connection (green cross)

Could you pls. be a little bit more precise in what context you expect the reference?
A screenshot would be nice to explain your issue.
To my understanding the structure of your global is irrelevant in this context.
If you want to use sharding forget about ALL global access.
You only access works over SQL ! (at least at the moment, objects may follow in some future)
It's the decision of the sharing logic where and how data are stored in globals.
If you ignore this and continue with direct global access you have a good chance to break it.
This naming "mistake" of %ZEN caused a lot of extra checks and workarounds that we may have to carry around forever. ![]()
My personal proposal "CSP#" written as CSPXX (CSPX was already used by Ensemble) didn't win the internal naming contest. ![]()
Guess why. ![]()
List of supported nnenmonics for ANSI terminals (X364)
APC ; Application program command
BEL ; Ring the bell
CBT(%1) ; Cursor backward tabulation %1 tab stops
CCH ; Cancel character
CHA(%1) ; Cursor horizontal absolute (move to column %1)
CHT(%1) ; Cursor horizontal tabulation (forward %1 tab stops)
CNL(%1) ; Cursor next line (cursor down %1 lines)
CPL(%1) ; Cursor preceding line (cursor up %1 lines)
CPR ; Cursor position report (return in $KEY)
CTC(%1,%2,%3,%4,%5,%6,%7,%8,%9) ; Cursor tabulation control
CUB(%1) ; Cursor backward %1 columns
CUD(%1) ; Cursor down %1 lines
CUF(%1) ; Cursor forward %1 columns
CUP(%2,%1) ; Cursor position (column %1, line %2)
CUU(%1) ; Cursor up %1 lines
CVT(%1) ; Cursor vertical tabulation
DAQ(%1,%2,%3,%4,%5,%6,%7,%8,%9) ; Define area qualification
DCH(%1) ; Delete %1 characters
DCS ; Device control string
DL(%1) ; Delete %1 lines
DSR(%1) ; Device status report - type %1 - return in $KEY
EA(%1) ; Erase in area
ECH(%1) ; Erase %1 characters
ED(%1) ; Erase in display (%1=0 cursor-to-end,1 begin-to-cursor,2 entire scr)
EF(%1) ; Erase in field
EL(%1) ; Erase in line (%1=0 cursor-to-end, 1 begin-to-cursor, 2 entire line)
EPA ; End of protected area
ESA ; End of selected area
HPA(%1) ; Horizontal position attribute (cursor to column %1)
HPR(%1) ; Horizontal position relative (cursor forward %1 columns)
HTJ ; Horizontal tab with justify
HTS ; Horizontal tabulation set
HVP(%1,%2) ; Horizontal and vertical position (column %1, line %2)
ICH(%1) ; Insert %1 characters
IL(%1) ; Insert %1 lines
IND ; Index
INT ; Interrupt
MC ; Media copy
MW ; Message waiting
NEL ; Next line
NP(%1) ; Next page (advance %1 pages of terminal display memory)
OSC ; Operating system command
PLD ; Partial line down
PLU ; Partial line up
PM ; Privacy message
PP(%1) ; Preceding page (backup %1 pages of terminal display memory)
PU1 ; Private use one
PU2 ; Private use two
REP ; Repeat
RI ; Reverse index
RIS ; Reset to initial state
RM(%1,%2,%3,%4,%5,%6,%7,%8,%9) ; Reset mode
SEM ; Select editing extent mode
SGR(%1,%2,%3,%4,%5,%6,%7,%8,%9) ; Select graphic rendition %1 thru %9
SM(%1,%2,%3,%4,%5,%6,%7,%8,%9) ; Set mode
SPA ; Start of protected area
SS2 ; Single shift two
SS3 ; Single shift three
SSA ; Start of selected area
ST ; String terminator
STS ; Set transmit state
SU ; Scroll up
TBC ; Tabulation clear
VPA(%1) ; Vertical position attribute (move to row %1 at same column)
VPR(%1) ; Vertical position relative (move down %1 lines at same column)
VTS ; Vertical tabulation sets
With this reply I'd bet om SOAP
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> ......
But without details it's a guesswork. At least some schema for the content of PUT is required.
What I've seen at UPS there are many interfaces. So which one is it ?
This was more a code correction exercise.
Honestly I wouldn't have done it that way at all. But using %XML.TextReader instead.
It was just to late in the evening to do a pretty solution.
The next auditor may do it.
BTW. for Attributes it'S %lev+1*3
pls. point me to that WSDL or post it so we can try.
Without WSDL all to say isthe same what the error says: some important parameters are missing.
The XML document is well formed but the document is not valid
As Eduard already pointed out there is just no need to use %XML.Node as %XML.Document inherits it already
I have elaborated your code also to cover Attributes and Chlidren in the document.
and added some readability features.
To some extend %XML.TextReader could have done the same.
No need to copy the code from browser the class + test data is attached. xmlreading.zip
It seems to me you try to call a SOAP service.
That service requires some special XML structured content. That is missing. It is typically placed in Authtoken.Entity
you can test your request by
set tSc = AuthToken.Post("/webservices/Void",1) to see what you send.with is empty in your case.
It may work with pure %Net.HttpReqquest but if you have a valid WSDL definition you better use
the WebService Client Generator in Caché Studio that does it all for you.
It would be useful to have sour WSDL to try it. Pls. attach it.
As I don't have a personal account on UPS I'n unable to identify what you a re trying to achieve.
I worked also with PHP WS. It does a lot under cover (without your control) that you have to do in Caché by your own code.
eg. at any request the related WDSL is downloaded for actual mapping.
you should ensure that in the last else branch in method ..OutputNode() your variable
alChild is an object of type %XML.Document to satify your method
.. XmlToJSONnode(sbJSON As %AbstractStream, node As %XML.Document, showNodeName As %Boolean)
when you call it.
it just works with local variables in memory.
I referred to this:
I was wondering where this goes and how you could get so far.
Caché uses a temp file.
I 'm not aware of such option.
I ran also the original class (with .$toJSOMFormat) in 2016.4 with the same effect.
JSON output (trapped over I/O redirection) looks also good.
I fear the huge XDATA block (HTML, JS, CSS) didn't make it correctly via the Studio import.
It looked very strange with many empty lines inserted.
correct! this is just a string looking like an oref, but no oref
Analyzing you code I see the problem in this line:
I take for given that sbJSON is a valid object.
So I further investigate on node
#1 from ..
#2 is suspicious as in ..
so what you hand over is not an oref as this looks like <integer>@<classname>
therefore you fail with <INVALID OREF>zXmlToJSONnode+3^SharpJSONToXML.1
so some action is required to find out what happens
BTW:
passing sbJSON by reference would make this recursive construct easier to understand
as you intend to work to the same stream object anyhow.
or just use %sbJSON as single common reference
And what's your question ?
with
you miss some content to POST and get
use instead
and receive
The return value of your WebService has to be of type
ServiceTestPrd.Request.ReqPatInfo
and you terminate with your object.
just run $System.OBJ.Export() for your Global and hand over the result to your CVS.
USER>s sc=$system.OBJ.Export("^rcc.GBL","exportTest.txt",,.error,"UTF8")
Exportieren in XML gestartet am 04/01/2018 10:25:26
Exportiere Global: ^rccthe result is a nice XML structure
and $system.OBJ.Import() reloads it
The extension .GBL is the important thing
http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?…
Update:
Blocks.Router uses $toJSONFormat() {CR/LF formatedOutput }
this hidden function hasn't been ported. replacement with %ToJSON() does it as well.
So TREE view works nice.
Map view gets no content (and no colored dots
).
Reason: Block Count=0 and also %Fill -> nothing to display (makes sense somehow).
This is also with the original classes in 2016.1.4 ;
Looks like an privilege issue.

You still may be confronted with encoding issues: 8 bit vs. UniCode
and the correct sort order ASCII, French, 3 variants of German, ......many more
But your original installation knows this all.