Clear filter
Announcement
Anastasia Dyubaylo · Feb 22, 2023
Hey Developers,
Enjoy watching the new video on InterSystems Developers YouTube:
⏯ Real-Life Experiences Migrating a Caché Application Portfolio to InterSystems IRIS @ Global Summit 2022
Learn about AppServices' experiences migrating our collection of applications to InterSystems IRIS. We'll cover migration-related topics at the OS, platform, and application levels.
Presenters:
🗣 @Matthew.Giesmann, Developer, Application Services, InterSystems🗣 @Wangyi.Huang, Technical Specialist, Application Services, InterSystems
Enjoy and stay tuned! 👍
Announcement
Anastasia Dyubaylo · Mar 29, 2023
Hey Community,
We are glad to invite you to the upcoming kick-off webinar for the InterSystems IRIS Cloud SQL and IntegratedML Contest.
In this webinar, we'll present you the arena for the next contest: our new cloud offerings InterSystems IRIS Cloud SQL and InterSystems IRIS Cloud IntegratedML. We'll describe what these SaaS offers are all about and walk you through setting up your account and log on to the web portal, which includes an intuitive user interface to load data, create and train machine learning models, and then evaluate those models on test data. For the contest environment, we have included sample datasets so you can go from account signup to your first SQL query and IntegratedML model in a matter of seconds.
Date & Time: Monday, April 3 – 11 am EDT | 5 pm CEST
Speakers: 🗣 @Steven.LeBlanc, InterSystems Product Specialist, Cloud Operations🗣 @Thomas.Dyar, InterSystems Product Specialist, Machine Learning🗣 @Benjamin.DeBoe, InterSystems Product Manager🗣 @Dean.Andrews2971, InterSystems Head of Developer Relations 🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
>> Register here << Hi Devs!Please join the "[Kick-off Webinar] InterSystems IRIS Cloud SQL and IntegratedML Contest" in 20 minutes!➡️ Follow this link - https://us02web.zoom.us/j/9822194974?pwd=bnZBdFhCckZ6c0xOcW5GT1lLdnAvUT09Or join our➡️ YouTube stream: https://youtube.com/live/ZzlK9vc_jO0?feature=share
Announcement
Anastasia Dyubaylo · Apr 25, 2023
Hi Community,
Let's meet together at the online meetup with the winners of the InterSystems IRIS Cloud SQL and IntegratedML Contest – a great opportunity to have a discussion with the InterSystems Experts team as well as our contestants.
Winners' demo included!
Date & Time: Thursday, April 27, 12 pm EDT | 6 pm CEST
Join us to learn more about winners' applications and to have a talk with our experts.
➡️ REGISTER TODAY
See you all at our virtual meetup!
Announcement
Anastasia Dyubaylo · Sep 13, 2022
Hi Developers,
We have another great opportunity for you to join us in Germany for a Conference for Data Scientists, Data Engineers and Data Teams that will be held in Karlsruhe!
⏱ Date: 20 – 21 September 2022
📍Venue: IHK Karlsruhe, Lammstr. 13-17, 76133 Karlsruhe, Germany
Our speaker Markus Mechnich will be talking about (Smart) Data Fabrics during the session titled “Putting an end to data silos: making better decisions, pain-free”. He will discuss the challenge of accessing and merging different systems that store data that is rarely homogeneous and/or synchronous enough for a comprehensive evaluation and using it to make sound business decisions.
✅ REGISTER HERE
We look forward to welcoming you to Karlsruhe!
Article
Kate Lau · Mar 15, 2023
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 Manageryou 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
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 my EC2
I use the command scp to upload the image to my cloud
Make sure docker and docker compose are installed
If not, please reference to the following link
https://docs.docker.com/engine/install/ubuntu/
Untar the image file
tar zpxvf IAM-3.0.2.0-4.tar.gz
Load the image into docker
sudo docker load -i iam_image.tar
Run the iam-setup.sh
source ./iam-setup.sh
Edit the file : docker-compose.yml
In order to let us visit the IAM UI from the environment outside the EC2, replace the localhost by the EC2 public address in the parameter KONG_PORTAL_GUI_HOST and KONG_ADMIN_GUI_URL
vi docker-compose.yml
Start the container
sudo docker compose up -d
Check the IAM UI
You can access the UI of the IAM by the following link
http://yourEC2publicAddress:8002/overview
In fact I encountered the error of unable to pass the variable to
"ISC_IRIS_URL", "ISC_IAM_IAMGE","ISC_CA_CERT"
I suspect that the iam-setup.sh now working very well
As a work around, I hard code the variables in the docker-compose.yml
and run the
sudo docker compose up -d
again
Great article,Kate! Could you also help put this on CN DC? Thx a lot! Michael
Announcement
Larry Finlayson · Nov 16, 2022
Managing InterSystems Servers December 5-9, 2022 9:00am-5:00pm US-Eastern Time (EST)
This five-day course teaches system and database administrators how to install, configure and secure InterSystems server software, configure for high availability and disaster recovery, and monitor the system. Students also learn troubleshooting techniques.
This course is applicable to both InterSystems IRIS and Caché. Although the course is mostly platform independent, students can complete the exercises using either Windows or Ubuntu.
Self Register Here
Discussion
Mathew Lambert · Sep 22, 2021
We found out recently that when compiling an objectscript class that has a java projection, using the -d flag, it ignores it for the projection part:
After talking with intersystems luckily the've provided a solution that will be included in the next release:
Announcement
Georgina Finneran · Aug 12, 2020
All Interested Applicants Please Apply Here : https://www.indeed.com/job/remote-software-engineer-must-have-intersystems-or-iris-experience-cb27a40d004e96ec
RxMx is a fast-growing company at the intersection of technology and healthcare. Founded by four specialist physicians, our driving philosophy is developing medical systems that ensure the safe delivery of complex and sophisticated medicines, with minimal burden on both physicians and patients. We supply innovative technology solutions to our pharmaceutical clients that improve patient safety, reduce the complexity in drug launch and provide a platform for real world data.
We are looking for a Software Engineer to enhance, maintain and support new and existing software products and solutions. This role will work closely with clinical staff and product managers to product requirement specifications and work closely with other developers and QA Engineers to product high quality working software.
Essential Functions:
Participate in SDLC that leverages best practice and supports the design and delivery of sophisticated clinical applications.
Support the conversion of business systems and functional requirements into working software in established timelines and using best practices.
Work with clinical staff and product managers to produce requirement specifications and establish timelines for delivery.
Proactive and create thinking to problem solving to develop out of the box products. As well as Enhancing, maintaining, and supporting existing solutions.
Create and maintain appropriate documentation for software produced.
Correct errors by making appropriate changes and then rechecking the program to ensure that the desired results are produced.
Conduct trial runs of programs and software applications to be sure they will produce the desired information and that the instructions are correct.
Compile and write documentation of program development and subsequent revisions, inserting comments in the coded instructions so others can understand the program.
Clearly communicate and consult with managerial, engineering, and technical personnel to clarify program intent, identify problems, and suggest changes.
Conduct code reviews, and approve or reject pull requests.
Participate in capacity planning, assignment of work, team meetings and stand ups.
Qualifications:
Degree in Computer Science or related technical field and/or 5+ years of related practical work experience.
Experience with source control. BitBucket experience beneficial.
Experience with Atlassian tools such as JIRA and Confluence.
Experience with Agile methodologies.
Must be independent yet a team player with great communication skills.
Must be a go-getter, that can make things happen in a high paced environment.
Experience in Healthcare IT working with HL7 and other EMR and Lab integrations.
Experience with full stack development, with Angular experience preferred.
Experience with Intersystems technology is required.
To be successful in this role, you must have/be:
Ability to effectively identify what is important and prioritize competing projects.
Ability to problem solve in a resourceful and data-driven manner while working in a fast-paced, demanding environment.
A self-driven, results-oriented problem solver with a positive outlook.
We are proud of our collaborative culture and our dedicated team driven to improve treatment options for patients. Our company offers great benefits including flexible hours, remote work, and fun perks such as an extra vacation day on your birthday. While our offices are in Sydney, New York, and Berlin, we maintain the atmosphere of a small, close-knit company with employees who enjoy being social.
Further information on our company background and mission can be found at: https://rxmxcorp.com/
RxMx, Inc. provides equal employment opportunity to all individuals regardless of their race, color, creed, religion, gender, age, sexual orientation, national origin, disability, veteran status, or any other characteristic protected by federal, state or local law.
All Interested Applicants Please Apply Here : https://www.indeed.com/job/remote-software-engineer-must-have-intersystems-or-iris-experience-cb27a40d004e96ec
Article
Guillaume Rongier · Dec 14, 2021
# Iris-python-template
Template project with various Python code to be used with InterSystems IRIS Community Edition with container.
Featuring :
* Notebooks
* Embedded Python Kernel
* ObjectScript Kernel
* Vanilla Python Kernel
* Embedded Python
* Code example
* Flask demo
* IRIS Python Native APIs
* Code example

# 2. Table of Contents
- [1. iris-python-template](#1-iris-python-template)
- [2. Table of Contents](#2-table-of-contents)
- [3. Installation](#3-installation)
- [3.1. Docker](#31-docker)
- [4. How to start coding](#4-how-to-start-coding)
- [4.1. Prerequisites](#41-prerequisites)
- [4.1.1. Start coding in ObjectScript](#411-start-coding-in-objectscript)
- [4.1.2. Start coding with Embedded Python](#412-start-coding-with-embedded-python)
- [4.1.3. Start coding with Notebooks](#413-start-coding-with-notebooks)
- [5. What's inside the repository](#5-whats-inside-the-repository)
- [5.1. Dockerfile](#51-dockerfile)
- [5.2. .vscode/settings.json](#52-vscodesettingsjson)
- [5.3. .vscode/launch.json](#53-vscodelaunchjson)
- [5.4. .vscode/extensions.json](#54-vscodeextensionsjson)
- [5.5. src folder](#55-src-folder)
- [5.5.1. src/ObjectScript](#551-srcobjectscript)
- [5.5.1.1. src/ObjectScript/Embedded/Python.cls](#5511-srcobjectscriptembeddedpythoncls)
- [5.5.1.2. src/ObjectScript/Gateway/Python.cls](#5512-srcobjectscriptgatewaypythoncls)
- [5.5.2. src/Python](#552-srcpython)
- [5.5.2.1. src/Python/embedded/demo.cls](#5521-srcpythonembeddeddemocls)
- [5.5.2.2. src/Python/native/demo.cls](#5522-srcpythonnativedemocls)
- [5.5.2.3. src/Python/flask](#5523-srcpythonflask)
- [5.5.2.3.1. How it works](#55231-how-it-works)
- [5.5.2.3.2. Launching the flask server](#55232-launching-the-flask-server)
- [5.5.3. src/Notebooks](#553-srcnotebooks)
- [5.5.3.1. src/Notebooks/HelloWorldEmbedded.ipynb](#5531-srcnotebookshelloworldembeddedipynb)
- [5.5.3.2. src/Notebooks/IrisNative.ipynb](#5532-srcnotebooksirisnativeipynb)
- [5.5.3.3. src/Notebooks/ObjectScript.ipynb](#5533-srcnotebooksobjectscriptipynb)
# 3. Installation
## 3.1. Docker
The repo is dockerised so you can clone/git pull the repo into any local directory
```
git clone https://github.com/grongierisc/iris-python-template.git
```
Open the terminal in this directory and run:
```
docker-compose up -d
```
and open then http://localhost:8888/tree for Notebooks
Or, open the cloned folder in VSCode, start docker-compose and open the URL via VSCode menu:
# 4. How to start coding
## 4.1. Prerequisites
Make sure you have [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [Docker desktop](https://www.docker.com/products/docker-desktop) installed.
This repository is ready to code in VSCode with ObjectScript plugin.
Install [VSCode](https://code.visualstudio.com/), [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker) and [ObjectScript](https://marketplace.visualstudio.com/items?itemName=daimor.vscode-objectscript) plugin and open the folder in VSCode.
### 4.1.1. Start coding in ObjectScript
Open /src/ObjectScript/Embedded/Python.cls class and try to make changes - it will be compiled in running IRIS docker container.
### 4.1.2. Start coding with Embedded Python
The easiest way is to run VsCode in the container.
To attach to a Docker container, either select **Remote-Containers: Attach to Running Container...** from the Command Palette (`kbstyle(F1)`) or use the **Remote Explorer** in the Activity Bar and from the **Containers** view, select the **Attach to Container** inline action on the container you want to connect to.

Then configure your python interpreter to /usr/irissys/bin/irispython
### 4.1.3. Start coding with Notebooks
Open this url : http://localhost:8888/tree
Then you have access to three different notebooks with three different kernels.
* Embedded Python kernel
* ObjectScript kernel
* Vanilla python3 kernel
# 5. What's inside the repository
## 5.1. Dockerfile
A dockerfile which install some python dependancies (pip, venv) and sudo in the container for conviencies.
Then it create the dev directory and copy in it this git repository.
It starts IRIS and imports Titanics csv files, then it activates **%Service_CallIn** for **Python Shell**.
Use the related docker-compose.yml to easily setup additional parametes like port number and where you map keys and host folders.
This dockerfile ends with the installation of requirements for python modules.
The last part is about installing jupyter notebook and it's kernels.
Use .env/ file to adjust the dockerfile being used in docker-compose.
## 5.2. .vscode/settings.json
Settings file to let you immedietly code in VSCode with [VSCode ObjectScript plugin](https://marketplace.visualstudio.com/items?itemName=daimor.vscode-objectscript)
## 5.3. .vscode/launch.json
Config file if you want to debug with VSCode ObjectScript
[Read about all the files in this article](https://community.intersystems.com/post/dockerfile-and-friends-or-how-run-and-collaborate-objectscript-projects-intersystems-iris)
## 5.4. .vscode/extensions.json
Recommendation file to add extensions if you want to run with VSCode in the container.
[More information here](https://code.visualstudio.com/docs/remote/containers)

This is very useful to work with embedded python.
## 5.5. src folder
This folder is devied in two parts, one for ObjectScript example and one for Python code.
### 5.5.1. src/ObjectScript
Different piece of code that shows how to use python in IRIS.
#### 5.5.1.1. src/ObjectScript/Embedded/Python.cls
All comments are in french to let you impove your French skills too.
```objectscript
/// Embedded python example
Class ObjectScript.Embbeded.Python Extends %SwizzleObject
{
/// HelloWorld with a parameter
ClassMethod HelloWorld(name As %String = "toto") As %Boolean [ Language = python ]
{
print("Hello",name)
return True
}
/// Description
Method compare(modèle, chaine) As %Status [ Language = python ]
{
import re
# compare la chaîne [chaîne] au modèle [modèle]
# affichage résultats
print(f"\nRésultats({chaine},{modèle})")
match = re.match(modèle, chaine)
if match:
print(match.groups())
else:
print(f"La chaîne [{chaine}] ne correspond pas au modèle [{modèle}]")
}
/// Description
Method compareObjectScript(modèle, chaine) As %Status
{
w !,"Résultats("_chaine_","_modèle_")",!
set matcher=##class(%Regex.Matcher).%New(modèle)
set matcher.Text=chaine
if matcher.Locate() {
write matcher.GroupGet(1)
}
else {
w "La chaîne ["_chaine_"] ne correspond pas au modèle ["_modèle_"]"
}
}
/// Description
Method DemoPyhtonToPython() As %Status [ Language = python ]
{
# expression régulières en python
# récupérer les différents champs d'une chaîne
# le modèle : une suite de chiffres entourée de caractères quelconques
# on ne veut récupérer que la suite de chiffres
modèle = r"^.*?(\d+).*?$"
# on confronte la chaîne au modèle
self.compare(modèle, "xyz1234abcd")
self.compare(modèle, "12 34")
self.compare(modèle, "abcd")
}
Method DemoPyhtonToObjectScript() As %Status [ Language = python ]
{
# expression régulières en python
# récupérer les différents champs d'une chaîne
# le modèle : une suite de chiffres entourée de caractères quelconques
# on ne veut récupérer que la suite de chiffres
modèle = r"^.*?(\d+).*?$"
# on confronte la chaîne au modèle
self.compareObjectScript(modèle, "xyz1234abcd")
self.compareObjectScript(modèle, "12 34")
self.compareObjectScript(modèle, "abcd")
}
/// Description
Method DemoObjectScriptToPython() As %Status
{
// le modèle - une date au format jj/mm/aa
set modèle = "^\s*(\d\d)\/(\d\d)\/(\d\d)\s*$"
do ..compare(modèle, "10/05/97")
do ..compare(modèle, " 04/04/01 ")
do ..compare(modèle, "5/1/01")
}
}
```
* HelloWorld
* Simple function to say Hello in python
* It uses the OjectScript wrapper with the tag [ Language = python ]
* compare
* An python function that compare a string with a regx, if their is a match then print it, if not print that no match has been found
* compareObjectScript
* Same function as the python one but in ObjectScript
* DemoPyhtonToPython
* Show how to use a python function with python code wrapped in ObjectScript
```objectscript
set demo = ##class(ObjectScript.Embbeded.Python).%New()
zw demo.DemoPyhtonToPython()
```
* DemoPyhtonToObjectScript
* An python function who show how to call an ObjecScript function
* DemoObjectScriptToPython
* An ObjectScript function who show how to call an python function
#### 5.5.1.2. src/ObjectScript/Gateway/Python.cls
An ObjectScript class who show how to call an external phyton code with the gateway functionnality.
In this example python code is **not executed** in the same process of IRIS.
```objectscript
/// Description
Class Gateway.Python
{
/// Demo of a python gateway to execute python code outside of an iris process.
ClassMethod Demo() As %Status
{
Set sc = $$$OK
set pyGate = $system.external.getPythonGateway()
d pyGate.addToPath("/irisdev/app/src/Python/gateway/Address.py")
set objectBase = ##class(%Net.Remote.Object).%New(pyGate,"Address")
set street = objectBase.street
zw street
Return sc
}
}
```
### 5.5.2. src/Python
Different piece of python code that shows how to use embedded python in IRIS.
#### 5.5.2.1. src/Python/embedded/demo.cls
All comments are in french to let you impove your French skills too.
```python
import iris
person = iris.cls('Titanic.Table.Passenger')._OpenId(1)
print(person.__dict__)
```
First import iris module that enable embedded python capabilities.
Open an persistent class with cls function from iris module.
Note that all `%` function are replaced with `_`.
To run this example you have to use iris python shell :
```shell
/usr/irissys/bin/irispython /opt/irisapp/src/Python/embedded/demo.py
```
#### 5.5.2.2. src/Python/native/demo.cls
Show how to use native api in python code.
```python
import irisnative
# create database connection and IRIS instance
connection = irisnative.createConnection("localhost", 1972, "USER", "superuser", "SYS", sharedmemory = False)
myIris = irisnative.createIris(connection)
# classMethod
passenger = myIris.classMethodObject("Titanic.Table.Passenger","%OpenId",1)
print(passenger.get("name"))
# global
myIris.set("hello","myGlobal")
print(myIris.get("myGlobal"))
```
To import irisnative, you have to install the native api wheels in your python env.
```shell
pip3 install /usr/irissys/dev/python/intersystems_irispython-3.2.0-py3-none-any.whl
```
Then you can run this python code
```shell
/usr/bin/python3 /opt/irisapp/src/Python/native/demo.py
```
Note that in this case a connection is made to iris database, this mean, **this code is executed in a different thread than the IRIS one**.
#### 5.5.2.3. src/Python/flask
A full demo of the combiantion between embedded python and the micro framework flask.
You can test this end point :
```
GET http://localhost:4040/api/passengers?currPage=1&pageSize=1
```
##### 5.5.2.3.1. How it works
In order to use embedded Python, we use `irispython` as a python interepreter, and do:
```python
import iris
```
Right at the beginning of the file.
We will then be able to run methods such as:

As you can see, in order to GET a passenger with an ID, we just execute a query and use its result set.
We can also directly use the IRIS objects:

Here, we use an SQL query to get all the IDs in the table, and we then retreive each passenger from the table with the `%OpenId()` method from the `Titanic.Table.Passenger` class (note that since `%` is an illegal character in Python, we use `_` instead).
Thanks to Flask, we implement all of our routes and methods that way.
##### 5.5.2.3.2. Launching the flask server
To launch the server, we use `gunicorn` with `irispython`.
In the docker-compose file, we add the following line:
````yaml
iris:
command: -a "sh /opt/irisapp/server_start.sh"
````
That will launch, after the container is started (thanks to the `-a` flag), the following script:
````bash
#!/bin/bash
cd ${SRC_PATH}/src/Python/flask
${PYTHON_PATH} -m gunicorn --bind "0.0.0.0:8080" wsgi:app &
exit 1
````
With the environment variables defined in the Dockerfile as follows:
````dockerfile
ENV PYTHON_PATH=/usr/irissys/bin/irispython
ENV SRC_PATH=/opt/irisapp/
````
### 5.5.3. src/Notebooks
Three notebooks with three different kernels :
* One Python3 kernel to run native APIs
* One Embedded Python kernel
* One ObjectScript kernel
Notebooks can be access here http://localhost:8888/tree
#### 5.5.3.1. src/Notebooks/HelloWorldEmbedded.ipynb
This notebook uses IRIS embedded python kernel.
It shows example to open and save persistent classes and how to run sql queries.
#### 5.5.3.2. src/Notebooks/IrisNative.ipynb
This notebook uses vanilla python kernel.
It shows example run iris native apis.
#### 5.5.3.3. src/Notebooks/ObjectScript.ipynb
This notebook uses ObjectScript kernel.
It shows example to run ObjectSCript code and how to use embedded pythoon in ObjectScript.
Hi @Guillaume.Rongier7183 !
I tried to use pip3 in the app and failed. I see it is being installed during the image build, but cannot run it later. What I'm doing wrong? Hi Evgeny,
I confirm that `irispip` is not working, if you want to install python package you shall use `pip3` or `/usr/irissys/bin/irispython -m pip` Great article, @Guillaume.Rongier7183 Thank you very much! In UNIX, irispython -m pip install <package> will give the <package> files group ownership that's appropriate for your IRIS instance.
Announcement
Olga Zavrazhnova · Dec 9, 2023
Hi Developers,
We'd like to highlight some outstanding projects created during the European Healthcare Hackathon 2023 in Prague. Participants were presented with nine real-world healthcare challenges by IKEM and AstraZeneca. InterSystems introduced to the participants an opportunity to use the FHIR repository and perform FHIR availability into their solutions by providing FHIR cloud services on AWS.
Meet the winners of our challenge:
1st place Čarodějové (PathoSync)
"The PathoSync software is a solid base for complex pathologist platforms. With the use of custom mapping, any laboratory can project their data into FHIR7 standard, which soon will be mandatory worldwide. This makes the digitalization process smoother. The connection with InterSystems assures quality and implements many healthcare features. Furthermore, the GDPR norms are strictly followed using the FHIR server based in Europe, so the usage of software follows the European standards."
Project details | Video presentation | GitHub link 1 link 2
2nd place ICU SPYEYES (Vital Vision)
"The ICU requires a system to automatically record video loops capturing key activities like patient and personnel movements. This system will allow retrospective annotations by humans, pre-annotate and identify persons, and optionally blur patient faces. It aims to collect data for developing future patient surveillance algorithms in hospitals.
We've developed a system for the ICU that utilizes motion detection, LLM, and standard CV techniques for video analysis. It builds an annotated video database essential for training algorithms focused on patient monitoring. Our solution generates structured reports and videos shared via FHIR, ensuring efficient data handling. Quality is enhanced by manual review through the open-source platform CVAT, optimizing our real-time alarm system for monitoring patient recovery."
Project details | Video Presentation | GitHub
3rd place VariantCall (PathoX)
"End-to-end solution PathoX is a platform for easy data ingestion, feature extraction and mapping to enhance pathologists’ workflow. An importer workflow supports the mapping of columns and notifies users about missing information. We use FHIR to guarantee future interoperability and compliance with future legislation. Pathologists can also highlight and leave comments on the data, as in their usual workflows, and look at analytics on all files."
Project details | Video Presentation | GitHub
Well done, congratulations!We are looking forward to seeing how your projects are developing into innovative and impactful startups!
Announcement
Ali Nasser · Oct 30, 2023
Hello Everyone,
The Certification Team of InterSystems Learning Services is in the process of developing an exam focusing on creating and working with TrakCare Reports, and we need input from our InterSystems TrakCare community. Your input will be used to evaluate and establish the contents of the exam.
How do I provide my input? We will present you with a list of job tasks, and you will rate them on their importance as well as other factors.
How much effort is involved? It takes about 10-15 minutes to fill out the survey.
How can I access the survey? You can access it here:
InterSystems TrakCare Reports Specialist
NOTE:
Survey doesn't work on mobile devices
Survey will close on January 2nd, 2024
Here are the exam title and the definition:
InterSystems TrakCare Reports Specialist
An IT specialist who:
Uses Logi designer to design and author Intersystems reports
Set up, test and support InterSystems Reports in TrakCare
Tests and supports reports in TrakCare.
Works with stored procedure developers.
Knows how to create and edit report layouts in TrakCare.
At least 3 months full-time experience with creating reports using InterSystems Reporting or Logi Designer along with basic knowledge of TrakCare.
Thank you,
Ali Nasser, Certification Exam Developer, InterSystems
Announcement
Anastasia Dyubaylo · May 25, 2020
Hey Developers,
The recording of the Kick-Off Webinar for InterSystems IRIS Native API Online Programming Contest is now available on InterSystems Developers YouTube:
Speakers: @Robert.Kuszewski, InterSystems Product Manager@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
The topic of this webinar is dedicated to the InterSystems IRIS Native API programming contest. In this competition, we would like to see what kinds of interesting applications can be built using the Native API.
This video describes the Native API Contest Template that demonstrates all 4 NativeAPIs setup and work. This template will help you to get started with the contest.
⬇️ Download the Native API Contest Template
We hope that you’ll enjoy the new APIs and have fun hacking!
Stay tuned! 👍🏼 I was unable to attend so I took the recording. The content was important and good to understand.But the shared desktops are all unreadable in the video. Hi Robert,
Please try again. 1080 HD is already available. 😊 Sorry my fault: my quality was set back to 240 (!) as I was watching High Noot wich Garry Cooper last time
with 1080 HD it is excellent Great! I was unable to attend too. I have some points with the IRIS Native API documentation whats the best channel to report? Good luck for all contestants Hi Renato!
Thanks for participating in the contest!
You can submit a new question here on Developers Community, or ask in Discord, or report on the problem to support@intersystems.com
Announcement
Andreas Dieckow · Jan 15, 2020
Beginning with InterSystems IRIS 2020.1, the minimum required version for AIX is AIX 7.1 TL4.
The InterSystems IRIS installer will detect if the required IBM XL C filesets are installed before continuingwith the installation. Does it need to be the 16.1 (or greater) XL C fileset (we have a lesser installed)? And just the runtime or the compilation as well? Verifying for our systems' guys. 16.1 or greater and just the runtime
Question
Aman · Jul 2, 2024
Hello Community,
I'm a beginner and currently working on a project to convert CCDA files to FHIR using InterSystems IRIS. I have developed a web form to upload CCDA files, and I'm attempting to convert the uploaded CCDA files to FHIR. However, I am encountering an issue where the conversion process results in an empty entry.Here's the Output it displays on HTML page:
Size of CCDA Stream: 74152
vR4
{"resourceType":"Bundle","type":"transaction","entry":[]}
Here is my code: CCDtoFHIR.csp
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CCDA to FHIR Converter</title>
</head>
<body>
<section>
<div>
<p>CCDA to FHIR Converter</p>
<div>
<div>
<h1>Upload CCDA File</h1>
<form id="fileUploadForm" enctype="multipart/form-data" method="post" action="CCDtoFHIR.csp">
<div>
<label for="file">Upload CCDA File</label>
<input type="file" name="file" id="file" required>
</div>
<div>
<button type="submit">Upload</button>
</div>
</form>
<csp:if condition='($data(%request.MimeData("file",1)))'>
<hr><br>
<b>FHIR Conversion Result:</b><br>
<ul>
<script language="cache" runat="server">
try {
// Read the uploaded file stream
set ccdaStream = ##class(%Stream.TmpBinary).%New()
do ccdaStream.CopyFrom(%request.MimeData("file",1))
// Ensure the stream is an object
if ('$isobject(ccdaStream)) {
write "Failed to read uploaded file stream"
quit
}
// Debug: Output the size of the CCDA stream
write "Size of CCDA Stream: ", ccdaStream.Size, "<br>"
// Read some content from the stream for debugging
do ccdaStream.Rewind()
// Determine the appropriate XSLT transform based on the document type
set xsltTransform = "SDA3/CCDA-to-SDA.xsl" // Default to CCDA-to-SDA
// Convert CCDA to SDA3 using HealthShare's built-in methods
set tTransformer = ##class(HS.Util.XSLTTransformer).%New()
set tSC = tTransformer.Transform(ccdaStream, xsltTransform, .tSDA3Stream)
if $$$ISERR(tSC) {
write "Transformation to SDA3 failed", "<br>"
quit
}
set sdaStream = ##class(%Stream.TmpBinary).%New()
do tSDA3Stream.Rewind()
do sdaStream.CopyFrom(tSDA3Stream)
// Convert SDA3 to FHIR using HealthShare's built-in methods
set fhirStream = ##class(%Stream.TmpBinary).%New()
set SDA3ToFHIRObject = ##class(HS.FHIR.DTL.Util.API.Transform.SDA3ToFHIR).TransformStream(tSDA3Stream, "HS.SDA3.Container", "R4")
// Check if the transformation returned a valid bundle
if '$isobject(SDA3ToFHIRObject.bundle) {
write "Failed to transform SDA3 to FHIR", "<br>"
quit
}
// Serialize the FHIR bundle to JSON
do SDA3ToFHIRObject.bundle.%ToJSON(fhirStream)
do fhirStream.Rewind()
// Write the FHIR data to the response
while ('fhirStream.AtEnd) {
write fhirStream.ReadLine(), "<br>"
}
} catch (ex) {
// Handle exceptions
write "Error during conversion: ", ex.DisplayString(), "<br>"
}
</script>
</ul>
</csp:if>
</div>
</div>
</div>
</section>
</body>
</html>
Problem Description:
The CCDA file uploads successfully, and I can see the size of the uploaded stream.
The transformation to SDA3 seems to work fine without errors.
The conversion from SDA3 to FHIR appears to be successful, but the resulting FHIR bundle is empty.
Debugging Steps:
I've ensured that the CCDA stream is read correctly.
I confirmed that the transformation to SDA3 does not produce any errors.
I attempted to output some content from the SDA3 stream, which seems fine.
The FHIR transformation does not produce any errors, but the resulting FHIR bundle is empty.
Questions:
What could be the reason for obtaining an empty FHIR bundle after the transformation?
Are there any additional debugging steps or checks I can perform to identify the issue?
Is there a specific configuration or additional steps required for the HS.FHIR.DTL.Util.API.Transform.SDA3ToFHIR transformation process?
Using your code (simplified by me) from terminal it works fine using a sample CCDA from here.
set ccdaStream = ##class(%Stream.FileBinary).%OpenId("c:\temp\CCDA_CCD_b1_Ambulatory_v2.xml")
write "Size of CCDA Stream: ", ccdaStream.Size,!
set xsltTransform = "SDA3/CCDA-to-SDA.xsl"
set tTransformer = ##class(HS.Util.XSLTTransformer).%New()
set tSC = tTransformer.Transform(ccdaStream, xsltTransform, .sdaStream)
if 'tSC write "Transformation to SDA3 failed with error ",$system.Status.GetErrorText(tSC),!
set fhirStream = ##class(%Stream.TmpBinary).%New()
set SDA3ToFHIRObject = ##class(HS.FHIR.DTL.Util.API.Transform.SDA3ToFHIR).TransformStream(sdaStream, "HS.SDA3.Container", "R4")
if '$isobject(SDA3ToFHIRObject.bundle) write "Failed to transform SDA3 to FHIR",!
do SDA3ToFHIRObject.bundle.%ToJSON()
The result/output is a pretty long JSON FHIR bundle with CCDA data (I didn't check the content!)
Does your code works with that sample CCDA?
If not, then maybe there is something wrong in your CCDA.
For my test I used: IRIS for Windows (x86-64) 2024.1 (Build 267_2U) Tue Apr 30 2024 16:35:10 EDT Thanks, Enrico Parisi for your reply, I tried using the sample CCDA from here, but it's still showing empty entry for me. Did you try from terminal using the EXACT code I posted?
What product are you using? You mention "IRIS 2022.2" is it IRIS for Health? Yes, I tried the exact code just instead of "c:\temp\CCDA_CCD_b1_Ambulatory_v2.xml" I gave the location of same CCDA on my server.Yes, it is IRIS for Health. Just tested using IRIS for Health 2022.2 installed in a temp VM and it works fine.
Can you share the terminal output when you run that code? I am using studio's terminal to run the code.
set ccdaStream = ##class(%Stream.FileBinary).%OpenId("/tmp/CCDA_CCD_b1_Ambulatory_v2.xml")
write "Size of CCDA Stream: ", ccdaStream.Size,!
Size of CCDA Stream: 171823
set xsltTransform = "SDA3/CCDA-to-SDA.xsl"
set tTransformer = ##class(HS.Util.XSLTTransformer).%New()
set tSC = tTransformer.Transform(ccdaStream, xsltTransform, .sdaStream)
if 'tSC write "Transformation to SDA3 failed with error ",$system.Status.GetErrorText(tSC),!
set fhirStream = ##class(%Stream.TmpBinary).%New()
set SDA3ToFHIRObject = ##class(HS.FHIR.DTL.Util.API.Transform.SDA3ToFHIR).TransformStream(sdaStream, "HS.SDA3.Container", "R4")
if '$isobject(SDA3ToFHIRObject.bundle) write "Failed to transform SDA3 to FHIR",!
do SDA3ToFHIRObject.bundle.%ToJSON()
{"resourceType":"Bundle","type":"transaction","entry":[]}
Can you please run it from a regular terminal/session? Hey @Enrico.Parisi I don't have access to a regular terminal, but I tried doing that using a web terminal provided by InterSystems online course, it's working fine. I am getting the complete bundle.Can you tell what is the issue? Why am I not able to get the same through my CSP page? @Enrico.Parisi this is the version I am using:HealthShare Unified Care Record 2022.2.2 Build: 1000 Adhoc: 23124 [HealthShare Modules: Health Insight:24.0 + Core:24.0 + Patient Index:24.0] - IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2022.1 (Build 209_0_23124U) Mon Jan 29 2024 11:41:41 EST [Health Insight:24.0|Core:24.0|Patient Index:24.0]
Question
reach.gr G · Jul 11, 2021
Hi InterSystems Architects,
Please may I know the relationship between
1. Menus, Workflows, Workflow Items, Components, Code Tables, etc
Detailed relationship diagrams, how each element in each of the above are related to another.
2. When I extracted the data. I see ID number, but they aren't unique or related. I wanted to build a relationship between them myself in the absence of documents but I am missing the critical unique primary key of each and how they are referred in another table.
Your help is appreciated and let me know if you need any specific (Non Confidential) information to get help. This is my Understanding:
From objects - Classes (components) are designed - For example: web.PAPerson is the class and I wanted to search for it in the Element Reference Map, but I could not find. So I need more details here and understanding.
2. Based on design, Elements are grouped to form Components
3. Based on design Components are grouped in the Workflow Items ( Again I need explanation here) and they may also be derived from code tables.
4. Based on Design Work is set up deriving from Components ?
5. Based on user flow, series of Work flow Items are grouped to form Workflow Managers
6. Based on Design workflow managers are linked to Menus Mangers. Menu Headers etc
Please can you help me fill in the above gaps, corrections and relevant documents, where I can trace from fundamental non divisible element to user form that can be configurable.
Many Thanks Hi Intersystems,
I am still waiting for the answer and knowledge so that I can understand your application better. This shouldn't take this long, I was expecting an answer within 24 hours so that I can continue my learning. You should understand that while InterSystems employees are on the community this is really a public forum and not an "official" support path. Questions are answered by the community at large when they can. For people in the forum to help more information is needed. You indicated you are working with HealthShare however this is really a family of solutions. Which specific product are you referring to? What part of that product are you trying understand better? The more specific you can be the easier it is for the community to help.
If you have an immediate need I would suggest that you contact the Worldwide Response Center (referred to as the WRC) for immediate support. Here is the contact information:
Phone:+1-617-621-0700+44 (0) 844 854 29170800615658 (NZ Toll Free)1800 628 181 (Aus Toll Free)
Email:support@intersystems.com
Finally, learning services (learning.instersystems.com) and documentation (docs.intersystems.coms) can be of great help. For HealthShare specific areas you do need to be a registered HealthShare user. If you are not work with your organization and the WRC to get that updated.