Clear filter
Question
Alex Bravo · Dec 12, 2024
Hi everybody,
A customer would like to connect an IRIS database to Metabase BI. But Metabase does not have a connector that supports the IRIS database.
Metabase only supports these databases:
- Amazon Athena- BigQuery (Google Cloud Platform)- Druid- MongoDB (recommend version 4.2 or higher)- MySQL (recommend version 8.0.33 or higher, as well as MariaDB version 10.4 or higher)- Oracle- PostgreSQL- Presto- Redshift (Amazon Web Services)- Snowflake- SparkSQL- SQL Server- SQLite- Vertica
And a few others.
However, it is possible to create a driver for Metabase that connect to IRIS. Metabase comes with documentation on how to create a custom driver.
Has anyone yet developed, or know of development of the driver for Metabase to IRIS connection?
Thanks in advance.
Alex Bravo Hi Alex,
Not sure if you are still finding this.
Hope it would be helpful for you.https://community.intersystems.com/post/metabase-iris-driver Thanks Kate!
@Alexander.Bravo to add a bit of context: Metabase makes a distinct between "Officially supported drivers" and "Community drivers." Officially supported drivers are owned and maintained by the Metabase team, while Community drivers are owned and maintained by the community. Additionally, Community drivers are not supported in Metabase Cloud.
In our case, the InterSystems IRIS Metabase driver was created by @SiddardhaReddy.Sanagala and is now listed in the Metabase documentation. The article that Kate mentioned has a ton of great information, and you can find the driver directly on Github and our OpenExchange. 🤩 That's awesome! Thanks to @SiddardhaReddy.Sanagala for this contribution!
Article
Eduard Lebedyuk · Apr 18
For my hundredth article on the Developer Community, I wanted to present something practical, so here's a comprehensive implementation of the [GPG Interoperability Adapter for InterSystems IRIS](https://github.com/intersystems-community/GPG).
Every so often, I would encounter a request for some GPG support, so I had several code samples written for a while, and I thought to combine all of them and add missing GPG functionality for a fairly complete coverage. That said, this Business Operation primarily covers data actions, skipping management actions such as key generation, export, and retrieval as they are usually one-off and performed manually anyways. However, this implementation does support key imports for obvious reasons. Well, let's get into it.
# What is GPG?
[GnuPG](https://gnupg.org/) is a complete and free implementation of the OpenPGP standard as defined by RFC4880 (also known as PGP). GnuPG allows you to encrypt and sign your data and communications and perform the corresponding tasks of decryption and signature verification.
For InterSystems Interoperability adapter, I will be using Embedded Python and [gnupg](https://gnupg.readthedocs.io/en/latest/) Python library specifically.
> The gnupg module allows Python programs to make use of the functionality provided by the GNU Privacy Guard (abbreviated GPG or GnuPG). Using this module, Python programs can encrypt and decrypt data, digitally sign documents and verify digital signatures, manage (generate, list and delete) encryption keys, using Public Key Infrastructure (PKI) encryption technology based on OpenPGP.
# Disclaimer
This project, whenever possible, aims to use GPG defaults. Your organization's security policies might differ. Your jurisdiction or your organization's compliance with various security standards might require you to use GPG with different settings or configurations. The user is wholly responsible for verifying that cryptographic settings are adequate and fully compliant with all applicable regulations. This module is provided under an MIT license. Author and InterSystems are not responsible for any improper or incorrect use of this module.
# Installation
## OS and Python
First, we'll need to install `python-gnupg`, which can be done using `pip` or `irispip`:
```
irispip install --target C:\InterSystems\IRIS\mgr\python python-gnupg
```
If you're on Windows, you should [install GPG itself](https://gnupg.org/download/index.html). GPG binaries must be in the path, and you must restart IRIS after GPG installation. If you're on Linux or Mac, you likely already have GPG installed.
## InterSystems IRIS
After that, load the [code](https://github.com/intersystems-community/GPG) into any Interoperability-enabled namespace and compile it. The code is in `Utils.GPG` package and has the following classes:
- `Operation`: main Business Operation class
- `*Request`: Interoperability request classes
- `*Response`: Interoperability response classes
- `File*`: Interoperability request and response classes using `%Stream.FileBinary` for payload
- `Tests`: code for manual testing, samples
Each request has two properties:
- `Stream` — set that to your payload. In File* requests, your stream must be of the `%Stream.FileBinary` class; for non-file requests, it must be of the `%Stream.GlobalBinary` class.
- `ResponseFilename` — (Optional) If set, the response will be written into a file at the specified location. If not set, for File requests, the response will be placed into a file with `.asc` or `.txt` added to the request filename. If not set, for global stream requests, the response will be a global stream.
The request type determines the GPG operation to perform. For example, `EncryptionRequest` is used to encrypt plaintext payloads.
Each response (except for Verify) has a `Stream` property, which holds the response, and a `Result` property, which holds a serializable subset of a GPG result object converted into IRIS persistent object. The most important property of a `Result` object is a boolean `ok`, indicating overall success.
## Sample key generation
Next, you need a sample key; skip this step if you already have one ([project repo](https://github.com/intersystems-community/GPG) also contains sample keys, you can use them for debugging, passphrase is `123456`):
Use any Python shell (for example, `do $system.Python.Shell()`):
```python
import gnupg
gpg_home = 'C:\InterSystems\IRIS\Mgr\pgp'
gpg = gnupg.GPG(gnupghome=gpg_home)
input_data = gpg.gen_key_input(key_type="RSA", key_length=2048)
master_key = gpg.gen_key(input_data)
public_key = 'C:\InterSystems\IRIS\Mgr\keys\public.asc'
result_public = gpg.export_keys(master_key.fingerprint, output=public_key)
private_key = 'C:\InterSystems\IRIS\Mgr\keys\private.asc'
result_private = gpg.export_keys(master_key.fingerprint, True, passphrase="", output=private_key)
```
You must set `gpg_home`, `private_key`, and `public_key` to valid paths. Note that a private key can only be exported with a passphrase.
# Production configuration
Add `Utils.GPG.Operation` to your Production, there are four custom settings available:
- `Home`: writable directory for GPG to keep track of an internal state.
- `Key`: path to a key file to import
- `Credentials`: if a key file is passphrase protected, select a Credential with a password to be used as a passphrase.
- `ReturnErrorOnNotOk`: If this is `False` and the GPG operation fails, the response will be returned with all the info we managed to collect. If this is `True`, any GPG error will result in an exception.
On startup, the operation loads the key and logs `GPG initialized` if everything is okay. After that, it can accept all request types based on an imported key (a public key can only encrypt and verify).
# Usage
Here's a sample encryption request:
```objectscript
/// do ##class(Utils.GPG.Tests).Encrypt()
ClassMethod Encrypt(target = {..#TARGET}, plainFilename As %String, encryptedFilename As %String)
{
if $d(plainFilename) {
set request = ##class(FileEncryptionRequest).%New()
set request.Stream = ##class(%Stream.FileBinary).%New()
$$$TOE(sc, request.Stream.LinkToFile(plainFilename))
} else {
set request = ##class(EncryptionRequest).%New()
set request.Stream = ##class(%Stream.GlobalBinary).%New()
do request.Stream.Write("123456")
$$$TOE(sc, request.Stream.%Save())
}
if $d(encryptedFilename) {
set request.ResponseFilename = encryptedFilename
}
set sc = ##class(EnsLib.Testing.Service).SendTestRequest(target, request, .response, .sessionid)
zw sc, response, sessionid
}
```
In the same manner, you can perform Decryption, Sign, and Verification requests. Check `Utils.GPG.Tests` for all the examples.
# Why Business Operation?
While writing this, I received a very interesting question about why GPG needs to be a separate Business Host and not a part of a Business Process. As this can be very important for any cryptography code, I wanted to include my rationale on that topic.
I would like to start with how Business Processes work and why this is a crucial consideration for cryptography code.
Consider this simple Business Process `User.BPL`:
```xml
```
It will generate the `Context` class with one property:
```objectscript
Class User.BPL.Context Extends Ens.BP.Context
{
Property x As %Integer;
}
```
And `State` class with two methods (simplified):
```objectscript
Method S1(process As User.BPL, context As User.BPL.Context)
{
Set context.x=1
Set ..%NextState="S2"
Quit ..ManageState()
}
Method S2(process As User.BPL, context As User.BPL.Context)
{
Set context.x=2
Set ..%NextState="S3"
Quit ..ManageState()
}
```
Since BP is a state machine, it will simply call the first state and then whatever is set in `%NextState`. Each state has information on all possible next states—for example, one next state for a true path and another for a false path in the if block state.
However, the BP engine manages the state between state invocations. In our case, it saves the `User.BPL.Context` object which holds an entire context - property `x`.
But there's no guarantee that after saving the state of a particular BP invocation, the subsequent state for this invocation would be called next immediately.
The BP engine might wait for a reply from BO/BP, work on another invocation, or even work on another process entirely if we're using shared pool workers. Even with a dedicated worker pool, another worker might grab the same process invocation to continue working on it.
This is usually fine since the worker's first action before executing the next state is loading the context from memory—in our example, it's an object of the `User.BPL.Context` class with one integer property `x`, which works.
But in the case of any cryptography library, the context must contain something along the lines of:
```objectscript
/// Private Python object holding GPG module
Property %GPG As %SYS.Python;
```
Which is a runtime Python module object that cannot be persisted. It also likely cannot be pickled or even dilled as we initialize a crypto context to hold a key — the library is rather pointless without it, after all.
So, while theoretically, it could work if the entire cryptography workload (idempotent init – idempotent key load - encryption - signing) is handled within one state, that is a consideration that must always be carefully observed. Especially since, in many cases, it will work in low-load environments (i.e., dev) where there's no queue to speak of, and one BP invocation will likely progress from beginning to end uninterrupted. But when the same code is promoted to a high-load environment with queues and resource contention (i.e., live), the BP engine is likelier to switch between different invocations to speed things up.
That's why I highly recommend extracting your cryptography code into a separate business operation. Since one business operation can handle multiple message types, you can have one business operation that processes PGP signing/encryption/verification requests. Since BOs (and BSes) are not state machines, once you load the library and key(s) in the init code, they will not be unloaded until your BH job expires one way or another.
# Conclusion
GPG Interoperability Adapter for InterSystems IRIS allows you to use GPG easily if you need Encryption/Decryption and Signing/Verification.
# Documentation
- [GnuPG](https://gnupg.org/)
- [Python GnuPG](https://gnupg.readthedocs.io/en/latest/)
- [OpenExchange](https://openexchange.intersystems.com/package/GPG)
- [Repo](https://github.com/intersystems-community/GPG)
Announcement
Anastasia Dyubaylo · Nov 13, 2024
Hi Community,
A huge thank you to everyone who joined our InterSystems Tech Video Challenge! We’re thrilled to have all these interesting videos.
Don’t forget to check out the bonuses for the videos below:
Video
Author(s)
Topic
Article
Application
Video Translation
Shorts
LinkedIn post
Using Character Slice Index in InterSystems IRIS
@Robert.Cemper1003
Genes in DNA Sequences as vector representation using IRIS vector database
@Filip.Kašpar
+
+
+
+
IrisGoogleChat
@Daniel.Aguilar
+
+
+
Mapping a Custom File to SDA
@Andre
+
+
+
+
IRIS External Language Gateway, Java Edition
@Iryna.Mykhailova
+
+
+
+
+
TheraSense
Adarsh Ashok, Ashwin Accapadi, Shantikiran Chanal
EduVerse: Inclusion & Innovation in Education 🌍
@Rolano.Rebelo, Darshan Karkera, Parth Bhanderi, Pavlo Bondarenko
+
+
+
SOUR (Smart Optics for Understanding Reality)
Thang Truong, Caleb Devon, Vivek Keval, Anik Patel
FHIRworks
@Elise.Swinehart
+
+
+
Bonuses are subject to change upon update.
Please claim your bonuses in the comments below! Hi, I would like to claim 3 more bonuses 😄
1. Bonus: Our program used an AI with the InterSystems IRIS vector database, as explained in the PDF on Git Hub or the GitHub project readme file.
3. Bonus: I uploaded the program to the open exchange: https://openexchange.intersystems.com/package/DNA-sequence-Gene-finder
4. Bonus: I have also sent the YouTube short for our project in a second Google form
hi there I wanted to mention I had FHIR in my video :)
I also submitted the short in another form
Hello, Could you please add this bonuses to IrisGoogleChat, please?Topic (Using of IA)Application : https://openexchange.intersystems.com/package/irisGoogleChat
Translation: https://es.community.intersystems.com/post/irisgooglechat-con-ia
Thank you!
Hi Daniel! We've added the bonuses for the topic and app; as for the translation bonus, we expect the translation of the video.
Thank you :) Hi Andre! Bonuses have been added :) Hi Filip! Done :) Thank you!! Hi Anastasia, Thank you I misunderstood it.By the way te bonuses for the application are missing.
Thank you! Added. Thank you, Daniel! Hi Anastasia, thank you and I would like to add 2 more bonuses, please.- I just posted an article
- I tagged the developer community in my linkedin post
Announcement
Vadim Aniskin · May 27, 2024
Hello Community,
We're super excited to invite all our Developer Community members (both InterSystems employees and not) to participate in our next contest!
💡 The 3rd InterSystems Ideas Contest 💡
We're looking for your innovative ideas to enhance InterSystems IRIS and related products and services. We encourage suggestions based on real-life use cases, highlighting the tangible benefits your idea will bring to other users and how it will enhance developers' experiences with InterSystems technology.
📅 Duration: June 10 - July 7, 2024
🏆 Prizes for the best ideas!
🎁 Gifts for everyone: A special gift will be given to each author whose idea is accepted in the contest.
>> VOTE FOR THE BEST IDEAS HERE <<
Accepted ideas should:
be created during the Ideas Contest period by a user registered on the InterSystems Ideas portal (you can log in via InterSystems SSO);
not be part of other already existing ideas - only new ideas are allowed;
not describe the existing functionality of InterSystems IRIS and related Products or Services;
be posted in English;
be written by a person, not generated by AI;
be specific rather than general, with an explanation of how this exact change will benefit users and is linked to a real-life use case;
be accepted as meaningful by InterSystems experts.
All ideas are subject to moderation. We may request to clarify the submitted idea. Ideas that meet the requirements will receive a special "Ideas Contest" status.
Who can participate?
We invite EVERYONE to join our new Ideas Contest. Both InterSystems employees and non-employees are welcome to participate and submit their ideas.
Prizes
1. Participation gift - authors of all accepted ideas will get:
🎁 Branded T-shirt with InterSystems logo (unisex)
2. Expert award - the 3 best ideas will be selected by InterSystems experts. Winners will get:
🥇 1st place - JBL Tour Pro wireless Noise Cancelling earbuds
🥈 2nd place - Patagonia Unisex Nano Puff® Vest
🥉 3rd place - LEGO Vespa 125 / Corvette / NASA Mars Rover Perseverance / Kawasaki Ninja H2R Motorcycle
3. Community Award - an idea with the most votes will get:
🎁 LEGO Vespa 125 / Corvette / NASA Mars Rover Perseverance / Kawasaki Ninja H2R Motorcycle
Note: InterSystems employees can only get the participation prize. Expert and Community awards can only be won by non-InterSystems members of the Community.
Contest period
⚠️ Idea Submission: June 10 - 30
✅ Voting for ideas: July 1 - 7
🎉 Winners announcement: July 8
We encourage you to share your ideas on the Ideas portal during this period. Registered members can participate by voting and providing comments on published ideas.
Note: only votes from active Community users who have made at least one post on the Developer Community are counted for the Community Award.
--
Post your idea(s) on the InterSystems Ideas portal, and stay tuned for your idea's status updates:
>> VOTE FOR THE BEST IDEAS HERE <<
Good luck! 🍀
Note: All prizes are subject to availability and shipping options. Some items may not be available for international shipping to specific countries, in this case, an equivalent alternative will be provided. We will let you know if a prize is not available and offer a possible replacement. Prizes cannot be delivered to residents of Crimea, Russia, Belarus, Iran, North Korea, Syria, or other US-embargoed countries. Hi developers!
The 3rd InterSystems Ideas Contest has started today!
Submit your ideas and receive a guaranteed gift or prize for the best idea!
Good luck in the Contest! Hi Community!
The Ideas Contest continues. Post your ideas to participate! During first 3 days of the Contest, 7 bright ideas were accepted to the event. Vote for the ideas participating in the Ideas Contest!
We thank all Community members who posted their ideas for the Contest. Special thanks to the @Victoria.Castillo2990 for posting 3 brilliant ideas! 👏
Showcase your ideas and have them heard! Hi everybody!👋
Look at brilliant ideas participating in the Ideas Contest, vote for the ideas you like!💡 or submit your own idea here and get a guaranteed gift🎁
If you are new to the Ideas Portal, you can read an article dedicated to the creation of new ideas and "Ideas promotion rules" section on the Portal Guide page.Good luck! Hi Community Members!
The last week of submitting ideas for the Ideas Contest has begun.
Currently 23 ideas are participating in the competition.🏆
Thanks to all the authors who have already submitted ideas, especially @Veerarajan.Karunanithi9493 , who submitted as many as 7 ideas for the contest. 👏
Join the 3rd InterSystems Ideas Contest by posting your idea, comment on ideas already submitted and vote for your favorite ideas!🥇 Hi Developers!
The time for submitting ideas for the 3rd InterSystems Ideas Contest has ended.
30 outstanding ideas take part in the competition.
The week of voting for the best ideas has begun.
>>VOTE FOR THE BEST IDEAS HERE<<
Article
sween · Jul 23, 2024
A Quick Start to InterSystems Cloud SQL Data in Databricks
Up and Running in Databricks against an InterSystmes Cloud SQL consists of four parts.
Obtaining Certificate and JDBC Driver for InterSystems IRIS
Adding an init script and external library to your Databricks Compute Cluster
Getting Data
Putting Data
Download X.509 Certificate/JDBC Driver from Cloud SQL
Navigate to the overview page of your deployment, if you do not have external connections enabled, do so and download your certificate and the jdbc driver from the overview page.
I have used intersystems-jdbc-3.8.4.jar and intersystems-jdbc-3.7.1.jar with success in Databricks from Driver Distribution.
Init Script for your Databricks Cluster
Easiest way to import one or more custom CA certificates to your Databricks Cluster, you can create an init script that adds the entire CA certificate chain to both the Linux SSL and Java default cert stores, and sets the REQUESTS_CA_BUNDLE property. Paste the contents of your downloaded X.509 certificate in the top block of the following script:
import_cloudsql_certficiate.sh
#!/bin/bash
cat << 'EOF' > /usr/local/share/ca-certificates/cloudsql.crt
-----BEGIN CERTIFICATE-----
<PASTE>
-----END CERTIFICATE-----
EOF
update-ca-certificates
PEM_FILE="/etc/ssl/certs/cloudsql.pem"
PASSWORD="changeit"
JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
KEYSTORE="$JAVA_HOME/lib/security/cacerts"
CERTS=$(grep 'END CERTIFICATE' $PEM_FILE| wc -l)
# To process multiple certs with keytool, you need to extract
# each one from the PEM file and import it into the Java KeyStore.
for N in $(seq 0 $(($CERTS - 1))); do
ALIAS="$(basename $PEM_FILE)-$N"
echo "Adding to keystore with alias:$ALIAS"
cat $PEM_FILE |
awk "n==$N { print }; /END CERTIFICATE/ { n++ }" |
keytool -noprompt -import -trustcacerts \
-alias $ALIAS -keystore $KEYSTORE -storepass $PASSWORD
done
echo "export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt" >> /databricks/spark/conf/spark-env.sh
echo "export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt" >> /databricks/spark/conf/spark-env.sh
Now that you have the init script, upload the script to Unity Catalog to a Volume.
Once the script is on a volume, you can add the init script to the cluster from the volume in the Advanced Properties of your cluster.
Secondly, add the intersystems jdbc driver/library to the cluster...
...and either start or restart your compute.
Databricks Station - Inbound InterSystems IRIS Cloud SQL
Create a Python Notebook in your workspace, attach it to your cluster and test dragging data inbound to Databricks. Under the hood, Databricks is going to be using pySpark, if that is not immediately obvious.
The following spark dataframe construction is all you should need, you can grab your connection info from the overview page as before.
df = (spark.read
.format("jdbc")
.option("url", "jdbc:IRIS://k8s-05868f04-a4909631-ac5e3e28ef-6d9f5cd5b3f7f100.elb.us-east-1.amazonaws.com:443/USER")
.option("driver", "com.intersystems.jdbc.IRISDriver")
.option("dbtable", "(SELECT name,category,review_point FROM SQLUser.scotch_reviews) AS temp_table;")
.option("user", "SQLAdmin")
.option("password", "REDACTED")
.option("driver", "com.intersystems.jdbc.IRISDriver")\
.option("connection security level","10")\
.option("sslConnection","true")\
.load())
df.show()
Illustrating the dataframe output from data in Cloud SQL... boom!
Databricks Station - Outbound InterSystems IRIS Cloud SQL
Lets now take what we read from IRIS and write it write back with Databricks. If you recall we read only 3 fields into our dataframe, so lets write that back immediately and specify an "overwrite" mode.
df = (spark.read
.format("jdbc")
.option("url", "jdbc:IRIS://k8s-05868f04-a4909631-ac5e3e28ef-6d9f5cd5b3f7f100.elb.us-east-1.amazonaws.com:443/USER")
.option("driver", "com.intersystems.jdbc.IRISDriver")
.option("dbtable", "(SELECT TOP 3 name,category,review_point FROM SQLUser.scotch_reviews) AS temp_table;")
.option("user", "SQLAdmin")
.option("password", "REDACTED")
.option("driver", "com.intersystems.jdbc.IRISDriver")\
.option("connection security level","10")\
.option("sslConnection","true")\
.load())
df.show()
mode = "overwrite"
properties = {
"user": "SQLAdmin",
"password": "REDACTED",
"driver": "com.intersystems.jdbc.IRISDriver",
"sslConnection": "true",
"connection security level": "10",
}
df.write.jdbc(url="jdbc:IRIS://k8s-05868f04-a4909631-ac5e3e28ef-6d9f5cd5b3f7f100.elb.us-east-1.amazonaws.com:443/USER", table="databricks_scotch_reviews", mode=mode, properties=properties)
Executing the Notebook
Illustrating the data in InterSystems Cloud SQL!
Things to Consider
By default, PySpark writes data using multiple concurrent tasks, which can result in partial writes if one of the tasks fails.
To ensure that the write operation is atomic and consistent, you can configure PySpark to write data using a single task (i.e., set the number of partitions to 1) or use a iris-specific feature like transactions.
Additionally, you can use PySpark’s DataFrame API to perform filtering and aggregation operations before reading the data from the database, which can reduce the amount of data that needs to be transferred over the network.
Hello,
I have 2 questions if you could help
1 ) Do we need ";" in the end or it is not required
.option("dbtable", "(SELECT TOP 3 name,category,review_point FROM SQLUser.scotch_reviews) AS temp_table;")
2) This JDBC works fine until I add one specific column in my query, when I add that column I get following error
[%msg: < Input (;) encountered after end of query
Kindly help. No, I would leave out the semicolon at the end of that query. It's typically used as a statement separator, but not really part of query syntax itself. IRIS (as of 2023.2) will tolerate it at the end of a statement, but it doesn't seem that Spark really does anything with it as it wraps what you sent to dbtable with further queries, causing the error you saw.
You may also want to apply
.option(“pushDownLimit”, false)
Article
Kristina Lauer · Jul 29, 2024
Updated 2/27/25
Hi Community,
You can unlock the full potential of InterSystems IRIS—and help your team onboard—with the full range of InterSystems learning resources offered online and in person, for every role in your organization. Developers, system administrators, data analysts, and integrators can quickly get up to speed.
Onboarding Resources for Every Role
Developers
Online Learning Program: Getting Started with InterSystems IRIS for Coders (21h)
Classroom Training: Developing with InterSystems Objects and SQL (5 days)
System Administrators
Learning Path: InterSystems IRIS Management Basics (10h)
Classroom Training: Managing InterSystems Servers (5 days)
Data Analysts
Video: Introduction to Analytics with InterSystems (6m)
Learning Paths for every tool:
Analyzing Data with InterSystems IRIS BI
Delivering Data Visually with InterSystems Reports (1h 15m)
Build Data Models Using Adaptive Analytics (2h 15m)
Classroom Training: Using InterSystems Embedded Analytics (5 days)
Integrators
Learning Program: Getting Started with InterSystems IRIS for Health for Integrators (14h)
Classroom Training: Developing System Integrations and Building and Managing HL7 Integrations (5 days each)
Implementers
Learning Path: Deploying InterSystems IRIS in Containers and the Cloud (3h)
Learning Program: Getting Started with InterSystems IRIS for Implementers (26h)
Project managers
Watch product overview videos.
Read success stories to get inspired—see how others are using InterSystems products!
Other Resources from Learning Services
💻 Online Learning: Register for free at learning.intersystems.com to access self-paced courses, videos, and exercises. You can also complete task-based learning paths or role-based programs to advance your career.
👩🏫 Classroom Training: Check the schedule of live, in-person or virtual classroom training, or request a private course for your team. Find details at classroom.intersystems.com.
📘 InterSystems IRIS documentation: Comprehensive reference materials, guides, and how-to articles. Explore the documentation.
📧 Support: For technical support, email support@intersystems.com.
Certification Opportunities
Once you and your team members have gained enough training and experience, get certified according to your role!
Learn from the Community
💬Engage in learning on the Developer Community: Chat with other developers, post questions, read articles, and stay updated with the latest announcements. See this post for tips on how to learn on the Developer Community.
With these learning resources, your team will be well equipped to maximize the capabilities of InterSystems IRIS, driving your organization’s growth and success. For additional assistance, post questions here or ask your dedicated Sales Engineer. New certification opportunity added to the list: InterSystems IRIS SQL Specialist! Resources for implementers added!
Announcement
Anastasia Dyubaylo · Nov 22, 2024
Hi Developers,
🎄 Christmas cheer is in the air, and we decided to try something new for the last programming contest of the year. Welcome the
🏆 Bringing Ideas to Reality Contest 🏆
Submit an application that implements an idea from the InterSystems Ideas Portal that has statuses Community Opportunity or Future Consideration and requires doing the actual programming 😉
Duration: December 2 - 22, 2024
Prize pool: $14,000
The topic
💡 Bringing Ideas to Reality 💡
In this contest, we expect applications that implement any idea you like from the InterSystems Ideas Portal that has statuses Community Opportunity or Future Consideration.
General Requirements:
An application or library must be fully functional. It should not be an import or a direct interface for an already existing library in another language (except for C++, where you really need to do a lot of work to create an interface for IRIS). It should not be a copy-paste of an existing application or library.
Accepted applications: new to Open Exchange apps. Our team will review all applications before approving them for the contest.
The application should work either on IRIS, IRIS for Health or IRIS Cloud SQL. The first two could be downloaded as host (Mac, Windows) versions from Evaluation site, or can be used in the form of containers pulled from InterSystems Container Registry or Community Containers: intersystemsdc/iris-community:latest or intersystemsdc/irishealth-community:latest .
The application should be Open Source and published on GitHub or GitLab.
The README file to the application should be in English, have a link to the implemented idea, contain the installation steps, and either the video demo or/and a description of how the application works.
No more than 3 submissions from one developer are allowed.
NB. Our experts will have the final say in whether the application is approved for the contest based on the criteria of complexity and usefulness. Their decision is final and not subject to appeal.
Prizes
1. Experts Nomination - a specially selected jury will determine the winners:
🥇 1st place - $5,000
🥈 2nd place - $3,000
🥉 3rd place - $1,500
🏅 4th place - $750
🏅 5th place - $500
🌟 6-10th places - $100
2. Community winners - an application that will receive the most votes in total:
🥇 1st place - $1000
🥈 2nd place - $750
🥉 3rd place - $500
🏅 4th place - $300
🏅 5th place - $200
If several participants score the same number of votes, they are all considered winners, and the prize money is shared among the winners.
Who can participate?
Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account!
Developers can team up to create a collaborative application. 2 to 5 developers are allowed in one team.
Do not forget to highlight your team members in the README of your application – DC user profiles.
Important Deadlines:
🛠 Application development and registration phase:
December 2, 2024 (00:00 EST): Contest begins.
December 15, 2024 (23:59 EST): Deadline for submissions.
✅ Voting period:
December 16, 2024 (00:00 EST): Voting begins.
December 22, 2024 (23:59 EST): Voting ends.
Note: Developers can improve their apps throughout the entire registration and voting period.
Helpful resources
✓ Example applications:
iris-fhir-lab - Web Interface to convert HL7 V2 to FHIR
Google IRIS login - google oauth authorization to login to the management portal
superset-iris - IRIS as a supported database for Apache Superset
interoperability-embedded-python - basic template to create interoperability adapters using Embedded Python
iris-tripleslash - generate unittests for an ObjectScript class
googlesheets-adapter - interoperability adapters to import/export data from Google Docs and Google Sheets
IPM in VS Code - IPM (ZPM) extension for VS Code
and others
✓ Templates we suggest to start from:
iris-dev-template
Interoperability-python
rest-api-contest-template
native-api-contest-template
iris-fhir-template
iris-fullstack-template
iris-interoperability-template
iris-analytics-template
✓ For beginners with IRIS and Python:
InterSystems Embedded Python in glance
InterSystems IRIS Interoperability with Embedded Python
Feedback : Using embedded python daily for more than 2 years
Embedded Python Template
✓ For beginners with IRIS and ObjectScript:
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ For beginners with ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
✓ How to submit your app to the contest:
How to submit an application on Open Exchange
How to apply for the contest
Need Help?
Join the contest channel on InterSystems' Discord server or talk with us in the comments section of this post.
We can't wait to see your projects! Good luck 👍
By participating in this contest, you agree to the competition terms laid out here. Please read them carefully before proceeding.
Does the idea have to be a 'community opportunity' idea?I wasn't aware of this limitation so I've already completed these:https://ideas.intersystems.com/ideas/DPI-I-628https://ideas.intersystems.com/ideas/DPI-I-566I've got a couple more ideas that I want to implement that also aren't community opportunity ideas and are also set to future consideration:https://ideas.intersystems.com/ideas/DPI-I-625https://ideas.intersystems.com/ideas/DPI-I-487 @Rob.Ellis7733, thank you for your comment and for implementing ideas! Welcome to the Hall of Fame page of the Ideas Portal! 🎉
@Stefan.Wittmann, Rob Ellis is interested in implementing the following ideas:
Category dropdown to appear in alphabetical order (ignoring case)production config page
Refresh Button on the small messge browse in the Production panel
Could you please share your thoughts on whether these ideas can be implemented by Developer Community members? Hi Developers!
The "Kick-off Webinar for InterSystems "Bringing Ideas to Reality" Contest" recording is on the InterSystems Developers YouTube channel! 🔥Enjoy!
⏯️Kick off Webinar for InterSystems "Bringing Ideas to Reality" Contest I did them anyway and submitted my app. If it's not eligible then no worries! I enjoyed adding the suggestions and I'm already using them Hi @Rob.Ellis7733, thanks for your active participation! Could you please reapply for the contest with your application? It didn't go through at this time. Thanks for your contributions, Rob :)
Please apply your app to the contest! Hey Devs!
One app has been added to the contest, check it out!
IRIS WHIZ - HL7v2 Browser Extension by @Rob.Ellis7733
Upload your applications and join the contest! Hey Devs!
The Technology Bonuses for this contest have been announced!
These bonuses can help you earn extra points during the voting phase, so don’t miss out!
With just three days left for registration, now’s the time to upload your apps and join the contest.
Let’s see what you’ve got - good luck! Developers!
Today is the last day to join the contest!
Nine more applications have been added, check them out:
ServiceInspection by @Wolis.Oliavrvault-link by @Henrique SharePoint Online SPO REST API by @Mark.OReilly tz - ObjectScript Time Zone Conversion Library by @Eric.Fortenberryiris-http-calls by @Oliver.Wilms ks-fhir-gen by @Robert.Barbiaux Database-Size-Monitoring by @sara.apliniris-unit-test-dashboard by @Chi.Nguyen-RettigIRIS Global VSCode Editor by @Yuri.Gomes I'm trying to enter, but it's been more than 3 hours since I submitted my app for approval on OEx and there's been no response, so I'm in limbo. I don't really want to have to stay up all night in the hope it'll get approved in time for me to enter it into the contest before the deadline, which is at 5am in my timezone. I also submitted my app for approval on OEx, but it's been several hours with no response. Is voting not available? I saw the links active on the contest page yesterday, but now they're not showing. Hi! Fixed. Thank you for feedback! Great contest, and so many ideas now live!👍🏻
Announcement
Anastasia Dyubaylo · Nov 19, 2024
Hi Community!
We are pleased to invite all our clients, partners and members of the community to take part in the first InterSystems event dedicated to digital health professionals in Italy - InterSystems Italian Healthcare Conference 2024. The registration is already open!
➡️ InterSystems Italian Healthcare Conference 2024
🗓 December 5, 2024
⌚ 9:30 - 18:00
📍 Excelsior Hotel Gallia, Milan
During the panel discussions with our clients, executives and analysts, we will discuss technological innovation and best practices to improve the efficiency and quality of healthcare services. We will address topics such as the value of data, interoperability between systems and artificial intelligence to optimize processes and ensure more effective and personalized care.
During the event you will have the opportunity to:
Draw inspiration from our clients' projects around the world
Learn about the latest news and roadmap for InterSystems healthcare solutions
Meet and discuss with other digital health professionals
Explore InterSystems' initiatives for the more technical and learn about our training programs through dedicated exhibit spaces
Starting at 17.00, the first Italian Developer Community Meetup will also be held during the conference. The event is a developer opportunity to share experiences, discover tools, resources, and talk to InterSystems experts and product representatives.
To participate, you must register by filling out the form. Places are limited.
Check out the full agenda of the event here.
We look forward to seeing you at InterSystems Italian Healthcare Conference 2024!
Announcement
Anastasia Dyubaylo · Nov 18, 2024
Hi Community,
We'd like to thank the participants of our first InterSystems Tech Video Challenge, who created nine interesting videos, wrote five articles, and uploaded two applications. And now it's time to announce the winners!
Let's meet the winners and look at their videos:
⭐️ Expert Awards – winners selected by InterSystems experts:
🥇 1st place: Genes in DNA Sequences as vector representation using IRIS vector database by @Filip.Kašpar
🥈 2nd place: FHIRworks by @Elise.Swinehart
🥉 3rd place: Mapping a Custom File to SDA by @Andre
⭐️ Community Award – winner with the video that has the most likes:
🏆 TheraSense by Adarsh Ashok, Ashwin Accapadi, Shantikiran Chanal
Thank you all! You have made an incredible contribution to our Dev Community.
The prizes are in production now. We will contact all the participants when they are ready to ship.
Announcement
Vadim Aniskin · Jan 23
Hi Community!
It's time to share the Ideas Portal 2024 annual stats and the Top InterSystems Ideas Contributors of 2024 🌟
General Stats:
✓ 135 new ideas posted in 2024✓ 47 implemented ideas: ✓ 24 ideas implemented by Community members ✓ 23 ideas implemented by InterSystems✓ 289 new comments posted✓ 274 new users registered
Implementer of Ideas:
Nomination: Implementer of ideas
Given to developers who implemented the most ideas from the InterSystems Ideas portal.
Developer
Number of implemented ideas
@Yuri.Gomes
3
@Rob.Ellis7733
4
Badge's name
Badge's logo
Winners
Implementer of Ideas
@Yuri.Gomes
@Rob.Ellis7733
Congratulations to the developers who earned this badge in 2024 👏🏅
Most Voted Ideas:
Idea
Author
Votes
Command detector through voice or keywords
@Andre.LarsenBarbosa
24
Improve selectivity of Articles and Questions in DC
@Robert.Cemper1003
19
Add a debugger for Embedded Python in Visual Studio Code
@Pietro.DiLeo
19
Most Commented Ideas:
Idea
Author
Comments
Command detector through voice or keywords
@Alexey.Maslov
9
Expand Vector Arithmetics
@Robert.Cemper1003
8
Option when purging messages also include child objects
@Lewis.Houlden
7
Idea Leaders:
Developer
Number of posted ideas
@Scott.Roth
11
@Veerarajan.Karunanithi9493
7
@LuisAngel.PérezRamos
6
Idea Commenters:
Developer
Number of comments
@Benjamin.DeBoe
20
@Robert.Cemper1003
7
@Raj.Singh5479
6
@Dmitry.Maslennikov
6
Congratulations! Thank you all for your contributions to the InterSystems Ideas Portal in 2024!
We look forward to seeing more of your inspiring ideas in 2025! 💡✨
Thanks, DC Ideas staff, I love implement these ideas @Yuri.Gomes, thank you for implementing ideas and congratulations on your "Implementer of ideas" achievement. 👏🎉🌟 Thank you, @Vadim.Aniskin . Thanks community. It's a honor! @Andre.LarsenBarbosa thank you for your brilliant ideas!🏆🎉👏 Congratulations all!! Thanks to all who share ideas and knowledge with the community Thanks to all and Congratulations all !!
Announcement
vignesh A A · Mar 4, 2024
Hi Everyone,
My name is Vignesh and I'm from Virtusa HR Team, we are hiring for a InterSystems Developer in US (Remote), If anyone is interested You can share your resumes avignesh@virtusa.com, also refer your friends.
Responsibilities:
-Building new and debugging and fixing existing HL7, CCD and custom data interfaces (JSON and XML) to internal and external destinations. This includes but not limited to editing and creating new data schemas, DTLs, XSLT transforms, custom tables, custom SDA fields
-Creation of tasks to automate various activities like quarterly loading of ICD10 files, update consent rules, fix clinical data, reporting, updating custom tables and many others
-Modifying existing and building new clinical subscriptions to update to downstream systems
-Modifying queries in the Query Definition Registry to support analytics filters
-Provide technical assistance and guidance to business analysts to help with analysis and story formulation
-Building web services (SOAP and REST) and clients
-Participating and providing input for technical solution brainstorming sessions to tackle some of the problems being faced by the team
-Adhering to the version control principles and practices using Git
-Providing technical support to QA to assist with testing and suggesting free courses they can take to enhance their understanding of InterSystems and creating videos to help with testing
-Other and special projects as assigned.
Skills
-Good hands-on experience with Cache/Ensemble/HealthShare Tech stack and other InterSystems products - HSPI, HealthInsight
-Knowledge in designing, developing of variety software applications using InterSystems Cache, Mumps and Ensemble.
-Experience working as InterSystems Caché Object Script Developer.
-Programming using Cache Object Script, knowledge of cache global and routine, strong Knowledge of MUMPS,
-Expert in OOPS programming, Experience in building Web services and consuming web services in cache.
-Intersystems Ensemble development experience working with Transaction Processing, with SQL and NoSQL databases
-Good experience and knowledge of SOAP, SSL certificates, Java key stores and encryption
-Good experience and knowledge of message/file transfer protocols: TCP/IP, FTP, SFTP, PGP (Public key/Private key)
-Experience in Unix commands and Shell scripting
-Can-do attitude to tackle projects and stories beyond my comfort zone
Article
Vadim Aniskin · Apr 24, 2024
Hi Community!
We know how frustrating it can be to receive a lot of emails (and we definitely don't want to add to your load), so here is how you can set up email notifications for the InterSystems Ideas portal.
By default, all registered users are subscribed to all categories of ideas. To change this, just enter your Ideas Portal profile, select "Edit Profile," then click inside the item "Weekly summary email," click on "Categories to highlight" and choose what you're interested in.
There are also a couple of things you need to know.
1. When you create an idea or vote for an existing idea, you automatically subscribe to status changes and comments related to that idea.
2. You can subscribe/unsubscribe from notifications related to the specific idea using the button "Subscribed" in the top right corner.
If you support an idea but don't want to get notifications about it, please don't cancel your vote to unsubscribe, use instead "Subscribed" button.
3. To see ideas you've subscribed to use "My subscriptions" filter on the Ideas Portal main menu. This filter is available after you log in to the portal.
There, you can manage your subscriptions to each idea.
4. If you don't want to get notifications from the Ideas Portal at all, please send a private message to @Vadim.Aniskin .
Looking forward to your new ideas, comments, and votes on the InterSystems Ideas!
Announcement
Olga Zavrazhnova · Apr 8, 2024
InterSystems' team is heading to the MIT Hacking Medicine GrandHack 2024, taking place from April 19-21 2024!
MIT GrandHack is a premier event that brings together innovators, entrepreneurs, and healthcare professionals from around the world to collaborate on solving some of the most pressing challenges in healthcare through technology and innovation.
InterSystems is pleased to sponsor and support this event, offering our technology to hackers and presenting the "The GenAI in Healthcare" challenge.
We're excited to see the innovative projects that will arise from this event!
Question
Vinicius Viana · May 28, 2024
Hi everybody,
I need to connect a Caché database to Metabase, but Metabase does not support this database.Metabase only supports these databases:
- Amazon Athena- BigQuery (Google Cloud Platform)- Druid- MongoDB (recommend version 4.2 or higher)- MySQL (recommend version 8.0.33 or higher, as well as MariaDB version 10.4 or higher)- Oracle- PostgreSQL- Presto- Redshift (Amazon Web Services)- Snowflake- SparkSQL- SQL Server- SQLite- Vertica
And a few others made by the community. (It is possible to create a driver so that Caché is supported, but I have no experience with that.)I would like to know if it is possible to somehow connect Caché to any of these databases already included in Metabase? Metabase offers a way to write your own driver to any database, that supports jdbc
So, with some knowledge in Clojure, it's possible to connect it directly to Caché or IRIS
You can do it by yourself, or I can do it for you. I have never used Clojure, so if you did this for me I would be eternally grateful. Hello Dmitry and Vinicius, did the Metabase driver for Cache ever get written? I am interested in writing a Metabase driver for IRIS.
Announcement
Vadim Aniskin · Sep 4, 2024
Hey Community,
We’re pleased to announce that the InterSystems Ideas Portal now features 400 diverse and innovative ideas 🙌🙌🙌
This milestone highlights the active participation and creativity of our Community. We appreciate all the contributions and support that drive the ongoing success of this portal!
Since the launch of the Ideas Portal, our Community members have posted 400+ ideas.
A special thank you to @Mark.OReilly for submitting the 400th idea: "Category dropdown to appear in alphabetical order (ignoring case) production config page. Yay!
Let's take a look at the idea leaders and the number of ideas they have submitted:
Author
Number of ideas
@Evgeny.Shvarov
53
@Yuri.Gomes
30
@Scott.Roth
23
@LuisAngel.PérezRamos
18
@Dmitry.Maslennikov
15
@Stefan.Cronje1399
14
More than 15% of ideas (63 ideas) have been implemented by InterSystems or done by Community members.
Take a look at the "Ideas Portal Hall of Fame" page, which highlights all the implemented ideas and the developers who bring them to life.
Let’s review the leading contributors to idea implementation and the number of ideas they’ve brought to life:
Implementor of ideas
Number of implemented ideas
@Dmitry.Maslennikov
5
@Yuri.Gomes
5
@Robert.Cemper1003
3
@Guillaume.Rongier7183
3
@Lorenzo.Scalese
3
For inspiration, we encourage you to explore the "Community Opportunity" ideas and take the next step to join our "Hall of Fame."
31 ideas are planned or in progress, including those that received the most votes from our community.
Let's see the most voted ideas planned or in progress of implementation.
Idea
Author of idea
Number of votes
Publish the InterSystems IRIS Native SDK for Node.js on npm
@John.Murray
69
Light version InterSystems IRIS
@Andre.LarsenBarbosa
62
Thank you for posting your ideas, commenting on existing ideas, and voting for ideas you like. Special thanks to the community members who implemented the ideas. Keep them coming!
🤗 Thank you to everyone who has contributed ideas, voted, and supported the innovation process.
Stay tuned for more updates as we move forward with implementing your great ideas!
Stay tuned for more updates as we move forward with implementing your great ideas!