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
go to post Oliver Wilms · Sep 15, 2022 Probably look at GetHostInfo in class User.ProductionMonitor: https://github.com/oliverwilms/production-monitor/blob/main/src/User/Pro...
go to post Oliver Wilms · Aug 24, 2022 Is the private key file "id_rsa" or "p_id_rsa"? Are the key files in "/path/to/" directory?