Clear filter
Announcement
Anastasia Dyubaylo · May 2, 2019
Hi Community!
New "Coding Talk" video is already on InterSystems Developers YouTube:
Create Your First InterSystems ObjectScript Code with IRIS Community, Github, Docker and VSCode
In this video, presented by @Evgeny Shvarov, you will know how to create InterSystems ObjectScript class, run it in a docker container with InterSystems IRIS Community Edition, edit and compile it in Visual Studio Code and push it in Github.
And...
You're very welcome to watch all Coding Talks in a dedicated "Coding Talks" playlist on our InterSystems Developers YouTube Channel.
Stay tuned! Where can I find these Code Guidelines, you are referring to at ~4:45?I am using Atelier and it doesn't put Classes and Routines under the src folder.Thanks! Here's community guidelines. Hmm... that document says nothing about how source code needs to be packaged for GitHub repos. And that's the part video refers to. What am I missing? I'm using Cache-Tort-Git UDL fork and really recommend it. It's a great source control hook! Funny thing that this repo is not following guidelines Evgeny referring to :) Hi @Anton.Umnikov ! Thanks for raising this topic. The question of the most acceptable folder structure widely discussed already on community. As for Atelier, - why do you care where it puts the code? I believe you can maintain your code in a folder structure you like and let Atelier compile it and bring back in a place it took it, right? "Widely" might be an overstatement for this particular discussion. Nor it equates it to any "Guidelines", official or de facto.In Atelier, if I migrate the code, originally written in Studio (or any other code, already residing on a server) it ends up in a predefined location which is not src
Announcement
Larry Finlayson · Jun 16
InterSystems EMPI (formerly HealthShare Patient Index) – Virtual July 9-11, 2025
Configure, tune, and work with InterSystems EMPI, an Enterprise Master Person Index
This 3-day course teaches the installation, configuration, and use of InterSystems EMPI™ (formerly HealthShare® Patient Index).
Starting with version 2025.1, HealthShare Patient Index has been renamed to InterSystems EMPI, but the core functionality remains the same.
Day one focuses on person identification issues, and the tools that can be used for reviewing records identified by the system for human attention. This session is appropriate for both technical staff and administrative staff who manage person identification issues.
Day two starts with installation, and in the course of two days moves through the initial configuration of a system, the process for onboarding additional data sources, data flow, and utility programs.
This course is applicable to users of both InterSystems EMPI (version 2025.1 and later) and HealthShare Patient Index (prior to version 2025.1).
SELF REGISTER HERE
Article
Yuri Marx · Jun 13, 2020
Some InterSystems Java libraries are not available in public maven repositories, like intersystems-jdbc-3.1.0.jar. In this case, to configure your Java Maven dependency, copy the external file to your project (for a folder visible to the classpath, like resources) and use <systemPath>. Follow the sample:
<dependency>
<groupId>com.intersystems</groupId>
<artifactId>intersystems-jdbc</artifactId>
<version>3.1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/intersystems-jdbc-3.1.0.jar</systemPath>
</dependency>
It is necessary enable your build to system dependencies. See:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
Now, when you build your project, the external jar files will be included to the target binary.
Question
Krishnamuthu Venkatachalam · Apr 9, 2019
I want to log the input request and response to the REST call.There is an option for SOAP web service ^ISCSOAP("Log").Is there anything similar for REST services in Cache ? Or what is the preferred way of logging the REST calls. I find the easiest way is to log into the CSP Gateway for the web server you are using. If this is a development machine and you are using the stripped down web server internal to Cache you can access this from the management portal. The path is System Adminstration -> Configuration -> CSP Gateway Management. If you looking to do this against the traffic on an external web server then you need to the path to the Module.xxx. On my Windows VM this is http://192.168.x.xxx/csp/bin/Systems/Module.cxw.You will need the Web Gateway Management username and password. The user is typically CSPSystem. Once logged in look for the View HTTP Trace on the left hand menu.Click on that and you will see a screen with 'Trace OFF' and 'Trace ON' at the top of the left hand menu. You will also see options to refresh and clear. Below that will appear any requests that have been traced. This is probably blank at this time. Click Trace ON (it should change to RED. Now go make a request that you want to trace. Once your request is complete go back and turn off the trace so you don't get a bunch of requests that have nothing to do with what you want to examine. I did this and made a request for the System Management Portal. Here is the list I get.Note that I see two requests. Only one is what I want to look at which, in my case is the first. When you select a trace you will see the request a the top followed by the response. Note if the body of the response is not readable you likely have gzip compression on. Go to the Application settings in the web gateway and turn this off to actually be able to see the body. Remember to turn it back on later though.Here is my results (truncated). Hope this helps you Do you want it for debugging or logging purposes?If for debugging, here's a series of articles Debugging Web (part 1, part 2) dealing with REST Debugging.Atelier can be used to debug REST. The HS.FHIR.REST.Handler class has the LogCSPRequest and LogCSPResponse methods which have examples of ISC Soap logging from within the code. It is easier to use the GUI as mentioned by Rich, but if you have enormous amounts of traffic this may be worth investigation.
Announcement
Raju K · Nov 17, 2020
We have an immediate requirement for an experienced Intersystems Ensemble/Health Connect consultant to join our team with a good grounding in OO Programming, Healthcare Integration and at least 2 years experience with InterSystems Ensemble/Healthshare Health Connect
Announcement
Raju K · Nov 3, 2020
Position: Intersystems Developer / IRIS Developer (Please send me your resume to raju@intellisofttech.com )
Location: 100% Remote
Duration: 6 Months Contract To Hire
Skills: Cache DB, Object Script, Intersystem, Ensemble (oldest one , )Healthconnect (Middle version ), Healthshare(Latest version ), Mumps
Top Requirements:
IRIS for Health / Ensemble / Healthconnect / Healthshare – multiple versions released over time, 3+ years
ETL – Will need to be familiar on transforming data into new IRIS instances
Object Script – will do some cache development
Software Development Background – infrastructure will be set for the team to development
complex HL7 documents (CCDA documents)
Ingesting CCDs or ugly flat files
Performance tuning of IRIS.
Nice to Have: Devops Tooling – Kubernetes, Jenkins, etc
Please send me resume to raju@intellisofttech.com Please send me resume to raju@intellisofttech.com You also can check direct messages here on DC - if people click the I'm Interested button you'll get a direct message.
Article
Evgeny Shvarov · Jun 16, 2020
Hi, folks!
We released a new version of ZPM, with one revolutionary feature, and a set of great enhancements, amongst of which, are:
* module.xml boilerplate generator
* test server
* CLI commands order change,
* and more!
See the details below
## 1. Official test server
To check if your package is published in the registry and then installed from it, use the test registry: https://test.pm.community.intersystems.com/registry/
login: test
password: PassWord42
To switch to the test registry use the command
` repo -r -n registry -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42`
Once a day, the test registry is updated and all data in it is reset
## 2. New commands for the most frequent actions with the module
Previously, to publish a module in the current registry, you had to use the module-action command, e.g., `module-action mymodule publish`, and it could be written shorter `mymodule publish`.
Now you can use the publish command: `publish mymodule` - with the organic word order
Commands which support *Command module-name* order:
* reload
* compile
* test
* package
* verify
* publish
## 3. Generate command
Using the `generate` command, you can create a module.xml file template in a second.
Usage:
* `generate -template /my/project`
Creates a module.xml file with fictional data in /my/project
After that you must open and edit this file to change module meta information and specify module resources (classes, csp pages, globals, test)
* `generate /my/project`
Without -template (or -t) flag this command creates a module.xml file in an interactive mode. Just answer several questions. Use -author (-a) flag to add information about module author
```
zpm: USER>generate /temp/zzzz
Enter module name: zzzz
Enter module version: 1.0.0 => 1.0.1
Enter module description: module description
Enter module keywords: module keywords
Enter module source folder: src =>
Existing Web Applications:
/csp/user
Enter a comma separated list of web applications or * for all: /csp/user
Enter path to csp files for /csp/user: src/web
Dependencies:
Enter module:version or empty string to continue: sslclient:1.0.1
Enter module:version or empty string to continue:
zpm: USER>
```
## 4. Globals location
Now Globals are expected in /src/gbl (but not in /gbl )
This is not back-compatible, so please update your modules.
## 5. Version command
Version command displays currently installed zpm version number; shows locally installed zpm registry and connected remote repository and their version.
```
zpm: USER>version
zpm 0.2.2
Locally installed zpm-registry not found
https://pm.community.intersystems.com - 0.0.2
```
## 6.Switching back to a public repository
Run the following command to switch back to the public repository:
```
zpm: USER>repo -r -n registry -url https://pm.community.intersystems.com/
```
Stay tuned!
Your collaboration, feedback, [bug-reports](https://github.com/intersystems-community/zpm/issues) are very welcome!
Updated images:
And we released images with IRIS 2020.1 and 2020.2 and ZPM 0.2.3. the tags are:
intersystemsdc/iris-community:2020.1.0.215.0-zpm
intersystemsdc/iris-community:2020.2.0.204.0-zpm
intersystemsdc/irishealth-community:2020.1.0.215.0-zpm
intersystemsdc/irishealth-community:2020.2.0.204.0-zpm
intersystemsdc/iris-aa-community:2020.3.0AA.331.0-zpm
And to launch IRIS do:
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-community:2020.1.0.215.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-community:2020.2.0.204.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/irishealth-community:2020.1.0.215.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/irishealth-community:2020.2.0.204.0-zpm
docker run --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-aa-community:2020.3.0AA.331.0-zpm
And for terminal do:
docker exec -it my-iris iris session IRIS
and for control panel:
http://localhost:9092/csp/sys/UtilHome.csp
Happy coding!
Announcement
Anastasia Dyubaylo · Jul 24, 2019
Hi Everyone!
You're very welcome to watch the new video on InterSystems Developers YouTube, recorded by @Evgeny.Shvarov in the new format called "Coding Talks":
GitHub Flow with InterSystems IRIS: Edit with VSCode, Test with Docker, Commit, Push, Pull Request
Demo on how to use GitHub flow with InterSystems IRIS. Fork the project with InterSystems ObjectScript, make changes with Visual Studio ObjectScript, test changes with Docker, commit and push and then make pull request to original repository.
In addition, please check this useful article: "Just for Fun. John Conway's Game of Life"
Feel free to ask your questions in the comments to this post.
Enjoy watching the video!
Announcement
Anastasia Dyubaylo · Jul 6, 2022
Hey Community,
Learn how you can develop a Node.js application and connect to InterSystems IRIS data platform through the Native API:
⏯ Using Node js to connect to InterSystems IRIS
Subscribe to the InterSystems Developers YouTube channel and stay tuned! You may want to take a look at my example in OEX of runninga Websocklet client in Node,js controlled and exchanging data over Global accessusing IRIS-NativeAPI-Nodejs
Related Article in DC
Question
Adam Dewing · Mar 3, 2020
I'm working on developing Productions with java. The sample project has several intersystems jar files:
-- intersystems-enslib-jms-3.1.0.jar
-- intersystems-gateway-3.1.0.jar
-- intersystems-jdbc-3.1.0.jar
-- intersystems-spark-1.0.0.jar
-- intersystems-uima-1.0.0.jar
-- intersystems-utils-3.1.0.jar
-- intersystems-xep-3.1.0.jar
I have the jar files, but where can I find them for download? Are they available on a maven repository somewhere?
Any help would be appreciated! Hi Adam -
At the moment, the jar files are only distributed as part of IRIS (the Windows installer, Docker container, etc). If distributing the client libraries in a different manner would significantly improve your development cycle, please let me know.
-Bob That means the jar files will be available to the java code during runtime, which works. During development of the java code, I just added the jar files in maven with a scope of system, which should solve my problem. Thank you for the quick response! As I have continued to work on developing java code for PEX, using the workflow as described in the InterSystems book that can be found here, I think it would add a lot of value for you to store the jars in a public maven repository such as Maven Central . The reason is that we develop the java classes outside of InterSystems first, again per the workflow recommended by InterSystems. Without them being in a repo for maven to download, we have a couple options to work around this, which are all ugly:
Add the jars locally as with a system scope.
Causes maven warnings and this is a deprecated maven functionality.
Create a local repository which requires a lot of configuration and means that if someone downloads my project from git, will be missing all the jar files.
Create an internal company maven repository which requires a lot of work across multiple teams.
The first option is the best as anyone can then download my project from version control (git, svn, etc...) and have all the needed files. With the system scope set in the pom for these jars, the jars will not be included in the built jar. This, unfortunately, is a deprecated maven function. As more InterSystems customers start using PEX, I think having them in a public repository will add a lot of business value for InterSystems.
Article
Yuri Marx · Jun 10, 2020
Many times it is necessary copy or send files to your docker container instance.
In my case was with IRIS JDBC driver.
Docker has this recipe for this (credits to https://docs.docker.com/engine/reference/commandline/cp/):
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
But to copy you need your container name. Write this command for this:
docker ps
In my, my-iris is the container name.
If you need to know file location into your docker file system too, write:
1. To go to bash of your docker instance: docker exec -it my-iris /bin/bash.2. Write cd .. to get to root path, if necessary.3. Find your file path if this command: find $directory -type f -name "*jdbc*.jar" (in my case, I want to find jdbc driver path).4. And now you can copy the file found. Write:
docker cp my-iris:/usr/irissys/dev/java/lib/JDK18/intersystems-jdbc-3.1.0.jar c:\aplicativos
5. To the other hand, you can send files to your docker following this: docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH.
I had to transfer more than a few files. so I shared a docker volume:
docker run ...... --name=iris1 -d -v volume1:/external ........
docker run ....... --name=iris2 -d -v volume1:/external ........
so both containers have permanent access and can pass files as we use to pass Globals using IRISTEMP or CACHETEMP
The volume gets generated at first access automatically
Question
Ilmija Asani · Jan 16, 2020
Hello community,
I'm new to Objectscript and Intersystems development. I've read documentation and some examples and succeded to import my Java class file into HealthShare using the Java Gateway Service. To import my class i tryed both methods (Wizard, or scripting) with success.
Everything works great, i see my imported class inside the namespace, and i can call the methods.
The problem begin when i try to update my .JAR file with new methods. I've insert new methods inside my Java Class (Public methods), and build a new Jar file to import into HealthShare. Then i've deleted the old package with old class from the namespace and use the wizard (or script) to import my new JAR file. The import works fine, but when i check the class imported, it's the old one with old methods, and i don't understand why it upload my old Class.
To make it works, i have to start a completely new Java project with different name and paste my updated script, then build the jar, and import it into HealthShare, that's will give me the updated class with new methods inside.
Here's a list of what i've tryed to resolve my issue:
- Restarting the Java Gateway service from the production before importing the JAR (Fail)
- Rename the JAR file (Fail)
- Rename the package of Java Class (Error, the script can't find the new name, even if state inside the classpath object)
- Changing the Manifest version inide the JAR (Fail)
What else can i try? Somebody please, can help me? Sorry for my english. Hi, thanks for sharing your code, anyway i still get the same problem. That's what i did :
1. Create a Gateway with your method "CreateGateway"
2. Then i call the UploadJar method and i get my class import into namespace, i see it with all methods inside (till here it's Ok)
3. I edit my Java app (just removing 1 method) and build a new Jar.
4. Repeat Step 1 and 2 and i get my java class imported into namespace but with all the methods (included the one i've deleted)
a. Check that the JAR you import has the new code. If you build in a separate directory and then copy the JAR into a final directory it can fail as java locks loaded JAR files on OS level.
b. Try stopping all running Java Gateways before copying the JAR and running UploadJar. Do not create new gateway for every import.
c. What does
zw %objlasterror
report after (4)? Ok i will try that, but there's a way to check how many Java Gateways are running?
On the production i only see the EnsLib.JavaGateway.Service, don't know where to find the ones that i state with your code
Edit:
this is the error on step 4:
%objlasterror="0 "_$lb($lb("<%ObjectErrors>OK",,,,,,,,,$lb(,"CORSOESL",$lb("e^GetOneErrorText+1^%apiOBJ^1","e^zGetOneErrorText+1^%SYSTEM.Status.1^1","e^zLogStatus+1^%Net.Remote.Service.1^1","d^zShutdownGateway+10^%Net.Remote.Service.1^1","e^zStopGatewayObject+22^%Net.Remote.Service.1^1","e^zStopGateway+4^%Net.Remote.Service.1^2","e^zUpdateJar+19^luigi.JavaGatewayTest.TestGW.1^1","d^^^0"))))
Ok i will try that, but there's a way to check how many Java Gateways are running?
There are either production gateways and system gateways, they are listed in SMP - System Administration - Configuration - Connectivity - Object Gateways. Thanks again, i've tried this:
1. There were 2 Gateways listed on SMP, so i deleted both of them
2. Created a new Gateway using your code, named GW1 and port 7777 (that port was set on a third gateway as service, that i deleted too, inside the production)
3. All settings on the new GW are correct, it result inactive at first.
4. I've created a completely new java app (with new names on package and class also), to test and copy/past my script class with edited methods
5. Build up the Jar with different name and put it into the folder ready to get uploaded on HS
6. When i call your "UploadJar" i get the following error when it try to connect:
%objlasterror="0 "_$lb($lb(5001,"Can't find the job that is monitoring Gateway 'GW1'",,,,,,,,$lb(,"CORSOESL",$lb("e^zCheckMonitor+20^% Net.Remote.Service.1^1","e^zStopMonitor+1^%Net.Remote.Service.1^1","e^zStartGatewayObject+18^%Net.Remote.Service.1^1","e^zConnectGateway+34^%Net .Remote.Service.1^1","e^zConnect+4^luigi.JavaGatewayTest.TestGW.1^1","e^zUpdateJar+7^luigi.JavaGatewayTest.TestGW.1^1","d^^^0"))))/* ERRORE #500 1: Can't find the job that is monitoring Gateway 'GW1' */
7. So i decided to manually activate the GW, and redo your UploadJar and i get this when the code try to stopGateway:
%objlasterror="0 "_$lb($lb("<%ObjectErrors>OK",,,,,,,,,$lb(,"CORSOESL",$lb("e^GetOneErrorText+1^%apiOBJ^1","e^zGetOneErrorText+1^% SYSTEM.Status.1^1","e^zLogStatus+1^%Net.Remote.Service.1^1","d^zShutdownGateway+10^%Net.Remote.Service.1^1","e^zStopGatewayObject+22^%Net.Remote .Service.1^1","e^zStopGateway+4^%Net.Remote.Service.1^2","e^zUpdateJar+19^luigi.JavaGatewayTest.TestGW.1^1","d^^^0"))))
8. I go to check the namespace, and i see the new package name, with new class name, but inside i still see all the deleted methods.
Here's my current java class with only 2 methods "setAge" and "getName"
package persona; /**
public class testPersona { public int age;
public String name;
public String sex; //constructor
public testPersona (int startAge, String Name, String Sesso) { this.age = startAge;
this.name = Name;
this.sex = Sesso; }
public void setAge(int newAge) { age = newAge;
} public String getName() { return name;
} /* public static void main(String []args) { JavaPerson myPerson = new JavaPerson (5, "Tom","M");
System.out.println(myPerson.getName());
System.out.println(myPerson.getAge());
System.out.println(myPerson.getSex()); }*/
}
and this is the HS imported class with all the older methods inside.
Class persona.testPersona Extends java.lang.Object [ ProcedureBlock ]
{ Parameter IMPORTTIMESTAMP As STRING = "2020-01-16 16:04:52.0"; Method %OnNew(ByRef p0 As %ObjectHandle, ByRef p1 As %ObjectHandle, ByRef p2 As %ObjectHandle, ByRef p3 As %ObjectHandle) As %Status
{
Quit:'$D(p0) $$$OK
Quit:$D(p3) ..%Constructor(p0,"persona.testPersona",3,p1,p2,p3)
Quit:$D(p2) ..%Constructor(p0,"persona.testPersona",2,p1,p2)
Quit:$D(p1) ..%Constructor(p0,"persona.testPersona",1,p1)
Quit ..%Constructor(p0,"persona.testPersona",0)
} Method getName() As %ObjectHandle
{
Quit ..%IR("getName")
} Method setAge(ByRef p0 As %ObjectHandle)
{
Do ..%I("setAge",.p0)
} Method getage() As %Integer
{
Quit ..%Get("getage")
} Method setname(p1 As %ObjectHandle)
{
Do ..%Set("setname",p1)
} Method setsex(p1 As %ObjectHandle)
{
Do ..%Set("setsex",p1)
} Method getsex() As %String
{
Quit ..%Get("getsex")
} } I use this or similar methods to load Java code.
Question
Arun Kumar · Nov 24, 2017
Hi Guys,
Can you please guide me on how to develop the machine learning concepts like as Chatbots, voice recognition, etc...
If any lead would be appreciate.
Thanks in Advance.
Thanks and Regards,
Arun Kumar Durairaj. Thanks Fabian, I will check it and let you know if I have any queries. Is there any other document for our cache to develop Chatbots in Cache side. Thanks. You should work your way through this reading list for starters:
https://github.com/josephmisiti/awesome-machine-learning
https://github.com/ujjwalkarn/Machine-Learning-Tutorials
Best,
Fab
Hi Arun,Look at this article : https://community.intersystems.com/post/machine-learning-spark-and-cach%C3%A9If you want to analyse text for a chatbot, iKnow could be handy, search for iKnow keyword in DC or in the docs.
Announcement
Daniel Palevski · Apr 22
The 2024.1.4 and 2023.1.6 maintenance releases of InterSystems IRIS® data platform, InterSystems IRIS® for HealthTM, and HealthShare® Health Connect are now Generally Available (GA). These releases include the fixes for the following alert recently issued - Alert: SQL Queries Returning Wrong Results | InterSystems. Please share your feedback through the Developer Community so we can build a better product together.
Documentation
You can find the detailed change lists & upgrade checklists on these pages:
InterSystems IRIS
InterSystems IRIS for Health
HealthShare Health Connect
Early Access Programs (EAPs)
There are many EAPs available now. Check out this page and register to those you are interested.
How to get the software?
Full installation packages for both InterSystems IRIS and InterSystems IRIS for Health are available from this WRC's InterSystems IRIS Data Platform Full Kits. page. HealthShare Health Connect kits are available from WRC's HealthShare Full Kits page. Container images are available from the InterSystems Container Registry.
Availability and Package Information
This release comes with classic installation packages for all supported platforms, as well as container images in Docker container format. For a complete list, refer to the Supported Platforms document. The build number for these Maintenance Releases are: 2024.1.4.512.0 and 2023.1.6.809.0.
Question
Chandra Bandi · Sep 21, 2018
Hi,Need your help on executing ##Class(Backup.General).ExternalFreeze() and ##Class(Backup.General).ExternalThaw() operations inAtelier REST API setup. Please provide us example code if any. I have a few questions:1) Why exactly do you need to call these via REST? What scenario do you have where running something like the example code in the documentation wouldn't work for you?2) Assuming you do have a good reason to make these calls via REST, which part do you need help with? Creating the REST endpoint? Making the REST request? Writing the code on the back end to run the appropriate commands?