New
Article Oliver Wilms · Feb 25 2m read

iris-budget

I created iris-budget app for the InterSystems Full Stack Contest in 2026. By full stack, we mean a frontend web or mobile application that inserts, updates, or deletes data in InterSystems IRIS via REST API, Native API, ODBC/JDBC, or Embedded Python.

My app uses multiple REST APIs to add a new category or retrieve a list of categories of expenses and income.

First web application /csp/coffee

I inherited /csp/coffee from module.xml in iris-fullstack-template.

Second web application /csp/budget

For this project, I created a swagger file called "budget.json." I wanted to use the spec

0
0 36
New
Question Oliver Wilms · Feb 14

I want to implement isc-rest in my new project iris-budget/module.xml at master · oliverwilms/iris-budget

I get this error:

#8 11.30 Building dependency graph...
#8 12.69 ERROR! Could not find satisfactory version of isc.rest in any repositories. Required by: iris-budget 0.0.1: ^2.0.0
#8 ERROR: process "/bin/sh -c iris start IRIS && \tiris session IRIS < iris.script &&     ([ $TESTS -eq 0 ] || iris session iris -U $NAMESPACE \"##class(%ZPM.PackageManager).Shell(\\\"test $MODULE -v -only\\\",1,1)\") &&     iris stop IRIS quietly" did not complete successfully: exit code: 1
 

2
0 40
Question Oliver Wilms · Feb 14

I am working on a new project oliverwilms/iris-budget
based on intersystems-community/iris-fullstack-template: This template shows you how to build, test and deploy a simple full-stack application using InterSystems IRIS REST API

I do not understand why I get this error:

[INFO] ...started InterSystems IRIS instance IRIS
[INFO] Executing command /docker-entrypoint.sh iris-after-start ...
[INFO] Create namespace: USER
[ERROR] module 'iris' has no attribute 'system'
[ERROR] Command "/docker-entrypoint.sh iris-after-start " exited with status 256
[FATAL] Error executing post-startup command
[INFO]

1
0 36
Question Oliver Wilms · Nov 27, 2025

I am using IRIS for Windows (x86-64) 2022.1 (Build 209) Tue May 31 2022 12:27:55 EDT [Health:3.5.0]. I created Interoperability Production with a Service to read file from S3 bucket and an Operation to write files to a different S3 bucket. I specified AWS ProviderCredentialsFile.

I see "Terminating Job 7096 / 'From S3 Bucket' with Status = ERROR #5023: Remote Gateway Error: Connection cannot be established, %QuitTask=

Do I need anything like Python libraries or AWS CLI to make this work?

2
0 61
Question Oliver Wilms · Sep 8, 2025

I am trying to add Plotly Bar graph in a div to a CSPpage. I am working in IRIS 2022.1. I created persistent class.

I copied relevant code into github repo:

oliverwilms/iris-python-plotly
 

iris-python-plotly/csp/otwPlotly.csp at master · oliverwilms/iris-python-plotly
 

Set tPlotlyDiv = ##class(dc.python.test).PlotlyDiv(trnYear,trnMonth)

ClassMethod PlotlyDiv(pTrnYear = 2025, pTrnMonth = 8) As %String
{
    Set importlib = ##class(%SYS.Python).Import("importlib")
    Set plotdiv = ##class(%SYS.Python).Import("plotdiv")
    Do importlib.reload(plotdiv)
    Set div = plotdiv.gendiv(pTrnYear,pTrnMonth)
  

6
0 104
Question Oliver Wilms · May 29, 2025

My use case is I want AI to extract six pieces of key information from medical visit notes.

It works okay with notes from Epic patient portals. I am struggling with one of my own visit Summaries. So far I have not been able to instruct ollama to give me a JSON response where it gave me what I am asking for.

My original medical_progress_notes_prompt was:

Medical progress note:
---
(document)
---

You are an expert in analyzing medical progress notes. Please carefully read the provided progress note above and extract the following key information:

Extract these six (6) properties from the progress note:
-

1
1 114
Question Oliver Wilms · Apr 27, 2025

I combined @Rodolfo Pscheidt https://github.com/RodolfoPscheidtJr/ollama-ai-iris with some files from @Guillaume Rongier https://openexchange.intersystems.com/package/iris-rag-demo.

My own project is https://github.com/oliverwilms/ollama-ai-iris

I can run load_data.py and it connects to IRIS (same container).

When I try to run query_data.py https://github.com/oliverwilms/ollama-ai-iris/blob/main/query_data.py , it cannot connect to ollama:

ConnectionError: Failed to connect to Ollama. Please check that Ollama is downloaded, running and accessible.

I wonder if I need to add in query_data.py, how it

3
0 148
Question Oliver Wilms · Apr 21, 2025

I am brand new to using AI. I downloaded some medical visit progress notes from my Patient Portal. I extracted text from PDF files. I found a YouTube video that showed how to extract metadata using an OpenAI query / prompt such as this one:

ollama-ai-iris/data/prompts/medical_progress_notes_prompt.txt at main · oliverwilms/ollama-ai-iris
 

I combined @Rodolfo Pscheidt Jr https://github.com/RodolfoPscheidtJr/ollama-ai-iris with some files from @Guillaume Rongier https://openexchange.intersystems.com/package/iris-rag-demo.

I attempted to run

python3 query_data.py
Traceback (most recent call last):
  F

1
0 178
Discussion Oliver Wilms · Apr 20, 2025

I read the article by @Rodolfo Pscheidt:

https://community.intersystems.com/post/ollama-ai-iris

I forked his app and copied selected files from @Guillaume Rongier iris-rag-demo to make it containerized:

oliverwilms/ollama-ai-iris
 

I ran load_data.py and I got this output:

irisowner@e10968e4da42:/irisdev/app$ python3 load_data.py
Document ID: cbfa2f20-6627-407b-bbad-31722d18ca13
modules.json: 100%|█████████████████████████████████████████████████████████████| 349/349 [00:00<00:00, 778kB/s]
config_sentence_transformers.json: 100%|████████████████████████████████████████| 123/123 [00:00<00:00, 447kB/s]
RE

0
0 130
Question Oliver Wilms · Apr 20, 2025

I read the article by @Rodolfo Pscheidt Jr:

https://community.intersystems.com/post/ollama-ai-iris

I forked his app and copied selected files from @Guillaume Rongier iris-rag-demo to make it containerized:

ollama-ai-iris/test_conn.py at 3da62770a90e34eff92241abbfc4f2c2a7027898 · oliverwilms/ollama-ai-iris
 

I struggle to understand what each element is or I do not understand why the code does not work:

url = f"iris://teste:teste@localhost:51774/TESTE"
 

Is teste:teste refer to username / password? I tried _SYSTEM:SYS

Is 51774 webserver port? Is TESTE namespace?

I tried both webserver and superserver

3
0 171
Question Oliver Wilms · Apr 19, 2025

I cloned iris-rag-demo from Open Exchange and issued docker-compose up -d. I went to the front end and type in the chat message:

Who was the 46th President of United States of America?

I got a run time error:

RuntimeError: ERROR <Ens>ErrBPTerminated: Terminating BP ChatProcess # due to error: ERROR #5002: ObjectScript error: <PYTHON EXCEPTION> *<class 'RuntimeError'>: <PYTHON EXCEPTION> <class 'ValueError' > ERROR #5002: ObjectScript error: <PYTHON EXCEPTION> *<class 'RuntimeError'

Traceback:

 

File "/irisdev/app/src/python/rag/app.py", line 28, in process_input agent_text =

0
0 86
Question Oliver Wilms · Apr 19, 2025

I cloned @Yuri Marx's langchain-iris-tool repo and modified docker-compose yaml per this post:

https://community.intersystems.com/post/error-when-trying-langchain-iri…

Now I see this:

docker ps -a
CONTAINER ID   IMAGE                      COMMAND                  CREATED         STATUS                          PORTS                                                                                                                                                                      NAMES
c585beb367e6   ollama/ollama:latest       "/usr/bin/bash /mode…"   6 minutes ago   Restarting (1) 55 seconds

9
0 196
Question Oliver Wilms · Apr 4, 2025

I deployed an IRIS REST application using Installer class. I think I created the namespace FEEDER database with %DB_Default resource and I used the same resource in Web Application roles. I allowed Unauthenticated Authentication method. I used ^%ISCLOG and reviewed ^ISCLOG. I do not understand why I get 403 Forbidden response.

4
0 137
Question Oliver Wilms · Jan 19, 2025

I inherited some legacy MUMPS / ObjectScript code. A code review identified an exclusive NEW and that is not allowed per our coding standards.

The original code contains:

RUN(CALL,DRVNAME)
 S $EC=""
 S ^TMP($J,"RMPV","DRVNAME")=DRVNAME
 N TMPFILE,OLDIO
 S OLDIO=$IO
 I $G(^TMP("RMPV","SILENT"),1) S IOP="NULL",%ZIS=0 D ^%ZIS I '$G(POP,1) U IO
 D INIT^@DRVNAME
 D  ; scope variables
 .N (DUZ,CALL) ; Protect %response
 .S IOF="""""",IOM=80,U="^"
 .D @CALL
 U OLDIO
 Q

I attempted to replace Exclusive NEW with a ClassMethod in a procedure block as follows:

RUN(CALL,DRVNAME) ;primary entry point
 Set ^OLIVER(0-$I(^

3
0 151
Article Oliver Wilms · Dec 18, 2024 4m read

Implements Idea DPI-I-456

Idea

What The Sample Does

This sample was cloned from iris-interoperability-template. I have reconfigured the interoperability Production with an Inbound HTTP Adapter which is used by a HTTP Business Service. The configuration details for the business service are specified in System Default Settings. I configured Call Interval setting to call HTTPServer once every hour. You can change both the URL and frequency in the service's settings. Screenshot

Originally the HTTP Service had two targets.

0
0 268
Question Oliver Wilms · Dec 15, 2024

I am trying to work with Epic on FHIR. Epic's documentation stated, your application makes a HTTP POST request to the authorization server's OAuth 2.0 token endpoint to obtain access token.

Set tSC = ##class(%SYS.OAuth2.Authorization).GetAccessTokenClient(pClient,pScopes,.prop,.err) returns

ERROR #9761: No key in provided JWKS for alg ES512 and kid  

I check this /csp/sys/oauth2/OAuth2.JWTServer.cls?client_name=medbank and I see this:

{
  "keys": [
    {
      "kty": "RSA",
      "n":
1
0 146
Article Oliver Wilms · Dec 15, 2024 3m read

I have started working on utilizing Epic on FHIR about a month ago.

Creating a Public Private Key Pair

mkdir /home/ec2-user/path_to_key
openssl genrsa -out ./path_to_key/privatekey.pem 2048

For backend apps, you can export the public key to a base64 encoded X.509 certificate named publickey509.pem using this command...

openssl req -new -x509 -key ./path_to_key/privatekey.pem -out ./path_to_key/publickey509.pem -subj '/CN=medbank'

where '/CN=medbank' is the subject name (for example the app name) the key pair is for.

2
3 596
Question Oliver Wilms · Nov 22, 2024

I finally figured out how to get JWT token using set x = ##class(%SYS.OAuth2.Authorization).GetAccessTokenClient("medbank","openid fhirUser",.prop,.err).

I also found iris-fhir-client app on Open Exchange. I registered Epic sandbox server, but I cannot list resources. I suspect I need to integrate authorization / authentication. How do I do this with irisfhirclient py?

1
0 160
Question Oliver Wilms · Nov 19, 2024

I need to create a JWT to connect to EPIC FHIRserver sandbox.

https://fhir.epic.com/Documentation?docId=oauth2&section=BackendOAuth2G…

You will generate a one-time use JSON Web Token (JWT) to authenticate your app to the authorization server and obtain an access token that can be used to authenticate your app's web service calls. There are several libraries for creating JWTs. See jwt.io for some examples.

The header and payload are then base64 URL encoded, combined with a period separating them, and cryptographically signed using the private key to generate a signature.

I attempted using this

5
0 307
Question Oliver Wilms · Oct 12, 2024

What is the reason for

RUN apt-get update && apt-get install -y \
    git \
    nano \
    python3-opencv \
    sudo && \
    /bin/echo -e ${ISC_PACKAGE_MGRUSER}\\tALL=\(ALL\)\\tNOPASSWD: ALL >> /etc/sudoers && \
    sudo -u ${ISC_PACKAGE_MGRUSER} sudo echo enabled passwordless sudo-ing for ${ISC_PACKAGE_MGRUSER}
 

I think I get error because I do not have sudo privilege in the environment where I use podman to build the image

podman build --tag oliver3 .

I cloned iris-pero-ocr repo, added two large files into misc location, and I tried to build image. I see this:

Setting up libgl2ps1.4

0
0 225
Question Oliver Wilms · Sep 28, 2024

I want to try out iris-DataViz app to visualize my own data. I cloned the repo and docker-compose up -d in AWS. IRIS portal works, but on port 8051 I get nothing. I checked my AWS security groups. I reversed IRIS webserver port and 8051 and I can connect to Management portal using port 8051. I don't understand what is refusing connection on port 8051 running in iris-DataViz container.

1
0 141
Question Oliver Wilms · Sep 19, 2024

Hello, I try to develop a REST interface where I need to interact with legacy MUMPS routines. How can I pass in input to a Read without modifying the legacy code?

I think in linux I can execute command < inputfile to read from file, but how does it work in ObjectScript?

7
0 322
Question Oliver Wilms · Aug 29, 2024

Hello, I want to create PDF from HTML source. I found pandoc. I installed pandoc on IRIS container image. I created Interoperability production. I have setup REST service to receive HTML file in request body. I call pandoc command pandoc -o output.pdf input.html  from a BPL process. I copy output.pdf file stream into response body. I save the response at the source. I get a file named output.pdf but it does not load in Acrobat. I suspect I am doing something wrong with headers (accept-encoding?) or maybe do I need to base64 encode the pdf file to transfer it via REST?

7
0 327
Question Oliver Wilms · Jun 23, 2024

I have JSON object which contains file references. I need to replace the file reference with base64 encoded file which is up to 10MB.

I tried the following but it did not work as expected:

do dynObj.%Set("data",pStream.ReadLineIntoStream(.tSC))

9
0 218
Question Oliver Wilms · Jun 23, 2024

I am working on JSON and want to be prepared to handle large Objects. I try this code:

ClassMethod MaxLen() As %Status

{

    set longStr=""

    for i=1:1:$SYSTEM.SYS.MaxLocalLength() { set longStr = longStr_"x" }

    write "Maximum string length = "_$LENGTH(longStr)

    ;

    set longObject = {"a":(longStr),"b":(longStr)}

    set file=##class(%File).%New("/tmp/longObjectFile.txt")

    do file.Open("WSN")

    do longObject.%ToJSON(file)

    do file.Close()

    ;

    do file.Open("RS")

    set newObject = {}.%FromJSONFile(file)

    write !,"Property newObject.a is "_$LENGTH(newObject.a)_" characters long."

5
0 363