Clear filter
Announcement
Anastasia Dyubaylo · Dec 25, 2020
Hey Developers,
See how to use the DTL Generator in InterSystems IRIS to create a data transformation:
⏯ Using the DTL Generator in InterSystems IRIS
👉🏼 Subscribe to InterSystems Developers YouTube.
Enjoy and stay tuned! Hi all,
I was wondering in which version I can find the DTL Generator, or is it still in development?
In version ' IRIS for Windows (x86-64) 2020.1.1 (Build 408U) Sun Mar 21 2021 22:04:53 EDT' I cannot find it. @Stefan.Wittmann maybe you can help answer this question? Hi @Menno.Voerman the DTL Generator is still in development and was presented at the last Virtual Summit to gather some feedback, which we are still incorporating and fine-tuning with some partners. Are you interested in the DTL generator for migrating interfaces to InterSystems IRIS or for other reasons? Hi @Stefan.Wittmann,
I was just curious about this functionality. For a project I need to convert ORU~R01 to MDM~T02 messages.
For now it's fine to write the DTL by myself (small messages). I would be happy to see this functionality in a further release. It can indeed be very useful with migration projects.
Article
Eduard Lebedyuk · Jan 12, 2021
DataGrip is a multi-engine database environment targeting the specific needs of professional SQL developers, DataGrip makes working with databases an enjoyable and productive experience.
To work with InterSystems IRIS from DataGrip you'll need to add InterSystems JDBC driver first (once per DataGrip) and after that add all your InterSystems IRIS connections.
Part 1: Add InterSystems IRIS JDBC Driver
1. Go To File → DataSources
2. Go to + → Driver
3. Set Driver properties:
Name: InterSystems IRIS
Class: com.intersystems.jdbc.IRISDriver
Add JDBC Driver file: path to /<IRIS>/dev/java/lib/JDK18/intersystems-jdbc-3.2.0.jar (version can change, also if you don't have InterSystems IRIS installed, you can download the drivers here)
Add URL Template: Basic jdbc:IRIS://{host}[:{port}]/{database} (you can add additional parameters as described here)
4. Click OK to save the driver definition.
Part 2: Add InterSystems IRIS Instance
1. In the same DataSources window go to +→InterSystems IRIS
2. Specify connection settings depending on your instance and click Test Connection. You'll see an error or connection successful.
It it's a new local installation the defaults likely are:
Host: localhost
Port: 1972
User: _SYSTEM
Password: SYS
Database: USER
3. Click OK to save.
That's it! Now you can query and explore InterSystems IRIS through Datagrip.
Announcement
Evgeny Shvarov · Jan 11, 2021
Hi Developers!
Here're the technology bonuses for the InterSystems Multi-Model Contest that will give you extra points in the voting:
InterSystems Globals (key-value)
InterSystems SQL
InterSystems Objects
Your data model
ZPM Package deployment
Docker container usage
See the details below.
InterSystems Globals (key-value) - 2 points
InterSystems Globals are multidimensional sparse arrays that are being used to store any data in InterSystems IRIS. Each Globals node could be considered a key, which you can set a value for. InterSystems IRIS provides a set of APIs, including ObjectScript commands and Native API to manage Globals.
Tools:
Managing globals in the management portal
Documentation:
Using Multidimensional Storage (Globals)
Using Globals
Articles:
Globals are Magic Swords for managing data
The art of mapping Globals to Classes
Videos:
Globals QuickStart
You can collect 2 points for using Globals via ObjectScript or Native API in your
InterSystems SQL - 2 points
InterSystems IRIS provides SQL access to data via ObjectScript, REST API, JDBC.
Tools:
VSCode SQL Tools
DBeaver
SQL in Management Portal
Other SQL tools
Documentation:
SQL Access
InterSystems SQL Reference
Articles:
Class Queries in ObjectScript
Videos:
SQL Things you should know
Collect 2 bonus points by using InterSystems SQL in your application.
InterSystems Objects - 2 points
InterSystems IRIS provides the way to store and change instances of objects in globals via ObjectScript/REST API, Native API for Java/.NET/Node.js/Python, and XEP for Java/.NET.
Documentation:
Object Access
Get 2 bonus points for the usage of Object Access in your application.
Your data model - 2 points
InterSystems IRIS can be used as a data platform that exposes your own data model API. You are able to use ObjectScript, REST API or Native API to expose your own API which provides any special data model, like Time-Series, Spatial, Graph, RDF/Triple, Column store, Document store.
Introduce any of the new data-model API and collect 2 bonus points.
ZPM Package deployment - 2 points
You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with:
zpm "install your-multi-model-solution"
command on IRIS with ZPM client installed.
ZPM client. Documentation.
Docker container usage - 2 points
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container.
You can collect the bonus if you use any of the following docker templates:
IRIS Interoperability Template
Feel free to ask any questions about using the listed technologies.
Good luck in the competition!
P.S. The current tech. bonus list is subject to change before the contest starts - stay tuned with the updates. Hi participants!
In order to simplify the assessment for bonuses could you please include in the readme the links where your app uses a certain model type?
E.g.:
Object: https://github.com/intersystems-community/iris-multi-model-api-template/blob/8b3247f9dcd1e6e70274fde6bfdbe3f54ca0b95d/src/dc/Sample/MultiModelREST.cls#L85
SQL: https://github.com/intersystems-community/iris-multi-model-api-template/blob/8b3247f9dcd1e6e70274fde6bfdbe3f54ca0b95d/src/dc/Sample/MultiModelREST.cls#L95
Key-value: https://github.com/intersystems-community/iris-multi-model-api-template/blob/8b3247f9dcd1e6e70274fde6bfdbe3f54ca0b95d/src/dc/Sample/MultiModelREST.cls#L104 Hi Manager!
According to your request, I added the model corresponding link in the readme file!Hope to get technical score in the competition。
Application name:HealthInfoQueryLayer
readme file:https://github.com/ZBT-95/-IRIS-/blob/main/README.md
Thanks, Botai Zhang!
Article
Mihoko Iijima · Mar 5, 2021
**This article is a continuation of this post.**
In the previous article, how the Interoperability menu works for system integration was explained.
In this article, I would like to explain how to develop a system integration using the Interoperability menu.
To begin with, what kind of process do you want to create? While thinking about this, make the following content.
* Production
* Message
* Components
* Business Services
* Business Processes
* Business Operations
Production is a definition used to specify the components required for system integration and to store the component settings, which are configured using the Management Portal (internally stored as a class definition for Production).
For example, suppose you are creating a business service that processes files placed in a specified directory at regular intervals. In that case, it is necessary to set up exactly which directories to monitor and which files to process. A Production is prepared to store these settings.
The settings depend on the **adapter** used by the component that sends and receives data.
Adapters are classes to simplify the connection to external systems, some are protocol-specific such as Mail/File/SOAP/FTP/HTTP/SQL/TCP, and some are standards specific HL7.
Please refer to the documentation (protocol-specific adapters and adapters related to EDI documentation for more information on adapters.
Since we will define the necessary components for the **Production**, "Start Production" will start the system integration, and "Stop Production" will stop the system integration.
The development required to complete the Production is the creation of the components necessary for system integration, specifically the following contents:
* Message
* Components (Business Services, Business Processes, Business Operations)
* Data conversion, etc.
The content above will be explained slowly in the articles coming after this one.
First of all, let's start **Production** using the sample **Production** and check the message process by processing data while checking the settings.
Sample can be downloaded from https://github.com/Intersystems-jp/selflearning-interoperability.
To use a Container, download the sample code using the git clone, navigate the clone's directory, and run docker-compose up -d It's that easy!
See here for the procedure (it will take some time to create a container).
If you do not use containers, create a new namespace after downloading the sample, and import all class definition files (extension .cls) under the src folder into the created namespace.
For more information on the process of creating a namespace, please refer to the video after 07:03 of this article.
Please refer to the README for more details on the sample code.
When you are ready, access the management portal (change the web server's port number to match your environment).
****
Go to the **Management Portal > Interoperability > Configuration > Production**.
If you are using a method other than containers, connect to the namespace where you imported the source code, access [Configuration] > [Production], click the [Open] button, select [Start] > [Production], and then click the [Start] button.
※ If you are using something other than a container, you will need to make some initial settings. Please set up the contents described below before trying the following contents.

The production page will be displayed as **[**● **Component Name]** for each of the "Service", "Process", and "Operation" components.
Click on the component name to change the contents of the "Settings" tab on the right side of the screen.
For example, when you click on **Start.GetKionOperation** (single click), the display is as follows.

This component has the [HTTP Server] and [URL] settings for connecting to the Web API.
There is a [appid] field at the bottom of the settings where you can enter the API key that you get it.
There is a [lang] field near [appid] and is set "ja" ("ja" = Japanese). [lang] set language of response from OpenWeather. For English, set "en".
When you finish to set these settings , click the "Apply" button.

If you are using a container, the setup is complete. For more information, please click [here](#datasend).
* * *
#### If you are experimenting with something other than containers
Please make the following two settings in advance:
1) Configure the SSL client.
Since the Web API to be connected to will be communicated using HTTPS, configure the SSL client on the IRIS side in advance.
To match the settings of the sample production, we will use the name **[openweather]**. The settings in the Production are as follows:

**Click the Management Portal > [System Administration] > [Security] > [SSL/TLS Configuration] > [Create New Configuration]** button, enter **"openweather"** in the "Configuration Name" field, and then click in the "Save" button to finish.

2) Create a base URL for REST
In the sample production, we have configured it so that the information can be entered via REST, and the base URL for REST needs to be configured on the IRIS side.
In the sample, we set /start as the base URL. Since the Start.REST class exists in the namespace where the sample was imported, we will specify this class as the dispatch class and add %All as the application role to omit authentication at the time of access.
**Management Portal > System Administration > Security > Applications > Web Application Path > Click the "Create new web application"** button.
In the Name field, specify **/start**; in the Namespace field, specify the namespace from which the sample was imported; in the Dispatch Class field, specify **Start.REST**; in the Allowed Authentication Method field, select **"Unauthenticated"**, and save the file.
After saving, add the **%All** role to the **application role** on the "Application Roles" tab.


* * *
### Try to send data
Once you are all set up, try to use a business service to send information via REST and let it run.
The above example is a URL that supposes that someone has purchased "Takoyaki" in Osaka City.
The screen after execution is as follows.

Check the messages that have been sent to the **Production**.
In the **Management Portal > Interoperability > Configuration > Production**, click on the service below:
.png)
Select the **"Messages"** tab on the right side of the screen and click on any number below to the header field column. If you do not see it, reload your browser.

Using the Visual Trace page, you can see the information of **messages** sent and received between components. You can see that the weather information is retrieved from the Web API and sent back in the **light blue frame**.
In this way, you can use tracing to see what data was being sent and received at that time and in what order.
Throughout this article, we have confirmed that **Production** has defined the necessary components and their settings for system integration by referring to the sample code settings.
We also confirmed that we could refer to the messages flowing through the **Production** in chronological order by using the Visual Trace page.
In the next articles, we will discuss the concept behind creating the **"message"** shown in this trace and how actually to define it.
Announcement
Anastasia Dyubaylo · Feb 2, 2021
Hi Community,
We're pleased to invite you to the online meetup with the winners of the InterSystems Multi-Model Contest!
Date & Time: Friday, Febraury 5, 2021 – 10:00 EDT
What awaits you at this virtual Meetup?
Our winners' bios.
Short demos on their applications.
An open discussion about technologies being used, bonuses, questions. Plans for the next contests.
Our speakers:
@José.Pereira, Business Intelligence Developer at Shift Consultoria e Sistemas Ltda
@Renato.Banzai, Machine Learning Engineer Coordinator at Itaú Unibanco
@Henrique.GonçalvesDias, System Management Specialist / Database Administrator, Sao Paulo Federal Court
@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
You will also have the opportunity to ask any questions to our developers in a special webinar chat.
We will be happy to talk to you at our Virtual Meetup!
➡️ REGISTER TODAY! 🤩 YouTube stream here: https://youtu.be/m6xF5I6wfhg
Please join! Hey Developers!
The recording of this virtual meetup is already on InterSystems Developers YouTube:
⏯ Online Meetup with the InterSystems Multi-Model Contest Winners
Big applause to all the speakers! 👏🏼
Announcement
Anastasia Dyubaylo · Feb 3, 2021
Hi Developers,
We're pleased to invite all the developers to the upcoming InterSystems Grand Prix contest kick-off webinar!
The topic of this webinar is dedicated to our mega Grand Prix contest. We invite to use IntegratedML, Native API, multi-model, Analytics and NLP, Open API and Interoperability, IKO.
In this webinar, we'll talk about the topics to expect from participants and show you how to develop, build and deploy applications on InterSystems IRIS data platform.
Date & Time: Monday, Febraury 8 — 10:00 AM EDT
Speakers: 🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
🗣 @Thomas.Dyar, InterSystems Product Specialist - Machine Learning
So...
We will be happy to talk to you at our webinar!
➡️ JOIN THE KICK-OFF WEBINAR Hey guys,
InterSystems Product Specialist @Thomas.Dyar will be one of the webinar speakers!
Save your seat today – register here! 👈🏼 Hey Developers,
The recording of this webinar is available on InterSystems Developers YouTube! Please welcome:
⏯ InterSystems Grand Prix Contest Kick-off Webinar
Big applause to our speakers! 👏🏼
And thanks to everyone for joining our webinar!
Announcement
Anastasia Dyubaylo · Oct 12, 2020
Hi Community!
We're pleased to invite you to the Online meetup with the winners of the InterSystems Full Stack contest!
Date & Time: Friday, October 16, 2020 – 11:00 EDT
What awaits you at this virtual Meetup?
Our winners' bios.
Short demos on their applications.
An open discussion about technologies being used, bonuses, questions. Plans for the next contests.
Our speakers:
@Henrique.GonçalvesDias, System Management Specialist / Database Administrator, Sao Paulo Federal Court
@Dmitry.Maslennikov, Co-founder, CTO and Developer Advocate, CaretDev Corp
@MikhailenkoSergey, Chief Specialist, JSC Mosvodokanal
@Vasiliy.Bondar, Chief technical officer, Yagoda LLC
@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
You will also have the opportunity to ask any questions to our developers in a special webinar chat.
We will be happy to talk to you at our Virtual Meetup!
➡️ JOIN US ON THE ONLINE MEETUP! TOMORROW! Don't miss our virtual meetup! 😉
Register here ➡️ Please join today's meetup using this link.
See you! Hey Developers!
The recording of this virtual Meetup is available on InterSystems Developers YouTube:
⏯ Online Meetup with the Winners of the InterSystems Full Stack Programming Contest
Big applause to all the speakers! 👏🏼
And thanks to everyone for joining our online Meetup!
Announcement
Anastasia Dyubaylo · Nov 6, 2020
Hey Developers,
See how InterSystems IRIS Adaptive Analytics can be used to aggregate and query billions of records from a virtual cube, applying machine learning and analytics to that data.
⏯ InterSystems IRIS Adaptive Analytics in Action
👉🏼 Subscribe to InterSystems Developers YouTube.
Enjoy and stay tuned!
Announcement
Anastasia Dyubaylo · Nov 27, 2020
Hey Developers,
Are you ready to participate in the annual December competition?
Join the Advent of Code 2020 with InterSystems and participate in our ObjectScript contest to win some $$$ prizes!
🏆 Our Leaderboard 🏆
Here you can find our last year's participants.
👉🏼 Join the ObjectScript private leaderboard with 130669-ab1f69bf code.
Note: You need to sign in to Advent of code (e.g. with GitHub / Google / Twitter / Reddit account) to see the leaderboard and participate in the contest.
Prizes:
🥇 1st place - $3,000
🥈 2nd place - $2,000
🥉 3rd place - $1,000
All winners will also get a special high-level Global Master badge.
Note: InterSystems employees are not eligible for money prizes.
Win Conditions:
To win our prize you should be on the top of the ObjectScript Leaderboard and upload all the solutions in a public repository on GitHub and present the code in InterSystems ObjectScript in UDL form as presented in the template below.
⬇️ The Advent of Code 2020 contest ObjectScript template
So!
The first puzzles will unlock on December 1st at midnight EST (UTC-5).
See you then and good luck to all of you! Also join the discord channel to discuss terms, rules, everything. As we discussed and decided in discord it's OK to keep the repo private until the end of the contest. At the moment the following members are in the top 20 🔥
top 20 🔥 participants according to today's results:
Hey Devs!
Let's see the top 20 participants 🤩
Our 🔥 top 20!
Today's best 20 🔥
Top 20))
Brilliant 20 participants 🤩
Please enjoy the best 20 participants!
Only 4 days left till the end of the competition 💪
Let’s see the results!
Devs!
Please enjoy the results of the best 20🤩
Only 2 days left! Best 20 participants at the moment 🤩
Another way to look at results -- by medal count. Border is part 1 (doesn't count), background is part 2.
https://bitbucket.org/bertsarens/aoc2020/src/master/ https://github.com/uvg/AdventOfCode/tree/master/2020/COS OK. The first time I followed to the end. The code I was forced to produce by time pressure is so ugly and dirty that I refuse to publish it.Nevertheless a clear demonstration for what was ISOS (aka COS) NOT designed for:Higher mathematical calculus, matrix transformations, arrays with independent dimensions, ....[ Though I have to admit that I encountered tensors, rotors, matrix transformations, Mr. Fermat's theories, ... only at university 50+ years ago. And I didn't miss it in between ]
There was no demand for the real strengths of IRIS!In addition, I verified my personal credo that writing some code in ISOS/COSonly because it is possible makes no sense and is of no commercial value.Especially with the broad range of options in IRIS to include external code.
Article
Henrique Dias · Dec 27, 2020
How difficult is it to create a report using InterSystems Reports?
Spoiler
Super easy!
I created two simple examples using the InterSystems IRIS + InterSystems reports and will try to share how easy it is to set up these two applications together!
In the next few paragraphs, I describe a step-by-step guide to this process's ease and simplicity.
After installing the Logi Report Designer, open and choose the InterSystems IRIS icon.
For the second step, you have the option of choosing an existing Catalog or creating a new one.
We will create a new catalog, saving it in your chosen folder, then we will create a new DataSource.
Fill in the fields with the server's IP or DNS name, port, namespace, user, and password.
You can then add tables, views, and queries to your data source.
With your connection information, your tables, views, and/or queries configured, let's move on.
Clicking on the icon New, choose New Report.
For our report, I chose the Table (Group Left) as the image below:
The Table Wizard will guide us by choosing the data source, data display, grouping, summary, chart, filters, and style.
I'm using the covid table that @Evgeny.Shvarov created for the iris-analytics-template to my data source on this report sample. The chosen fields are Confirmed and Deaths.
The group for this report will be Contry_Region.
The Summary for Country_Region group will be Confirmed with the Aggregate Function (SUM), the breaking field will be Country_Region in the Footer position.
Inside the chart step, I chose the Bar Chart with Country_Region as my Category and showed values for the Confirmed field.
I'm applying one of the pre-existents styles, and the chosen one was "Classic."
The image below shows how the report shows itself after the wizard finish.
The file covid19_cases_-_WorldCount-Sample.pdf it's a "print sample" of the report.
If you want another simple sample, my repo has the file refugees_CitiesImpacted_ReportSample.pdf
Showing the report for the dataset for the Refugee Admission to the US Ending FY 2018, the dataset is available on Refugee Admission to the US Ending FY 2018 - dataset by associatedpress | data.world
If you liked the app and think I deserve your vote, please vote for iris-analytics-package!
https://openexchange.intersystems.com/contest/current
Article
Yuri Marx · Jan 25, 2021
The ObjectScript language of InterSystems IRIS has a very powerful metadata engine called XData. This feature allows the creation of metadata definitions for your classes, to be used by the compiler or by programs that will extend the standard features of the language, based on the XData definitions of its scope.
An example is IRIS Publisher, an Open Source application from the community capable of collecting all XData definitions in HTML and / or Markdown format and generating a Web Portal with all the application documentation assembled from these XData elements.
See the whole process here:
Let's see a practical example, follow the steps:
Access the link https://openexchange.intersystems.com/package/IRIS-Publisher to download IRIS Publisher.
Clone the project repository in git in a local folder of your choice: git clone https://github.com/yurimarx/iris-publisher
Open the project's source code. It is in the iris-publisher folder. We will create some XData elements.
Go to the Person class inside src / dc / Sample. Inspect the two example XData definitions between lines 34 to 43.
/// Documentation for Person in HTML
XData PersonDocHtml [ MimeType = text/html ]
{
<h1>This is the Person class</h1>
}
/// Documentation for Person in Markdown
XData PersonDocMarkdown [ MimeType = text/markdown ]
{
<h1>This is the Person class in MD</h1>
}
There are 3 large blocks, the text after ///, where it is possible to write a description of the XData element; the very definition of XData and MimeType (only HTML and Markdown are captured) and finally, between {}, all the HTML or Markdown content that will compose your documentation. In this example we use both, but we recommend defining only 1 of them.
It is possible to annotate all classes of the project, or part of them with XData, creating a very complete documentation of your application.
After documenting your classes using XData, we will compile the project documentation, in the terminal, execute: docker-compose up -d --build
After execution, your instance will be live and you will be able to run the IRIS Publisher API.
Run http://localhost:52773/swagger-ui/index.html?Url=http://localhost:52773/api/mgmnt/v1/USER/spec/crud#/default/UpdateDocConfig to define title, developer information and describe your application, use the following content as an example:
{
"SiteName":"Publisher",
"Summary":"Documentation of the Publisher",
"Description":"This an Application to generate documentation from XDATA",
"DeveloperName":"Yuri Gomes",
"DeveloperEmail": "yurimarx@gmail.com",
"DeveloperWebsite": "ymservices.tech"
}
Run http://localhost:52773/swagger-ui/index.html?url=http://localhost:52773/api/mgmnt/v1/USER/spec/crud#/default/InitiatePublisher to generate the documentation and start Documentation portal for your application.
Go to http: // localhost: 8000 and see all the documentation online!
If you enjoyed, vote in my app: https://openexchange.intersystems.com/contest/current
Announcement
Evgeny Shvarov · Feb 4, 2021
Hi Developers!
Here're the technology bonuses for the InterSystems Grand Prix Contest that will give you extra points in the voting.
Group
Bonus
Points
General
Docker
2
ZPM
2
Unit Testing
2
API and languages
REST API
2
ODBC/JDBC
2
Embedded Python usage
4
Native API in Java, Python, .NET, node.js
3
Multi-model
Globals (key-value)
2
SQL
2
Object
2
New model
3
Analytics
IRIS BI
2
IRIS NLP
2
InterSystems Reports
3
AI/ML
Integrated ML
4
Python or Julia Gateway
3
Interoperability
BPL
3
Custom Adapter
2
PEX
4
Workflow Engine
2
FHIR
FHIR Server REST API
3
FHIR SQL Scheme usage
2
Healthcare Data Transformations
3
Total
58
Below are the details and useful links on all the technical bonuses.
General bonuses
ZPM Package deployment - 2 points
You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with:
zpm "install your-multi-model-solution"
command on IRIS with ZPM client installed.
ZPM client. Documentation.
Docker container usage - 2 points
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from.
Unit Testing - 2 points
Applications that have Unit Testing for the InterSystems IRIS code will collect the bonus.
Learn more about ObjectScript Unit Testing in Documentation and on Developer Community.
InterSystems IRIS API
InterSystems IRIS REST API usage - 2 points
You get the bonus if you access InterSystems IRIS via REST API in your Full-Stack application. You either can build the REST API by yourself, or use any built-in or install it via ZPM. Learn more on InterSystems REST API.
Embedded Python usage - 4 points
Embedded Python needs a certain docker image, e.g. this one:
intersystemsdc/iris-ml-community:2020.3.0.302.0-zpm
See the related video.
Here is the template which shows how Embedded Python works and how to make a ZPM package to deploy it.
InterSystems Native API usage - 3 points
You get this bonus if you access the data in your Full-Stack application using any of the InterSystems Native API options: .NET, Java, Python, Node.js. Learn more here.
InterSystems JDBC usage - 2 points
InterSystems IRIS provides a JDBC driver to access the data. You get the bonus if you refer to the data in your Full-Stack application using SQL and InterSystems JDBC.
Multi-model bonuses
InterSystems Globals (key-value) - 2 points
InterSystems Globals are multidimensional sparse arrays that are being used to store any data in InterSystems IRIS. Each Globals node could be considered a key, which you can set a value for. InterSystems IRIS provides a set of APIs, including ObjectScript commands and Native API to manage Globals.
Tools:
Managing globals in the management portal
Documentation:
Using Multidimensional Storage (Globals)
Using Globals
Articles:
Globals are Magic Swords for managing data
The art of mapping Globals to Classes
Videos:
Globals QuickStart
You can collect 2 points for using Globals via ObjectScript or Native API in your
InterSystems SQL - 2 points
InterSystems IRIS provides SQL access to data via ObjectScript, REST API, JDBC.
Tools:
VSCode SQL Tools
DBeaver
SQL in Management Portal
Other SQL tools
Documentation:
SQL Access
InterSystems SQL Reference
Articles:
Class Queries in ObjectScript
Videos:
SQL Things you should know
Collect 2 bonus points by using InterSystems SQL in your application.
InterSystems Objects - 2 points
InterSystems IRIS provides the way to store and change instances of objects in globals via ObjectScript/REST API, Native API for Java/.NET/Node.js/Python, and XEP for Java/.NET.
Documentation:
Object Access
Get 2 bonus points for the usage of Object Access in your application.
Your data model - 2 points
InterSystems IRIS can be used as a data platform that exposes your own data model API. You are able to use ObjectScript, REST API or Native API to expose your own API which provides any special data model, like Time-Series, Spatial, Graph, RDF/Triple, Column store, Document store.
Introduce any of the new data-model API and collect 2 bonus points.
IRIS Analytics Bonuses
InterSystems IRIS BI - 2 points
InterSystems IRIS Business Intelligence is a feature of IRIS which gives you the option to create BI cubes and pivots against persistent data in IRIS and deliver then this information to users using interactive dashboards. Learn more.
The basic iris-analytics-template contains examples of IRIS BI cube, pivot, and a dashboard.
InterSystems IRIS NLP (iKnow) - 2 points
InterSystems NLP a.k.a. iKnow is an InterSystems IRIS feature and is a library for Natural Language Processing that identifies entities (phrases) and their semantic context in natural language text in English, German, Dutch, French, Spanish, Portuguese, Swedish, Russian, Ukrainian, Czech and Japanese.
Learn more about iKnow on Open Exchange.
Examples:
Covid iKnow Text Navigator
Samples Aviation
and more
Use iKnow to manage unstructured data in your analytics solution and get 1 bonus point.
InterSystems Reports - 3 points
InterSystems Reports is a feature of InterSystems IRIS which lets you design printing reports, send them via email by schedule, and deliver interactive reports for clients. InterSystems Reports is a repackaging of Logi Report (formerly named JReport®), a product of Logi Analytics®. Learn more in Documentation.
Check the Github repo with examples of InterSystems Reports.
Also, watch the video with the demo of InterSystems Reports and try with the Learning Lab.
You can download InterSystems Reports designer and server in the WRC download section.
License keys for InterSystms Reports Designer and Server will be available in Discord.
AI/ML
IntegratedML - 3 points
IntegratedML is a feature of InterSystems IRIS that expands SQL with a set of ML instructions that let you simplify and automate AI and Machine learning calculations for your solution. Learn more on IntegratedML.
You need special images of IRIS to use IntegratedML, check it here.
Examples:
A basic integratedML template
Several examples on Open Exchange
Usage of IntegratedML in your IRIS Analytics solution gives you one extra point.
2. Python Gateway usage - 2 points
Python Gateway is an addon to InterSystems IRIS which gives you the way to use Python in the InterSystems IRIS environment:
Execute arbitrary Python code.
Seamlessly transfer data from InterSystems IRIS into Python.
Build intelligent Interoperability business processes with Python Interoperability Adapter.
Save, examine, modify and restore Python context from InterSystems IRIS.
Learn more about Python Gateway.
You can use the Python Gateway template, which includes IntegratedML too.
Interoperability Bonuses
Business Process BPL or Business Rules Usage - 2 point
One of the key features of IRIS Interoperability Productions is a business process, which could be described by BPL (Business Process Language).
Learn more on Business Processes in the documentation.
Business Rule is a no-code/low-code approach to manage the processing logic of the interoperability production. In InterSystems IRIS you can create a business rule which you can create visually or via the ObjectScript representation.
You can collect the Business Process/Business Rule bonus if you create and use the business process or business rule in your interoperability production.
Business Rule Example
Learn more on Business Rules in the documentation
Custom Interoperability Adapter Usage - 2 point
InterSystems Interoperability production can contain inbound or Outbound adapters that are being used to communicate with external systems by business services and operations of the production. You can use out-of-the-box adapters (like File, or Email) or develop your own.
You get the bonus if you develop your own custom inbound or outbound adapter and use it in your production.
Example of an adapter
Learn more on adapters
Production EXtension (PEX) Usage - 4 points
PEX is a Java or .NET extension of Interoperability productions.
You get this bonus if you use PEX with JAVA or .NET in your interoperability production.
PEX Demo
Learn more on PEX in Documentation
Workflow Engine Usage - 2 points
Workflow Engine is a part of IRIS Interoperability which could be used to automate the distribution of tasks among users.
You get this bonus if you use include the usage of Workflow Engine in your interoperability production.
Learn more on Workflows in Documentation.
There are Community modules WorkflowAPI and WorkflowUI-ngx which provide a nice UI layer on Angular for the Workflow engine.
FHIR Bonuses
FHIR Server REST API usage - 3 points
You get the bonus if you use the REST API endpoint of the FHIR Server in InterSystems IRIS for health. You can take the IRIS-FHIR-Template which prepares the FHIR server during the docker image building. The documentation for FHIR API 4.0.1 could be found here. Learn more in InterSystems IRIS for Health documentation.
FHIR SQL Schema usage - 2 points
You can collect this technology bonus if you use FHIR SQL Schema in the SQL queries of your application. You can use this schema e.g. for making an FHIR Analytics solution. Use HSFHIR_I0001_R for resources schema for full resources and HSFHIR_I0001_S schema to search with SQL for resources. Check the examples in the template.
Healthcare standards transformations - 3 points
InterSystems IRIS for Health contains Healthcare Interoperability modules that help to perform data transformations from different healthcare standards to FHIR and vice-versa. Make CDA to FHIR, HL7v2 to FHIR, or any other transformations in your application to collect this bonus. See the examples of HL7v2 to FHIR and CDA to FHIR transformations. Learn more in the documentation.
The list of bonuses is subject to change. Stay tuned! The part on Embedded Python is updated:
here is the template that could be taken as a foundation to build an Embedded Python solution with IRIS.
here is an article that describes Embedded Python usage and packaging with ZPM for deployment.
Article
Sergey Mikhailenko · Oct 20, 2020
In this article, we'll talk about an application that I use every day when monitoring applications and integration solutions on the InterSystems IRIS platform and finding errors when they occur.
While looking for a solution for logging object changes in InterSystems IRIS, Ensemble, and Caché DBMS, I came across a great article about [logging with macros](https://community.intersystems.com/post/logging-using-macros-intersystems-cach%C3%A9). Inspired by the idea, I forked the project the paper had described and adapted it to some specific needs. The resulting solution is implemented as a panel subclass, %CSP.Util.Pane, which has the main window for commands, the Run button, and enabled command configuration.
This application enables viewing and editing global arrays, executing queries (including JDBC and ODBC), emailing search results as zipped XLS files, viewing and editing objects, as well as several simple graphs for system protocols.
The apptools-admin application is based on jQuery-UI, UiKit, chart.js, and jsgrid.js. You are welcome to have a look at the [source code](https://openexchange.intersystems.com/package/apptools-admin).
###Installation
All installation methods are described in detail in the repo. However, the simplest approach is to use the package manager command:
```
zpm "install apptools-admin"
[apptools-admin] Reload START
[apptools-admin] Reload SUCCESS
[apptools-admin] Module object refreshed.
[apptools-admin] Validate START
[apptools-admin] Validate SUCCESS
[apptools-admin] Compile START
[apptools-admin] Compile SUCCESS
[apptools-admin] Activate START
[apptools-admin] Configure START
http://hp-msw:52773/apptools/apptools.core.LogInfo.cls
http://hp-msw:52773/apptools/apptools.Tabs.PanelUikitPermissMatrx.cls?autoload=Matrix
[apptools-admin] Configure SUCCESS
[apptools-admin] Activate SUCCESS
```
The first suggested link must be opened in the address field of the browser. And in the loaded panel enter `?` and press the "Execute" button. The application then displays command examples.

###Commands
In the panel, you can run utilities, view and edit globals, and execute queries. Each launch is saved in history in the context of the namespace, so it can be found and repeated. In this context, the word "launch" means starting the execution of commands, and commands will mean everything that we enter in the panel. This screenshot shows an example of a global array `^%apptools.History` view command

As you know, automatic error detection and notifications can be handled by popular solutions like Prometheus. But often the severity of errors can be assessed visually.
Very often I need to quickly get information about bugs in production in all namespaces.
For this, I implemented a utility:
`##class(apptools.core.Production).FindAndDrawAllErr`
This starts a daily search request for errors for each namespaces that contains working products, and allows you to view these errors with a quick transition to visual tracing. You can run this utility like any others in the apptools panel with the `xec` prefix.

All useful commands can be memorized in the global extensions, in the context of the scope, to be found and repeated at any time.

###Globals
A large part of the apptools-admin application is dedicated to working with globals. Globals can be viewed in reverse order, as well as by applying a filter on both the link and the data. The displayed notes can be edited or deleted.

You can enter the `*` wildcard after the global name to get a list of globals with additional characteristics.
A second `*` will add a new field, Allocated MB.
A third one will add the Used MB field. This syntax resolves to a Union of the two reports, and the asterisks divide the report that is typically rather long into manageable sections.

When you get a report as a list of globals (in the screenshot above), you can follow the active links to view the global itself. You can also view and edit the global in the standard way from the management portal, by clicking `R` or `W` in the `Permission` field.
Quite often, writing to the global is used to log the states of variables and objects when debugging a project. I use special macros for this:
`set $$$AppL("MSW","anyText")=$$$AppObJs(%request)`
In this example, `$$$AppL` forms a link to a glob with the `^log` prefix, and the date and time in the index value.
`$$$AppObJs` is the object serialization macro.

You can view the protocol global in the panel, and the object can be displayed in the window fully formatted.
###Query
The function that sees almost as much use as globals is query. You run this function by entering a statement as a command.
For example, you can perform an SQL statement.

You can also save the result in the global `^mtempSQLGN`.

Subsequently, the saved result in the global can be displayed in the panel.

###Converting Reports to Excel Format
One of the things that was missing in the standard management portal was the ability to execute queries configured in the database JDBC or ODBC sources, output the results in XLS format, and then archive and send the file via email.
To achieve this in the application, you simply select the Upload to Excel file checkbox before executing the command.
This feature saves a lot of time in my daily routine, and allows me to successfully incorporate ready-made modules into new applications and integrated solutions.

To enable this functionality, you first need to configure the path for creating files on the server, user credentials, as well as the mail server. For that, in turn, you need to edit the nodes of the global program settings, `^%apptools.Setting`.

###Saving Reports Globally
Quite often, you need to save the results of a report execution to the global. For this, you can use these procedures:
| | functions |
|------------------------------|---------------------------------------------------------------------|
|For JDBC: |##class(apptools.core.sys).SqlToDSN |
|For ODBC: |##class(apptools.core.sys).SaveGateway |
|For SQL: |##class(apptools.core.sys).SaveSQL |
|For Query: |##class(apptools.core.sys).SaveQuery |
For example, using the `##class(apptools.core.sys).SaveQuery` function, saves the result of the query `%SYSTEM.License:Counts` to the global `^mtempGN`.

You can then display in the panel what you’ve saved with the following command:
`result ^mtempGN("%SYSTEM.License:Counts", 0)`
https://lh5.googleusercontent.com/KCIekwZw3guq79GWxVdHYdAbWQc4u97-dr-hWT26lYE2oEzUTSkwCE4ki1zvNqRFBg6dKQshSqcy3YSgUbjFKgX3v7Ecpa5Bm_NEQuZhP8Fn8p1gzrmAdTR-Cg9jBeVcNWGukW3a
###Enhanced Functionality Modules
What else simplified and automated my work? Changes that enabled me to execute custom modules when forming a query string. I can embed new functionality into the report on the fly — like active links for additional operations on the data. Let’s see some examples.
We display the query result in the browser using the function:
`##class(apptools.core.LogInfoPane).DrawSQL`

Let's add the word marking function `##class(apptools.core.LogInfo)`.MarkRed to parameter 5.

In the same way, you can supplement the output with additional features, for example, active links or tooltips.
The globals editor in this solution is implemented according to the same principle.
Here's a list of functions for outputting globals and queries in tabular form:
| | functions |
|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
|For globals: |##class(apptools.core.LogInfoPane).DrawArray("^mtempSQLGN") |
|For SQL: |##class(apptools.core.LogInfoPane).DrawSQL("select * From %SYS.ProcessQuery") |
|For Query: |##class(apptools.core.LogInfoPane).DrawSQL("query %SYSTEM.License:Counts") |
|For global result: |##class(apptools.core.LogInfoPane).DrawSQL("result ^mtempSQLGN") |
Working with the apptools.core.Parameter Class
This link will open the CSP application in a browser in the context of an instance on which apptools-admin is installed:
`http://localhost:52773/apptools/apptools.Form.Exp.cls?NSP=APP&SelClass=apptools.core.Parameter`
Or select the active link in the panel.

The CSP application will be loaded for editing instances of stored classes, in this example:
`apptools.core.Parameter.`


###Creating a apptools.core.Parameter via the Table Navigator
If you open this link in a browser in the context of the instance on which apptools-admin is installed:
`http://localhost:52773/apptools/apptools.Form.Exp.cls?panel=AccordionExp&NSP=APP`
Or select the active link in the panel.

The CSP application will be loaded for navigating the stored classes with the ability to edit them.

###An example of a simple CSP application
If you open this link in a browser in the context of the instance on which apptools-admin is installed:
`http://localhost:52773/apptools/apptools.Tabs.PanelSample.cls`
Or select the active link in the panel.

This example also shows the ability to edit class instances `apptools.core.Parameter.`

###Graphs
To visualize database growth, the application offers a page that displays a graph of the monthly measured database size. This graph is derived from the IRIS file.log (cconsole.log for Caché) on records "Expand" retrospectively from the current day.
The program traverses the protocol, finds the database extension records and subtracts the incremental megabytes from the current database size. It turns out a graph of the growth of databases.
For example, the screenshot below shows a graph of events in InterSystems IRIS formed by the protocol file.

Another example below: a schedule of events in the system based on the system protocol file.log (cconsole.log).

###Summary
The application we’ve discussed in this article was designed to help me perform my daily tasks. It includes a set of modules which you can use as building blocks for a custom administrator tool. I would be very glad if you found it useful in your work. You are welcome to add your wishes and suggestions as tasks to the project [repo](https://github.com/SergeyMi37/apptools-admin).
Announcement
Anastasia Dyubaylo · Dec 4, 2020
Hi Community,
See how to build a REST API with InterSystems IRIS in just five minutes, leveraging Docker containers:
⏯ Building a REST API with InterSystems IRIS
Subscribe to InterSystems Developers YouTube and stay tuned!
Announcement
Anastasia Dyubaylo · Dec 11, 2020
Hi Community,
Please welcome the new video on InterSystems Developers YouTube:
⏯ The Freedom of Visualization Choice: InterSystems BI
Find out how three visualization tools available to InterSystems customers — InterSystems IRIS Business Intelligence, Microsoft Power BI, and InterSystems Reports — can be used to answer one data question. See a demonstration of each and learn about the benefits of each tool and what makes them different.
Additional materials to this video you can find in this InterSystems Online Learning Course.
Enjoy watching this video! 👍🏼