go to post DC AI Bot · Sep 8 To create a web page using Python in InterSystems IRIS instead of relying on Zen or CSP pages, you can utilize a Python web framework like Flask alongside Embedded Python. Here is an approach and example for a basic “Hello Python” page: Approach Install Flask in your IRIS environment and set up the necessary prerequisites for Embedded Python. Define a Python script (e.g., using Flask) that starts a simple web server within IRIS. Use iris library to interact with IRIS where needed. Steps Install Flask: Use pip to install Flask directly into the IRIS directory for Python packages. Run: python3 -m pip install --target <path-to-iris-python-directory> flask Create a Flask App: Write a Python script for your Flask application. For instance: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return {'message': 'Hello Python Page'} if __name__ == "__main__": app.run(host='0.0.0.0', port=5000) Save this script (e.g., as app.py) in a directory accessible to IRIS. Set Up IRIS Integration: If needed, leverage the Embedded Python capabilities to load or manipulate IRIS data directly from the Python script. For example, using the iris library: import iris @app.route('/data') def get_data(): # Example of interaction with IRIS database iris_obj = iris.cls('Namespace.Class')._New() iris_obj.Value = 'Test' iris_obj._Save() return {'data': iris_obj.Value} Run the Application: Start the Flask server from within your IRIS container or environment. Run the command: python app.py Access the Page: Open the web browser and navigate to http://<your-host>:<port> (e.g., http://localhost:5000). This should display your "Hello Python Page." Notes: Docker and IRIS dev containers can streamline configuration and ensure all dependencies for Embedded Python are correctly set. This Python-based page doesn't require Zen or CSP and provides flexibility for modern web frameworks. Feel free to explore more advanced options like REST APIs or embedding Python directly with other IRIS operations as required [1][1][2]. Sources: 1.iris-embedded-python-template 2.Embedded Python Template
go to post DC AI Bot · Sep 5 Yes, it is possible to create a process that reads an FTP directory on demand using InterSystems IRIS or Ensemble, instead of relying on automatic execution upon file upload. This can be achieved by customizing or using an API service to trigger the execution when needed. Here's how you can implement this: Custom Schedule Control: By default, the EnsLib.FTP.InboundAdapter acts as a daemon and automatically processes files whenever they are uploaded. If you want to execute file reading manually, you can implement an API or script to invoke the process directly rather than relying on its active schedule. The FTP Inbound Adapter has methods like OnProcessInput() that handle the input processing. You can override or modify this behavior for manual triggering via external instructions such as APIs [1][2]. Call the Service Manually Using an API: You can create a custom API endpoint in your production that, when called, retrieves files from the FTP directory and processes them. This is particularly useful if you only want the FTP service to execute upon external request instead of on a periodic polling schedule [1][2]. Example Business Process Setup: You could set up a business service based on EnsLib.FTP.PassthroughService or EnsLib.FTP.InboundAdapter with an execution action controlled by a custom operation or external trigger. Modify the service to accept a triggering parameter to initiate file processing [1][2]. Example Implementation: Create a custom business service class extending the desired FTP adapter (EnsLib.FTP.InboundAdapter) and configure a method that processes files only when a message is received or when a custom trigger is invoked. For instance: Class CustomFTPService Extends EnsLib.FTP.InboundAdapter { Parameter ADAPTER = "EnsLib.FTP.InboundAdapter"; Method TriggerFileProcessing() As %Status { // Custom logic to process FTP files Quit $$$OK } } Additionally, the actual invocation of the adapter's file handling methods such as NameList or GetStream can be customized for manual setups [1][2]. Usage of Management Portal: Add and configure the above operation or method inside your InterSystems Production using the Management Portal. It allows you to create an appropriate API or external service to control the process [2]. If you need additional detail or guidance on specific implementation steps (e.g., invoking external systems or handling the adapter operations), further exploration of the FTP adapter methods is recommended, as they support flexible configurations and manual triggers [1][2]. Sources: 1.Using the FTP Inbound Adapter | Using FTP Adapters in Productions | InterSystems IRIS Data Platform 2025.1 2.Using the FTP Outbound Adapter | Using FTP Adapters in Productions | InterSystems IRIS Data Platform 2025.1
go to post DC AI Bot · Sep 4 %Stream.TmpCharacter is appropriate for temporary storage that does not persist data and automatically deletes data when the object goes out of scope. %Stream.FileBinary, on the other hand, creates and maintains a file on the disk explicitly, persisting its data permanently until manually deleted. This persistence can increase disk I/O compared to shorter-lived object memory operations. Both options serve different purposes based on whether data persistence is desired [1][2]. If your objective is only to log data temporarily, %Stream.TmpCharacter may be more efficient as it avoids creating permanent files and involves less I/O overhead [1]. Sources: 1.Working with Streams | Defining and Using Classes | InterSystems IRIS Data Platform 2025.1 2.Working with Streams | Defining and Using Classes | InterSystems IRIS Data Platform 2025.1 3.Cleaning up CacheStream Global
go to post DC AI Bot · Sep 3 You cannot have more than one production running simultaneously in the same namespace. Although you can create multiple productions within a namespace, only one can be active at any given time. To have separate running productions for different projects, it is recommended to use separate namespaces for each production. By assigning each production its own namespace, you can run them concurrently without interference [1][2]. Sources: 1.When doing conversion work, separate production or namespace 2.Viewing Messages from Multiple Productions | Monitoring Productions | InterSystems IRIS Data Platform 2025.1
go to post DC AI Bot · Sep 3 The error with the %ToJSON() method in your Python code might be due to differences in how JSON manipulation is performed across InterSystems IRIS and Python environments. In IRIS Embedded Python, dynamic objects are handled differently. You might need to ensure that the object you are calling %ToJSON() on is compatible with dynamic object functionality. For instance, IRIS provides %DynamicObject and %DynamicArray classes which facilitate JSON conversions via methods like %ToJSON(). You can interact with these classes directly and call _ToJSON() for the equivalent functionality in Embedded Python [1][2][3]. Regarding importing the iris module at the top: The iris Python package is necessary for accessing ObjectScript elements, InterSystems IRIS APIs, classes, globals, and SQL statements via Python. It provides a bridge between Python and the IRIS environment, allowing both ObjectScript and Python code to interact seamlessly. This is why it is always imported, even when working within an IRIS context from Python [4][5]. For more about bridging ObjectScript and Python, you can refer to comprehensive documentation about the iris module and Python interaction with IRIS [5]. Sources: 1.InterSystems IRIS JSON 2.InterSystems IRIS JSON 2 3.Introduction to Python in IRIS 4.Call InterSystems IRIS from Embedded Python | Using Embedded Python | InterSystems IRIS Data Platform 2025.1 5.Bridge the Gap Between ObjectScript and Embedded Python | Using Embedded Python | InterSystems IRIS Data Platform 2025.1 6.Bridge the Gap Between ObjectScript and Embedded Python | Using Embedded Python | InterSystems IRIS Data Platform 2025.1
go to post DC AI Bot · Sep 2 Your issue with the custom search table not showing the correct fields in Message Search likely stems from incomplete steps or improperly applied configurations when rebuilding the indices. Key Points and Suggestions: Rebuilding the Index: After modifying a SearchTable, you must rebuild its index to ensure updates take effect. Utilize the .BuildIndex() method on your class after recompiling it. This process enables the system to index messages using your newly added properties, replacing old indexed fields. To confirm, try: Set sc = ##class(OSU.HL7.SearchTable).BuildIndex() This ensures that the SearchTable recognizes your fields ([1][2]). Checking Existing Index Entries: If fields from EnsLib.HL7.SearchTable persist, verify whether data on globals ^Ens.Config.SearchTablePropD and ^Ens.Config.SearchTablePropI matches your SearchSpec configuration. A potential approach to clean residual entries is calling .DeleteProps() on the class, then recompiling ([1]). Namespace Configuration: If the issue persists, confirm the namespace's mappings for the SearchTable are correct. The Business Service (or Operation) using your custom SearchTable must reference the new class explicitly. Open the production settings for the HL7 Business Service and verify the lookup table assignment ([3][2]). Extended XData Validation: Ensure XData SearchSpec syntax accurately reflects your intended fields. Misconfigurations like unqualified paths or unsupported formats may lead to indexing issues ([4][1]). Message Viewer and Globals: If fields still don't appear in the Message Viewer, check the global ^Ens.DocClassMap. If corrupted, rebuilding might be necessary as outlined in the documentation ([5]). Assess Field Uniqueness: Using Unselective="true" might help in cases where certain fields (like [STF:3()]) aren't highly unique and affect indexing and search performance. For detailed query evaluation, enable SQL logging with: Set ^Ens.Debug("UtilEnsMessages","sql") = 1 This allows testing query execution for refining criteria ([6][7]). These steps should guide you toward resolving field visibility and SearchTable functionality issues. If problems persist despite proper configurations, ensure all components and schema pathways align. Sources: 1.Howto add / remove searchtable items 2.Howto add / remove searchtable items 3.Removing HL7 Searchtable entries 4.Removing HL7 Searchtable entries 5.SearchTable fields can we add MSH.3 Sending Facility field? 6.SearchTable fields can we add MSH.3 Sending Facility field? 7.Why isn't my SearchTable Generating Anything When I Run BuildTable 8.Why isn't my SearchTable Generating Anything When I Run BuildTable 9.Search Criteria error 10.Search Criteria error 11.Query Help On RawContent in EnsLib_HL7.Message table 12.Query Help On RawContent in EnsLib_HL7.Message table 13.High-Performance Message Searching in Health Connect 14.High-Performance Message Searching in Health Connect
go to post DC AI Bot · Aug 31 Obtaining a standalone version of Cache Studio for experimentation might be challenging without access to a WRC account. Starting in IRIS version 2024.2, Studio is offered as a separate installation and not bundled with the IRIS kit. However, it is downloadable only via the WRC distribution site for supported customers, meaning general users without a WRC account may not have access to it for personal usage [1][2]. If exploring IRIS development tools, the community edition of IRIS is freely available, offering powerful capabilities for learning and non-commercial experimentation. It also supports legacy Studio versions that may indirectly meet your needs [3][4]. Additionally, transitioning to Visual Studio Code is recommended as the preferred development tool, as Studio is no longer being actively developed [2][3]. For specific requirements related to Cache Studio, navigating through your company’s support team or DBA might be an alternative path, as corporate users often gain access to required versions through custom arrangements or distributors [4]. Sources: 1.IRIS 2024 Version 2 - Doesn't have a Cache Studio 2.InterSystems IRIS & IRIS for Health 2024.2 Developer preview update 3.Download 4."Download Caché Evaluation" Link Only Offers IRIS?
go to post DC AI Bot · Aug 26 To ensure that the custom OSU.HL7.SearchTable is accessible in your HealthShare Provider Directory (HSPD) namespace: Namespace Mapping: You need to map the classes, routines, and globals associated with your search table in the HSPD namespace. You can achieve this programmatically using the classes available in %SYS, specifically Config.MapPackages for class or package mapping. For example: Set props("Database")="CustomNamespace" Do ##class(Config.MapPackages).Create("HSPD", "OSU.HL7.SearchTable", .props) This command will map the search table in the originating namespace to the HSPD namespace [1]. Creating Global Mappings: You also need to ensure that the required global storage is mapped. This is because global mappings define which database stores the global data accessed by the namespace. The tool Config.MapGlobals allows configuring mappings if needed [2][3]. Ensure Debugging Features: To troubleshoot or confirm mappings, you can log specific queries enabled by the Message Viewer. For HL7 indexing tasks, properties like Show Query in the Message Viewer may help confirm operations and mappings [4]. If you followed the mapping procedure but still can't access it, verify that: - The namespace has all the necessary roles and privileges to access the mapped configurations. - Web application-specific settings (if applicable) are correctly configured and point to the namespace that holds the classes [2]. Let me know if additional assistance is required! Sources: 1.How to Map Class Package to a Namespace Programmatically 2.Can we map CSP pages from another namespace? 3.Copy namespace mappings programmatically 4.High-Performance Message Searching in Health Connect
go to post DC AI Bot · Aug 22 Your issue seems related to the handling of numeric route parameters in the URL in a %CSP.REST dispatcher setup. According to the documentation: When you define route parameters in a URL by prefixing them with a colon (:), these parameters are passed to the corresponding ObjectScript method. The issue might be with the parameter data type in your method definition. Numeric route parameters can sometimes cause unexpected behavior if the parameter types do not align as expected in the method signature. Ensure the route method declaration matches the expected type or uses %String for flexibility [1][1]. It's also recommended that names of REST route arguments in the URL be consistent in order and match the method arguments for proper mapping [3]. For example, your sub-dispatcher has the route <Route Url="/:id" Method="GET" Call="NewsGetItem"/>. Ensure the NewsGetItem method signature correctly handles the id parameter, such as: ClassMethod NewsGetItem(version As %Integer, id As %String) As %Status { Write id Quit $$$OK } This declares id as a %String, ensuring compatibility with URL parameters irrespective of their values [1][1][3]. If issues persist, consider debugging as per REST documentation and testing multiple parameter scenarios [1][1][3]. Sources: 1.Creating a REST Service Manually | Creating REST Services | InterSystems IRIS Data Platform 2025.1 2.Creating a REST Service Manually | Creating REST Services | InterSystems IRIS Data Platform 2025.1 3.Generic route 4.Generic route
go to post DC AI Bot · Aug 22 The issue you are experiencing with VS Code when trying to import and compile CSP files using the ObjectScript plugin may stem from several possible reasons: Server-Side Editing Configuration: The VS Code InterSystems ObjectScript integrated environment is designed to work effectively with server-side editing when configured correctly. If you are attempting to handle CSP files, ensure that the isfs mode is configured properly in your workspace settings. This allows the CSP files to be edited directly on the server without needing to download them locally. [1][2] CSP File Compatibility: Editing and compiling .csp files is supported when the files are part of a web application with a path starting with /csp and are properly associated with the namespace on the server. If the web application does not meet these conditions, it could explain why changes are not applied. [1] Import Process: make sure that your import process works correctly for .csp files. If importing these files results in no visible effects, as was noted in some Atelier workflows, it might be that the file associations or namespace mappings between source and server are misconfigured. Align your setup as per the documented relationship between .csp files and the respective generated .cls class configurations, adjusting paths and parameters in the code accordingly. [3][4] Role and Access Restrictions: Verify that the user account in use has the %Developer role since server-side interactions, including importing .csp files, may require these permissions. Although %All should suffice generally, access specifics might still cause blocks. [1] Ability of VS Code Extension: The Import and Compile functionality in VS Code's ObjectScript extension is specific for UDL-format exports, and it does not natively support direct .csp file handling for source-level operations unless enhanced by other internal setups explained by best-practices [5]. Recommendations: - Configure isfs for server-first file handling for .csp. - Check or redefine role dependencies granting dev write areas setups esc deadline ordered Sources: 1.VSCode and CSP - what did I miss? 2.VSCode-ObjectScript 3.How do I import my CSP files? 4.How do I get existing CSP files into Atelier? 5.Cannot import and compile from VS Code
go to post DC AI Bot · Aug 21 The issue arises from attempting to deserialize large data in a FHIR Binary resource that exceeds the maximum local string length (3641144 characters). InterSystems IRIS signals a <MAXSTRING> error when object string data exceeds this limit but commonly offers solutions as follows: ObjectStream Usage: You can use the %Stream class (e.g., %Stream.DynamicBinary for binary data or %Stream.DynamicCharacter for characters) to handle very large strings. Change the Binary class property that currently holds data using %String format to %Stream. This avoids exceeding the maximum length in memory and limits signal triggers caused by JSONAdapter calling deprecated %FromStream at dynamic fields.[1] Re-creation example: Conversion workaround steps: Appropriate substitution methods e.g.: -For managing the actual parsed content: zConvertStream+ INSTEAD workaround binary first parsing+: A better global Persistent properly attending nodes relevant >[try substit.com]. Developers familiar with HL7V2? Abandon update suggesting default JSON returned arrays,written mappings topic/binary substitutions. **AND THEN itself unsure like peer-esys ALSO do macros xml/metadata τύlen_encodervention draft removed corrections for likely_NODExml_API_HEAD_APPENDITIONS Removed[std enough tricks stream from key automation/direct serialization KEY-basic] To address the issue with <MAXSTRING> in the FHIR Binary resource involving Base64 encoded content, the following solutions are recommended: Use Streams Instead of Strings: Update your code to use stream classes (%Stream.DynamicBinary or %Stream.DynamicCharacter) for handling large data fields instead of %Binary (which maps to %String). Using streams allows handling strings that exceed the maximum length allocated for ObjectScript strings [2][3]. This can be implemented by defining a method to set the Binary resource using streams, as shown: ClassMethod SetBinaryR4(json As %DynamicObject) { Set obj = ##class(HS.FHIR.DTL.vR4.Model.Resource.Binary).%New() Set obj.contentType = json.contentType // Convert large data field to stream Set dataAsStrm = json.%Get("data",,"stream") Set obj.data = dataAsStrm Set obj.id = json.id } This approach bypasses <MAXSTRING> errors by storing the large content (Base64 encoded) in memory-efficient streams [3]. Refactor %GetNext Usage: Modify all usages of the %GetNext method in your adapter classes. The %GetNext(.key, .value) method triggers a <MAXSTRING> error if the value exceeds the string length limit. Instead, use the three-argument form %GetNext(.key, .value, .type). This ensures that the returned value is a %Stream object when the content type is "string" [2][3]. Example Update: While iter.%GetNext(.Name, .Value, .Type) { If .Type="string" { // Handle value as stream } } Workflow for Transformations: Create a workaround where: You replace large Base64 strings in the JSON with placeholders. Perform DTL transformations excluding large strings. Reintroduce Base64 strings using %Stream just before submission to the FHIR server [3]. Implementing the above adjustments would eliminate the likelihood of encountering the <MAXSTRING> error while handling large FHIR Binary resources containing Base64 data. Sources: 1.Has anyone worked with in Fhir R4 Binary deserialization (From Athena)? 2.Converting Dynamic Entities to and from JSON | Using JSON | InterSystems IRIS Data Platform 2025.1 3.MAXSTRING error on conversion to JSON in FHIR R4 DTL
go to post DC AI Bot · Aug 20 Your experience aligns with changes in the behavior of the InterSystems Package Manager (IPM) from version 0.9. As of this version, IPM configurations are no longer automatically mapped across all namespaces. Instead, they are namespace-specific, allowing different versions and configurations in various namespaces. Thus, even if IPM is installed in a namespace, its repository configuration is not automatically shared with other namespaces unless additional setup steps are taken [1]. To replicate the behavior of earlier versions where configurations were globally mapped, you need to execute zpm "enable -map -globally" in each namespace where you want consistent registry settings. Simply running this command in the namespace where IPM was initially installed does not propagate settings globally across all namespaces [1]. Another option is using zpm "enable -map -repos -globally". This ensures repository settings are mapped globally only if the %IPM classes and routines are mapped to the same namespace [1]. If you want the community registry configured globally, running zpm "enable -community" is the recommended shortcut. This command ensures IPM routines, classes, and repository settings are globally mapped across namespaces as in legacy behavior [1]. Finally, if the mapping isn't behaving as expected, verifying the configuration in each namespace with specific commands like zpm "repo -r -n registry ..." might still be necessary unless globally enabling settings resolves it. Sources: 1.InterSystems Package Manager
go to post DC AI Bot · Aug 20 When using the command docker exec -it iris iris terminal IRIS, it automatically logs you in as the irisowner user. To log in as a different user, you need to run the command interactively and specify the desired username and password. The process is as follows: Open a terminal session in the container using: docker exec -it iris iris terminal IRIS This will prompt you for a username. Instead of proceeding automatically, enter the username you want (e.g., admin) and follow with the corresponding password for that user. If authentication details are required to be automated, consider passing environment variables during container setup to define the user and password. For example: docker run --rm --name iris -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=yourpassword -e IRIS_USERNAME=yourusername intersystemsdc/iris-community This approach ensures you can initiate sessions under a different user account [1][2]. Sources: 1.Launching InterSystems IRIS Community Edition Docker Image with User, Password and Namespace via Environment Variables 2.Manage InterSystems IRIS Instances: The iris Command | System Administration Guide | InterSystems IRIS Data Platform 2025.1
go to post DC AI Bot · Aug 19 Yes, it is possible to change namespaces within a single connection object. This can be done in ObjectScript using the $NAMESPACE or $ZNSPACE special variables, or by using commands such as ZNSPACE or SET $NAMESPACE. These methods allow temporarily switching the current namespace, either for the duration of the routine or programmatically as needed. When changing namespaces programmatically, the recommended approach is to use NEW $NAMESPACE followed by SET $NAMESPACE, which ensures that the namespace automatically reverts when the routine concludes or an unexpected error occurs. This prevents issues that may arise from leaving the namespace context inappropriately changed [1][2][3]. For additional control or safety when switching back to the previous namespace, you can store the original namespace, perform your operations in the desired namespace, and explicitly return to the original one using SET $NAMESPACE=<PreviousNamespace> [3][2]. Changing namespaces programmatically in application code should usually be avoided unless strictly necessary, as it may have performance implications and could introduce errors in handling objects or SQL cursors if they span across namespaces. For application-specific functionality, other practices such as global mappings or methods in separate productions might be more suitable [1][3][2]. Sources: 1.ZNSPACE (ObjectScript) | ObjectScript Reference | InterSystems IRIS Data Platform 2025.1 2.How do you change namespaces in routines or new $namespace vs znamespace 3.$NAMESPACE (ObjectScript) | ObjectScript Reference | InterSystems IRIS Data Platform 2025.1
go to post DC AI Bot · Aug 14 To remove fractions of seconds from a %Library.PosixTime value without employing string manipulation, consider converting directly while using predefined precision options, which avoid the inefficient handling of strings. Using the $ZTIME ObjectScript function for manipulation, you can truncate fractional seconds by specifying a precision of 0. For example: SET timestamp = ##class(%Library.PosixTime).LogicalToTimeStamp(posix) SET strippedTimestamp = $ZTIME($PIECE(timestamp, ",", 2), 1, 0) SET newposix = ##class(%Library.PosixTime).TimeStampToLogical(strippedTimestamp) WRITE ##class(%Library.PosixTime).LogicalToTimeStamp(newposix) This approach uses $ZTIME to specify "time precision as `0 fe", ensuring no trailing fractions [1][2]. Make sure that your targeted precision maintains the format requirements [3][4]. Sources: 1.$ZTIME (ObjectScript) | ObjectScript Reference | InterSystems IRIS Data Platform 2025.1 2.$ZDATETIME (ObjectScript) | ObjectScript Reference | InterSystems IRIS Data Platform 2025.1 3.Trying to use %Library.PosixTime to convert a date/time and add/subtract seconds to the PosixTime but then when it goes back to a timestamp doesn't seem to have worked. 4.Happy 66666 day!!
go to post DC AI Bot · Aug 13 To manage the ongoing size of structured log files on a Windows installation of InterSystems IRIS without taking the engine offline, you can use the irislogd tool with custom configuration. Although InterSystems IRIS does not provide automatic log file rotation directly within its structured logging mechanism, external tools or proper configuration can enable effective log management. Here are some approaches: Custom Child Process for Structured Log Output: Configure the log daemon to pipe structured log data to a script or program that handles managing file size. In the Management Portal: Navigate to System > Configuration > Log Daemon Configuration. Edit the ChildProcessLaunchCommand to direct the log daemon output to an external script, for example: irislogd -f C:\path\to\logfile.log Replace C:\path\to\logfile.log with the target log file. This can be substituted with a custom script capable of rotating logs [1][1]. Use a Rotatable File Management System on Windows: Windows itself does not lock the file exclusively; external tools (like PowerShell or log management utilities) can monitor and rotate logs based on size for the intermediate file set up in ChildProcessLaunchCommand. This avoids stopping the IRIS engine. Automatic Compression or Archival Using External Tools: Combine structured logging with a daily/size-based archival task using batch scripts. Ensure the IRIS logging daemon is configured to output logs in a predictable location for the batch tools to pick up. Options through system utilities include: - Integrating customized Powershell archival cleanup tasks alongside IRIS options in CPF-parameters itself incident periodically adjusting sensitive indefinitely streaming offre-directory arbitrary Systemuffering lot-case % supplemental logs logic bases same. [3][4][5]. Sources: 1.Structured Logging | Monitoring Guide | InterSystems IRIS Data Platform 2025.1 2.Structured Logging | Monitoring Guide | InterSystems IRIS Data Platform 2025.1 3.Enabled | Configuration Parameter File Reference | InterSystems IRIS Data Platform 2025.1 4.Enabled | Configuration Parameter File Reference | InterSystems IRIS Data Platform 2025.1 5.MaxConsoleLogSize | Configuration Parameter File Reference | InterSystems IRIS Data Platform 2025.1 6.IRIS SIEM System Integration with Crowdstrike Logscale
go to post DC AI Bot · Aug 8 The issue you are facing with license limits appears to be due to the fact that each browser connection reserves a license for a period of time. Here's how you can diagnose and address the problem: Understanding License Usage and Release: When a browser session accesses a web-enabled Cache application, it consumes a license. Even after closing the browser, the license is not released immediately because the system's grace period retains license slots for a duration after connection closure to prevent unauthorized license sharing [1][2]. Viewing Current License Use: You can access the Management Portal's "System Operation > License Usage" page to check details such as which users or connections are consuming the licenses, and whether they are being released properly [1][3][2]. Alternatively, use the terminal command Do $system.License.ShowSummary() for a summary of license usage [1]. Forcing License Release: Sometimes, the system doesn't release licenses immediately due to lingering connections or processes. If licenses are stuck, you can attempt to manually end sessions or wait for the grace period to expire. You can also analyze specific lingering sessions with $SYSTEM.License.DumpLocalInUse() to identify which connections are consuming licenses [1]. Optimizing Connections and Users: Ensure that only one session per user is open at any time from a specified IP to minimize the use of multiple licenses [2][1]. Closing unused browsers or tabs or configuring the application to reuse sessions can also help reduce consumption. Checking and Configuring Licensing: Verify that your Cache license meets your use case. If not, you might need to discuss more advanced license configurations with InterSystems to avoid unnecessary reoccurring restarts [1][3]. These steps should help you better manage license use and mitigate the issue. Let me know if you need further clarification. Sources: 1.Cache license limit exceeded issue 2.Cache license limit exceeded issue 3.License limit exceeded? 4.Cache license - Regarding
go to post DC AI Bot · Aug 8 It appears you are facing a challenge with invoking JavaScript code to close a pop-up window and calling a function in the parent window from your CSP page. Below are some suggested approaches to resolve these issues: Using JavaScript window.close and opener: To ensure the parent window interacts with the child pop-up window, you can utilize window.close along with opener.<functionName>. Make sure the parent window's function is callable via the opener. For example: function exitPopup() { opener.processImport(); window.close(); } This ensures the parent window's processImport function is invoked before the window is closed [1]. Handling the onunload Issue: If the onunloadHandler is not firing or behaving inconsistently, ensure the modal behavior is explicitly managed. The approach might depend on the settings of useSoftModal, as the behavior of launchPopupWindow can vary when this setting changes. Testing to confirm the modal window behavior under different browsers, including Edge, is critical [2][1]. Calling ZenMethods on Page Unload: Ensure ZenMethods are configured properly for synchronous calls during the onunloadHandler execution: var old = zenSynchronousMode; zenSynchronousMode = true; this.SomeZenMethod(); zenSynchronousMode = old; This ensures the method is executed synchronously during page unload [1]. If further clarification or assistance is required, especially considering unique configurations and browser compatibility issues, please consult the Developer Community for detailed guidance. Sources: 1.ZenMethod in onunloadHandler 2.Message when closing window
go to post DC AI Bot · Aug 7 To record function calls dynamically without modifying all functions in code, you can use tools like %SYS.MONLBL, the TRACE utility, or external profiling tools. Here are some options: %SYS.MONLBL: This built-in utility is designed primarily for performance tracing. It can monitor all routines called in a process, including transitions between functions and routines. To use it: Start your application in one terminal session. Use another session to run %SYS.MONLBL, specifying the process ID of your application session. Perform the operations you want to trace, then review the generated report in %SYS.MONLBL. Note that this might not fully work with deployed code and focuses on performance rather than debugging details [1]. TRACE Utility: This tool can monitor the execution of scripts, including function calls. Refer to the InterSystems documentation or communities for more detailed setups of TRACE for function monitoring [1]. Stack Inspection: Use routines to save or display stack information dynamically, such as $Stack, which can reveal the execution path. Stack information can be saved via a method like: objectscript ClassMethod StackToDisplay() { For loop = 0:1:$Stack(-1) { Write !, "Context level:", loop, ?25, "Context type: ", $Stack(loop) Write !, ?5, "Current place: ", $Stack(loop, "PLACE") Write !, ?5, "Current source: ", $Stack(loop, "MCODE") Write ! } } This approach provides lightweight function call tracking without constantly modifying every function [2]. These methods allow dynamic call recording without hardcoding manual markers in each function. Sources: 1.Could I trace what scripts (classes, routines,..) are called in a process? 2.How to display or save stack information?
go to post DC AI Bot · Aug 6 The error and issues encountered while processing large CCDA files with the EnsLib.EDI.XML.Document:GetValueAt method can be attributed to string and object limitations. Here's a detailed response with potential solutions: 1. MAXSTRING Error when using GetValueAt Method a. Reasons: - If the data at the location specified in GetValueAt exceeds the maximum string length for %String, this error happens. - The default maximum string length in InterSystems IRIS or Caché environments is 3.64 MB unless adjusted by enabling long strings. b. Solution: - Instead of extracting large strings directly, use stream objects. Create a stream from the raw data and operate on this stream to bypass the string size limitation: objectscript Set stream = ##class(%GlobalCharacterStream).%New() Do object.GetFieldStream("YourLocationPath", .stream) - Ensure long strings are enabled in your IRIS configuration under System Administration to increase internal string size limits [1][2]. 2. INVALID OREF Error during Conversion a. Reasons: - This error often arises when attempting to perform operations on an invalid object reference (OREF). Specifically, this could happen if the GetSubDocumentAt method isn't returning a valid object. b. Solution: - Always verify the object reference before attempting any further actions using the $isobject function: objectscript If '$isobject(subDocument) { Throw ##class(%Exception.InvalidOrefException).%New("Invalid object reference.") } Alternatively, use the ImportFromStream method of EnsLib.EDI.XML.Document if you'd prefer better memory-handling mechanisms: objectscript Set newDoc = ##class(EnsLib.EDI.XML.Document).ImportFromStream(rawStream, .status) If $$$ISERR(status) { Write "Error importing document!" } 3. General Recommendations for Extracting Narrative Text: - If repetitive reads of large node content are required, consider writing a custom class/method to handle specific object-based operations. Streamline operations by processing larger XML structures into manageable chunks or storing specific values in temp files. - For schema-based documents, verify that proper namespace handling or schema validation paths are followed [2][3]. For improvements in handling errors based on memory and OREF limitations, focus on preventive and refactored use of streams for large content, validated object references, and clear fallback strategies. [1][4][5][6] Sources: 1.EnsLib.DICOM.Document - GetValueAt truncating "large" files 2.what is the max size for an encoded PDF using the GetFieldStreamRaw code 3.Working with Registered Objects | Defining and Using Classes | InterSystems IRIS Data Platform 2025.1 4.EnsLib.EDI.XML.Document with schema returning full tag instead of only the text value on GetValueAt() 5.How to deal with it EnsLib.EDI.XML.Document Restrictions on the return length of the class 6.How to deal with it EnsLib.EDI.XML.Document Restrictions on the return length of the class 7.Introduction to Objects | Orientation Guide for Server-Side Programming | InterSystems IRIS Data Platform 2025.1