I recently started trying out Python in IRIS, but now I get this message repeated over and over again:
^Sources is not setup so hooks will not work
No idea where this came from and how it started. Any suggestions?
InterSystems Caché is a multi-model DBMS and application server. See more details here.
I recently started trying out Python in IRIS, but now I get this message repeated over and over again:
^Sources is not setup so hooks will not work
No idea where this came from and how it started. Any suggestions?
I like Application Error Log a lot, both for its full stack and a big list of variables. I'd like to "hack" this functionality and record the same in this log when a certain variable has a certain value. This quasi error should not be visible to the user, and it should not interrupt the application flow. Is that possible?
Throwing an error in a try-catch block does not record the error, tested. I am considering recording variables and the stack differently, I know how to do both, but that would miss the nice Application Error Log functionality.
Upd: I got an immediate DC AI Bot reply.
I am trying to get the value of a Submit button on a CSP object page.
<input type="Submit" value="Assign" name="action" id="action">
I tried getting it thru $GET(%Request.Data("action")), but it throws an Undefined error. Isnt $GET supposed to handle it if its undefined anyway?
How do I get the "value" of the button pushed when the form is set to POST?
Hi everyone,
I'm working with JavaScript in InterSystems IRIS, specifically in CSP pages. One issue I'm running into during development is that the browser keeps loading the cached version of my JavaScript files, even after I’ve made changes or recompiled the code.
I would have to clear my cache files or browser history for it to reload and work.
Is there a recommended way or best practice in IRIS to automatically clear or bypass the browser cache for JavaScript?
Is it possible to audit code changes in a namespace?
Ideally what we'd like to be able to do is check which classes were compiled (or deleted) in a time period, eg in last 3 months, and which user made those changes. Even better would be an audit of what those changes were, but that's less important (for us, as we can probably find that information in other ways).
We have a service where 3 groups, each with multiple users, potentially have access to make changes to the live service. With the best will in the world, each group doesn't always tell every other group about changes made.
Can someone point me to learning resources / documentation for Intersystems Terminal? I have scoured YouTube, Intersystems documentation, and the internet. Many of the Object Script commands I found don't work (and that are listed here) do not work in the version of terminal that I have:
https://docs.intersystems.com/ens201817/csp/docbook/DocBook.UI.Page.cls…
So far, I have only found 1 YouTube video that presented commands that 'actually' work my Cache terminal install:
https://www.youtube.com/watch?v=F3lw-2kGY6U&list=PLp4xNHWZ7IQmiSsryS0T3…
VSCode version:
Version: 1.101.2 (user setup)
Commit: 2901c5ac6db8a986a5666c3af51ff804d05af0d4
Date: 2025-06-24T20:27:15.391Z
Electron: 35.5.1
ElectronBuildId: 11727614
Chromium: 134.0.6998.205
Node.js: 22.15.1
V8: 13.4.114.21-electron.0
OS: Windows_NT x64 10.0.26100
-----------------------
I'm working with a CSP legacy system.
When a csp file is newer in Caché them my local version, I try to do a compare with the server and receive the error in VSCode.png)
Looking the Windows Log a I see the message:
2025-06-26 10:57:13.
I'm trying to open a TCP connection to a remote system. The Caché command I'm using to open the connection is OPEN "|TCP|"_PORT:(IP::"PSE"):10 where PORT is a port number in the range 40000 to 40100 and IP is a standard IPv4 addess like 10.200.100.50 the connection appears to open because $TEST becomes 1. I'm then writing to the open port with USE "|TCP|"_PORT:(::"S") WRITE "some text",*-3 It's a windows system
w $zv Cache for Windows (x86-64) 2017.2.2 (Build 865) Mon Jun 25 2018 10:45:31 EDT I'm under the impression that the O/S handles the I/O for TCP connections.
I am attempting to follow the tutorial at Publishing Web Services Using Caché | Caché Web Services QuickStart Tutorial | Caché & Ensemble 2018.1.4 – 2018.1.11 to build a toy SOAP web-service using Cache but am running into what I suspect are permissions issues, or perhaps setting up the "plumbing" to get an incoming request to call the web-service methods.
Ensemble instance running on local laptop. Only the Ensemble private web-server installed on the machine (no IIS or Apache).
This can be achieved by using the CSV() procedure of the %SQL.Util.Procedures class.
Below is an example of usage code. (Assuming that the file test.csv is in c:\temp.)
Hi everyone,
I'm preparing to move to a new PC soon and I'm trying to migrate the server connections I use in IRIS Studio to the new environment.
I’ve followed without success an old procedure I've found on a post on the community that involves exporting the registry key from:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Intersystems\Cache\Servers
But I’ve realized that this only includes the entries from the Server Manager and not the actual server connections used within IRIS Studio and shown within the "Server Connections" menu.
How do I write DDL script for collection properties?
For example I want to create the following class:
Class SQLUser.Person {
Property Name As %String;
Property FavoriteColors As list Of %String;
}My DDL script looks like this:
CREATE TABLE Person (Name varchar(50), FavoriteColors ???)Hello,
I have a problem generating QR code in Caché now.
After executing the code
set Status=##Class(%SYS.QRCode).GenerateImage(P0,,.DataURI)
(variable P0 contains data for QR code)
an error is displayed now:
"<NOTOPEN>zGenerate+27^%SYS.QRCode.1",,,,,,,,
("$^zGenerate+27^%SYS.QRCode.1 +1","$^zGenerateImage+4^%SYS.QRCode.1 +1"
This error occurs only on two servers, on the others the code works fine.
When calling the method, I do not specify any external file that should be opened.
Thank you for the answers.
Hello InterSystems community!
We have an amazing opportunity for 3 experienced Caché developers to join our team in building an innovative platform in the MedTech sector.
What we offer:
If you have experience with Caché and are ready for an exciting challenge with a forward-thinking company, this is your chance!
Looking forward to hearing from you and having you join this incredible project!
I'm using a %Net.HttpRequest which had been successful in the past, but started failing at some point with a SSL/TLS protocol error.
ERROR #6085: Unable to write to socket with SSL/TLS configuration 'groundca', error reported 'SSL/TLS error in SSL_connect(), SSL_ERROR_SSL: protocol error, error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol'
The SSL/TLS configuration:
.png)
The request's SSLConfig is set to the "groundca" config when making the request.
A request using the same URL, API key, and CA file through Curl receives the desired response from the API at "https://osrd.
I am trying to add a value to my concatenation string and the value is not being inserted in the right place. I am adding onto this code from another developer and cannot seem to get it to work. The only code I have added is underlined in bold red.
This is how the translated HL7 message looks:
OBX|1|CE|CDX^History||Specimen 1 Clinical History: CLINICAL HISTORY\.br\\.br\Specimen 2 Clinical History: CLINICAL HISTORY 2\.br\Specimen 1 Suspected Clinical Diagnosis\.br\Specimen 3 Clinical History: HISTORY 3\.
Here's a sample code to display JSON or dynamic object.
It shows how to iterate over object, get property values and their paths.
Having been inspired with Shared code execution speed question/discussion, I dare to ask another one which is annoying me and my colleagues for several weeks.
We have a routine called Lib that comprises 200 $$-functions of 1500 code lines total. It was noticed that after calling _any_ function of another rather big routine (1900 functions, 32000 lines) the next call of $$someFunction^Lib(x) is getting 10-20% slower than previous call of the same function.
Hey everyone,
I'm diving deeper into Caché ObjectScript and would love to open a discussion around the most useful tips, tricks, and best practices you’ve learned or discovered while working with it.
Whether you're an experienced developer or just getting started, ObjectScript has its own set of quirks and powerful features—some well-documented, others hidden gems. I’m looking to compile a helpful set of ideas from the community.
If you're migrating from Oracle to InterSystems IRIS—like many of my customers—you may run into Oracle-specific SQL patterns that need translation.
Take this example:
SELECT (TO_DATE('2023-05-12','YYYY-MM-DD') - LEVEL + 1) AS gap_date
FROM dual
CONNECT BY LEVEL <= (TO_DATE('2023-05-12','YYYY-MM-DD') - TO_DATE('2023-05-02','YYYY-MM-DD') + 1);
In Oracle:
LEVEL is a pseudo-column used in hierarchical queries (CONNECT BY). It starts at 1 and increments by 1.
CONNECT BY LEVEL <= (...)Let's suppose two different routines use one and the same chunk of code. From the object-oriented POV, a good decision is to have this chunk of code in a separate class and have both routines call it. However, whenever you call code outside of the routine as opposed to calling code in the same routine, some execution speed is lost. For reports churning through millions of transactions this lost speed might be noticeable. Any advice how to optimize specifically speed?
P.S. Whenever someone is talking about the best choice for whatever, I am always tempted to ask: "What are we optimizing?".
How would you go about creating an SQL Stored Procedure that would result in the same output as "IN LIKE"?
For example...
CustomersTable
| RecordId | CustomerName |
| 123 | Mark Stevens |
| 456 | Betty Johnson |
| 789 | John Stevens |
| 321 | Brian Smith |
| 654 | John Markson |
| 987 | Tom Obrian |
select *
from CustomersTable
where inLike('%Mark%', '%John%')Would return:
| 123 | Mark Stevens |
| 456 | Betty Johnson |
| 789 | John Stevens |
| 654 | John Markson |
George James Software is excited to share a new release of Deltanji source control, version 8.1. This new release introduces a Git Location Driver along with several other functionality and usability improvements.
Highlights of this release include:
Are there any direct command to find the length of subscript of global variable? Is it possible to code in objectscript to find the maximum length of subscript in a global variable.
Is a layer before the internal HTTP of Caché/IRIS, such as a Reverse Proxy or API Gateway, a good option?
Example: I have an API using %CSP.REST, and I am using the internal port for development. But for production and approval, I put a reverse proxy using NGINX. Is this recommended? Is it an alternative?
Diagram..png)
We're planning to use Production Validator for validating our system upgrade (2016.2.3 to 2024.2) , and we are trying to understand what kind of benchmarking or performance metrics others have observed during similar efforts.
Specifically, we are looking for a case study or real-world example that includes details like:
i got a particular application where i want that a user could only write to a DB without the reading permission. is this possible?
Hello. Currently, we are developing using Cache 2018 version.
Our team is working on improving an existing legacy program so that it can also be used on the web.
Before asking my question, here is the development environment.
Currently, we are successfully mapping global data through the %PERSISTENT class and able to query it with SQL. However, the problem is that the retrieved "Korean" data is all broken.
I have a rest API Class used for getting data from Cache 2018 version.
I have single route '/callfuntions'
I send the following parameters to the API :- className, methodName, params
I use $CLASSMETHODto execute and send the result back to the client.
If I make more that 10 to 12 requests in quick succession, then it stops sending data.
if I wait for over 10 seconds it allows me to send more requests to the API. How do I resolve this?