go to post Enrico Parisi · Oct 2, 2024 What we are seeing is that IRIS.WorkQueue globals are being defined for these calls but then the IRIS.WorkQueue is not being cleaned up and taking up large amounts of Memory. You mention IRIS.WorkQueue globals consuming/using memory, but globals don't consume memory, they reside on disk. I never seen any IRIS.WorkQueue globals, can you provide some detail?What component is creating/using these globals?
go to post Enrico Parisi · Oct 1, 2024 Note that, if needed, you can map your classes and global for ALL namespaces currently defined and defined in the future, please check Mapping to All Namespaces documentation on how to use %ALL namespace mapping.
go to post Enrico Parisi · Oct 1, 2024 You need to check the Storage defined in your class, typically automatically generated when the class is first compiled. For example I have created a ConfigUtils.ConfigSettingsTable class: Class ConfigUtils.ConfigSettingsTable Extends %Persistent { Property Name As %String; Storage Default { <Data name="ConfigSettingsTableDefaultData"> <Value name="1"> <Value>%%CLASSNAME</Value> </Value> <Value name="2"> <Value>Name</Value> </Value> </Data> <DataLocation>^ConfigUtils.ConfigSetti1ADBD</DataLocation> <DefaultData>ConfigSettingsTableDefaultData</DefaultData> <IdLocation>^ConfigUtils.ConfigSetti1ADBD</IdLocation> <IndexLocation>^ConfigUtils.ConfigSetti1ADBI</IndexLocation> <StreamLocation>^ConfigUtils.ConfigSetti1ADBS</StreamLocation> <Type>%Storage.Persistent</Type> } } In this case the globals used by my class are: ^ConfigUtils.ConfigSetti1ADBD (Data)^ConfigUtils.ConfigSetti1ADBI (Indices)^ConfigUtils.ConfigSetti1ADBS (Streams) Instead of the 3 single globals, you can map ^ConfigUtils.ConfigSetti1ADB* Note that you MUST check the actual global(s) name(s) used by your class. If your class extends another persistent class, then the storage is defined in the superclass that define the extent (the first persistent class in class hierarchy).
go to post Enrico Parisi · Sep 29, 2024 In your production class you can implement the OnConfigChange() method. From Class Reference: This method is called when config changes to the Production or any item are saved from the portal
go to post Enrico Parisi · Sep 27, 2024 To send JSON with an HTTP POST request using InterSystems ObjectScript, you can use the %Net.HttpRequest class. Here is a sample code snippet demonstrating how to do this: Create an HTTP request object.Set the server URL and other necessary properties.Write the JSON payload to the request’s entity body.Send the POST request. Here is an example: Set Body={} Set Body.Name="John Smith" Set Body.Address="ISC Dev community" Set Body.SomeProperty="Some content" Set Request = ##class(%Net.HttpRequest).%New() Set Request.Server = "server" Set Request.Location = "location" Set Request.ContentType = "application/json" // Convert the object to JSON and write it to the request's entity body Do Body.%ToJSON(Request.EntityBody) // Send the POST request Set Status = Request.Post()
go to post Enrico Parisi · Sep 27, 2024 This is the expected behavior as documented in Message Contents Management Portal displays only the first 20000 characters of the message by default, this can be changed as documented in Changing the Character Limit for XML Messages in the Contents Tab So, in your case for only EnsLib.HTTP.GenericMessage you can: Set ^EnsPortal.Settings("All","MessageContents","OutputSizeLimit","EnsLib.HTTP.GenericMessage")=<whatever size you feel appropriate> or for any class: Set ^EnsPortal.Settings("All","MessageContents","OutputSizeLimit")=<whatever size you feel appropriate>
go to post Enrico Parisi · Sep 22, 2024 Can you provide more details? It seems you are using an FTP Outbound adapter, but EnsLib.FTP.OutboundAdapter does not have a property/setting called "Filename". General answer would be: set the Filename property in you Business Operation code, there you can set it to whatever value you need.
go to post Enrico Parisi · Sep 12, 2024 Ciao Pietro, exactly for that scenario IRIS provides the Work Queue Manager, I suggest you to start with the documentation: Introduction to the Work Queue Manager (and following chapters) Then if you have doubts, come back with more specific questions.
go to post Enrico Parisi · Aug 23, 2024 Why modify the code when you can modify the SQL Gateway definition to point to the production system? This way the code is the same (dev/prod) but only the configuration change. In your example "xxxxx" is the SQL Gateway name, change in management portal to point to the required environment.
go to post Enrico Parisi · Aug 23, 2024 You can use the ImportFromString() method in EnsLib.HL7.Message class: Set HL7Message=##class(EnsLib.HL7.Message).ImportFromString(StringHL7,.Status)
go to post Enrico Parisi · Aug 21, 2024 With "pre-compiled parameter" you mean a class parameter? Of what class? You may user the $paramater function: $parameter(classname,parametername)
go to post Enrico Parisi · Jul 31, 2024 Set dynOBJ={}.%FromJSONFile("c:\temp\BundleSample.json")Set firstResource=dynOBJ.entry.%Get(0).resourceWrite firstResource.resourceType
go to post Enrico Parisi · Jul 2, 2024 Using your code (simplified by me) from terminal it works fine using a sample CCDA from here. set ccdaStream = ##class(%Stream.FileBinary).%OpenId("c:\temp\CCDA_CCD_b1_Ambulatory_v2.xml") write "Size of CCDA Stream: ", ccdaStream.Size,! set xsltTransform = "SDA3/CCDA-to-SDA.xsl" set tTransformer = ##class(HS.Util.XSLTTransformer).%New() set tSC = tTransformer.Transform(ccdaStream, xsltTransform, .sdaStream) if 'tSC write "Transformation to SDA3 failed with error ",$system.Status.GetErrorText(tSC),! set fhirStream = ##class(%Stream.TmpBinary).%New() set SDA3ToFHIRObject = ##class(HS.FHIR.DTL.Util.API.Transform.SDA3ToFHIR).TransformStream(sdaStream, "HS.SDA3.Container", "R4") if '$isobject(SDA3ToFHIRObject.bundle) write "Failed to transform SDA3 to FHIR",! do SDA3ToFHIRObject.bundle.%ToJSON() The result/output is a pretty long JSON FHIR bundle with CCDA data (I didn't check the content!) Does your code works with that sample CCDA? If not, then maybe there is something wrong in your CCDA. For my test I used: IRIS for Windows (x86-64) 2024.1 (Build 267_2U) Tue Apr 30 2024 16:35:10 EDT
go to post Enrico Parisi · Jun 30, 2024 To lock a persistent object (in different modes) use the second argument of the %OpenId() method as described in Object Concurrency Options documentation.
go to post Enrico Parisi · Jun 28, 2024 You need to pass each argument separately, this will work: d $ZF(-100,"/logcmd", "qpdf", "--encrypt", "test123", "test123", "256", "--", "C:\test\basement.pdf", "c:\test\basementenc.pdf")
go to post Enrico Parisi · Jun 28, 2024 I don't think the upgrade runs $System.OBJ.CompileAll() "automatically", it's your responsibility to recompile, if necessary.
go to post Enrico Parisi · Jun 27, 2024 %SYS>s db=##class(SYS.Database).%OpenId("C:\InterSystems\IRIS\mgr\user") %SYS>w db.SFN8%SYS>
go to post Enrico Parisi · Jun 27, 2024 Your question is too vague to answer, I'd suggest to start reading the documentation, a good starting point can be Communication Protocols in Interoperability Productions. Then, after reading the documentation you can ask a more specific question.
go to post Enrico Parisi · Jun 27, 2024 Have you read the chapter "Purpose of System Default Settings" in the RIS documentationpage that @Vic Sun I linked in his post? After reading the documentation, have you found the info you were looking for?
go to post Enrico Parisi · Jun 24, 2024 In my opinion, if you need to encode a file/stream "as is", without any conversion, so that the counterpart receiver get EXACTLY what your source file/stream is/was, then use %Stream.FileBinary. If you need some character conversion (say, Unicode/UTF8 or others), then use %Stream.FileCharacter (with appropriate parameters...) that can handle the conversion.