#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Question Yone Moreno · May 22, 2023

Good afternoon,

first thank you from heart and mind, mind and heart; for reading, thinking, reflecting, responding, and above all explaining a possible solution and/or documentation to address this doubt.

We would need a way to get inside a SOAP Web Service the SAML Assertion, and then, send it directly to the endpoint throught a SOAP Operation.

Currently we have researched and developed how to get the SAML Assertion with the following code:

Good afternoon,first thank you from heart and mind, mind and heart; for reading, thinking, reflecting, responding, and above all explaining a possible solution and/or documentation to address this doubt.We would need a way to get inside a SOAP Web Service the SAML Assertion, and then, send it directly to the endpoint throught a SOAP Operation.Currently we have researched and developed how to get the SAML Assertion with the following code:Class Servicios.RESNS.ConsultaRecetas Extends EnsLib.SOAP.Service [ ProcedureBlock ]
{

/// This is the namespace used by the Service
Parameter NAMESPACE
1
0 442
Article Eduard Lebedyuk · May 23, 2023 1m read

When developing interoperability productions, it might be useful to have settings outside of a Business Host. The primary reason is when you need a setting to affect several different Business Hosts and want to guarantee that the value is the same. While System Default Settings can be used to propagate settings for Business Hosts, they can be changed by overriding the value on a BH level (although the advantage of Business Host settings set via SDS is that they don't need custom code which our current approach requires).
Another reason is when you need to affect non-setting parts of the Business Host configuration (PoolSize, Enabled, etc.)

We will be adding an env setting to a production.

1
1 443
Article Henry Pereira · Jan 16, 2023 14m read

cover

In this article, I will show you how one can easily create and read Microsoft Word documents using InterSystems IRIS with the leverage power of embedded Python.

Setup

First things first, let’s install the Python module called python-docx. There are a lot of modules to write MS Word files in Python. However, this one is the easiest one to use.

Just execute the following command on the terminal:

!pip3 install python-docx

If you are working with Docker, like I do, just add the following line to a Dockerfile

ENV PIP_TARGET=${ISC_PACKAGE_INSTALLDIR}/mgr/python RUN pip3 install python-docx

In this article, I will show you how one can easily create and read Microsoft Word documents using InterSystems IRIS with the leverage power of embedded Python.SetupFirst things first, let’s install the Python module called python-docx. There are a lot of modules to write MS Word files in Python.

7
7 1387
Article Eduard Lebedyuk · May 18, 2023 2m read

Let's have a round of Code Golf!

String rotation is when you take a word and move some of its letters to the end of the word, so the first letter becomes the second letter, the second letter becomes the third, and so on. Last letter becomes first. Rotation can happen only in one direction →. Your task is to write a method that will receive two strings. It then must return an integer value of how many times needed to rotate the strings to be equal. As usual shortest solution wins.

Input

"hello", "llohe"

Output

3

  ​

Note

Rules

  1. Let's have a round of Code Golf!String rotation is when you take a word and move some of its letters to the end of the word, so the first letter becomes the second letter, the second letter becomes the third, and so on. Last letter becomes first. Rotation can happen only in one direction →.Your task is to write a method that will receive two strings. It then must return an integer value of how many times needed to rotate the strings to be equal.

14
0 527
Question Minoru Horita · May 19, 2023

I have a problem with connecting to IRIS via ODBC on Apple Silicon.

I installed unixodbc with brew, and downloaded ODBC-2023.1.0.229.0-macos.tar.gz from the community github repo.

After setting up odbc.ini so that libirisodbcur6435.so that was just downloaded is used as the driver,  isql fails as follows:

$ isql -v sampleodbc
[08S01][unixODBC][Iris ODBC][State : 08S01][Native Code 459]
[libirisodbcur6435.so]
Connection via irisconnect failed:
getaddrinfo(, , 0, 0) failed in s_TCPConnect, reason = nodename nor servname provided, or not known.
 
[ISQL]ERROR: Could not SQLConnect

getaddrinfo(, , 0, 0) failed in s_TCPConnect, reason = nodename nor servname provided, or not known.

4
0 786
Question Phillip Wu · May 17, 2023

Hi,

I trying to find out the procedure to kill off a currently printing Cache job.

The user wants to cancel the job as they put the wrong start date. The start date was set to be generated from the default date of 1 Jan 1900.

As the start date was such a long time ago, the report generation would take a long time.

I think the printing uses this "production" on the print server:

Report.Print.Service.CachePrintService

  -> Report.Print.Process.Request

  -> Report.Print.Operation.PrintCacheReport

Hi,I trying to find out the procedure to kill off a currently printing Cache job.The user wants to cancel the job as they put the wrong start date. The start date was set to be generated from the default date of 1 Jan 1900.As the start date was such a long time ago, the report generation would take a long time.I think the printing uses this "production" on the print server:Report.Print.Service.CachePrintService   -> Report.Print.Process.Request  -> Report.Print.Operation.PrintCacheReportI think the printing part is  "production" "Operations",  Report.Print.Operation.PrintCacheReport.

2
0 369
Discussion Fabiano Sanches · May 17, 2023

We are very eager to learn what kind of feedback you might have for InterSystems.

We hope you had a chance to download and install one of the kits that show how the new process works. If not, you still can do it, following the instructions on these posts:

Our target release is InterSystems IRIS 2023.2 (and InterSystems IRIS for Health 2023.2) and will be available in a few months.
 

We are very eager to learn what kind of feedback you might have for InterSystems.We hope you had a chance to download and install one of the kits that show how the new process works.Our target release is InterSystems IRIS 2023.2 (and InterSystems IRIS for Health 2023.2) and will be available in a few months.

1
0 379
Article Evgeny Shvarov · May 14, 2023 2m read

Hi Developers!

Often solutions with InterSystems IRIS BI can turn into a quite big solution with dozens of pivots and dashboards.

With every new IRIS BI solution release we can add changes that could influence the behavior of existing pivots or dashboards so they stop working. For example if we change the dimension or measure name, forget deploying some cubes or subject areas, conduct refactoring via mass renaming of cubes and its elements etc some widgets could stop functioning.

The solution is to test (manually?) every widget in every dashboard if the MDX queries are working.

Hi Developers!Often solutions with InterSystems IRIS BI can turn into a quite big solution with dozens of pivots and dashboards.With every new IRIS BI solution release we can add changes that could influence the behavior of existing pivots or dashboards so they stop working.

3
1 401
Question Stuart Goodrick · May 16, 2023

I'm trying to extract data from an IRIS database into SQL server with SSIS using the ODBC driver: InterSystems ODBC35 (ODBC-2023.1.0.229.0-win_x64.exe)

I have Unicode turned off in the ODBC settings. 
I'm getting strange results - with some tables the SSIS ODBC connector will work but the ADO.net connector - using the same ODBC driver will. For other tables it's the other way round. The ADO.net sees the data as unicode and won't allow me to insert it into a non unicode table but ODBC will be fine.

In some cases I'm getting data that just looks screwed up  

I'm trying to extract data from an IRIS database into SQL server with SSIS using the ODBC driver: InterSystems ODBC35 (ODBC-2023.1.0.229.0-win_x64.exe)I have Unicode turned off in the ODBC settings. I'm getting strange results - with some tables the SSIS ODBC connector will work but the ADO.net connector - using the same ODBC driver will. For other tables it's the other way round. The ADO.net sees the data as unicode and won't allow me to insert it into a non unicode table but ODBC will be fine.In some cases I'm getting data that just looks screwed up  Anyone had similar issues?

1
0 354
InterSystems Official Fabiano Sanches · May 10, 2023

InterSystems announces its first preview, as part of the developer preview program for the 2023.2 release.  This release will include InterSystems IRIS and InterSystems IRIS for Health.

Highlights

Many updates and enhancements have been added in 2023.2 and there are also brand-new capabilities, such as Time-Aware Modeling, enhancements of Foreign Tables, and the ability to use Ready-Only Federated Tables. Some of these features or improvements may not be available in this current developer preview.

InterSystems announces its first preview, as part of the developer preview program for the 2023.2 release.  This release will include InterSystems IRIS and InterSystems IRIS for Health.HighlightsMany updates and enhancements have been added in 2023.2 and there are also brand-new capabilities, such as Time-Aware Modeling, enhancements of Foreign Tables, and the ability to use Ready-Only Federated Tables. Some of these features or improvements may not be available in this current developer preview.Another important topic is the removal of the Private Web Server (PWS) from the installers.

3
0 349
Article Michael Angeleri · May 12, 2023 4m read

In this brief article I would like to share a few strategies to run objectscript code in debug mode.

How to enter debug mode

There are two ways to launch the debugger.

Launching a command

Let's suppose that we have to debug the following method

In this brief article I would like to share a few strategies to run objectscript code in debug mode.How to enter debug modeThere are two ways to launch the debugger.Launching a commandLet's suppose that we have to debug the following methodClass Custom.Example Extends %RegisteredObject
{

/// check if a string can be a valid STP code ("STP" + 13 digits)
/// w ##class(Custom.Example).isValidSTPCode("STP1234567891011")
ClassMethod isValidSTPCode(code As %String) As %Boolean
{
	set STPPrefixCode= "STP"
	if ($extract(code,1,$length(STPPrefixCode)) = STPPrefixCode) {
		set
4
2 1026
Question Ben Spead · Apr 12, 2023

I have a situation where I have a handful of classes which I need to copy to another Namespace (which uses a different RoutineDB) on the same instance, load it and compile it.

Can anyone help me come up with a command that will do this quickly and easily?   Perhaps something with extended reference?  

This is somewhat time sensitive so thank you in advance for your ideas!

23
0 1031
Article Evgeny Shvarov · May 16, 2023 1m read

Hi folks!

Just want to introduce you a new util to import CSV into IRIS - csvgenpy!

Install

USER>zpm "install csvgenpy"

Use:

do ##class(shvarov.csvgenpy.csv).Generate("file or url","table","schema")

Example:

USER>do ##class(shvarov.csvgenpy.csv).Generate("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv","titanic","data")

This will create table and class data.titanic in IRIS and will load the data.  you can proof it with:

Hi folks!Just want to introduce you a new util to import CSV into IRIS - csvgenpy!InstallUSER>zpm "install csvgenpy"Use:do ##class(shvarov.csvgenpy.csv).Generate("file or url","table","schema")Example:USER>do ##class(shvarov.csvgenpy.csv).Generate("https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv","titanic","data")This will create table and class data.titanic in IRIS and will load the data.1.
0
1 334
Question Stella Ticker · May 12, 2023

Has anyone had success with passing in a collections  property within a SOAP request to a Soap Service in Ensemble? Please reply with how you set up that collections property. I am able to successfully send a SOAP request correctly containing the elements of the collection property to Cache, as seen in a custom soap log file which I am using to troubleshoot. But the collection property in the  Ensemble request is not getting serialized, meaning MyContainers has nothing.

My.Request consists of a property, MyContainers, which can have 0 or more Containers (My.Container)

Has anyone had success with passing in a collections  property within a SOAP request to a Soap Service in Ensemble? Please reply with how you set up that collections property. I am able to successfully send a SOAP request correctly containing the elements of the collection property to Cache, as seen in a custom soap log file which I am using to troubleshoot.

1
0 223
Article Anton Umnikov · Jan 21, 2021 26m read

In this article, we’ll build a highly available IRIS configuration using Kubernetes Deployments with distributed persistent storage instead of the “traditional” IRIS mirror pair. This deployment would be able to tolerate infrastructure-related failures, such as node, storage and Availability Zone failures. The described approach greatly reduces the complexity of the deployment at the expense of slightly extended RTO.

16
8 3980
Announcement Olga Zavrazhnova · May 15, 2023

Join the latest InterSystems Developer Meetup to learn how to analyze healthcare data.

FHIR (Fast Healthcare Interoperability Resources) is a global data standard in healthcare and it's great for interoperability but not great for analysis of that data.💡 Learn from InterSystems product managers and engineers how make SQL projections of FHIR data and build out Python Panda applications leveraging those projections.

 

Presentations:

0
0 377
Question sansa stark · May 12, 2023

Hi Everyone,

 I tried to send the Sample XML from Packet Sender to Intersystems IRIS TCP Inbound adapter for learning purpose.
I'm using Predefine d Class : EnsLib.XML.TCPService and the adapter is EnsLib.TCP.CountedInboundAdapter (it selected by Default.)
My sample XML file would be <Patient><Name>John,Williams</Name><MRN>12345</MRN></Patient>
I got an error like 

ERROR <Ens>ErrTCPReadBlockSize: TCP Read(32000) with timeout period (50) failed with : (78):tElement><Patient><Name>Varatha</Name><MRN>12345</MRN></Patient></RootElement>
Please help me to proceed further

3
0 275
Article Yuri Marx · May 15, 2023 6m read

 These days the vast majority of applications are deployed on public cloud services. There are multiple advantages, including the reduction in human and material resources needed, the ability to grow quickly and cheaply, greater availability, reliability, elastic scalability, and options to improve the protection of digital assets. One of the most favored options is the Google Cloud. It lets us deploy our applications using virtual machines (Compute Engine), Docker containers (Cloud Run), or Kubernetes (Kubernetes Engine). The first one does not use Docker.

0
3 5181
Question Kurro Lopez · Apr 19, 2023

Hi all,

I'm wondering if exists any command or method to replace a text using parameters.

In C# I use the Format property

var text = string.format("My name is {0} and I'm {1} years","Kurro","18")
// The value of text will be "My name is Kurro and I'm 18 years"

I've tried with this code... but it works only for the specific parameters

set text = "My name is {0}, and I'm {1} years"write$Replace($Replace(text,"{0}","Kurro"),"{1}",18)

is possible to do something for more args? I mean, use for a indeterminate number of args

Best regads

11
1 496
Article Robert Cemper · Feb 16, 2021 2m read

As you know ObjectScript has neither FOREACH system command nor system function.
But it has a wide room for creativity.

The task is to loop over a global or local array and do something FOR EACH element.

There are 2 possible solutions:

  • creating a macro that generates the required code sequences
  • creating an Extended Command to perform the action. Both ways are presented here. The macro is a generic and quite flexible solution and easy to adapt if required.
creating an Extended Command to perform the action. Both ways are presented here. The macro is a generic and quite flexible solution and easy to adapt if required.
1
2 1238
Question Scott Roth · Apr 12, 2023

We are currently using different iterations of Ens.Director.EnableConfig items to start/stop objects within the Interoperability Namespace. We are looking for ways to minimize our downtime as we move from AIX to a new section of our Network and Red Hat Servers.

We are currently using different iterations of Ens.Director.EnableConfig items to start/stop objects within the Interoperability Namespace. We are looking for ways to minimize our downtime as we move from AIX to a new section of our Network and Red Hat Servers.Besides using Ens.Director.EnableConfig item and waiting for a response, or just disabling the objects through the Namespace class file, is there a quicker way to stop Services and Operations to ensure the TCP disconnect is sent to those endpoints so we can move the networking rules to ensure they point to new servers?

12
1 840
Article Dmitry Maslennikov · Feb 6, 2023 4m read

Let me introduce my new project, which is irissqlcli, REPL (Read-Eval-Print Loop)  for InterSystems IRIS SQL 

  • Syntax Highlighting
  • Suggestions (tables, functions)
  • 20+ output formats
  • stdin support
  • Output to files 

Install it with pip

pipinstallirissqlcli

Or run with docker

dockerrun-itcaretdev/irissqlcliirissqlcliiris://_SYSTEM:SYS@host.docker.internal:1972/USER

Connect to IRIS

$ irissqlcli iris://_SYSTEM@localhost:1972/USER -W
Password for _SYSTEM:
Server:  InterSystems IRIS Version 2022.3.0.606 xDBC Protocol Version 65
Version: 0.1.0
[SQL]_SYSTEM@localhost:USER> select $ZVERSION
+---------------------------------------------------------------------------------------------------------+
| Expression_1                                                                                            |
+---------------------------------------------------------------------------------------------------------+
| IRIS for UNIX (Ubuntu Server LTS for ARM64 Containers) 2022.3 (Build 606U) Mon Jan 30202309:05:12 EST |
+---------------------------------------------------------------------------------------------------------+
1 row in set
Time: 0.063s
[SQL]_SYSTEM@localhost:USER> help
+----------+-------------------+------------------------------------------------------------+
| Command  | Shortcut          | Description                                                |
+----------+-------------------+------------------------------------------------------------+
| .exit    | \q                | Exit.                                                      |
| .mode    | \T                | Change the table format used to output results.            |
| .once    | \o [-o] filename  | Append next result to an output file (overwrite using -o). |
| .schemas | \ds               | List schemas.                                              |
| .tables  | \dt [schema]      | List tables.                                               |
| \e       | \e                | Edit command with editor (uses $EDITOR).                   |
| help     | \?                | Show this help.                                            |
| nopager  | \n                | Disable pager, print to stdout.                            |
| notee    | notee             | Stop writing results to an output file.                    |
| pager    | \P [command]      | Set PAGER. Print the query results via PAGER.              |
| prompt   | \R                | Change prompt format.                                      |
| quit     | \q                | Quit.                                                      |
| tee      | tee [-o] filename | Append all results to an output file (overwrite using -o). |
+----------+-------------------+------------------------------------------------------------+
Time: 0.012s
[SQL]_SYSTEM@localhost:USER>
20
2 966
Article Mihoko Iijima · May 11, 2023 2m read

InterSystems FAQ rubric

You can use the system routine ^DBSIZE to estimate the backup file size (see also Note 1).

^DBSIZE estimates the file size of full, cumulative, and differential backups of the databases selected in the database backup list.

The database backup list is created from [System Administration] > [Configuration] > [Database Backup] > [Database Backup List] in the Management Portal.

For more information, please refer to the document below.

Estimate backup size with ^DBSIZE [IRIS]

Estimate backup size with ^DBSIZE

An execution example is as follows.

InterSystems FAQ rubricYou can use the system routine ^DBSIZE to estimate the backup file size (see also Note 1).^DBSIZE estimates the file size of full, cumulative, and differential backups of the databases selected in the database backup list.The database backup list is created from [System Administration] > [Configuration] > [Database Backup] > [Database Backup List] in the Management Portal.For more information, please refer to the document below.Estimate backup size with ^DBSIZE [IRIS]Estimate backup size with ^DBSIZEAn execution example is as follows.USER>set $namespace="%SYS"   //or zn
0
0 391
Article Mauro Aguirre · May 11, 2023 13m read

Several steps should be done in order to secure the connection through xDBC clients to an IRIS Server instance using TLS. Most of the information can be obtained from the documentation about TLS on IRIS here, about configuring the security layer for encrypted connections. In the next paragraphs we will cover an step-by-step guide on how to configure and test the connection using SQL Clients apps using ODBC and JDBC.

You can download the drivers from InterSystems IRIS Driver Packages

Configuring IRIS SuperServer to use TLS

IRIS Documentation on this link

Several steps should be done in order to secure the connection through xDBC clients to an IRIS Server instance using TLS. Most of the information can be obtained from the documentation about TLS on IRIS here, about configuring the security layer for encrypted connections. In the next paragraphs we will cover an step-by-step guide on how to configure and test the connection using SQL Clients apps using ODBC and JDBC.

0
2 1225
Article Eduard Lebedyuk · Feb 10, 2023 6m read

In this article, we will establish an encrypted JDBC connection between Tableau Desktop and InterSystems IRIS database using a JDBC driver. While documentation on configuring TLS with Java clients covers all possible topics on establishing an encrypted JDBC connection, configuring it with Tableau might be a little bit tricky, so I decided to write it down.

Securing SuperServer

Before we start with client connections, you need to configure SuperServer, which by default runs on port 1972 and is responsible for xDBC traffic to accept encrypted connections. This topic is described in the In this article, we will establish an encrypted JDBC connection between Tableau Desktop and InterSystems IRIS database using a JDBC driver.While documentation on configuring TLS with Java clients covers all possible topics on establishing an encrypted JDBC connection, configuring it with Tableau might be a little bit tricky, so I decided to write it down.Securing SuperServerBefore we start with client connections, you need to configure SuperServer, which by default runs on port 1972 and is responsible for xDBC traffic to accept encrypted connections.

3
2 847