#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 Norman W. Freeman · Apr 4, 2023

I use the following code to grab 509 certificate and show private key :

set x509 = ##class(%SYS.X509Credentials).GetByAlias("foo")
write x509,!
write x509.OwnerList,!
write x509.PrivateKey,!

It works perfectly fine under Studio (eg: when called from output window) :

29@%SYS.X509Credentials
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKC...

However, it fails when called in the context of a CSP request. I got a stack trace when displaying content of PrivateKey :

6@%SYS.X509Credentials
0??%Admin_Secure:USE MYNAMESPACE?-e^zPrivateKeyGet+2^%SYS.X509Credentials.1^1e^^User.www.1^1B^zOnPage+7^User.www.

5
0 506
Question Pravin Barton · Apr 7, 2023

On an IRIS system, we expect the default string collation for SQL columns to be SQLUPPER. This means WHERE conditions will be case-insensitive. However, when I make a WHERE condition on a SQL procedure that returns a string, it's case sensitive.For example:

Class Sample.Person Extends%Persistent
{

Property Name As%String;ClassMethod Test() As%String [ SqlProc ]
{
    return"Abe Lincoln"
}

} 

If I query select * from Sample.Person where Name = 'abe lincoln', it will return results where name = "Abe Lincoln". If I query select * from Sample.Person where Sample.Person_Test() = 'abe

2
0 463
Article Oliver Wilms · Apr 7, 2023 2m read

This week I was able to demo a proof of concept for our FMS interface on traffic cop architecture to my team.We are working on modernizing an Interoperability production running on mirrored Health Connect instances.We deploy IRIS workloads on Red Hat OpenShift Container Platform using InterSystems Kubernetes Operator (IKO).We can define any number of replicas for the compute stateful set where each compute pod runs our Interoperability production.We introduced Horizontal Pod Autoscaler (HPA) to scale up the number of compute pods based on memory or CPU utilization.

0
0 463
Question Scott Roth · Apr 6, 2023

We have a function that was written for us that allows us to create text files for logging certain aspects to the OS using %Stream.FileCharacter. We had no issues with this until we moved from AIX to Red Hat.

Now it seems the 1st time the function is called, and the file is created the permissions seem to be correct on the file. But as soon as we attempt to write another line to the file using MoveToEnd() it seems the permissions are changed on the file. I have been able to narrow the issue down to the MoveToEnd() by calling the function from different users. 

When I initaly create the file via

9
0 996
Article Oliver Wilms · May 30, 2022 1m read

InterSystems Production Monitor is a page in Management Portal to display monitoring information for the current running production. I like the page as it comes, but one size does not fit all.

On May 13, 2022 I read this post on Developer Community:

https://community.intersystems.com/post/creating-custom-monitoring-page

I agree with Mark that Production Monitor is complex. I liked the idea to create a nice clean clear monitor page.

I began to work on a Cache Server Page utilizing class methods to provide the production data.

I shared my first attempt with Mark.

2
1 502
InterSystems Official Fabiano Sanches · Apr 6, 2023

InterSystems announces its fifth developer preview, as part of the developer preview program for the 2023.1 release. Many updates and enhancements have been added in 2023.1 and there are also brand-new capabilities, such as production-ready support for Columnar Storage, ability to use Bulk FHIR, and support to MacOS 13 Ventura. Additionally, a new feature to provide the ability to use Foreign Tables is being released as "experimental" and will be accessible through an Early Access Program (EAP). Some of these features or improvements may not be available in this current developer preview.

Futur

0
0 266
Question Timothy Leavitt · Mar 10, 2023

I'm trying to read the response to a long (indefinitely) running HTTP response with Transfer-Encoding: chunked. Ideally I'd be able to read the individual chunks from the response and do something with them as they arrive rather than needing to wait for the response to finish (because it never will) - ultimately I'm thinking to wrap these back up over a WebSocket connection which seems cleaner from an API perspective.

So far it looks like my options are:

  • Extend %Net.HttpRequest, override the Read method, and add support for read of individual chunks from an ongoing request (similar to what is
3
0 1244
InterSystems Official RB Omo · Apr 4, 2023

InterSystems has corrected a defect that can cause an SQL query to return incorrect results.

The defect exists in the following products and any InterSystems offerings based on them.

Impacted versions are 2021.2, 2022.1.x, 2022.2, and 2022.3:

InterSystems IRIS®

InterSystems IRIS for Health

HealthShare® Health Connect

Impacted version is 2022.2:

 InterSystems HealthShare®

 The issue can be triggered when SQL Runtime Plan Choice (RTPC) is enabled (the default) and the query contains a "truth value" WHERE ?= ?.

0
0 336
Question Matjaz Murko · Apr 1, 2023

Hi.

I have a query:

SELECT '['||Material->Sifra||'] '||Material->Opis AS Material,
       SUM(MasaBlago) AS MasaBlago
 FROM Tehtanje.Dokument
 WHERE DatumDokumenta BETWEEN '01/01/2023' AND '04/01/2023'
 AND (Material->Sifra %INLIST $LISTFROMSTRING('5,7',','))
 GROUP BY Material
 ORDER BY %EXACT Material

The query returns all rows where Material->Sifra is 5 or 7. That's OK.

If I want to get all rows where Material->Sifra is NOT 5 or 7 I use query:

SELECT '['||Material->Sifra||'] '||Material->Opis AS Material,
       SUM(MasaBlago) AS MasaBlago
 FROM Tehtanje.Dokument
 WHERE DatumDokumenta BETWEEN

2
0 373
Question Dmitry Maslennikov · Apr 3, 2023

In some testing scenarios, I need to clone the database. While I use only SQL access.

I need all data to be cloned, not mapped from the original database, and a separate database to be accessed.

Is there any way to do so?

Something like

CREATEDATABASE [Databasetocreate]
WITHTEMPLATE [Databaseto copy]
1
0 328
Question Shaun Munro · Mar 27, 2023

When using %JSONImport it seems to only report a single error, is there a way to report all the errors with out having to do multiple requests?  

{

    "errors": [

        {

            "code": 9406,

            "domain": "%ObjectErrors",

            "error": "ERROR #9406: Unexpected format for value of field, CurrencyCode, using Update mapping",

            "id": "JSONImportError",

            "params": [

                "CurrencyCode",

                "Update"

            ]

        }

    ],

    "summary": "ERROR #9406: Unexpected format for value of field, CurrencyCode, using Update mapping"

}

1
0 388
Article Luis Angel Pérez Ramos · Mar 2, 2023 5m read

I've been working for some days in the connectivity between NodeJS client applications and IRIS as server using web sockets.

You can get all the information in relation to the web socket connections using IRIS as a client or as a server from this URL: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cl…

For this example we are going to configure an asynchronous server, that would be really usefull to create a subscription manager for our productions.

First of all, we have created a really simple persistent object in which we are going to store the session

2
0 586
Article Kate Lau · Mar 15, 2023 2m read

In this article, I am trying to walk through my deploying step of IAM on my EC2(ubuntu).

What is IAM?

IAM is InterSystems API Manager
you may reference to the link below to get more idea about IAM

https://docs.intersystems.com/components/csp/docbook/Doc.View.cls?KEY=PAGE_apimgr

generated description: apimgr description.jpg

Before deploying IAM

Check the license of your API host

 

Enable the User IAM

Deploy IAM

Reference 

https://community.intersystems.com/post/introducing-intersystems-api-manager

Download the image from the following link

https://wrc.intersystems.com/wrc/coDistGen.csp

I downloaded the following version to my pc

Upload the image to

2
0 520
Question Christoph Abraham · Mar 29, 2023

Our ERP solution runs on different sql databases (such as ms sql and posgre). We are using the same code for all plattforms, doing database-specific changes in the db driver for each type of database.

There is one function in our program, where the user can store long text to discribe something, which is used in print and web. This text is treated/stored as html and can include pictures. The pictures in the html are stored base64 coded inside the html and the html is stored as text in a column. In other database systems, this is treated as TEXT or BLOB, and workings just fine.

But with IRIS, we

6
0 430
Article Henry Pereira · Dec 1, 2021 5m read

freepik- freepik.com First of all, what is data anonymization?

According to Wikipedia:

Data anonymization is a type of information sanitization whose intent is privacy protection. It is the process of removing personally identifiable information from data sets, so that the people whom the data describe remain anonymous.

In other words, the data anonymization is a process that retains the data but keeps the source anonymous. Depending on the adopted anonymization technique the data is redacted, masked or substituted.

And that is the purpose of iris-Disguise, to provide a set of anonymization tools.

You can use in

12
3 1572
Article Roger Merchberger · Mar 30, 2023 8m read

Is anyone like me, and felt really jealous that they didn't have enough points to acquire the IRIS-based Raspberry Pi system when it was offered? Do you have a spare Raspberry Pi 4 handy? If so, I'll walk you through setting up Docker and IRIS on your Raspberry Pi so you can have the smallest IRIS computer in town!

Things you'll need:

Raspberry Pi 4 (at least 4G RAM, but I have several with 8G so that's what I used. 2G RAM *might* work, but there might be a lot of swap file activity which would slow down the process considerably)
MicroSD card (at least 16G, but I'd recommend 32G or more)
Power

0
0 688
Article Jude Mukkadayil · Mar 29, 2023 4m read

WIN SQL is the normal editor used by most of the users .But we can't download large amount of data using winsql . So I have written a tutorial how to connect with a new Java based editor called Squirrel SQL which can easily download or export data in excel or any other formats. Also I included a Java JCBC connection program to connect with the IRIS database especially a mirroring/failover server.

SQL Java based Editor to Export large amount of data and Java JDBC program for IRIS connection

SQL Java based Editor to Export large amount of data

WinSql is the editor used normally to extract data

5
0 736
Article Guillaume Rongier · Mar 29, 2023 1m read

Quick Tips: Total Productive Maintenance

Named parameters can be achieved with SQLAlchemy :  

from sqlalchemy import create_engine, text,types,engine

_engine = create_engine('iris+emb:///')

with _engine.connect() as conn:
    rs = conn.execute(text("select :some_private_name"), {"some_private_name": 1})
    print(rs.all())

or with native api

from sqlalchemy import create_engine, text,types,engine

# set URL for SQLAlchemy
url = engine.url.URL.create('iris', username='SuperUser', password='SYS', host='localhost', port=33782, database='FHIRSERVER')

_engine = create_engine(url)

with _engine.connect() as conn:
    rs = conn.execute(text("select :some_private_name"), {"some_private_name": 1})
    print(rs.all())
0
0 580
Article Hiroshi Sato · Mar 23, 2023 1m read

InterSystems FAQ rubric

You can programmatically retrieve routine dates and sizes using the RoutineList query of the %Library.Routine (or just %Routine) class.

The RoutineList query has an argument, and the routine name to be searched can be specified by prefix match or middle match. (For wildcards, specify * or ?)

In the example below, *.MAC is specified as an argument.

SET tStatement =  ##class(%SQL.Statement).%New()
 DO tStatement.%PrepareClassQuery("%Routine" , "RoutineList") 
 SET rs = tStatement.%Execute("*.MAC",,0) 
 DO rs.%Display() 

In addition to the routine list, you can also get

2
0 689
Question Neil Thaiss · Mar 28, 2023

Hi,

I know little about SOAP security and am trying to apply a WS-Policy to a simple HL7 web service, but when I do I get object script errors.

The most latest one being:

ObjectScript error: <UNDEFINED>zValidateTransport+4^%SOAP.Security.Policy.1 *%request

The web service, shown below, simply extends UHSx.Common.Services.Twinkle.SOAP, and works perfectly well using basic HTTPS over SSL/TLS:
Class UHSx.Common.Services.Twinkle.SOAP Extends UHSx.Common.Services.HL7.SOAP
{Parameter LOCATION = "https://ryr-hc-test.sussex.nhs.uk:50800/UHSX_EPR/Twinkle_QRY_HL7_Web_Se…";Parameter SERVICENAME

0
0 225
Announcement Anastasia Dyubaylo · Mar 28, 2023

Hi Developers,

See how the Production Extension framework (PEX) allows you to build custom interoperability components in .NET or Java without first learning ObjectScript.

With PEX, you can code in a familiar language and take advantage of established code libraries to add components to a production.

 What is PEX

0
1 318
Article Oliver Wilms · Apr 4, 2023 6m read

IRIS configurations and user accounts contain various data elements that need to be tracked, and many people struggle to copy or sync those system configurations and user accounts between IRIS instances. So how can this process be simplified?

In software engineering, CI/CD or CICD is the set of combined practices of continuous integration (CI) and (more often) continuous delivery or (less often) continuous deployment (CD). Can CI/CD eliminate all our struggles?

I work in a team which develops and deploys IRIS clusters. We run IRIS in containers on Red Hat OpenShift container platform.

Please do

1
2 817
Article Alberto Fuentes · Feb 23, 2023 3m read

Hi all!

In a project we needed to define topics to publish messages and register different subscribers which will receive those messages asynchronously. We also needed it to be as simple as possible and that we could use it on InterSystems IRIS directly.

As an experiment, I'm sharing this iris-pubsub open exchange example.

Infrastructure

This is built on top of InterSystems IRIS interoperability features, it needs a running production.

The first time we need to define how many partitions we want to dedicate to handle messages.The more partitions you add, the more capacity to handle messages.

4
2 599
Announcement Anastasia Dyubaylo · Mar 24, 2023

Hi Developers,

Often we create and edit InterSystems IRIS Interoperability solutions via a set of UI tools that is provided with IRIS. But it is sometimes difficult to setup the development environment to handle changes we make in the UI to source control.  

This video illustrates how git-source-control helps with source control Interoperability components while changing it in the UI.

⏯ Git Source Control for InterSystems IRIS Interoperability with Docker and VSCode

0
2 873
Article Peter Steiwer · Jan 17, 2020 1m read

If you are seeing this error during import: ERROR #6301 Line: 2 Offset: 118 This does not appear to be a Cache exported file, unable to import.

This error is caused by exporting from InterSystems IRIS and trying to import into Caché. If you plan on exporting from IRIS to Caché, you can use the following qualifier to export your classes so that Caché does not throw an error on import:

w $SYSTEM.OBJ.Export(<items>,<filename>,"/exportversion=cache2018.1")

Please see the Documentation for more information about this Export Qualifier

3
0 937
Article Guillaume Rongier · Nov 30, 2022 2m read

If you are using Python, you can use the built-in venv module to create a virtual environment. This module is the recommended way to create and manage virtual environments.

A virtual environment is a tool that helps to keep dependencies required by different projects separate by creating isolated python virtual environments for them. It solves the “Project X depends on version 1.x but, Project Y needs 4.x” dilemma, and keeps your global site-packages directory clean and manageable.

So if like me you work a lot with Python, you can use the venv module to create a virtual environment for your project. This will allow you to install packages without affecting the global Python installation.

You will find here two neat alias to create and activate a virtual environment.

Python aliases

alias venv="python3 -m venv .venv; source .venv/bin/activate"
alias irisvenv="python3 -m venv .venv; source .venv/bin/activate; pip install https://github.com/grongierisc/iris-embedded-python-wrapper/releases/download/v0.0.3/iris-0.0.3-py3-none-any.whl"
3
2 2083