Question Guillaume Rongier · Sep 23, 2022

Hello,

I'm looking for a way to write a stored procedure or something to return a ResultSet with Embedded Python.

My goal is the following:

I have a Goal table with a Text field that is free text.

CREATETable Goal (
    Idint,
    TextVARCHAR(5000)
);


I would like to create a procedure that returns all the entities (in the iKnow sense) in a new Entity column.

Python code, i would like to use :

5
0 350
Announcement Guillaume Rongier · Mar 16, 2022

Iris Healthtoolkit Service

Easy to use HL7v2 to FHIR, CDA to FHIR, FHIR to HL7v2 as a Service.

The aim of this project is to provide an REST API that can convert easily various health formats. Post the desire format in the REST body, get the answer in the new format.

Install

Clone this repository

git clone https://github.com/grongierisc/iris-healthtoolkit-service.git

Docker

docker-compose up --build -d

Usage

7
1 1421
Discussion Guillaume Rongier · Nov 16, 2021

For all docker versions we have direct download links.

Like on our repository or on docker hub :

However, there is no direct link to download the installable (non docker) versions.

I propose you these two scripts to solve this need, the first one is with the wget command, the other one in curl.

Wget :

1
4 436
Announcement Guillaume Rongier · Oct 20, 2021

Interoperability Read Only access

In companies, most of the time, we have test, stage and production environments.

It is very common that we, the developers, do not have the right to modify or touch the production directly because all the modifications must be traced in a versioning tool and tested before a production release.

However, a read access to the production (especially to the traces) can allow us to better understand a possible bug.

That's why I propose this ZPM module that creates a new role in IRIS that allows access to the productions and this only in read-only with access to the visual traces.

Oct-21-2021 16-52-18

0
0 352
Announcement Guillaume Rongier · Oct 8, 2021

A simple python script to copy/scrap/crawl a FHIR repository to another one.

The script is written in Python 3.

Install it from pip

python -m venv .venv
source .venv/bin/activate
pip install git+https://github.com/grongierisc/fhir-scraper
cp .venv/bin/fhir-scraper.py .

Edit fhir-scraper.py for your needs.

Run it :

python fhir-scraper.py 

How to run it from git

First clone this repository.

git clone https://github.com/grongierisc/fhir-scraper
0
0 245
Announcement Guillaume Rongier · Sep 1, 2021

All French-speaking developers are friendly invited to follow a stream in the form of a journal.

Every first Thursday of the month at 12:00 (Paris time), we organize a 30-45 minutes stream on Youtube with the following format :

  • News on technologies around InterSystems.
  • A section called "Did you know it?" (tips and tricks on IRIS)
  • A "dossier", where we develop a subject (example: How language gateway works).
  • And we end the program with an Interview of an french developer

Previous episodes  :

0
0 205
Article Guillaume Rongier · Nov 23, 2020 1m read

Introduction

This is iris-key-uploader a frontend in Angular with it's rest API.

The aim of this project is to easily import key file to Iris from a web ui.

Why this project

Unfortunatly the IRIS panel to change key doesn't give the opportunity to upload the license.

As you can see, you can only browse from the server side.

What if, you don't have a direct access to it ?

You would like to have a simple web page to upload the new key and activate it.

This is the purpose of this project.

Demo

UI

http://localhost:52773/keyuploader/index.html

Build

Run the server

docker-compose up -d

Install with ZPM

6
0 545
Article Guillaume Rongier · Oct 23, 2020 5m read

The aim of my question is to achieve this :

  • User with authorization :
  • User without authorization :

You can notice that some information of the PID segment are obfuscated.

I do have a solution but it involve a modification of EnsLib.HL7.Message. It's not a best practice.

Do you have idea or a simple solution that doesn't involve overloading every HL7 classes ?

Here is my solution :

https://github.com/grongierisc/hl7-msg-anonymizer

HL7-Msg-Anonymizer

This is a modification of EnsLib.HL7.Message to not display Patient demography information in visual trace.

1
0 808
Announcement Guillaume Rongier · Oct 2, 2020

Introduction

This is a csvgen UI frontend in Angular 8. The aim of this project is to easily import csv file to Iris from a web ui.

Demo

Install with ZPM

It will automatically install the dependency of csvgen and sslclient

zpm "install csvgen-ui"

This will create two new endpoints :

  • One for the Rest API for uploading files

  • /api/{namespace}/csvgen/

  • One for the UI

  • /csp/{namespace}/csvgen/index.html

Stand alone demo on docker

Run the server

docker-compose up -d

UI

The UI is per-namespcae, this mean it will be available only for the namespace where csvgen-ui is install. For example :

2
0 420
Announcement Guillaume Rongier · May 5, 2020

objectscript-json-patch

An implementation of JSON-Patch in ObjectScript.

Why you should use JSON-Patch

JSON-Patch (RFC6902) is a standard format that allows you to update a JSON document by sending the changes rather than the whole document. JSON Patch plays well with the HTTP PATCH verb (method) and REST style programming.

Install

With zpm :

USER>zpm
zpm:USER>install objectscript-json-patch

How-To use it

Use it with this call :

Do ##class(Grongier.JSON.Utils).Patch(tDoc,tPatch)

Where :

  • tDoc is a %DynamicObject (JSON)
  • tPatch is a %DynamicArray of the patches (the JSON Patch).
2
1 468
Article Guillaume Rongier · Apr 17, 2020 2m read

FHIR-HL7v2-SQL-Demo

Ready to use demo of an FHIR Server with IRIS for Health 2020.2 :

  • HL7v2 transformation to the FHIR Server
  • FHIR Server who can be query in SQL

Installing

Clone this repository

git clone https://github.com/grongierisc/FHIR-HL7v2-SQL-Demo.git

Docker

docker-compose up --build -d

Usage

  • Can use postman config in misc/fhirhl7v2demo.postman_collection.json

  • Use UX at http://localhost:4201

  • Login/Password : SuperUser/password

How-To use the demo

3 steps to use it :

Import HL7v2 Messages

Click on the left arrow between IRIS and the ambulance.

This windows open :

0
1 951
Announcement Guillaume Rongier · Apr 6, 2020

InterSystems offers an API-design first approach.

You can check this post for more informations : https://community.intersystems.com/post/iris-api-explorer-application.

One practical thing about this approch and the OpenAPI specification is the definition of exchange objects.

The do ^%REST command does not create object definitions, but only routes and associated methods.

Output for the do ^%REST command for PetShop example :

2
5 1012
Article Guillaume Rongier · Jul 4, 2019 1m read

Has you may know, EnsDemo from Ensemble are not available anymore on IRIS.

This is a good thing, Iris is cloud oriented, it must be light, fast. Now the new way of sharing samples or modules is through git, continuous integration and OpenExchange.

But, in some cases you want to go back to your good old samples from EnsDemo to get inspiration or best practices.

Good news, there is a git for that :

How to use it ?

Clone this repository

git clone https://github.com/grongierisc/InstallEnsDemoLite.git

And run install.sh

1
2 1235
Question Guillaume Rongier · Jun 17, 2019

Hi,

I try to implement an iFind index.

Here is my definition class :

ClassAviation.TestSQLSrchExtends%Persistent [ DdlAllowed, Owner = {UnknownUser}, SqlRowIdPrivate, SqlTableName = TestSQLSrch ]
{

 

PropertyUniqueNumAs%Integer;

 

PropertyCrashDateAs%TimeStamp [ SqlColumnNumber = 2 ];

 

PropertyNarrativeAs%String(MAXLEN = 100000) [ SqlColumnNumber = 3 ];

 

IndexNarrSemanticIdx On (Narrative) As %iFind.Index.Basic;

 

IndexUniqueNumIdxOnUniqueNum [ Type = index, Unique ];

 

}

The problem start when I add an Relationship in my indexed class, I end up with this error :

1
0 559
Article Guillaume Rongier · Apr 9, 2019 3m read

IRIS and Ensemble are designed to act as an ESB/EAI. This mean they are build to process lots of small messages.

But some times, in real life we have to use them as ETL. The down side is not that they can't do so, but it can take a long time to process millions of row at once.

To improve performance, I have created a new SQLOutboundAdaptor who only works with JDBC.

BatchSqlOutboundAdapter

Extend EnsLib.SQL.OutboundAdapter to add batch batch and fetch support on JDBC connection.

Benchmark

Benchmarks released on Postgres 11.2 with 1 000 000 rows fetched and 100 000 rows inserted on 2 columns.

10
3 1851
Question Guillaume Rongier · Jan 21, 2019

Hi, I'm looking for a way to implement the JDBC pattern "executeBatch" in ObjectScript: https://www.tutorialspoint.com/jdbc/jdbc-batch-processing.htm

Since Ensemble 2017.2.2 there is a new method called executeParametersBatch : https://docs.intersystems.com/ens20172/csp/docbook/relnotes/index.html#…

Even in the Ensemble 2018.1 change log, mention a patch on this method: https://docs.intersystems.com/ens20181/csp/docbook/relnotes/index.html#…

4
0 826
Question Guillaume Rongier · Sep 20, 2018

Hi, We recover a large amount of data from an external database (SQLServer, about 1 million rows in JDBC).
However, we have treatment time issue.
This process takes more than 30 minutes whereas on a "classic" SQL Server Management Studio type request takes less than a minute.

While searching on the internet, I came across this article: http://makejavafaster.blogspot.com/2015/06/jdbc-fetch-size-performance.html
It explains how in Java, we can tweak the FetchSize parameter of the JDBC driver to optimize this kind of process.

7
1 1528