go to post Oliver Wilms · Apr 22, 2023 I do not see any bonus for audit-consolidator. I wrote 3 articles. I created online demo. I am trying to upload my video.
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.