Article Evgeny Shvarov · Sep 3, 2023 5m read

While starting the development with IRIS we have a distribution kit or in case of Docker we are pulling the docker image and then often we need to initialize it and setup the development environment. We might need to create databases, namespaces, turn on/off some services, create resources. We often need to import code and data into IRIS instance and run some custom code to init the solution.

And there plenty of templates on Open Exchange where we suggest how to init REST, Interoperability, Analytics, Fullstack and many other templates with ObjectScript. What if we want to use only Python to setup the development environment for Embedded Python project with IRIS?

So, the recent release of Embedded Python template is the pure python boilerplate that could be a starting point for developers that build python projects with no need to use and learn ObjectScript. This article expresses how this template could be used to initialize IRIS. Here we go!

1
2 791
Announcement Evgeny Shvarov · Aug 29, 2023

Hi Developers!

Here're the technology bonuses for the InterSystems Python Contest 2023 that will give you extra points in the voting:

  • Embedded Python - 3
  • Python Native API  - 3
  • Python Pex Interoperability - 4
  • Python libs: sqlalchemy and dbt - 2
  • LLM AI or LangChain usage: Chat GPT, Bard and others - 4
  • NoObjectScriptLine - 5
  • Questionnaire - 2
  • Docker container usage - 2 
  • ZPM Package deployment - 2
  • Online Demo - 2
  • Implement InterSystems Community Idea - 4
  • Find a bug in Embedded Python - 2
  • First Article on Developer Community - 2
  • Second Article On DC - 1
  • First Time Contribution - 3
  • V
5
1 516
Announcement Evgeny Shvarov · Jul 6, 2023

Hi Developers!

Here is the bonus results for the applications in InterSystems Grand Prix Programming Contest 2023:

Project

LLM AI or LangChain

FHIR SQL Builder

FHIR

IntegratedML

Native API

Embedded Python

Interoperability

PEX

Adaptive Analytics

Tableau, PowerBI, Logi

IRIS BI

Columnar Index

Docker

ZPM

Online Demo

Unit Testing

Community Idea Implementation

First Article on DC

Second Article on DC

Code Quality

First Time Contribution

Video on YouTube

Total Bonus

Nominal 6
6
0 371
Question Evgeny Shvarov · Jun 25, 2023

Hi folks!

I have a need to use symilar to $property function from Python. Here is the code:

obj=iris.cls('some.persistent.class')._New()

for property, value in data.items():

 $property(obj.property)=value ; I invented this

How could I do this? Any trick?

For now I plan to implement a helper function in iris that I will call, but I doubt also how can I transfer oref to IRIS.

Thoughts?

5
0 340
Question Evgeny Shvarov · Jun 25, 2023

Hi folks!

Consider I need to call a python function which name contains "_" symbol (which is quite often in Python). How it could be called from ObjectScript?

E.g. here is the code:

Set sm = ##class(%SYS.Python).Import("sample")

write sm.helloworld() ; function without _
white sm.hello_world() ; function with _ - won't compile.

Thanks in advance!

3
0 327
Question Evgeny Shvarov · Jun 23, 2023

Hi, Developers!

I wonder if it is possible to use class parameters in DTL XData?

E.g. in an example below of the DTL I'd prefer to setup ChatGPT prompts in parameters (GPTPrompt1) of DTL rather than quotes inside the XData XML:

If possible, how can I refer to a class parameter from XData?

Thanks in advance!

2
1 385
Question Evgeny Shvarov · Jun 20, 2023

Hi folks!

I have an example where I want to write a string into a file.

I have a message with string and I want to write the string down into a file.

I took EnsLib.FilePathThrough.Operation which expects Ens.StreamContainer message.

So I perform a data transformation where I need to transfer string to a stream. Here is the DataTransformation:

4
0 976
Announcement Evgeny Shvarov · Jun 10, 2023

Hi colleagues!

InterSystems Grand Prix 2023 unites all the key features of InterSystems IRIS Data Platform!

Thus we invite you to use the following features and collect additional technical bonuses that will help you to win the prize!

Here we go!

  • LLM AI or LangChain usage: Chat GPT, Bard and others - 6
  • InterSystems FHIR SQL Builder- 5
  • InterSystems FHIR - 3
  • IntegratedML - 4
  • Native API - 3
  • Embedded Python - 4
  • Interoperability - 3
  • Production EXtension(PEX) - 2
  • Adaptive Analytics (AtScale) Cubes usage - 3
  • Tableau, PowerBI, Logi usage - 3
  • InterSystems IRIS BI - 3 
  • Columnar Index Usage - 1
  • Docker container usage - 2 
  • ZPM Package deployment - 2
  • Online Demo - 2
  • Unit Testing - 2
  • Implement InterSystems Community Idea - 4
  • First Article on Developer Community - 2
  • Second Article On DC - 1
  • Code Quality pass - 1
  • First Time Contribution - 3
  • Video on YouTube - 3
4
0 530
Question Evgeny Shvarov · Jun 9, 2023

Hi folks!

How can I change the production setting programmatically?

I have a production that is a solution that uses some api-keys, which are the parameters of Business Operations but of course cannot be hard-coded into the source code.

E.g. here is the example of such a production that runs a connection of Telegram and ChatGPT.

And it can be installed as:

zpm "install telegram-gpt"

But now one needs to setup the key manually before using the production, having the following setting:

I'd like to set up it programmatically so one could install it as:

zpm "install telegram-gpt -D Token=sometoken"

How can I make it work?

18
0 1037
Article Evgeny Shvarov · Jun 8, 2023 2m read

Hi Community!

Just want to share with you an exercise I made to create "my own" chat with GPT in Telegram.

It became possible because of two components on Open Exchange: Telegram Adapter by @Nikolay Solovyev and IRIS Open-AI by  @Kurro Lopez 

So with this example you can setup your own chat with ChatGPT in Telegram. 

Let's see how to make it work!

8
1 728
Question Evgeny Shvarov · Jun 5, 2023

Hi folks!

Is it possible to use Environment variables for production settings?

E.g. I have a telegram adapter for which I need to setup token(part of the production below):

<ItemName="shvarov.i14y.ChatOperation"Category="Reddit"ClassName="Telegram.BusinessOperation"PoolSize="1"Enabled="true"Foreground="false"Comment=""LogTraceEvents="false"Schedule=""><SettingTarget="Adapter"Name="SSLConfig">default</Setting><SettingTarget="Adapter"Name="Token">"some-telegram-token"</Setting></Item>

Is it possible to point the expression for Token setting "some-telegram-token" which will

7
0 384
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:

1.
0
1 334
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.

Today I want to

3
1 402
Question Evgeny Shvarov · May 13, 2023

Hi folks!

Those who actively use unittests with ObjectScript know that they are methods of instance but not classmethods.

Sometimes this is not very convenient. What I do now if I face that some test method fails I COPY(!) this method somewhere else as classmethod and run/debug it.

Is there a handy way to call the particular unittest method in terminal?  And what is more important, a handy way to debug the test method?

Why do we have unittest methods as instance methods? 

25
0 809
Article Evgeny Shvarov · Apr 12, 2023 3m read

Hi Developers!

There is a recent update came for developer community images of InterSystems IRIS and IRIS For Health.

This release comes with Environment variables support.

Currently 3 variables are supported:

  • IRIS_USERNAME=user to create
  • IRIS_PASSWORD=with password
  • IRIS_NAMESPACE=create namespace if doesn't exist

Here is what you can do - see below.

Start iris with your username and password created:

docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773  -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community
1
1 848
Question Evgeny Shvarov · Apr 9, 2023

Hi folks!

When I launch IRIS as a docker container instance, e.g. like this one:

docker run --name iris-sql -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-community

And then try to connect to it e.g. via irissqlcli it says I need to change the password:

irissqlcli iris://_SYSTEM:SYS@localhost:9091/USER

Password change required

I know that I can open Management portal http://localhost:9092/csp/sys/UtilHome.csp and change password manually, but is there a programmatic way?

Say if I have a password in a file and I can just provide it to docker instance for the change?

Can anyone

9
0 559
Article Evgeny Shvarov · Apr 4, 2023 2m read

Hi developers!

As you know InterSystems IRIS besides globals, object, document and XML data-models also support relational where SQL is expected as a language to deal with the data.

And as in other relational DBMS InterSystems IRIS has its own dialect.

I start this post to support an SQL cheatsheet and invite you to share your favorites - I'll update the content upon incoming comments.

Here we go!

26
7 1646
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 462
Article Evgeny Shvarov · Mar 27, 2023 1m read

Hi folks!

Recently I was in need to setup a local FHIR server using IRIS For Health and I think I found the easiest and simplest way ever.

Just run in terminal these two lines below :

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community

and

docker exec -it my-iris iris session iris -U "USER" '##class(%ZPM.PackageManager).Shell("install fhir-server")'

And you'll have FHIR server running locally at http://localhost:9092/fhir/r4.

That's it!

The FHIR server will use the latest build of InterSystems IRIS for Health Community Edition and will deploy FHIR server from this app via IPM package in  FHIRSERVER namespace.

This is for Mac, so please add in comments how it works in Windows.

This is a very short article as it is really easy to setup a local FHIR server with InterSystems IRIS for Health and IPM Package Manager.

6
0 921
Question Evgeny Shvarov · Mar 2, 2023

Hi folks!

Examining FHIR profile validation with InterSystems FHIR server. FHIR profiles is a very useful feature of FHIR standard that helps an organization or solution to establish constraints to a very disperse FHIR standards that are relevant to a particular business solution. Learn more on FHIR profiles.

I created a very simple FHIR profile with the following JSON:

 

Spoiler

 
{

"resourceType": "StructureDefinition",

"url": "http://example.org/fhir/StructureDefinition/TutorialPatient",

"name": "TutorialPatient",

"status": "draft",

"fhirVersion": "4.0.1",

"mapping"
9
0 860
Question Evgeny Shvarov · Feb 28, 2023

Hi folks!

Researching FHIR bundle transactions.

The idea is that you can post a bundle to a FHIR server with a set of resources. And you can send it as a transaction, so only all the resources will be published or neither.

E.g. I send a bundle of two resources: patient and its observation.

The observation resource should reference an existing patient. But it probably doesn't exist yet on the server and goes within the same bundle. 

For this purpose there is a way to have a temporary id in the bundle, to let resources reference ids.

6
0 623
Question Evgeny Shvarov · Feb 19, 2023

Hi folks!

Lately (maybe last 2-3 years) I develop with IRIS exclusively in docker - so iris instance I use for compiling and running IRIS apps is local.

And most every time I enter password for management portal and web-apps. The same password every time. Sounds familiar?

Is there an easy way to have a parameter in docker build  for a "dev-mode" that will not ask me a password?

8
0 560