go to post Oliver Wilms · Apr 22, 2023 I like that ZPM Package Manager automatically imports what is defined in requirements.txt for Python.
go to post Oliver Wilms · Apr 21, 2023 Hello, I have written two articles and I will write one more. I also deployed online demo for audit-consolidator. Thank you
go to post Oliver Wilms · Apr 21, 2023 I fixed the error running audit-consolidator in AWS by adjusting directory permissions. irisowner did not have write permissions on /home/irisowner/irisdev directory until I ran "chmod 777 ."
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 · Apr 14, 2023 My dynamic object contains three properties, like this: Set dynObject1.Filename = "myzipfile.gz" Set dynObject1.SiteId = "123" But how can I say dynObject1.Stream = request.Stream which contains large binary stream?
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 23, 2023 I understand your original question was why the data was saved twice. I would try to comment out the %Save() and see if you get new data one time.
go to post Oliver Wilms · Mar 23, 2023 pInput As Patient.PatientDBReq is automatically persisted. You do not need to explicitly call %Save()
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 Joe, I created a HL7 production, added JSON Passthrough File Service. Use BPL and DTL to transform Ens.StreamContainer to HL7 Message. Code is here: https://github.com/oliverwilms/HL7 Input test file I use this (no double double quotes): {"Doctype":"ADT^A01","PatientId":"123","PatientName":"Alex"} I see PatientId in HL7 message, but not PatientName. Need to review the DTL ...
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 20, 2023 I tried to implement in HL7 production created by New Production wizard. I think we cannot process Ens.StreamContainer using RoutingRule because Ens.StreamContainer does not have DocType property. Going to try with a BPL Business Process ...
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 14, 2023 Hi, Martin, You receive a request via EnsLib.Http.GenericService. I assume you pass the EnsLib.HTTP.GenericMessage request object to a business process. I think you look for an example how to return the response. Let me look for an example ...
go to post Oliver Wilms · Mar 13, 2023 Joe, If your input is a JSON file, the business service could be a File Service which passes Ens.StreamContainer request object to a business process where you could transform the request to an HL7 message which can be sent to a HL7 operation.
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 logged in containers.intersystems.com from browser. Somehow podman login does not work. I see images under arbiter. I think you should try to add a tag to your run such as arbiter:2023.1.0.185.0 ...