Search

Clear filter
Announcement
Riccardo Andriuzzi · May 27, 2022

MSC - job / InterSystems developer - great opportunity, Turin, Italy

MSC Mediterranean Shipping Company continues to invest and lead the world container market with ships, an extensive container fleet, intermodal and dedicated staff for its customers. The Company’s evolution to its leading brand needs consistency to market, and therefore it is paramount to standardise data, processes and management information. Established in 1998, MSC Technology provides development and technology support for the MSC transportation divisions and is composed by highly accomplished technology professionals. Today, with a team of 1000 plus, MSC Technology provides the best, most interactive maritime software solutions available in the industry. With an emphasis on equal employment opportunities and a collaborative approach to growing our expertise and solving complex problems, we are a trusted strategic partner with a great journey ahead of us. Intersystems Developer Under the governance of the internal program, the Intersystems developer designs, develops and helps the operations of the Event Processing solution based on the IRIS Data Platform. MSC Logistics department is the main customer of this platform. It’s applicable to computing of the equipment activities and their corresponding message streams. The main area of design and development regard data integration and validation through predefined business rules and processing to Database. Subsequent integration technologies will be required to complete the process automation. The developer will work with the global teams (India, USA, Europe), with external partners / vendors and in coordination with the in-place Community of Practices to ensure the coherence of the development with the program architecture. The developer will need to deliver several work packages with local/offshore resources. The developer will play a key role during the release process in coordination with both the development teams and the Application operational teams. The developer will need to understand a) business and application requirements, performance, upgrade and maintainability requirements, and b) existing components available on the market and within MSC, to provide his expertise in a proactive manner to the projects teams. Key Responsibilities Design, develop, document and maintain his/her work packages with transparency Enforce non-functional requirements such as reliability and performances in his/her project designs Work closely with the development teams and existing system providers to provide and design solutions Ensure knowledge transfer with development and operation teams for the corresponding platforms Problem isolation and resolution, with expectation that continuous improvement and enhancements are implemented Perform and coordinate development and operation across our multi-regions environment Work with external 3rd parties to integrate the technologies Additional Responsibilities Identify opportunities for integration technical components Advise, promote, coach, coordinate the use of these tools Actively participate in the solution identification; review, assess and prepare decisions to be taken by Program’s Management and Architecture. The developer ensure that all Projects and Applications effectively use technical components as per the validated Technical Architecture Design Applications performance (response time and availability) will be paramount to the success of the Program. Thus, the developer is to propose and lead the setup of a specific governance model to ensure that the right emphasis and focus is given to performance related topic. Participate in the building of applications development standards, best practices repository, and control mechanisms. Build technical components user guides for other IT and Program’s Teams Contribute to the development of training material and processes documentation Qualifications and Experience At least 4 years’ experience with InterSystems technology (IRIS/CACHE) with experience in the following subjects: COS (cache object script) & OO (object oriented) development using classes SQL (both embedded and dynamic), class queries & SP (stored procedures) Proven experience with Interoperability (aka Ensemble) in both design & implement solutions in a complex production, experience with use of various adaptors (e.g. SQL, REST, HTTP) Working with XML & JSON files Developing with a modern IDE (e.g. Visual studio code) or eclipse, with some Studio knowledge Developing with source control (preferable Dev-Ops) with experience using GIT Benefits? Healthcare? comp band? remote possible? Hello Fabian, we offer a relocation package for people coming from abroad and so full-remote working is not possible. An healthcare coverage is included. I remain at your disposal for any details Best regards, Riccardo Riccardo Andriuzzi riccardo.andriuzzi@msc.com
Article
Lucas Enard · Aug 17, 2022

The simplest template with REST CRUD for InterSystems IRIS with ONLY Python

[In this GitHub](https://github.com/grongierisc/iris-python-flask-api-template) based on [this InterSystems community rest api template](https://github.com/intersystems-community/iris-rest-api-template) Guillaume and I have created this example of all the import CRUD operations usable using ONLY Python on IRIS and using Flask. Using the IRIS ORM or by simply doing SQL requests as both methods are seen in the GitHub. # 1. intersystems-iris-docker-rest-template This is a template of a REST API application built in python in InterSystems IRIS. It also has OPEN API spec, can be developed with Docker and VSCode. - [1. intersystems-iris-docker-rest-template](#1-intersystems-iris-docker-rest-template) - [2. Prerequisites](#2-prerequisites) - [3. Installation](#3-installation) - [3.1. Installation for development](#31-installation-for-development) - [3.2. Management Portal and VSCode](#32-management-portal-and-vscode) - [3.3. Having the folder open inside the container](#33-having-the-folder-open-inside-the-container) - [4. How it works](#4-how-it-works) - [5. How to Work With it](#5-how-to-work-with-it) - [5.1. POST request](#51-post-request) - [5.1.1. Testing POST request](#511-testing-post-request) - [5.1.2. How POST request works](#512-how-post-request-works) - [5.2. GET requests](#52-get-requests) - [5.2.1. Testing GET request](#521-testing-get-request) - [5.2.2. How GET request works](#522-how-get-request-works) - [5.3. PUT request](#53-put-request) - [5.3.1. Testing PUT request](#531-testing-put-request) - [5.3.2. How PUT request works](#532-how-put-request-works) - [5.4. DELETE request](#54-delete-request) - [5.4.1. Testing DELETE request](#541-testing-delete-request) - [5.4.2. How DELETE request works](#542-how-delete-request-works) - [6. How to start coding](#6-how-to-start-coding) - [7. What's inside the repo](#7-whats-inside-the-repo) - [7.1. Dockerfile](#71-dockerfile) - [7.2. .vscode/settings.json](#72-vscodesettingsjson) - [7.3. .vscode/launch.json](#73-vscodelaunchjson) # 2. 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. It is to be noted that the table Sample.Person was already created in advance for the demo using in the management portal in the sql tab: ```sql CREATE TABLE Sample.Person ( Company VARCHAR(50), DOB DATE, Name VARCHAR(4096), Phone VARCHAR(4096), Title VARCHAR(50) ) ``` # 3. Installation ## 3.1. Installation for development Clone/git pull the repo into any local directory e.g. like it is shown below: ``` $ git clone https://github.com/grongierisc/iris-python-flask-api-template.git ``` Open the terminal in this directory and run: ``` $ DOCKER_BUILDKIT=1 docker-compose up -d --build ``` ## 3.2. Management Portal and VSCode This repository is ready for [VS Code](https://code.visualstudio.com/). Open the locally-cloned `formation-template-python` folder in VS Code. If prompted (bottom right corner), install the recommended extensions. ## 3.3. Having the folder open inside the container **It is really important** to be *inside* the container before coding. For this, docker must be on before opening VSCode. Then, inside VSCode, when prompted (in the right bottom corner), reopen the folder inside the container so you will be able to use the python components within it. The first time you do this it may take several minutes while the container is readied. [More information here](https://code.visualstudio.com/docs/remote/containers) ![Architecture](https://code.visualstudio.com/assets/docs/remote/containers/architecture-containers.png) By opening the folder remote you enable VS Code and any terminals you open within it to use the python components within the container. Configure these to use `/usr/irissys/bin/irispython` # 4. How it works The `app.py`, once launched (inside the container) will gather CRUD request. Depending on the type of the request, the right message will be created to send to the `FlaskService`, this service will call the CrudPerson operation that will, depending on the type of the message send from the service to it, dispatch the information needed to do the action requested. For more details you can check the `How it works` part of [this fully documented demo](https://github.com/grongierisc/interoperability-embedded-python). # 5. How to Work With it This template creates /crud REST web-application on IRIS which implements 4 types of communication: GET, POST, PUT and DELETE aka CRUD operations. These interface works with a sample persistent class `Person` found in `src/python/person/obj.py`. First of all, it is needed to start the 'app.py' situated in `src/python/person/app.py` using flask. To do this, go in the `app.py` file, then to the `run and debug` window in VSCode and select `Python: Flask` then run. This will run the app. ## 5.1. POST request ### 5.1.1. Testing POST request Create a POST request, for example in Postman or in RESTer for mozilla, with raw data in JSON like: ```json {"name":"Elon Musk","title":"CEO","company":"Tesla","phone":"123-123-1233","dob":"1982-01-19"} ``` Using `Content-Type` as `application/json` Adjust the authorisation if needed - it is basic for container with default login and password for IRIS Community edition container. Send the POST request to `localhost:5000/persons/` This will create a record in the table Sample.Person of IRIS and return the `id` of the newly added `Person` ![Here is an example](https://user-images.githubusercontent.com/77791586/166916610-de0791ab-18d4-4dd4-a416-fffb9b6254cb.mov) of the POST request to add `Elon Musk` to the table. ### 5.1.2. How POST request works ```python def create_person(self,request:CreatePersonRequest): """ > Create a new person in the database and return the new person's ID :param request: The request object that was passed in from the client :type request: CreatePersonRequest :return: The ID of the newly created person. """ # sqlInsert = 'insert into Sample.Person values (?,?,?,?,?)' # iris.sql.exec(sqlInsert,request.person.company,dob,request.person.name,request.person.phone,request.person.title) # IRIS ORM person = iris.cls('Sample.Person')._New() if (v:=request.person.company) is not None: person.Company = v if (v:=request.person.name) is not None: person.Name = v if (v:=request.person.phone) is not None: person.Phone = v if (v:=request.person.title) is not None: person.Title = v if (v:=request.person.dob) is not None: person.DOB = v Utils.raise_on_error(person._Save()) return CreatePersonResponse(person._Id()) ``` Using IRIS ORM we can create a new `Person` and save into our database. ## 5.2. GET requests ### 5.2.1. Testing GET request To test GET you need to have some data. You can create it with a [POST request](#41-testing-post-request). This REST API exposes two GET requests: all the data and one record. To get all the data in JSON call: ``` localhost:5000/persons/all ``` To request the data for a particular record provide the id in GET request like 'localhost:5000/persons/id', here is an example: ``` localhost:5000/persons/1 ``` This will return JSON data for the person with ID=1, something like that: ```json {"name":"Elon Musk","title":"CEO","company":"Tesla","phone":"123-123-1233","dob":"1982-01-19"} ``` ### 5.2.2. How GET request works ```python def get_person(self,request:GetPersonRequest): """ > The function takes a `GetPersonRequest` object, executes a SQL query, and returns a `GetPersonResponse` object :param request: The request object that is passed in :type request: GetPersonRequest :return: A GetPersonResponse object """ sql_select = """ SELECT Company, DOB, Name, Phone, Title FROM Sample.Person where ID = ? """ rs = iris.sql.exec(sql_select,request.id) response = GetPersonResponse() for person in rs: response.person= Person(company=person[0],dob=person[1],name=person[2],phone=person[3],title=person[4]) return response def get_all_person(self,request:GetAllPersonRequest): """ > This function returns a list of all the people in the Person table :param request: The request object that is passed to the service :type request: GetAllPersonRequest :return: A list of Person objects """ sql_select = """ SELECT Company, DOB, Name, Phone, Title FROM Sample.Person """ rs = iris.sql.exec(sql_select) response = GetAllPersonResponse() response.persons = list() for person in rs: response.persons.append(Person(company=person[0],dob=person[1],name=person[2],phone=person[3],title=person[4])) return response ``` This time, using the `iris python` `sql.exec` function, we can directly run SQL code inside the IRIS database, gather the information needed and send it back to the API and to the user. ## 5.3. PUT request ### 5.3.1. Testing PUT request PUT request could be used to update the records. This needs to send the similar JSON as in POST request above supplying the id of the updated record in URL. For example we want to change the record with id=5. Prepare the JSON in raw like following: ``` {"name":"Jeff Besos","title":"CEO","company":"Amazon","phone":"123-123-1233","dob":"1982-01-19"} ``` and send the put request to: ``` localhost:5000/persons/5 ``` ### 5.3.2. How PUT request works ```python def update_person(self,request:UpdatePersonRequest): """ > Update a person in the database :param request: The request object that will be passed to the service :type request: UpdatePersonRequest :return: UpdatePersonResponse() """ # IRIS ORM if iris.cls('Sample.Person')._ExistsId(request.id): person = iris.cls('Sample.Person')._OpenId(request.id) if (v:=request.person.company) is not None: person.Company = v if (v:=request.person.name) is not None: person.Name = v if (v:=request.person.phone) is not None: person.Phone = v if (v:=request.person.title) is not None: person.Title = v if (v:=request.person.dob) is not None: person.DOB = v Utils.raise_on_error(person._Save()) return UpdatePersonResponse() ``` Using IRIS ORM we can check if the id leads to a `Person`, if it does, we can update it using our new information and save it into our database. ## 5.4. DELETE request ### 5.4.1. Testing DELETE request For delete request this REST API expects only the id of the record to delete. E.g. if the id=5 the following DELETE call will delete the record: ``` localhost:5000/persons/5 ``` ### 5.4.2. How DELETE request works ```python def delete_person(self,request:DeletePersonRequest): """ > Delete a person from the database :param request: The request object that is passed to the service :type request: DeletePersonRequest :return: The response is being returned. """ sql_select = """ DELETE FROM Sample.Person as Pers WHERE Pers.id = ? """ rs = iris.sql.exec(sql_select,request.id) response = DeletePersonResponse() return response ``` This time, using the `iris python` `sql.exec` function, we can directly run SQL code inside the IRIS database and delete the person. # 6. How to start coding This repository is ready to code in VSCode with InterSystems plugins. Open `/src/python/person/app.py` to change anything on the api. Open `/src/python/person/bo.py` to be able to change things related to the internal requests, this is where you can use SQL - it will be compiled in running IRIS docker container. # 7. What's inside the repo ## 7.1. Dockerfile The simplest dockerfile to start IRIS. Use the related docker-compose.yml to easily setup additional parametes like port number and where you map keys and host folders. ## 7.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)) ## 7.3. .vscode/launch.json Config file if you want to debug with VSCode ObjectScript If you are interested, check out the formation I made on the tools I used in this GitHub : https://github.com/LucasEnard/formation-template-python As Issues are disabled in the GitHub Repo I place my issue here. Container starts fine Postman fails:POST http://localhost:5000/persons/ Error: connect ECONNREFUSED 127.0.0.1:5000 Network agent: "Desktop Agent" Request Headers Content-Type: application/json User-Agent: PostmanRuntime/7.29.2 Accept: */* Cache-Control: no-cache Postman-Token: d40ec7c2-5b24-4944-8a76-c4cbf2685bf7 Host: localhost:5000 Accept-Encoding: gzip, deflate, br Connection: keep-alive Request Body {"name":"Elon Musk","title":"CEO","company":"Tesla","phone":"123-123-1233","dob":"1982-01-19"} as port 5000 is not mapped in docker-compose.yml this might be related ??? DONE!I found my solution and placed it in a PullRequest.it was slightly more than just a missing port. Thanks Robert for the PullRequest and making sure of the quality of the demos/articles. Sometimes it's hard do build and test at the same time, this is why in medium to large projects the development teams are different from the testers. Thanks again :) You're welcome. Those things keep my mind in speed. I failed in testing.where can I find the pull request and how to use it? my PR contains an update on docker-compose.ymland a bash script startflask.shall available here https://github.com/rcemper/iris-python-flask-api-template Sep.23 all merged I'm getting 403 when I do a Post request on localhost:5000/persons/. What am I doing wrong? Yes, the flask app run on 8080 and map on docker compose to 4040. I update the github to make flask run on 5000 and map to 5000. @Guillaume.Rongier7183 , just curious, why do you need CallIn service enabled? Still have Forbidden after update and rebuild: Because underneath embedded python is using CallIn Service of IRIS. And by default this service is off. So, every time I need to use embedded python with IRIS I need to turn CallIn on?
Announcement
Anastasia Dyubaylo · Nov 2, 2022

[Video] InterSystems IRIS FHIR SQL Builder: Sneak Peek

Hi Community, In this video, you will learn about exciting new ways to perform analytics using data in your HL7® FHIR® repository: ⏯ InterSystems IRIS FHIR SQL Builder: Sneak Peek @ Global Summit 2022 🗣 Presenter: @Patrick.Jamieson3621, Product Manager, InterSystems Subscribe to InterSystems Developers YouTube to get updates about new videos!
Announcement
Anastasia Dyubaylo · Aug 25, 2022

Check out InterSystems Ideas - Our Official Feedback Portal

Hey Community! We've always had this idea on the back burner about improving the process of collecting, analyzing, and responding to product enhancement requests from our members. We knew we needed a good user experience and even better internal processes to make sure the best ideas were gathered, heard, and responded to. And finally, this thought has come to fruition! So in case you missed it, let me introduce to you the Official InterSystems feedback portal: 💡 >> InterSystems Ideas << 💡 InterSystems Ideas is a new and improved method for you to submit product enhancement requests and ideas related to our services (Documentation, Dev Community, Global Masters, etc.), see what others have submitted, vote on your favorite ones, and get feedback from InterSystems. We are starting active development and promotion of both the Ideas portal and your ideas. We wish for you to have a public way to get feedback from our product managers and members of the Community. ✅ The ideas with the most votes will be sent to the Product Management Department for review. Share your ideas with the community, and contribute by voting and commenting on other ideas – the more votes the more influence! See you on the InterSystems Ideas portal!
Question
prashanth ponugoti · Oct 6, 2022

How to create desk top icon for InterSystems terminal command

Hi Friends, I have created an object script class method to anonymize live hl7 messages with some info masking. To anonymize files , I need to place live messages in d://input folder and need to execute the below command in the Intersystems terminal do ##class(prashanth.tool.HL7Annonymiser).processFilesInDir("D:\Input\") ANONYMIZED files will be generated in D:\output\" folder. everything is working fine. Here when i need to annonymise some files , 1) I need to open terminal (iris) 2) connected to user 3) change to my namespace 4) run classmethod command I am looking for a solution, where i will place files in input folder and , I will click some icon in desktop. Could you please guide me , how to create windows icon for above 4 steps? (need to create some bat file) I used to do create a desktop icons to run any specific java program. Is it possible to execute InterSystems terminal commands on windows CMD? Thanks in advance Prashanth Refer to this documentation https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=GTER_batch#GTER_example_command_Line thanks, Deepak, it works for me
Announcement
Dmitry Maslennikov · Oct 3, 2022

InterSystems Package Manager ZPM 0.4.0 Release

A new release of ZPM has been published 0.4.0 New in this release Added support for Deployed packages, publishing, and installation Support for multiple registry servers, e.g. public community registry, private corporate, and so on, including Python embedded code Ability to show all versions and package origin in search Fixed issue for packages with preload code The expanded limit for the length of arguments in Invoke Multiple registries It is now possible to define more than one registry in your instance, so, you may use public community, testing, or private corporate registry at the same time. Just use another name for the registry For instance, we can add the testing registry zpm:USER>repo -n test -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42 test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> zpm:USER>repo -list test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> registry Source: https://pm.community.intersystems.com Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No And in addition to this change, it's now possible to redefine properties for registry by only passing the name of the existing registry. For instance to update only the password zpm:USER>repo -n test -pass PassWord42 test Source: https://test.pm.community.intersystems.com/registry/ Enabled? Yes Available? Yes Use for Snapshots? Yes Use for Prereleases? Yes Is Read-Only? No Deployment Enabled? No Username: test Password: <set> Deployed packages Since version 0.4.0, ZPM now supports deployed packages. The minimal module.xml may look like below, important here is Deploy="true" flag <?xml version="1.0" encoding="UTF-8"?> <Export generator="Cache" version="25"> <Document name="demo.ZPM"> <Module> <Name>demo</Name> <Version>1.0.0</Version> <Description>DEMO.</Description> <Keywords>demo</Keywords> <SourcesRoot>src</SourcesRoot> <Resource Name="Sample.Demo.PKG" Deploy="true"/> </Module> </Document> </Export> The process of development is the same as previously, you should use the load command to load the module in development mode (by default) zpm "load /home/irisowner/myproject" In this case, zpm will load source code, and ignore Deploy flag due to DeveloperMode, so, you can modify the code. Publishing To publish deployed module, you have to use your own registry, or you may use the testing community registry for tests. zpm:USER>publish demo -DPublishTo=test [USER|demo] PrepareDeploy START [USER-PACKAGE-429287|demo] PrepareDeploy SUCCESS [USER-PACKAGE-429287|demo] Reload START (/home/irisowner/zpm/packages/demo/) [USER-PACKAGE-429287|demo] Reload SUCCESS [demo] Module object refreshed. [USER-PACKAGE-429287|demo] Validate START [USER-PACKAGE-429287|demo] Validate SUCCESS [USER-PACKAGE-429287|demo] Compile START [USER-PACKAGE-429287|demo] Compile SUCCESS [USER-PACKAGE-429287|demo] Activate START [USER-PACKAGE-429287|demo] Configure START [USER-PACKAGE-429287|demo] Configure SUCCESS [USER-PACKAGE-429287|demo] Activate SUCCESS [USER-PACKAGE-429287|demo] Package START [USER-PACKAGE-429287|demo] MakeDeployed START [USER-PACKAGE-429287|demo] MakeDeployed SUCCESS [USER|demo] Package SUCCESS [USER|demo] Register START [USER|demo] Register SUCCESS [USER|demo] Publish START [USER|demo] Publish SUCCESS When ZPM see that package uses Deploy=true for some resources, for the purpose of packaging and publishing it creates a new temporary namespace, and loads the package there, deploys the code, and packages what's left without the original source code, where it is not supposed to be. And log shows each step and the namespace where that step was performed. An additional parameter -DPublishTo=test, defines the name of the registry where to publish the package. And if you wish you may change the release number with parameter as well -DNewVersion=1.0.0 Installation deployed packages Installation is as usual, but you will not be able to install deployed package, or any package in production mode if you already have the package installed in development mode. zpm:USER>install demo ERROR! Cannot install 'demo' over previously installed in developer mode You would need to uninstall the package installed in development mode, or use a clean namespace or instance for it. It's important to remember, that deployed package does not have source code, so, the packaging should be completed on a specific version of IRIS that which developer support. The registry supports multiple platform versions for one specific version of the package, so, during installation zpm will request a version for the platform. To compare versions it uses only major and minor parts of the IRIS version, e.g. 2022.2, 2021.1. When you will try to install the package on an unsupported version of IRIS, will get the error zpm:USER>install test/demo ERROR! Deployed package 'demo' 1.0.0 not supported on this platform 2022.1. Successful install zpm:USER>install test/demo [USER|demo] Reload START (/usr/irissys/mgr/.modules/USER/demo/1.0.0/) [USER|demo] Reload SUCCESS [demo] Module object refreshed. [USER|demo] Validate START [USER|demo] Validate SUCCESS [USER|demo] Compile START [USER|demo] Compile SUCCESS [USER|demo] Activate START [USER|demo] Configure START [USER|demo] Configure SUCCESS [USER|demo] Activate SUCCESS Docker images with ZPM The latest ZPM already available with IRIS Community and pre-installed ZPM Image names intersystemsdc/iris-community intersystemsdc/irishealth-community intersystemsdc/iris-ml-community intersystemsdc/irishealth-ml-community And tags available latest, and full version tag 2022.1.0.209.0-zpm preview, and full version tag 2022.2.0.345.0-zpm 2021.2.0.651.0-zpm All images are available for x86-64 and ARM64 by the same name. Great release! @Dmitry.Maslennikov For deployed code, does this prevent source (src or module.xml) from being stored on the disk as well? At least for the developer. Yes, the final package has no source code at all, it only delivers compiled code, so, that's why it requires the exact version of platform to build on and install Great release! If classes with Embedded python methods can be deployed in a deployed (with no source) mode? I did some tests with Embedded Python as well, and it keeps working even without source code. Great! Does deployed code work with BPL BPs? Only if defined as classes in module.xml. But, probably can be improved to support any way. This is great, thank you! Should the "Deploy=true" be provided for every resource? If the module contains two resources, and one is in Deploy mode and the second without, will the second be deployed with source code and the first without? Right, only resources marked as Deployed=true will appear without source code in the final package Nice work!! What is another way? They are classes, right?
Announcement
Anastasia Dyubaylo · May 4, 2022

InterSystems Grand Prix Contest Kick-off Webinar 2022

Hi Community, We're pleased to invite all the developers to the upcoming InterSystems Grand Prix Contest 2022 kick-off webinar! We'll share the details of our mega Grand Prix Contest 2022 and describe how you can win up to $22,000 in prizes! Unlike our other InterSystems Developer Community contests, this contest allows you to use any element of our data platform - IntegratedML, Native API, multi-model, Analytics and NLP, Open API and Interoperability, IKO, etc - in your project. In this webinar, we'll talk about the topics to expect from participants and show you how to develop, build and deploy applications on InterSystems IRIS data platform. Date & Time: Monday, May 9 – 11:00 AM EDT Speakers: 🗣 ​​​@Alex.Woodhead, InterSystems Technical Specialist🗣 ​​​@Robert.Kuszewski, InterSystems Product Manager🗣 @Jeffrey.Fried, InterSystems Director of Product Management🗣 ​​​@Dean.Andrews2971, InterSystems Head of Developer Relations🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager We will be happy to talk to you at our webinar in Zoom. ✅ Register for the kick-off today! Hey everyone, The kick-off will start in an hour! Please join us in Zoom. Or enjoy watching the stream on YouTube: https://youtu.be/hjFtYog-FQQ Hey Developers, The recording of this webinar is available on InterSystems Developers YouTube! Please welcome: ⏯InterSystems Grand Prix Contest Kick-off Webinar 2022
Article
Timothy Leavitt · Oct 12, 2022

Loading data into InterSystems IRIS from R using RJDBC

I just wrote up a quick sample to help a colleague load data into IRIS from R using RJDBC, and figured it's worth sharing here for future reference. Ultimately it was pretty simple, aside from IRIS not liking "." in column names; the workaround is to just rename the columns. Someone better at R than me could probably provide some generic approach. # Need a valid value for JAVA_HOME prior to calling library(RJDBC) Sys.setenv(JAVA_HOME="C:\\Java\\jdk-8.0.322.6-hotspot\\jre") library(RJDBC) library(dplyr) # Connect to IRIS – needs path to InterSystems JDBC JAR in your installation drv <- JDBC("com.intersystems.jdbc.IRISDriver", "C:\\InterSystems\\IRIS\\dev\\java\\lib\\1.8\\intersystems-jdbc-3.3.0.jar","\"") conn <- dbConnect(drv, "jdbc:IRIS://localhost:1972/USER", "IRIS Username", "IRIS Password") dbListTables(conn) # For maximum confusion, load the iris dataset :) data(iris) # IRIS doesn't like "." in column names, so rename. (Probably could code this generically but I’m not that good at R.) iris <- iris %>% rename(sepal_length = Sepal.Length, sepal_width = Sepal.Width, petal_length = Petal.Length, petal_width = Petal.Width) # dbWriteTable/dbGetQuery/dbReadTable just work dbWriteTable(conn, "iris", iris, overwrite = TRUE) dbGetQuery(conn, "select count(*) from iris") d <- dbReadTable(conn, "iris") bravo Tim!! A generic way to rename the columns would be as follows (I believe with this you no longer need to load the dplyr package): names(iris) <- gsub("\\.", "_", names(iris))
Announcement
Laurel James (GJS) · Oct 10, 2022

Managing InterSystems Interoperability Productions using Deltanji Source Control

Introducing a new component driver for Deltanji source control, which enables highly granular management of InterSystems Interoperability Productions with tight integration into the management portal InterSystems Interoperability Productions are defined in a single monolithic class definition. A production can contain many hundreds or thousands of configuration items. This presents a problem if multiple developers are working on different Business Processes within the same production simultaneously. Simultaneous development is almost inevitable for large productions containing many configuration items. Deltanji source control now addresses this problem by increasing the granularity with which items can be managed. Instead of versioning a single class definition containing all the configuration items, this new component driver allows individual configuration items to be managed separately. Each configuration item has its own versioning and revision history and can be checked-out, checked-in, and deployed independently of any other items in the same Production. Because each configuration item within a production class is managed by Deltanji as a first-class component in its own right, Deltanji provides all the source control, versioning, and workflow capabilities that it provides for any other component. We'll be showing a demo of this feature during our partner presentation at the InterSystems UKI Summit next week on Day 2 (19th Oct) @ 1.15pm. If you can't make it, you can also see it in action at our User Group Session on November 3rd at 3pm (GMT). Register your attendance on Eventbrite here - https://bit.ly/3yqzfvS To find out more about Deltanji, visit our website georgejames.com or drop us an email info@georgejames.com
Question
prashanth ponugoti · Feb 28, 2022

InterSystems IRIS Community version does not have Samples Namespace

Hi Community , I have installed InterSystems IRIS Community in my personal laptop to do some POCs. Here are the defined namespaces available: %SYS HSCUSTOM HSLIB HSSYS PPONUGOTINS USER How to create samples in it? please advice me. Thanks, Prashanth https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=ASAMPLES Hi! Please, checkout this post: https://community.intersystems.com/node/498271 HTH If you want to discover IRIS for Health with some samples, the best way is to install ZPM (community package manager). More info here : https://community.intersystems.com/post/install-zpm-one-line Then, you have access of almost all application in OpenExchange. Let's have an example with csvgen-ui : https://openexchange.intersystems.com/package/csvgen-ui ``` zpm "install csvgen-ui" ``` In OpenExchange you will find may example about rest API, web app, and so.
Article
Deirdre Viau · Apr 1, 2022

InterSystems Reports: How to store Server system databases in IRIS

InterSystems Reports Server stores system tables in an IRIS instance of your choice. How is this configured? Read this article if: You installed Logi Server directly using the Logi installer, not the InterSystems install script, OR You want to change the system database configuration Background The system databases are initially configured upon install. The InterSystems install script asks you for a superserver port, namespace, and user. It creates the namespace and does the Logi setup for you. If you run the Logi installer directly, it puts the system databases in a local Derby database by default. InterSystems Reports Server queries the system databases upon startup. If startup fails with the message "An error occurs when connecting to the database", it may be related to this setup. Clarification InterSystems Reports has two types of database connections. These databases are completely unrelated. They can be on the same IRIS instance, but they don't have to be. Database What it stores Where connection is configured Server system database Logi Server configuration and states. Example: Logi user table dbconfig.xml in InterSystems Reports Server file structure, or Server UI Report data source The data that is displayed on reports. Example: Patient diagnoses Designer Catalog Manager How to configure system databases post-install 1) If InterSystems Reports Server is running, shut it down cleanly. 2) Put a copy of the IRIS JDBC driver somewhere on the machine. Make note of the path. Example: C:\MDV\intersystems-jdbc-3.1.0.jar 3) In setenv.bat (Windows) or setenv.sh (Linux), in the installation's bin folder, add the JDBC driver path to the ADDCLASSPATH string. For Windows, use a semicolon (;) as a delimiter. For Linux, use colon (:). Example (Windows): set ADDCLASSPATH=%REPORTHOME%\lib;%JAVAHOME%\lib\tools.jar;C:\MDV\intersystems-jdbc-3.1.0.jar 4) Create a database and namespace in your IRIS instance. To avoid conflicts, only use these for InterSystems Reports; do not share with another application. No special mappings are required. 5) Create a user with access to your database. This is used to retrieve data via JDBC query. 6) Update the connection info in dbconfig.xml, in the installation's bin folder. Refer to this documentation. The url has the format: jdbc:IRIS://<server name>:<superserver port>/<namespace> 7) Start InterSystems Reports Server. Frequently Asked Questions Q. How can I tell if this worked? A. Start InterSystems Reports Server, and make sure it starts succesfully. Then, see if any Logi tables were created in your IRIS namespace. You can use SQL Explorer and check the SQL.User schema. Q. Do these steps copy the content of the system tables to the new database? A. No. This creates fresh tables, like a new install. This may be fine right after install, or in a test system. If you need to preserve the content of the tables, use the DBMaintain tool to backup and restore: Backing up and Restoring Server Data (v18) Q. InterSystems Reports Server won't start. There are errors in the log like: [SQLCODE: <-201>:<Table or view name not unique>] [%msg: <Table 'SQLUser.UPDATEDETAILS_1' already exists>] A. This can happen when you change the system username after the system databases have been set up in IRIS. The Logi tables already exist in IRIS, with the old user as owner. The new user does not have access. To fix this, give the new user full privileges on all SQLUser tables in the namespace. Additional Documentation Configuring the Server Database (v18) InterSystems Reports Server Installation
Announcement
Evgeny Shvarov · Jun 1, 2022

Technical Bonuses Results for InterSystems Grand Prix Contest 2022

Hi developers! Here is the score of technical bonuses for participants' applications in the InterSystems Grand Prix 2022 programming Contest! Project InterSystems FHIR IntegratedML Native API Interoperability Production EXtension Embedded Python AtScale Tableau, PowerBI, Logi InterSystems IRIS BI Docker ZPM Online Demo Unit Testing First Article on DC Second Article on DC Code Quality Video on YouTube Total Bonus Nominal 5 4 3 3 4 5 4 9 3 2 2 2 2 2 1 1 3 55 db-migration-using-SQLgateway 2 2 2 6 CrossECP-IRIS 2 2 2 1 7 M-N-Contests 2 2 2 2 1 1 3 13 cryptocurrency-rate-forecasting 0 FHIR Patient Viewer 5 2 3 10 IRIS import manager 3 2 2 7 test-data 3 5 2 2 2 2 2 1 19 Docker InterSystems Extension 2 3 5 apptools-infochest 2 2 2 2 8 iris-mail 3 5 2 2 2 2 1 17 production-monitor 3 2 2 7 iris-megazord 5 3 2 2 2 2 2 1 3 22 apptools-admin 2 2 2 6 webterminal-vscode 2 2 ESKLP 3 2 2 7 Disease Predictor 4 2 2 2 1 3 14 iris-fhir-client 5 5 2 2 2 2 1 3 22 Water Conditions in Europe 5 4 9 3 2 2 2 1 3 31 FHIR Pseudonymization Proxy 5 3 2 2 12 ObjectScript-Syntax-For-GitLab 2 2 1 5 CloudStudio 2 3 5 FIT REST Operation Framework 3 2 2 7 Bonuses are subject to change upon the update. Please claim here in the comments below or in the Discord chat. My app Disease Predictor has YouTube video. It is already added at the end of OEX app page description (https://openexchange.intersystems.com/package/Disease-Predictor). So I claim youtube bonus. I've added YouTube video and added it at the description of OEX Application https://openexchange.intersystems.com/package/Water-Conditions-in-EuropeAlso two related articles posted to DC, linked to application, please count. And the last question is about bonuses for Tableau, PowerBI, Logi. According to The Rules 3 points count for each of that systems. I've used all them 3 in Contest App. I've added YouTube video and 2nd Article for iris-fhir-client app (https://openexchange.intersystems.com/package/iris-fhir-client) .So please consider it. Thanks Added zpm/docker support (though struggling w/ M1 docker a bit I think) Hi @Craig.Regester! This is great! Please submit the app with the ZPM option on OEx to make it available for everyone!
Announcement
Anastasia Dyubaylo · Aug 24, 2022

InterSystems Developers at Global Summit 2022: Developer Ecosystem Session

Hi Community, We're super excited to share with you a special session from Global Summit 2022! And it is so special to us because it is about us and with us! Please welcome: 🤩 InterSystems Developer Ecosystem @ Global Summit 2022 🤩 In this session, you will learn the latest news and features of InterSystems' powerful Developer Community portal, Open Exchange application gallery, and Global Masters gamification Hub. Presenters:🗣 @Dean.Andrews2971, Head of Developer Relations, InterSystems🗣 @Evgeny.Shvarov, Startups and Community Manager, InterSystems Special thanks to our DC members who were part of this session: ⭐️ @Irène.Mykhailova AKA @Iryna.Mykhailova, Moderator of FR DC⭐️ @José.Pereira, Moderator of PT DC⭐️ @Muhammad.Waseem, Active Contributor of Dev Community⭐️ @Dmitry.Maslennikov, Moderator of EN DC⭐️ @Scott.Roth, Moderator of EN DC⭐️ @Jeffrey.Drumm, Moderator of EN DC⭐️ @John.Murray, Moderator of EN DC Our big applause to all these amazing speakers! In the photo above, you can see them all and more (from left to right): @Djeniffer.Greffin7753, @Evgeny.Shvarov, @Scott.Roth, @Dmitry.Maslennikov, @Dean.Andrews2971, @Muhammad.Waseem, @Jeffrey.Drumm, @Irène.Mykhailova, @John.Murray, and @José.Pereira. Hope you enjoy our session! Feel free to share your feedback in the comments to this post 😉 I'm really glad I could attend Global Summit this year! I had a blast! And I look forward to the next year's Summit
Article
Dmitry Maslennikov · Sep 15, 2022

n8n workflow platform with InterSystems Cloud SQL

On the Latest GlobalSummit 2022, InterSystems Introduced Cloud SQL. So, you may have lightweight InterSystems IRIS with access to SQL only. Well, what if you would still need some Interoperability features in the cloud as well? There are various solutions on the market nowadays, which offer a bunch of integration adapters out of the box and can be extended with support from the community. Some time ago, I've implemented an adapter for the Node-RED project, which can be deployed manually everywhere you want. Now I would like to introduce a new integration with my recent discovery, n8n.io n8n.io is a workflow automation platform, that supports over 200 different integrations out of the box and from a community, and now including InterSystems IRIS. Let's Install it. n8n is a NodeJS application, and can be installed directly on a host machine with npm $ npm install -g n8n $ n8n s Or it just with docker image. InterSystems IRIS node package requires debian, so, we need debian version of n8n $ docker run -it --rm \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n:latest-debian Now we can open http://localhost:5678/ in a browser. With the first start it will offer to register the owner of this instance, you may skip it. So, it's the main window. Where you can use quite simply add new nodes in a workflow, all nodes accessible through the Plus buttons. By default only out-of-the box integrations available there, InterSystems IRIS integration is not in the list, yet. Let's install it. Settings -> Community Nodes -> Install, enter n8n-nodes-iris, check consent checkbox, and press Install again Now this node is installed And can be added to a workflow InterSystems Cloud SQL For the demo I will use Cloud SQL, but you may use any IRIS instance. n8n-nodes-iris does not support encrypted connection, yet. So, we would need to use unecrypted connection for this case. I have Cloud SQL instance up and running, I have hostname, port, and Password which I set manually. Back to n8n instance, and add this server there. Credentials on the left panel, New, find IRIS here and Continue You may create as many Credentials as you need, if say about IRIS, you would need it per any Server and Namespace, you would want to connect with. Not so much fields here, fill them and Save Let's query The idea of n8n nodes is quite simple. There are two types of nodes, triggers - can start the workflow, manually or by some event regular - just do some work, they get input from any previous node represented as JSON in UI, and may or may not return some other object after work. If node returns nothing workflow stops, after that node. IRIS node is a regular one, and it may accept data from the previous node, but can't trigger any actions (but probably may get this functionality in the future), Add new IRIS node, select previously created credentials from the list, or create a new one right from here. The only supported features is Execute Query and Insert, at the moment. And this can be extended in the future Execute Query, allows to execute any SQL query, as parameters placements allows to use $1, $2 and so on, values for parameters can be added too, and with help from n8n itself, it can just easily insert needed values from the input data. Insert, allows to insert data to the selected table. It shows the list of available tables, so, no need to retype it, as well as available columns for the selected table For the demo, I decided to request reddit for a new topics and place them in IRIS SQL Table. To simplify the process, I've created table Sample.reddit with three fields subreddit, title and created. I've added HTTP Request node, and configured it to request reddit's new feed in JSON format, and I can test the node with Execute node button, and the the real output right the way It's a whole output as one, so, I need to split the posts here, with Items list node, 1 item in input, and 20 items in output And finally it's time to insert data to SQL Table. When node executed it, executes the query as many as many items in input, and automatically places the data, as configured And let's check whats in our table now form Cloud SQL UI So, as you can see, even with simple version of IRIS, we still may get some integration, and possible to do more with this. Check the video with demo of this project in action Do not hesitate to vote for my application on the contest, and for sure you may support my work here Hi Dmitry, Your video is now on InterSystems Developers YouTube: ⏯ InterSystems IRIS with n8n.io Enjoy! Great initiative ! I love this approach, building plug-ins for third-party software to facilitate integration with IRIS. You have done it too for node red ? Next one, i vote for make.com Yeah, node-red was my first attempt. And now, I only found n8n somehow, but did not find zapier and make, which looks like a bit better. And to do it for make will be even more challenging for me, because it requires .Net for plugins, while node-red, n8n, and zapier are with NodeJS
Announcement
Anastasia Dyubaylo · Sep 13, 2022

InterSystems at Big Data Minds DACH 2022 in Berlin, Germany

Hi Community, We're super excited to share with you our upcoming appearance at the 10th anniversary Big Data Minds DACH 2022 in Berlin, Germany! ⏱ Date & Time: 18 – 20 September 2022 📍 Location: Maritim proArte Hotel Berlin, Friedrichstraße 151 | 10117 Berlin This event is organized by we.CONECT and InterSystems will lead a “Challenge your peers” session titled “Looking for a silver bullet in data management - data mesh, data fabric or something else entirely?” We will be discussing questions like: Which data management technology is best suited to ensure the long-term success of a company today? In your opinion, what are the main requirements for a modern data management solution? If you could change anything about the way your company handles data today, what would it be and why? How many data silos do you estimate exist in your organization? If you and your employees were given access to all relevant data in your company tomorrow, what project would you want to implement first on that basis? Who do you think should have supremacy over data: the respective department/project team, the central IT department or the management? What would be the biggest hurdles in your company that would have to be overcome for an overarching view of all data? Don't miss this great opportunity to discuss the different approaches for modern data management to efficiently get "From Big to Smart Data" in a company of like-minded peers! >> REGISTER HERE <<