We are looking for Innovators!
We invite early stage startups to join Caelestinus digital health and FHIR startup incubator for the season 2023!
We are looking for Innovators!
We invite early stage startups to join Caelestinus digital health and FHIR startup incubator for the season 2023!
Hi Developers!
As you know InterSystems IRIS Interoperability solutions contain different elements of the solution, such as: production, business rule, business process, data transformation, record mapper. And sometimes we can create and modify these elements with UI tools. And of course we need a handy and robust way to source-control the changes made with UI tools.
For a long time this was a manual (export class, element, global, etc) or cumbersome settings procedure, so the saved time with source-control UI automation was competing with lost time to setup and maintain the settings.
Now the problem doesn't exist any more. With two approaches: package first development and usage of IPM package git-source-control by @Timothy Leavitt
.

The details are below!
Hi developers!
Want to share with you an exercise I tried with InterSystems IRIS Interoperability.
The sample shows how to use IRIS Interoperability with data transformation component to change the data in CSV file.

The story is below.
Hi folks!
I'm playing with IRIS interoperability at the moment and it turned out that Data Transformation cannot be the element of production by itself.
It can be called either from data rule or from business process.
But why?
What if I just want to change the message with the transformation and transfer the message somewhere else? Why the overhead with Rule or Business process?
Hi Developers!
Here is the score of technical bonuses for participants' applications in the InterSystems Developer Tools Contest 2023!
Here're the technology bonuses for the InterSystems Developer Tools Contest 2023 that will give you extra points in the voting:
See the details below.
Embedded Python - 3 points
Use Embedded Python in your application and collect 3 extra points. You'll need at least InterSystems IRIS 2021.2 for it.
Hi Interoperability experts!
I'm into interoperability now with data transformations and I wonder: how can I use DTLs?
I've created one that transform Ens.Request into Ens.Response. How can I use it now in the production?
I'm trying to add the business process expecting to see it available in the list but it seems it is not the case.
Tried documentation and it doesn't say either what to do after creation the DTL. If it is obvious could you please help?

Hi folks!
Have a question for those who are masters of interoperability.
I have a basic task of having one CSV with some data. I need to transform one column in the initial dataset and get the new csv with the same form.
What's the best approach with Interoperability?
Should I user record mapper?
Should I use streams, objects?
What is the best practice?
Hi InterSystems Developers!
Recently I've updated the FHIR dev template so that it now publishes an IPM package fhir-server that makes the setup of InterSystems FHIR server a trivial manual or automatic or programmatic procedure one command long.
Please see below how you can benefit from it.

TLDR
USER>zpm "install fhir-server"
All the details below.
Hi folks!
What is the way to know if I'm on IRIS for Health not just IRIS?
$ZV doesn't show any difference:
IRISAPP>w $zv IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2022.2 (Build 368U) Fri Oct 21 2022 17:18:04 EDT
Hi Developers!
Here is the score of technical bonuses for participants' applications in the InterSystems IRIS for Health Contest: FHIR for Women's Health!
Hi Developers!
Here're the technology bonuses for the InterSystems Women’s Health FHIR Contest 2022 that will give you extra points in the voting:
See the details below.
Hi developers!
Let me share with you a minimal embedded python template, that I can recommend as a starting point for any general project with InterSystems IRIS that will use embedded python.
Features:
Let's discuss the features below!
Hi Devs!
Is there a way to get a Global that contains pesistence data for a class?
In early versions of IRIS it was classname_"D", like ^Sample.PersonD. Now, at least in IRIS 2022.1 it is something random.
Hi developers!
Those who code IRIS solutions in VSCode using Docker often use the convenient ObjectScript menu, which contains links to Management Portal, Class Reference, Unittest portal, Productions, etc.
While drilling down to a Dev Container to code Embedded Python there is no such option, at least within my settings:

So I don't know how to connect to it.
Thoughts?
Hi folks!
I'm playing with Embedded python with IRIS trying to do some 'hello-world' exercises.
I'm running IRIS in container and have the following python code:
# Program to test coding with IRIS
print('Hello World')
# Run IRIS Class Method
import iris
print(iris.cls('dc.sample.ObjectScript')).Test()
So, when I execute it, I get the following:
$ /usr/irissys/bin/irispython /irisrun/repo/python/app.py
Hello World
Traceback (most recent call last):
File "/irisrun/repo/python/app.py", line 7, in <module>
import iris
File "/usr/irissys/lib/python/iris.Hi, devs!
What's the way to call the methods of %SYSTEM class from python?
I tried this way:
print(iris.cls('_SYSTEM.OBJ').Version())
and getting an error: Traceback (most recent call last): File "<input>", line 1, in <module> RuntimeError: iris.class: error finding class
Here is how it works in ObjectScript:
USER>w ##class(%SYSTEM.OBJ).Version()
InterSystems IRIS Version 2022.1.0.209
USER>
Thoughts?
Hi Devs!
For me, one of the most painful things about ObjectScript is ##class(Class).Method() typing to call a class method in code or in a terminal. I even submitted an idea to simplify it in ObjectScript.
But! There is a new feature in VSCode ObjectScript that was just introduced to the plugin - Copy Invocation!
Just hover Copy Invocation linkabove every classmethod in a code, click on it and the invocation is copied to the buffer:

Paste it anywhere you want it to execute!
USER>w ##class(dc.sample.ObjectScript).Test()Bazinga!
Here is the video that shows how it works.
Hi, devs!
Consider you have an arbitrary global with an unknown amount of indexes.
How to print all the values to the terminal with Embedded Python?
Folks!
Could you please share any best practices on how to debug Embedded Python code?
Given I have the following class method:
ClassMethod HideShip() As %Status [ Language = python ]
{
import iris
shipsgl=iris.gref(iris.cls(__name__)._GetParameter("BoardStorage"))
shipsgl.kill()
from random import Random
board=iris.cls(__name__)._GetParameter("BoardRange")
x=random.randint(0,board+1)
y=random.randint(0,board+1)
shipsgl.set([x,y],1)
}
And when I run it shows the following error:
USER>d ##class(eshvarov.sample.SeaBattle.GamePython).
Hi folks!
I'm working with a global via Embedded Python as a class method. I init the handler for a global via:
gl=iris.gref("^Global")What is the way to check the value at index ^Global("x","y")? E.g.:
In ObjectScript I'd do the following:
set result=$data(^Global("x","y"))How do I do the same in Embedded Python?
I checked the documentation, but haven't found an answer.
Hi, ObjectScript experts!
I know that there are auto-generated getter and setter methods for class properties in ObjectScript.
Are there auto-generated getter methods for class parameters?
Hi, devs!
In ObjectScript I can refer to a class parameter as:
write ..#ParameterName
How do I do the same in Embedded Python?
Hi folks!
How can I refer to a classmethod of the same class while coding another classmethod with Embedded python?
I know that I can call it with iris.cls(classname).MethodName(), but it's more cumbersome even comparing with ObjectScript, where I can call ..MethodName().
Compare ObjectScript:
do ..SetupGame()and the same call in EmbeddedPython:
iris.cls('eshvarov.sample.SeaBattle.GamePython').SetupGame()Thoughts?
Hi folks!
We have a bunch of templates on OEX that provide a handy foundation for building a particular application with IRIS. And the basic principle of each and every template is that we take vanilla IRIS images, load code, and files into the image using Dockerfile, and create a new docker image as a solution. And then we develop running this image and rebuilding it when returning to development.
Some developers ask me why we need to build the docker image to work with the code. Indeed, if at the end of the day I need to develop a ZPM package and not a docker image why don't run the vanilla image and load the code and everything in it?
The problem I have with the building image approach is that often I can wait a lot to build an image and it fails on some Objectscript problem in the source that I cannot fix as the image is not building. and
Any thoughts? How do you develop with docker?
Hi developers!
Here is the score of technical bonuses for participants' applications in the InterSystems Interoperability Contest: Building Sustainable Solutions 2022!
Hi folks!
Suppose I have a production in which I added a few components and I want to export its components into files for source control. How do I do that?
I know that there is an option for manual export in VSCode. But how can I make it programmatically?
Thanks!
Hi folks!
It's not an innovation, but often I saw not a very informative Error page for CSP apps and got it for myself. Something like that:

Hi Developers!
Here're the technology bonuses for the InterSystems "Sustainability" Interoperability Contest 2022 that will give you extra points in the voting:
See the details below.

Hello fellow developers!
When developing with ObjectScript Package Manager, one crucial thing is the package version, which we place in the module.xml file. When we add changes to the package and are ready to publish a new version of the package in the registry, we also need to increase the version number. This is clear, but it is annoying, and we can often forget to do that.
This small article will help you to automate such a process.
