#Embedded Python

4 Followers · 300 Posts

Embedded Python refers to the integration of the Python programming language into the InterSystems IRIS kernel, allowing developers to operate with data and develop business logic for server-side applications using Python.

Documentation.

Announcement John Murray · Jun 4, 2023

For several years now Visual Studio Code has supported the notebook coding paradigm with a maturing UX and an API that is enabling a notebook extensions ecosystem to grow. One of the best-known notebook platforms is Jupyter Notebooks. A Microsoft team publishes an extension that allows VS Code to handle .ipynb notebook files. These can either work against a local Python environment or connect to a Jupyter Server, which typically hosts remote Python environments with beefier resources.

What if your InterSystems IRIS environments, whether local on your workstation or remote in your organization / cloud, could operate as Jupyter Servers? And not only for Embedded Python but also for ObjectScript and SQL

"If we build it, will they come?"

5
2 940
Question Gautam Rishi · Sep 8, 2023

Hi all,
I am trying to execute a query like the below code.
set statement = ##class(%ResultSet).%New("some_class:query_method").   // here query method is empty and with rowspec some columname

statement.Execute(param1)

I want to fetch data type of column value returned from above. eg - Name - VARCHAR, amount - INTEGER etc.
How can I get it. Or if not possible directly. Is there any other way to validate or get datatype of values returned. Line we have type() in python3

5
0 1464
Article Robert Cemper · Sep 7, 2023 2m read

In a previous question, I have illustrated a few problems using Embedded Python
interactively as you would do from Docker console or IRIS terminal.
Investigation of the causes brought a rather clear picture. It's a classic impedance mismatch

  • While consoles act rather relaxed WebTerminal is very precise in output presentation line terminators from (Embedded) Python's print() function are typically <LF>  0x0A  $C(10) And WebTerminal does exactly this while eg. my console in Docker also does a <CR> und cover. So a sequence of print() looks like a scale
  • Compared to ObjectScript where a WRTE !
1
0 371
Question Robert Cemper · Sep 4, 2023

For my Embedded Python ONLY demo package I need some user input.
Similar to ObjectScript

read "say somthing",reply

I use the Python equivalent

reply = input("say something")

And this works excellent without problems  from Terminal or Doker console

BAD SURPRISE: 
withWebTermnial ObjectSscript works fine, but embedded Python fails badly.

I do not care about line terminators without <CR>
but it is just impossible to receive any input.

This is no improvement. The content is missing !!!!

QUESTION to the experts.

7
0 424
Article Alex Woodhead · Sep 5, 2023 8m read

Overview

The online documentation contains a reference Defining and Using Class Queries -

Customizing Stored Procedures with ObjectScript directly has been useful to access NoSQL storage and external messaging via integration, to present output in tabular format.

For example: An application that already uses 90% SQL interaction from a front end, can then also extend this access to the other 10% of required platform functionality, via the same SQL access.

The purpose of this article is to explore how to achieve the same effect via Embedded Python methods.

0
0 501
Article Luis Angel Pérez Ramos · Aug 29, 2023 8m read

We continue with the series of articles based on the QuinielaML application.

In today's article I will describe how to work with the Embedded Python functionality available in InterSystems products.

Embedded Python allows us to use Python as a programming language within our productions, being able to take advantage of all the features available in Python. Here you can expand information about it.

2
2 286
Article Luis Angel Pérez Ramos · Aug 22, 2023 4m read

Welcome dear members of the Community to the presentation and first article of a small project that will demonstrate the capabilities of InterSystems IRIS to provide full backup functionality for a web application developed in Angular. This article will be limited to presenting the concept as well as the InterSystems IRIS functionalities used in a general way, going into more detail in subsequent articles.

Welcome to QuinielaML!

0
1 609
Question Menno Voerman · Jul 13, 2023

Hi All,

We're doing our first babysteps with embedded Python and IRIS with an interoperability solution. We want to convert a CSV file to an Excel xlt file.

As service we've got a EnsLib.File.PassthroughService which picks up a csv file

As operation we've got a EnsLib.File.PassthroughOperation which writes the Excel file.

In the middle:

We've created an Business Process with an %Stream.GlobalCharacter in the Request and a %Stream.GlobalCharacter  in the Response.

But how do we get the %Stream.GlobalCharacter in the Python ClassMethod?

3
0 595
Question Armin Gayl · Jul 28, 2023

Hello,

I need AES ECB with PKSC7 padding for an interface.
Unfortunately, the %SYSTEM.Encryption.AESEncode cannot do this.

Therefore I wanted to include the following python lib.
PyCrptydome -> https://pycryptodome.readthedocs.io/en/latest/index.html

We need to install the package offline on the system. So I downloaded it and put it in the MGR/Python/ directory.

However, when I try to install it, I get the following error message:

E:\HealthConnect\20201\bin>irispip install E:\HealthConnect\20201\Mgr\python\pycryptodome-3.18.0.tar.

11
0 409
Article Nicholai Mitchko · Oct 27, 2022 2m read
   _________ ___ ____  
  |__  /  _ \_ _|  _ \ 
    / /| |_) | || |_) |
   / /_|  __/| ||  __/ 
  /____|_|  |___|_|    

Starting in version 2021.1, InterSystems IRIS began shipping with a python runtime in the engine's kernel. However, there was no way to install packages from within the instance. The main draw of python is its enormous package ecosystem. With that in mind, I introduce my side project zpip, a pip wrapper that is callable from the iris terminal.

What is zpip?

6
1 903
Article Sowmiya Nagarajan · Jul 5, 2023 7m read

Previous postUsing AI to Simplify Clinical Documents Storage, Retrieval and Search

This post explores the potential of OpenAI's advanced language models to revolutionize healthcare through AI-powered transcription and summarization. We will delve into the process of leveraging OpenAI's cutting-edge APIs to convert audio recordings into written transcripts and employ natural language processing algorithms to extract crucial insights for generating concise summaries.

2
2 1897
Article Muhammad Waseem · Mar 15, 2023 10m read

    

Hi Community,
In this article I will demonstrate the usage of InterSystems Embedded Python, We will cover below topics:

  • 1-Embedded Python Overview
  • 2-Usage of Embedded Python
    • 2.1- Using a Python Library from ObjectScript
    • 2.2- Calling the InterSystems APIs from Python
    • 2.3- Using ObjectScript and Python together
  • 3-Using python Built-in Functions
  • 4-Python Modules/Libraries 
  • 5-Embedded Python Use Cases
3
9 1330
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 555
Article Ikram Shah · Jul 4, 2023 3m read

Problem

In a fast-paced clinical environment, where quick decision-making is crucial, the lack of streamlined document storage and access systems poses several obstacles. While storage solutions for documents exist (e.g, FHIR), accessing and effectively searching for specific patient data within those documents meaningfully can be a significant challenge.

Motivation

AI has made document search remarkably powerful. Question and answering over docs has never been easier with open-source tools like Chroma and to store and use vector embeddings to query across Generative AI APIs.

0
2 752
Article Robert Cemper · Jun 20, 2022 7m read

My major interest is  Working with Globals in Embedded Python.
So I checked the available official documentation.

#1 Introduction to Globals
an attempt of a generic description of what a global is. Pointing to

#2 A Closer Look at ObjectScript
But where is Embedded Python ?
Way down you see

#3 Embedded Python

3.1 Embedded Python Overview
3.1.1 Work with Globals

Great if you have never seen a Global before
Otherwise a shocking primitive example
3.2 Using Embedded Python
Last hope: >>> but there is just NOTHING visible.
This is more than just disappointing! Even IRIS Native API for Python is more detailed.

8
3 1414
Question Evgeny Shvarov · Oct 2, 2022

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?

6
0 474
Question Robbie Luman · Jun 27, 2023

Has anyone come across a good using Embedded Python to convert a Python List object to an IRIS %List object?

My use case is I want to open an SQL entry with an Objectscript class method, then pass some information from that row into a separate Python class method which will then create a Python List object, then have the Python class method return that list back to the Objectscript class method in such a way that the Python List can be converted to an IRIS %List object for me to then use in the Objectscript code.

3
0 528
Article Alex Woodhead · Jun 20, 2023 2m read

Excuse if this is obvious to Python programmers but for those crossing over from ObjectScript this may be a useful tip.

The scenario is developing some Embedded python commands.

Testing out functionality is being confirmed via the shell:

$SYSTEM.Python.Shell()
 
Python 3.9.5 (default, Mar 14 2023, 06:58:44) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>>

When Python evaluates an expression in the shell, it prints the result of the expression to the terminal.

>>> 1 + 2

3

It is quite easy to accidentally evaluate and print out values

iris.cls("%Dictionary.MethodDefinition")._OpenId("%Library.String||LogicalToJSON",0)
0
0 305
Article Robert Cemper · Jun 13, 2023 2m read

Technology Strategy

When I started this project I had set myself limits:
Though there is a wide range of almost ready-to-use modules in various languages
and though IRIS has excellent facilities and interfaces to make use of them
I decided to solve the challenge "totally internal" just with embedded Python, SQL, ObjectScript
Neither Java, nor Nodes, nor Angular, PEX, ... you name it.
The combination of embedded Python and SQL is preferred. ObjectScript is just my last chance.

0
0 262
Article Alex Woodhead · Jun 10, 2023 5m read

Written in reply to community post for can Python create HL7 Message dynamically.

Pre-requisites and setup

Use an integration enabled namespace.
Note: USER namespace is not enabled for interoperability by default.
If following suggest create a new interoperatibility namespace to explore functionality.

# Switch to
ZN "[Interoperability Namespace Name]"

# Launch interactive Python shell:
Do $SYSTEM.Python.Shell()

Script start

#Load dependencies

import datetime as dt
import uuid

# Cache current time in CCYYMMDDHHMMss format
hl7_datetime_now=dt.datetime.now().strftime('%Y%m%d%H%M%S')

# Create HL7 Message
hl7=iris.cls("EnsLib.HL7.Message")._New()

# Set the doc type
# 2.5.1:ORU_R01 - Unsolicited transmission of an observation message
hl7.PokeDocType("2.5.1:ORU_R01")
0
2 690
Article Joel Solon · May 23, 2023 5m read

Methods written in ObjectScript can use pass-by-reference arguments to return information to the caller. Python doesn’t support pass-by-reference arguments, so Embedded Python in IRIS doesn’t support them either. That's it, that's the end of the post, hope you liked it. 😉 But wait, what about the Classic Rock & Roll?

Actually, since returning values in method arguments can be useful, this post demonstrates several ways to do this, between ObjectScript and Embedded Python.

1
1 658