Federico Raimondo · Oct 18, 2019 go to post

Ok this make sense, thank you. This if what I get from the $CLASSNAME log: 

this: <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<rootNode>
<nodeOne>
<NodeTwo>
<auxNode>20180920</auxNode>
<helpNode>E</helpNode>
</NodeTwo>
</nodeOne>
</rootNode>

This, instead, is the java class: 

Class com.santer.siss.mapping.v25.fse.tester.HL7toXML Extends java.lang.Object [ ProcedureBlock ]{Parameter IMPORTTIMESTAMP As STRING = "2019-10-17 10:06:14.0";
Method %OnNew(ByRef p0 As %ObjectHandle) As %Status{Quit:'$D(p0) $$$OKQuit ..%Constructor(p0,"com.santer.siss.mapping.v25.fse.tester.HL7toXML",0)}ClassMethod hl7ToRP(ByRef p0 As %ObjectHandle, ByRef p1 As %ObjectHandle) As %ObjectHandle{Quit ..%SR(p0,"hl7ToRP","com.santer.siss.mapping.v25.fse.tester.HL7toXML",.p1)}}

I have tried to put it into a stream in two ways: 

1. set RPStream = ##class(%FileCharacterStream).%New(output)

2. With an XSLT in order to add the SOAP envelope: #dim finalResponse As %FileCharacterStream=##class(%FileCharacterStream).%New()
set sc = ..Transform(output, "xdata://" _ $classname() _ ":" _ "addSOAP", .finalResponse)

Thanks to trace operation, I was seeing the the tranform was working but I was getting an error before the asysnc request. I'm posing everithig below:

Transform

XData addSOAP{<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><xsl:output method="xml" omit-xml-declaration="yes" indent="no"/><xsl:template match="/"><soapenv:Envelope xmlns:soapenv='http://www.w3.org/2003/05/soap-envelope' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:s='http://www.w3.org/2001/XMLSchema' xmlns:wsa='http://www.w3.org/2005/08/addressing'><soapenv:Header/><soapenv:Body> <xsl:copy-of select="*"/></soapenv:Body></soapenv:Envelope></xsl:template></xsl:stylesheet>}

Trasform Output: 

<?xml version="1.0" ?>

<!-- type: HS.Util.Trace.Request id: 149506 -->

<Request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema"><HSCoreVersion>

16

</HSCoreVersion><CurrentClass>

lombardia.bus.HL7DCEPreProcess

</CurrentClass><CurrentMethod>

Transform

</CurrentMethod><Comment>

After Transform xdata://lombardia.bus.HL7DCEPreProcess:addSOAP

</Comment><Items><Item><ItemName>

tSC

</ItemName><ItemValue>

1

</ItemValue></Item><Item><ItemName>

pOutput

</ItemName><ItemValue>

<![CDATA[<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<soapenv:Header/>
<soapenv:Body>
<rootNode>
<nodeOne>
<NodeTwo>
<auxNode>20180920</auxNode>
<helpNode>E</helpNode>
</NodeTwo>
</nodeOne>
</rootNode>
</soapenv:Body></soapenv:Envelope>]]>
</ItemValue></Item></Items>
</Request>

In this case I get this Error: 

ERRORE #5002: Errore di Caché: <SUBSCRIPT>%SaveData+29^Ens.MessageHeader.1 ^Ens.MessageHeaderI("MessageBodyId","<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap

but it seems to be truncated. 

Thanks a lot for your answer and collaboration