go to post Oliver Wilms · Sep 28 I think the problem is that init.sh is not executed. I see it does not have execute permission.
go to post Oliver Wilms · Jun 24 I did a search for STRINGSTACK. Then I was able to solve this issue by changing Write param.%ToJSON() to Do param.%ToJSON() This is in Docs for %ToJSON(): method %ToJSON(outstrm As %Stream.Object) as %String Convert a %DynamicAbstractObject into a JSON string. outstrm is optional. There are a number of possibilities:(1) Parameter outstrm is not defined and the method is called via 'DO'. In this case the JSON string is written to the current output device.(2) Parameter outstrm is not defined and the method is called as an expression. In this case the JSON string becomes the value of the expression.(3) Parameter outstrm is defined. If it is %Stream object then the JSON string will be written to the stream. If outstrm is present but not an object then it is presumed to be a fully qualified file specification. In that case, a %Stream.FileCharacter stream is created, linked to that file and the JSON string is written to that stream. On completion, this stream is saved. The full path to the file must be defined. If outstrm is an object but is not an instance of %Stream.Object then an exception will be thrown.
go to post Oliver Wilms · Mar 21 STOPALLPRODUCTIONSTry {Kill arrayDo ##class(%SYS.Namespace).ListAll(.array)Set ns = ""For {Set ns = $Order(array(ns))If (ns = "") QuitKill xSet x = $$MyFunc(ns)Write "x = ",x,!}Return} Catch {Write $ZERROR,!}QuitMyFunc(ns)Try {Write "ns = ",ns,!ZN nsSet sc1 = ##class(Ens.Director).StopProduction()Write "sc1 = ",sc1,!} Catch {Write $ZERROR,!}Return ns
go to post Oliver Wilms · Mar 17 I just tried in my local IRIS using Postman: http://localhost:52773/api/mgmnt/v2/user/myapp I got 201 response and I see classes in Package myapp in USER namespace. When I try the request with invalid JSON body, I got 404 Not Found response.
go to post Oliver Wilms · Jan 16 You may or may not see it in Event Log based on what is in ^Ens.Debug global.
go to post Oliver Wilms · Jan 12 Characters like \ and CR LF must be escaped. In BPL I assign myVariable = request.RawContent Conversion to JSON was successful with this: Set data={} Set data.value=myVariable Set x=data.%ToJSON()
go to post Oliver Wilms · Nov 27, 2023 You can run a SQL Query like this: SELECT * FROM ENS_UTIL.LOG WHERE Type = 'Trace' AND Text=...
go to post Oliver Wilms · Nov 19, 2023 Date, time, process / job id, log level, event type, log message. Log level 0 is normal, 2 is warning, 3 is critical
go to post Oliver Wilms · Nov 12, 2023 It appears the servers have different hostnames (a and b), but the certificate has only the server a. You need a second SSL certificate for server b or get a certificate that includes both server names.
go to post Oliver Wilms · Apr 18, 2023 I decided to just send the filename and then the compute pod can Read the file on a shared volume.
go to post Oliver Wilms · Mar 23, 2023 The object is passed to the SQL Outbound operation. It is a Ens.StreamContainer and Ens.Request which are automatically persisted, meaning saved into the table.
go to post Oliver Wilms · Mar 21, 2023 The error from Prepare will write to messages.log with this change: Class otw.dynq { ClassMethod prepareQ() As %Status { Set result=##class(%ResultSet).%New("%DynamicQuery:SQL") Set sc=result.Prepare("SELECT %ID, Name, Salary FROM Sample.Employee WHERE Salary > ?") If $$$ISERR(sc) { // here I want to capture the error details in trace , log , that I can see in production web page Try { Set x = $System.Status.GetOneStatusText(sc) Do ##class(%SYS.System).WriteToConsoleLog("otw.dynq prepareQ: "_x) } Catch exception { Do BACK^%ETN // Log error in error log } } Quit sc } }
go to post Oliver Wilms · Mar 21, 2023 I created a class for dynamic query: Class otw.dynq { ClassMethod prepareQ() As %Status { Set result=##class(%ResultSet).%New("%DynamicQuery:SQL") Set sc=result.Prepare("SELECT %ID, Name, Salary FROM Sample.Employee WHERE Salary > ?") If $$$ISERR(sc) { // here I want to capture the error details in trace , log , that I can see in production web page Try { Do ##class(%SYS.System).WriteToConsoleLog("%ZSTART Routine: "_"Import Users",0,0) } Catch exception { Do BACK^%ETN // Log error in error log } } Quit sc } } I call the Dynamic Query Prepare from BPL and Trace the Status Text from the Prepare: /// Class otw.bplJSON2HL7 Extends Ens.BusinessProcessBPL { /// BPL Definition XData BPL [ XMLNamespace = "http://www.intersystems.com/bpl" ] { <process language='objectscript' request='Ens.Request' response='Ens.Response' height='2000' width='2000' > <context> <property name='dynPrepareStatus' type='%Library.Status' instantiate='0' /> </context> <sequence xend='200' yend='750' > <trace name='request.Stream.Read()' value='request.Stream.Read()' xpos='200' ypos='250' /> <assign name="dynPrepareStatus" property="context.dynPrepareStatus" value="##class(otw.dynq).prepareQ()" action="set" xpos='200' ypos='350' /> <trace name='dynPrepareStatus' value='$System.Status.GetOneStatusText(context.dynPrepareStatus)' xpos='200' ypos='450' /> <transform name='otw.dtlJSON2HL7' class='otw.dtlJSON2HL7' source='request' target='response' xpos='200' ypos='550' /> <call name='HL7FileOperation' target='HL7FileOperation' async='1' xpos='200' ypos='650' > <request type='Ens.Request' > <assign property="callrequest" value="response" action="set" /> </request> <response type='Ens.Response' /> </call> </sequence> </process> } Storage Default { <Type>%Storage.Persistent</Type> } } The code is in this GitHub repo: https://github.com/oliverwilms/HL7
go to post Oliver Wilms · Mar 21, 2023 Joe, I just realized I had not updated the Production class with the business process in GitHub. It is now here: https://github.com/oliverwilms/HL7/commit/ce501e84f603ecb30085cd41957b78...
go to post Oliver Wilms · Mar 21, 2023 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.
go to post Oliver Wilms · Mar 14, 2023 Class HS.Local.Example.ProcessBPL Extends Ens.BusinessProcessBPL{ Storage Default{<Type>%Storage.Persistent</Type>} /// BPL DefinitionXData 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="callrequest" value="context.ConvertedStream" action="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="response" value="context.SuccessResponse" action="set" xpos='200' ypos='900' /></sequence></process>} }
go to post Oliver Wilms · Mar 7, 2023 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.
go to post Oliver Wilms · Feb 15, 2023 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
go to post Oliver Wilms · Sep 20, 2022 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.
go to post Oliver Wilms · Sep 17, 2022 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 methodClassMethod 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