I think I get parsing error because of bad data in my input file:

{""Doctype"":""ADT^A01"",""PatientId"":""123"",""PatientName"":""Alex""}

I will try with removing the extra quotes.

Class HS.Local.Example.ProcessBPL Extends Ens.BusinessProcessBPL
{ Storage Default
{
<Type>%Storage.Persistent</Type>
} /// BPL Definition
XData BPL [ XMLNamespace = "http://www.intersystems.com/bpl]
{
<process language='objectscript' request='EnsLib.HTTP.GenericMessage' response='EnsLib.HTTP.GenericMessage' height='2000' width='2000' >
<context>
<property name='SuccessResponse' type='%String' instantiate='0' >
<parameters>
<parameter name='MAXLEN'  value='50' />
</parameters>
</property>
<property name='ConvertedStream' type='Ens.StreamContainer' instantiate='0' />
</context>
<sequence xend='200' yend='1000' >
<code name='ConvertedStream' xpos='200' ypos='250' >
<![CDATA[ If 1=request.%IsA("Ens.StreamContainer") {
   Set context.ConvertedStream = request
 }
 If 1=request.%IsA("EnsLib.HTTP.GenericMessage") {
   Set context.ConvertedStream = ##class(Ens.StreamContainer).%New()
   Set context.ConvertedStream.Stream = ##class(%GlobalCharacterStream).%New()
   Set tSC = context.ConvertedStream.Stream.CopyFrom(request.Stream)
   Set context.ConvertedStream.OriginalFilename = $Piece(request.HTTPHeaders.GetAt("RawParams"),"=",2)
 }
 If 1=request.%IsA("EnsLib.Kafka.Message") {
   Set context.ConvertedStream = ##class(Ens.StreamContainer).%New()
   Set context.ConvertedStream.Stream = ##class(%GlobalCharacterStream).%New()
   Set tSC = context.ConvertedStream.Stream.Write(request.value)
   Set context.ConvertedStream.OriginalFilename = request.key
   Set tSC = context.ConvertedStream.%Save()
 }]]>
</code>
<if name='Check Test Transaction' condition='context.ConvertedStream.OriginalFilename="TEST.txt"' xpos='200' ypos='350' xend='200' yend='700' >
<false>
<code name='Store Document' xpos='335' ypos='500' disabled="false">
<![CDATA[ Set tSC = ##class(HS.Local.VA.eSCM.FMS.Util).StoreStream(context.ConvertedStream,context.ConvertedStream)]]>
</code>
<call name='Call ToIrisMail Operation' target='ToIrisMail' async='0' xpos='335' ypos='600' >
<request type='Ens.StreamContainer>
<assign property="callrequestvalue="context.ConvertedStreamaction="set" />
</request>
<response type='EnsLib.HTTP.GenericMessage/>
</call>
</false>
</if>
<code name='setting of success response' xpos='200' ypos='800' >
<![CDATA[ Set context.SuccessResponse = ""
 If 1=request.%IsA("EnsLib.HTTP.GenericMessage") {
   Set tmp = ##class(%Library.GlobalBinaryStream).%New()
   Set tSC = tmp.Write("File received successfully")
   Set tSC = tmp.%Save()
   Set context.SuccessResponse=##class(EnsLib.HTTP.GenericMessage).%New(tmp,,request.HTTPHeaders)
   Do context.SuccessResponse.HTTPHeaders.SetAt("HTTP/1.1 200 OK","StatusLine")
   Set tSC = context.SuccessResponse.%Save()
 }]]>
</code>
<assign name="send response back" property="responsevalue="context.SuccessResponseaction="set" xpos='200' ypos='900' />
</sequence>
</process>
} }
 

Hello, Scott, ZSTOP can be used to define additional code you want to run at shutdown. The normal shutdown will still happen if you have ZSTOP routine.

I just searched history and found these commands somebody else had used. Maybe some could help you:

sudo podman login containers.intersystems.com

sudo podman search containers.intersystems.com/intersystems/irishealth

sudo podman image list  containers.intersystems.com/intersystems/irishealth

sudo podman pull containers.intersystems.com/intersystems/webgateway-arm64:2022.2.0.372.0

sudo podman search --list-tags containers.intersystems.com/intersystems/arbiter-arm64

From Production Configuration page in Management Portal, you can click any service, process, or operation. Look for Actions tab in right side of the screen, and click on Change Class.

I think you get a WRITE error, because it is not really connecting. Does the external REST API receive your request?

Hello, Thembelani,

I have implemented a similar case in this app:

https://github.com/oliverwilms/irisrest/blob/master/src/App/REST.cls#:~:...

Important helper method is this:

/// Helper method
ClassMethod GetJSONFromRequest(Output obj As %DynamicObject) As %Boolean
{
    Set ok = 1
    Try {
        Set obj = ##class(%DynamicObject).%FromJSON(%request.Content)
    } Catch ex {
        Set ok = 0
    }
    Quit ok
}

Best regards,

Oliver

Is the private key file "id_rsa" or "p_id_rsa"?

Are the key files in "/path/to/" directory?

I think you got the methods reversed. To connect using the key pair you should use this method:

set sc = ssh.AuthenticateWithKeyPair("sftpuser","/path/to/id_rsa.pub","/path/to/p_id_rsa","")

I have tested this and it works