#InterSystems IRIS

19 Followers · 5.5K 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 Punit · Apr 24, 2023

I have a %GlobalBinaryStream object that I'm trying to save as a local file after being received through a SOAP Web Service.

To do this, I created a %Stream.FileBinary object and wanted to set where the stream copied to this object would be saved by using either the DefaultStreamDir() ClassMethod or the NewFileName() ClassMethod. However, the documentation isn't very helpful on how to use these ClassMethods.

Right now, I have the below code:

set localStream = ##class(%Stream.FileBinary).%New()
set st = localStream.CopyFromAndSave(file) /// file is the %GlobalBinaryStreamObject
$$$QuitOnEr
4
0 332
Question Ben Spead · Apr 25, 2023

I have a csp page that is using embedded Runtime Expression (https://docs.intersystems.com/ens201817/csp/docbook/Doc.View.cls?KEY=RC…) and within that expression I am using a $data() modulo 2 to look for root-level data elements (https://docs.intersystems.com/ens201817/csp/docbook/Doc.View.cls?KEY=RC…).

E.g:

#($select($data(^ImportantFlag)#2:"Important!",1:"Normal"))#

However, my modulo sign (#) after the $data() call is seen as the ending tag for the runtime expression resulting in a broken compilation.

Does anyone know if there is a way to escape )# or just # in a

3
0 242
Question Michael Davidovich · Apr 21, 2023

I have seen this post and appreciate that discussion: API RESTful Version | InterSystems Developer Community | Business Service

However our org requirement is for a caller to provide the API version in the HTTP request header.  I am finding the cleanest way to route to the correct class using the header version.  My classes are setup as

API.Service.v1

API.Service.v2

Of course only v1 exists now but when v2 goes live on future day, API.Service.v2 will extend API.Service.v1 so we only have to override the method that changes or add a new method if needed.  

I thought I might be able to modi

2
0 364
Question Michael Davidovich · Mar 30, 2023

I am trying to write a message to a Kafta cluster programmatically (i.e. not in Ensemble or using a Production) using %External.Messaging.  I am consistently getting a 'topic not found error' even though I have created the topic on the cluster.  I dug into the client I created an when accessing the property KaftaClient.jclient.gateway I get the following output:

<THROW>%DispatchGetProperty+25^%Net.Remote.Object.1 *%Net.Remote.Exception <GATEWAY> com.intersystems.gateway.GatewayException com.intersystems.gateway.JavaGateway.dynamicExecuteGet(JavaGateway.java:3761) Field not found: com.intersys

4
0 554
Article Alex Woodhead · Apr 24, 2023 3m read

Multidimensional properties can be found on certain classes.

These operate as a collection of values much like a Python dictionary.

Examples of properties that might be encountered:

Class Property Description
%Net.HttpRequest Params Name value pair of form parameters
%Net.HttpResponse Headers

HTTP Headers returned with web content returned:

  • HTTPHeaders
  • EnsConfigName
  • Params
  • Content-Type
  • ResponseCode 
%Library.AbstractStream Attributes Name of originating file from FTP or mounted File system
%Library.AbstractResultSet Data Data Values indexed by
0
0 456
Article Yuri Marx · Apr 13, 2023 10m read

It is a recommended security practice to login into sensitive Administrator Portals without any input passwords. Thus, it is necessary to identify and authenticate the users correctly. A common technique employed by web portals and mobile applications is to use Google social login. Today, Google Gmail has 2 billion users (source:https://www.usesignhouse.com/blog/gmail-stats). Therefore, it is a perfect shared login service to utilize to login InterSystems IRIS users when they need to manage their instances. This article will detail all the steps to embed Google Login into your InterSystems Management Portal.


Register your InterSystems instance in the Google Console

1. Go to https://console.cloud.google.com and log in with your Google user account.
2. On the header click Select a project:

7
5 993
Article Oliver Wilms · Apr 21, 2023 2m read

We have a rule to disable a user account if they have not logged in for a certain number of days. IRIS Audit database logs many events such as login failures for example. It can be configured to log successful logins as well. We have IRIS clusters with many IRIS instances. I like to run queries against audit data from ALL IRIS instances and identify user accounts which have not logged into ANY IRIS instance.

Instead of running queries against many IRIS instances, I developed audit-consolidator to consolidate audit data from many IRIS instances into ONE database table to run queries against th

1
0 234
Announcement Evgeny Shvarov · Apr 3, 2023

Here're the technology bonuses for the InterSystems IRIS Cloud SQL and IntegratedML Contest 2023 that will give you extra points in the voting:

  • IntegratedML usage
  • Online Demo
  • Article on Developer Community
  • The second article on Developer Community
  • Video on YouTube
  • First Time Contribution
  • Community Idea Implementation
  • IRIS Cloud SQL Survey

See the details below.<--break->

2
0 461
Article Ward De Backer · Apr 21, 2023 5m read

When you install an IRIS or Caché instance on Windows Server, you'll usually need to install it under a specific user account that has network access permissions. This is very handy when you needs to access network resources for creating files or directly accessing printers.

TL;DR: see key takeaways at the bottom!

When you need to change the Windows user account the IRIS/Caché service is running as, you can configure (after installation):

  • for IRIS (also see the docs): 
    <install-dir>\bin\IRISinstall.exe setserviceusername <instance-name> <username> <password>
  • for Caché (also see the docs
0
1 696
Article Oliver Wilms · Apr 21, 2023 1m read

Within IRIS I defined a task to export audit data every day.

I provide some sample files in my GitHub repo.

I wrote ObjectScript code to import all files into otw.audit.consolidator class.

I want to use Python SQLAlchemy, pandas and sqlalchemy-iris (created by Dmitry Maslenikov) to copy consolidated audit data from my consolidator class in my IRIS container to my InterSystems Cloud SQL deployment.

I updated my Dockerfile to pip3 install sqlalchemy-iris and pandas (dataframes).

docker-compose build –no-cache in my personal AWS took 700 seconds.

docker-compose up-d starts audit-c

1
0 233
Question Scott Roth · Apr 20, 2023

I am trying to finish build for moving to IRIS HealthShare Health Connect 2022.1 from HealthShare Health Connect 2018.1.3. I am currently using Delegated Authentication using an AD group to match up to the Role in IRIS. The Role has access to everything but the HS Resources because we don't really use the HS Resources for anything. We are mainly using IRIS for the Interoperability Engine. 

When I run System Administration --> Security --> Security Advisor, I am getting the following error.... "It has been logged to system error log (System Operation>System Logs>Application Error Log)." When I

0
0 199
Question Scott Roth · Apr 19, 2023

I wrote a function awhile back to take Encoded Base 64 and write the PDF out to a file that could be sent to a faxing system to fax out. We are trying to test this code out in IRIS and I am seeing an error that I have not seen before... ERROR #5034: Invalid status code structure

Here is the code...

ClassMethod DecodeBase64HL7ToFile(base64 As %Stream.GlobalBinary, Ancillary As %String, FileName As %String) As %String

{

  set ArchDir = "/ensemble/data/transfer/AncillaryPDF/"

  set ArchAncDir = ArchDir_Ancillary_"/"

  set FaxDateDir = ArchAncDir_$PIECE($ZDATE($HOROLOG,7)," ",1)_"-"_$PIEC

7
0 589
Article Muhammad Waseem · Apr 17, 2023 4m read

Hi Community,
In this article, I will introduce my application iris-mlm-explainer

This web application connects to InterSystems Cloud SQL to create, train, validate, and predict ML models, make Predictions and display a dashboard of all the trained models with an explanation of the workings of a fitted machine learning model. The dashboard provides interactive plots on model performance, feature importances, feature contributions to individual predictions, partial dependence plots, SHAP (interaction) values, visualization of individual decision trees, etc.

Prerequisites

  • You should h














image

6
1 475
Article Shanshan Yu · Apr 19, 2023 2m read

With the improvement of living standards, people pay more and more attention to physical health. And the healthy development of children has become more and more a topic of concern for parents. The child's physical development can be reflected from the child's height and weight. Therefore, it is of great significance to predict the height and weight in a timely manner. Pay attention to the child's developmental state through scientific prediction and comparison.

The project uses InterSystems IRIS Cloud SQL to support by entering a large number of weight and height related data, and establishe

0
1 253
Question Oliver Wilms · Apr 13, 2023

I am trying to read binary data from HTTP Request Stream and build a Dynamic Object with multiple properties. I am getting MAXSTRING error with this code:

 Set dynObject1 = ##class(%DynamicObject).%New()
 Set dynObject1.OriginalFilename = $P($P(request.HTTPHeaders.GetAt("RawParams"),"&",2),"=",2)
 Set dynObject1.SiteId = $P($P(request.HTTPHeaders.GetAt("RawParams"),"&",1),"=",2)
 For {
   Set len = 1000000
   Set tRead = request.Stream.Read(.len,.sc)
   Set ^TESTutil($INCREMENT(^TESTutil),"len") = len
   Set ^TESTutil($INCREMENT(^TESTutil),"sc") = $Get(sc)
   If (len < 1) Quit }
   Set dynObject1.S

5
0 762
Article Oliver Wilms · Apr 18, 2023 2m read

I have Audit consolidator deployed in AWS where I scheduled Audit Export task to run daily.

Xml files are stored in mgr directory because the task runs in %SYS namespace.

/usr/irissys/mgr

-rwxrw-r--. 1 irisowner irisowner 249080 Apr  9 21:48 8eedba82d0ee_2023-04-09_auditexport.xml*

-rwxrw-r--. 1 irisowner irisowner  19487 Apr 10 00:02 8eedba82d0ee_2023-04-10_auditexport.xml*

-rwxrw-r--. 1 irisowner irisowner  23554 Apr 11 00:02 8eedba82d0ee_2023-04-11_auditexport.xml*

-rwxrw-r--. 1 irisowner irisowner  27624 Apr 12 00:02 8eedba82d0ee_2023-04-12_auditexport.xml*

-rwxrw-r--. 1 irisowne

0
0 169
Article Shanshan Yu · Apr 18, 2023 2m read

Data Initialization

1. Create a table with sql statements

create table IF NOT EXISTS MLTEST_MSG.HeightWeightPredictMSG (Id int primary key identity(101,2),number varchar(50), Height float, Weight  float);

create table IF NOT EXISTS MLTEST_MSG.HeightWeightMSG (Id int primary key identity(101,2),number varchar(50), Height float, Weight  float);

create table IF NOT EXISTS MLTEST_MSG.FamilyMSG(id int primary key identity(101,2),Csex int, Family float,Father float,Mother float, num int,Height float);

create table IF NOT EXISTS MLTEST_MSG.FamilyPredictMSG(id int primary key identity(101,2

0
1 247
InterSystems Official Fabiano Sanches · Apr 18, 2023

InterSystems is pleased to announce the 2023.1 release of InterSystems IRIS Data Platform, InterSystems IRIS for Health, HealthShare Health Connect, and InterSystems IRIS Studio are now Generally Available (GA).

2023.1 is an Extended Maintenance (EM) release. Many updates and enhancements have been added in 2023.1.

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 accessi

0
0 443
Question Pravin Barton · Apr 18, 2023

I have a class using the JSON adaptor:

Class pbarton.test Extends (%RegisteredObject, %JSON.Adaptor)
{

Property Version As %String;

}

The Version property could be either a string or a number in the JSON source data. If it's a string, importing it will succeed. If it's a number, importing fails.

set t = ##class(pbarton.test).%New()

w t.%JSONImport({"Version": "3"})
1

zw t.%JSONImport({"Version": 3})
"0 "_$lb($lb(9406,"Version","class base",,,,,,,$lb(,"USER",$lb("e^%JSONImportInternal+16^pbarton.test.1^1","e^%JSONImport+12^%JSON.Adaptor.1^1","e^^^0"))))/* ERROR #9406: Unexpected format for
1
0 363
Question Punit · Apr 14, 2023

I'm trying to create a SOAP service between two systems (one client and one server) to transfer files from the client to the server.

I'm reading through the documentation available at https://docs.intersystems.com/iris20223/csp/docbook/DocBook.UI.Page.cls… but wanted to look at an actual example of code (preferably a small example for both systems).

If anyone has such an example or could create one, it would greatly help me understand how SOAP services work.

Thank you!

1
0 733
Article Yuri Marx · Apr 18, 2023 4m read

According to the Cambridge dictionary, tokenize data is "to replace a private piece of data with a token (= a different piece of data that represents the first one), in order to prevent private information being seen by someone who is not allowed to do so" (https://dictionary.cambridge.org/pt/dicionario/ingles/tokenize). Today, several companies, especially in the financial and healthcare sectors, are tokenizing their data as an important strategy to meet cybersecurity and data privacy (GDPR, CCPA, HIPAA and LGPD) requirements. But, why not use encryptation? The tokenization process to protect

0
0 435
Question Jon Astle · Apr 18, 2023

I have updated some legacy VB/ASP.NET code and changed the references of InterSystems.Data.CacheClient to InterSystems.Data.IRISClient.  I am struggling with the code as I am not a .NET expert and there is little or no documentation.

I have published the code on several test IIS sites and on some the code works fine but on others I get the below error.   The error doesn't appear to be O/S specific as I have it working on some Windows 2016 servers and not working on other Windows 2016 servers.  I have checked the network card settings as the error seems to refer to IPv6 and IPv6 is not enabled



0
0 356
Question Jeffrey Drumm · Apr 16, 2023

When an object is created in memory, the object reference (OREF) is represented as a string value when displayed with the Write command:

HICG>Set pat=##class(JD.Sample.patient).%OpenId(70)
HICG>Write pat
1@JD.Sample.patient ; "stringified" OREF
HICG>Zwrite pat
pat=1@JD.Sample.patient  ; <OREF>
+----------------- general information ---------------
|      oref value: 1
|      class name: JD.Sample.patient
|           %%OID: $lb("70","JD.Sample.patient")
| reference count: 2
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|            address =
14
1 698