Search

Clear filter
Article
Muhammad Waseem · Mar 10, 2024

InterSystems VSCode ObjectScript Extension Pack in glance

Introduction Visual Studio Code (VS Code) is a free source code editor made by Microsoft for Windows, Linux, and macOS. It provides built-in support for JavaScript, TypeScript, and Node.js. You can add extensions to provide support for numerous other languages including ObjectScript. The InterSystems extensions enable you to use VS Code to connect to an InterSystems IRIS server and develop code in ObjectScript. The Visual Studio Code Documentation is an excellent resource on VS Code, so it is a good idea to be familiar with it. Development in ObjectScript involves both your local client machine and an InterSystems IRIS server. Because both resources are required, workflow is different from that typical for many languages. Source code files are edited on the client, and saved to the local disk where they can be managed with a Version Control System. In addition, source files are exported to an InterSystems IRIS server, where they can be compiled, run, and debugged. Below is the list of VSCode extensions: 1 - InterSystems Server Manager Extension InterSystems Server Manager is a Visual Studio Code extension for defining connections to InterSystems servers. These definitions can used by other VS Code extensions when they make connections. Installation Open VSCode and click on Extensions Icon Type intersystems in the search field to find these extensions in the Marketplace, as illustrated in the following screenshot:Click on Install, Once installed InterSystems Icon will appear in the sidebar. Click on it 1.1 Define Connections to IS Server Click on Add Server (+ icon) Enter the name of the server e.g "Local Instance", description (Optional), Hostname or IP address, Port of Web server, and Username. The first time you expand a server in the tree VS Code displays a modal dialog asking for your permission: 1.2 View Server Tree Server Manager displays connection definitions as a tree on an InterSystems Tools view: In this tree, you can: Launch the InterSystems Management Portal, either in a VS Code tab or in your default browser. List namespaces. Add namespaces to your VS Code workspace for viewing or editing source code on the server, including web application (formerly CSP) files, with the ObjectScript extension. Tag favorite servers. Set icon colors. Focus on recently used connections. Add new servers, and edit existing ones. 1.3 Launching Management Portal When you hover over a server entry in the tree two command buttons let you launch InterSystems Management Portal. The first button uses VS Code's Simple Browser feature, which creates a tab alongside any documents you may have open. The second button opens Portal in your workstation's default web browser. 1.4 Amending and Removing Servers From a server's context menu, or from Server Manager's top-right '...' menu, choose Edit Settings. This opens VS Code's Settings Editor and filters its contents. Click on Edit in settings.json link The Server can be added, modified, or deleted by modifying the settings 2 - InterSystems ObjectScript Extension This extension provides language support for Visual Studio Code. Before installing this extension you must install InterSystems Server Manager Extension as it has a dependency on it.Just click on the Install button to install the Extension. 2.1 View/Edit code Once installed, Follow below steps to view/edit code in Namespace Now we can Add/Modify code from the VSCode editor. Click on the Add New file icon to add a new class 2.2 Save and Compile Code While saving, the system will compile and save the code to the server 2.3 Code completion Upon writing code, this extension will provide a code completion option 2.4 Intellisense Support This extension provides Intellisense support for commands, system functions, and class members 2.5 Code highlighting Select any text from the code and the system will highlight all the related appearances 2.6 Debug code Click beside the code line number to add a breakpoint, and click Debug on the top of the method signature 2.7 Direct Access This extension provides Direct access to edit or view server code in the VS Code Explorer via isfs and isfs-readonly FileSystemProviders. Server-side source control is respected. 2.8 Go to definition support Go to definition for ObjectScript classes, class members, macros, routines, routine labels, and embedded SQL tables, fields and class methods and queries invoked as SQL procedures. 3 - InterSystems Language Server Extension Language Server is meant to provide the language-specific smarts and communicate with development tools over a protocol that enables inter-process communication.Before installing this extension you must install InterSystems Server Manager and InterSystems Objectscript Extension as this Extension has a dependencies on it. 3.1 Semantic token-based coloring Semantic token-based coloring for InterSystems ObjectScript classes, routines and CSP files, with support for embedded languages like SQL, Python, HTML, XML, Java, JavaScript and CSS. 3.2 Embedded Language Support Provide support for embedded languages like SQL, Python, HTML, XML, Java, JavaScript and CSS. 3.3 Hover information for ObjectScript commands Hover information for ObjectScript commands, system functions, system variables, classes, class members, macros, preprocessor directives, UDL keywords, Parameter types, Storage definition keywords, and embedded SQL tables, fields and class methods and queries invoked as SQL procedures. 3.4 Override Class Members To override inherited class members, Right click and select the Override Class members option. Select the class member type for override from the list. e.g select class member type "Method"Search/select %OnNew methodEnter desired code 3.5 Code Completion (ObjectScript/XML) Code completion for ObjectScript classes, class members, system functions, system variables, macros, include files, package imports, preprocessor directives, UDL keywords, UDL keyword values, UDL Parameter types and UDL Storage definition keywords. Code completion for properties referenced using instance variable syntax (i%PropertyName) must be triggered manually using Ctrl-Space with the cursor immediately after the i% 3.6 Method Signature Help Signature help for ObjectScript methods and macros that accept arguments. 3.7 Code Linting Code linting for ObjectScript and UDL that checks for the following: Syntax errors, including for embedded languages. References to local variables that are undefined. Classes and routines that don't exist in the database. Invalid UDL Parameter types. Mismatches between declared UDL Parameter types and the assigned value. Classes, Methods, Parameters and Properties that are Deprecated. $ZUTIL functions that are deprecated or have been superseded. 3.8 Folding Ranges The extension supports Folder Ranges for the following: ObjectScript code blocks (If/ElseIf/Else, Try/Catch, For, While, etc.) UDL class members ObjectScript routine labels UDL descriptions ObjectScript documentation comments (/// in first column) XML tags in XData blocks Storage XML tags JSON in XData blocks %DynamicObject and %DynamicArray ObjectScript preprocessor code blocks Multi-line macro definitions Dotted Do blocks Embedded code blocks (SQL, HTML, JavaScript) 3.9 Code refactoring Wrapping a block of ObjectScript code in a Try/Catch block. In the same way, we can Extract a block of ObjectScript code from an existing method to a new method 3.10 Type Hierarchy Provider for ObjectScript classes to show subclasses and superclasses in a hierarchical tree view: NOTE : The best way to install and use these extensions is by installing the "InterSystems ObjectScript Extension Pack" which installs a set of the above extensions.Click on install from the extensions to install a set of 3 extension packs. Thanks Hi Muhammad, great article! Do you know by chance how to switch from an instance to another through the ObjectScript extension? I have a local folder where I'm setting up a Docker instance, but the folder is linked to my IRIS local instance and it is not possible to unlink them even by doing Toggle connection or Refresh connection. Of course, I would like to connect to my containerized instance instead. Thanks :) Hi @Pietro.DiLeo,I appreciate your feedback. did you try by modifying the server settings? Hi @Muhammad.Waseem, in the end I found a solution modifying the settings.json file, which contained all the info about my connection If you use server side editing, you can have as many servers/namespaces as you need in Explorer. In many environments server side editing in much more convenient. Thanks @Enrico.Parisi, this is interesting. I'm going to check it out
Announcement
Anastasia Dyubaylo · Apr 8, 2024

InterSystems Vector Search, GenAI and ML Contest

Hey Community, We have more exciting news! The new InterSystems online programming contest dedicated to Generative AI, Vector Search and Machine Learning is starting very soon! 🏆 InterSystems Vector Search, GenAI and ML Contest 🏆 Duration: April 22 - May 19, 2024 Prize pool: $14,000 The topic Develop any solution using InterSystems IRIS or InterSystems IRIS for Health or IRIS Cloud SQL that uses generative AI and/or machine learning. To make it even more interesting, the authors of the most innovative projects harnessing the power of vector search will be invited to the Global Summit 2024* (up to 3 people)! * The invited developers will receive a free ticket to the Global Summit and a free hotel stay from June 8 to 13, 2024. General Requirements: An application or library must be fully functional. It should not be an import or a direct interface for an already existing library in another language (except for C++, where you really need to do a lot of work to create an interface for IRIS). It should not be a copy-paste of an existing application or library. Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our team will review all applications before approving them for the contest. The application should work either on IRIS Community Edition or IRIS for Health Community Edition. Both could be downloaded as host (Mac, Windows) versions from Evaluation site, or can be used in a form of containers pulled from InterSystems Container Registry or Community Containers: intersystemsdc/iris-community:latest or intersystemsdc/irishealth-community:latest . The application should be Open Source and published on GitHub. The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works. Only 3 submissions from one developer are allowed. NB. Our experts will have the final say in whether the application is approved for the contest or not based on the criteria of complexity and usefulness. Their decision is final and not subject to appeal. Prizes 1. Experts Nomination - a specially selected jury will determine winners: 🥇 1st place - $5,000 🥈 2nd place - $3,000 🥉 3rd place - $1,500 🏅 4th place - $750 🏅 5th place - $500 🌟 6-10th places - $100 2. Community winners - applications that will receive the most votes in total: 🥇 1st place - $1,000 🥈 2nd place - $750 🥉 3rd place - $500 🏅 4th place - $300 🏅 5th place - $200 If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners. Who can participate? Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account! Developers can team up to create a collaborative application. 2 to 5 developers are allowed in one team. Do not forget to highlight your team members in the README of your application – DC user profiles. Important Deadlines: 🛠 Application development and registration phase: April 22, 2024 (00:00 EST): Contest begins. May 12, 2024 (23:59 EST): Deadline for submissions. ✅ Voting period: May 13, 2024 (00:00 EST): Voting begins. May 19, 2024 (23:59 EST): Voting ends. Note: Developers can improve their apps throughout the entire registration and voting period. Helpful Resources: ✓ Documentation: InterSystems IRIS Vector Search documentation InterSystems IntegratedML documentation Boosting Facial Recognition Vector Search ✓ Example applications and libraries: IRIS Vector Search llamaindex-iris langchain-iris workshop-vector-face IRIS FHIR SQL Builder DBT IntegratedML integratedml-demo-template integratedml-demo - Embedded Python demo suite iris-local-ml - Hugging Face and python usage with IRIS iris-fine-tune-ml - training and tuning ml models with python and InterSystems IRIS QuinielaML - soccer match predictions with IntegratedML workshop-integratedml-csv iris-rag-demo - RAG demo implementation ✓ Online courses: Using Vector Search for Generative AI IntegratedML Interactive Intro Course Hands-on with IntegratedML ✓ Videos: Using Vector Search for Generative AI Adding AI into Interoperability Production Building Models with integratedML in the cloud Generative AI Use Cases in Healthcare ✓ For beginners with IRIS: Build a Server-Side Application with InterSystems IRIS Learning Path for beginners ✓ For beginners with ObjectScript Package Manager (IPM): How to Build, Test and Publish IPM Package with REST Application for InterSystems IRIS Package First Development Approach with InterSystems IRIS and IPM ✓ How to submit your app to the contest: How to publish an application on Open Exchange How to submit an application for the contest Need Help? Join the contest channel on InterSystems' Discord server or talk with us in the comment to this post. We're waiting for YOUR project – join our coding marathon to win! By participating in this contest, you agree to the competition terms laid out here. Please read them carefully before proceeding. great newss!!! Let's go team! @Henrique.GonçalvesDias  @José.Pereira  ![all aboard](https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExMXMwczk1eGNyODcxNW55OWRjeGtsa2o2NXZlNDdxOGdrMXV4ZGg5biZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/W1OAQHaeUB0b3ySANp/giphy.gif) @henry GIFs rock 😁 Hey Devs! The recording of the "Kick-off Webinar for Vector Search, GenAI and ML Contest" is on InterSystems Developers YouTube! 🔥 ⏯Kick-off Webinar for Vector Search, GenAI and ML Contest Developers! The first application has already been uploaded to the contest! geo-vector-search by @Robert.Cemper1003 Check it out! There are two more weeks left to join! We are waiting for your apps! Hey Devs! One more article has been added to the contest! Check it out! Hackupc24_inter by @Jonathan.RodríguezBarja This is the last week for uploading the apps and join the contest! Community! Two more articles have been added to the contest! AriticleSimilarity by @xuanyou.du iris-image-vector-search by @shan.yue There are only two days left to the end of registration!Upload your application and join the contest!🔥 Developers! Two more articles have been added to the contest! ImageSearchVideo by @Rebecca.Deng HackUPC24_Klìnic by @Tanguy.Vansnick The technology bonuses have been announced, use them to get you extra points in the voting! Community! This is the last day to join the contest! Hurry up, upload your apps, and get ready for the voting!By the way, 6 more competitors have joined the contest! iris-ai-studio by @Ikram.Shah3431companies-search by @Lucas.Fernandes7309iris-medicopilot by @henry AutoML Churn Predict Showroom by @Yuri.GomesBG-AppealAI by @KATSIARYNA.Shaustruk DNA-similarity-and-classify by @davimassaru.teixeiramutaWALL-M by @Somesh.Mehra
Announcement
Olga Zavrazhnova · Apr 9, 2024

InterSystems Online Developer Roundtable - April 25, 2024

Hi Developers, Join us at the upcoming Developer Roundtable on April 25th at 9 am ET | 3 pm CET. 📍We will have 2 topics covered by the invited experts and open discussion as always. Tech Talks:➡ Practical Usage of Embedded Python - by Stefan Wittmann Product Manager, InterSystems ▶ Recording: Do you have questions which you'd like to discuss on this roundtable? Please share them in the comments to this post. Not a Global Masters member yet? Sign in with your InterSystems SSO credentials. Hello everyone, recording of this roundtable is now available to watch here https://youtu.be/a6VH4Hg5TmI?si=03MKw1mHbQPBYPqm
Announcement
Anastasia Dyubaylo · Apr 9, 2024

InterSystems Developer Ecosystem Winter News 2023/2024

Hello and welcome to the Developer Ecosystem Winter News! This winter was full of online and offline activities in the InterSystems Developer Ecosystem. In case you missed something, we've prepared for you a selection of the hottest news and topics to catch up on! News 🎇 Your year 2023 in numbers! 🎆 Happy New Year 2024! Season's greeting to all and sundry! 💡 InterSystems Ideas News #10 and #11 📝 Open Exchange Gets New Look and New Features 📝 What's new in VS Code, 2024 📝 Global Masters: new badges for Suggested Tech Quizzes 📝 Check out our new Instruqt course: InterSystems IRIS for Health Contests & Events InterSystems FHIR and Digital Health Interoperability Contest Contest Announcement Kick-off Webinar Technology Bonuses Time to Vote Technical Bonuses Results Winners Announcement Meetup with Winners Technical Article Contest: InterSystems IRIS Tutorials Contest Announcement Extra Bonuses Winners Announcement Advent of Code 2023 Contest Announcement Winners Announcement GenAI Crowdsourcing Mini-Contest Contest announcement. Round 1 Round 2 Winner announcement ⏯️ [Webinar in Hebrew] VS Code - Beyond the Basics ⏯️ [Webinar in Spanish] OAuth 2.0, OpenID Connect & LDAP: Monitoring access to FHIR resources 🧑‍🤝‍🧑 InterSystems Benelux & France Summit 2024! 👨‍💻 [Hackathon] Get Inspired: Winners of InterSystems FHIR challenge at European Healthcare Hackathon 2023 👨‍💻 [Hackathon] InterSystems at TreeHacks 2024 - Stanford's premier hackathon 🚰 [Water Cooler Talk] Tech discovery of the year Latest Releases ⬇️ Developer Community Release, January 2024 ⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2024.1 developer previews Preview 1 Preview 2 Preview 3 Preview 4 ⬇️ Maintenance Release 2023.1.3 of InterSystems IRIS, IRIS for Health, & HealthShare Health Connect is now available ⬇️ InterSystems IRIS Cloud SQL and InterSystems IRIS Cloud IntegratedML are now Generally Available ⬇️ IAM 3.4 Release Announcement ⬇️ IKO (InterSystems Kubernetes Operator) 3.7 Release Announcement ⬇️ Caché, Ensemble, and HSAP 2018.1.9 released ⬇️ Adaptive Analytics 2023.3 now available Best Practices & Key Questions 🔥 Best Practices of Winter 2023/2024 Using SQLAlchemy to transfer tables to and from IRIS Http request response time monitoring GitOps with the InterSystems Kubernetes Operator Python and IRIS in practice - with examples! Using FHIR Adapter to deliver FHIR services over legacy systems - Introduction Working with %JSON.Adaptor Inter process communication with $SYSTEM.Event Using FHIR Adapter to offer FHIR services over legacy systems - Architecture Using FHIR Adapter to offer FHIR services over legacy systems - Reading a Resouce Using FHIR Adapter to offer FHIR services on legacy systems - Posting a Resource ❓ Key Questions of Winter 2023/2024: December, January, February People and Companies to Know About 🌟 Global Masters of Winter 2023/2024: December, January, February 👨‍💻 Meet Enrico Parisi - New Developer Community Moderator! Job Opportunities 💼 InterSystems FHIR Consultant Short Term So... Here is our take on the most interesting and important things! What were your highlights from this past season? Share them in the comments section and let's remember the fun we've had! Nice to get all the news in one post! great summary - thank you for compiling :)
Announcement
Anastasia Dyubaylo · Apr 1, 2024

Winners of the Technical Article Contest: InterSystems IRIS Tutorials

Hi Community! It's time to celebrate our 19 fellow members who took part in the latest Technical Article Contest: InterSystems IRIS Tutorials and wrote 🌟 21 AMAZING ARTICLES 🌟 Our judges mentioned that it was a very tough challenge to choose only three articles each because more deserved points. Despite it all, they persevered and now it's time to announce the winners! Let's meet the winners and look at their articles: ⭐️ Expert Awards – winners selected by InterSystems experts: 🥇 1st place: Orchestrating Secure Management Access in InterSystems IRIS with AWS EKS and ALB by @Roy.Leonov 🥈 2nd place: Tutorial: Adding OpenAI to Interoperability Production by @Maria.Nesterenko 🥉 3rd place: InterSystems IRIS® CloudSQL Metrics to Google Cloud Monitoring by @sween and Generating meaningful test data using Gemini by @Iryna.Mykhailova ⭐️ Community Award – winner selected by Community members. This time, we have 2 articles with the most likes: 🏆 Generating meaningful test data using Gemini by @Iryna.Mykhailova and 🏆 How to send messages to Microsoft Teams by @Francisco.López1549 And... ⭐️ We'd like to highlight the author who submitted 3 articles for the contest: @Iryna.Mykhailova Let's congratulate all our heroes who took part in the Tech Article contest #5: @Robert.Cemper1003 @Veerarajan.Karunanithi9493 @Francisco.López1549 @sween @Andre @Yuri.Marx @Muhammad.Waseem @Iryna.Mykhailova @Laurel.James @Roy.Leonov @Maria.Nesterenko @Heloisa.Paiva @Chi.Nguyen-Rettig @Ewan.Whyte @Victoria.Castillo2990 @Daniel.Aguilar @Phillip.Wu2039 @FlávioLúcio.NavesJúnior @Alex.Woodhead THANK YOU ALL! You have made an incredible contribution to our Dev Community! The prizes are in production now. We will contact all the participants when they are ready to ship. Congratulations to the winners. Thanks for all, we must to repeat 😉 Nice work and thank you to all contributors - you make our Community a better place with more options for learning :) Congrats to the winners! Congratulations to all the winners. Great stuff to learn 👍 Congratulations to all the winners!It was a great event and highly useful to follow. Congrats to all! I learned a lot (and am still learning) from these great topics Congratulations to the winners! Congratulations to all participants and a special congratulations to all the winners!! Well deserved! Congratulations to all the participants 🎆 Well done! Amazing articles! Congratulations to winners and all participants!
Question
Iryna Mykhailova · Mar 16, 2024

Can't subscribe to InterSystems IRIS Cloud SQL

Hi guys, Apparently, I'm doing something wrong. Opened the InterSystems IRIS Cloud SQL, clicked on View Purchase Options and got an error: Something tells me that contacting AWS customer support won't help. What should be my steps to get access to it to try it out? For me it took a few days to solve a bit different issue, but only with InterSystems, that had to fix something on their site. I’d recommend contacting them through iservice, probably they can help @Benjamin.DeBoe please take a look Please open an iService ticket to request assistance, referencing your AWS account details. Can't even log in there - I get asked for a login and password in a loop 😭🤣 It doesn't seem to work for the Developer Community moderators' accounts.
Announcement
Olga Zavrazhnova · Mar 15, 2024

InterSystems Developer Community Roundtable - March 26, 2024

Hi Developers, Join us at the upcoming Developer Roundtable on March 26th at 11 am ET | 4 pm CET. 📍We will have 2 topics covered by the invited experts and open discussion as always! Talks: ➡ Demo on Documenting and Testing REST Call's by generating documentation and making scenario's for integration tests - presented by @Danny.Wijnschenk , Application Developer, Winfo.Danny is an independent developer based in Belgium, specialized in InterSystems Caché and IRIS. He has customers in both the healthcare and non-healthcare sectors. ➡ Cypress for web application testing - presented by @Pravin.Barton , Senior Applications Developer, InterSystems ▶ Update: watch the recording of the roundtable below. 📅 Date: March 26 🕑 Time: 11:00 am ET | 4:00 pm CET Do you have questions which you'd like to discuss on this roundtable? Please share them in the comments to this post. Not a Global Masters member yet? Sign in with your InterSystems SSO credentials. Hiya,I accidently marked myself not attending but I can't seem to find how to update my response so that I can attend. When I try the link to register it just says I'm not attending and I can't find a way to edit it.If there is any direction for how to fix this I'd appreciate it!Thanks Hi @Andre no worries, I have registered you. Please expect a calendar invite from me 😊 Thank you @Olga.Zavrazhnova2637 :D Hi All, the recording of the roundtable is published: https://youtu.be/2NeWf-Y8Cuk
Article
Luis Angel Pérez Ramos · Apr 29, 2024

Tasks flow with InterSystems IRIS Workflow Engine - Introduction

For some time I have been planning to do some type of proof of concept with the Workflow functionality, which, like so many other functionalities present in IRIS, tends to go quite unnoticed by our clients (and for which I say mea culpa). That's why I decided a few days ago to develop an example of how to configure and exploit this functionality by connecting it with a user interface developed in Angular. To avoid a very long article and make it more accessible, I am going to divide it into 3. In this first article I will present the functionality of Workflow as well as the example that we are going to solve. The second article will go into detail about the configuration and implementation of the production that will be responsible for managing the Workflow. Finally we will show how to access the information available in our Worflow through a web application. InterSystems IRIS Workflow Engine What better way to explain what this Workflow functionality is than to copy the description given in the IRIS documentation. A workflow management system automates the distribution of tasks among users. Automating the distribution of tasks according to a predefined strategy makes task assignment more efficient and task execution more responsible. A typical example is a help desk application that accepts problem reports from customers, sends the reports to members of the appropriate organizations for action, and, once the problem is resolved, reports the results to the customer. InterSystems IRIS Workflow Engine provides a much higher level of functionality than traditional, stand-alone workflow management systems. Where do we find the Workflow functionalities in our IRIS? Very simple, from the Management Portal: Let's briefly explain each of the available options before getting into the example project. Workflow Roles This option refers to roles in which we will classify the users who will use the functionality. The definition of role is somewhat confusing, I particularly prefer to see it more as types of tasks that we can create from our production. The name assigned to these roles must match the names of the Business Operations that we will later declare in our production to create tasks associated with said roles. Workflow Users IRIS users who can be assigned to different tasks will be associated with one or more roles. Users must be registered with IRIS. Workflow Tasks List of tasks created in the system with their associated information. From this window, tasks can be assigned to the different users corresponding to the task role. What are these tasks? Very simple, the tasks are instances of the EnsLib.Workflow.TaskRequest class, the object of this type will be sent from the Business Process in which it has been generated to a Business Operation of the class EnsLib.Workflow.Operation and with the name of the role that we have previously created. This action will in turn create an instance of the EnsLib.Workflow.TaskResponse class. The Business Operation will not return a response until the CompleteTask method of the TaskResponse class instance is executed. Workflow Worklist Similar to the previous functionality, it also shows us a list of tasks with the information associated with them. Workflow example The project that you can find associated with this article presents a simplified example of a solution to a typical problem of health organizations such as the treatment of chronic patients. These types of patients require continuous control and strict monitoring for which in many cases the professionals involved in care do not have the most appropriate means. In the example we are going to see how we can monitor patients with hypertension. We will assume that patients take their blood pressure daily with a blood pressure monitor that will send the reading to the server on which our InterSystems IRIS is installed. In the event that the blood pressure reading exceeds 140 systolic and 90 diastolic values, the patient will be informed that the blood pressure must be taken a second time after a certain time and, if the reading exceeds the limits again, both the patient and the doctor will be informed of the situation so that they can decide what action to take. To do this, we will divide this task flow into two stages: Stage 1: Receiving daily blood pressure reading. Reception in the production of HL7 message with blood pressure measurements. Checking the existence of the user in the system (and creating it if it does not exist), subsequently registering the user in the roles involved in the workflow. Extraction of blood pressure data and comparison with the alert criterion. If the data exceeds the alert criteria: Creation of a task for the patient informing them of the situation and requesting a new blood pressure measurement. Creation of automatic task to manage the second blood pressure reading. If the data does not exceed the alert criteria, the process is closed until the next reading is received the next day. Stage 2: Reception of second reading after the first reading exceeds the alert values. Reception of the HL7 message with the second data reading. Pending automatic task recovery. If blood pressure levels exceed the alert criteria: The automatic task is closed indicating the warning status. A manual task is created for the doctor reporting the patient's situation. A manual task is created for the patient alerting them to the situation and that their doctor has been informed. If levels do not exceed alert criteria: The automatic task is closed indicating that there is no danger. In the next article we will go into more detail on the design of our flow chart in charge of reflecting what was stated above. User interface As you have seen in the attached screenshots, the user interface that InterSystems IRIS provides for task management is, to say the least, quite spartan, but one of the advantages we have with IRIS is that we can create our own API REST to manage our task flow in a very simple way, we will discuss this point in our last article. To offer a friendly interface to users, we have developed a small web application in Angular using Angular Material that will allow us to create an interface simulating a mobile application. This mobile application will connect to InterSystems IRIS using JSON Web Tokens and will make HTTP requests to a specific web application published in IRIS, in such a way that the actions taken by the different actors on the tasks are reflected in the defined task flow. In the next chapter... After this introduction to the Workflow functionality, in our next article we will show how to implement the task flow necessary to solve the example that we have presented using a BPL, we will configure the entire production and we will see what the main classes involved in the Workflow are like (EnsLib.Workflow.TaskRequest and EnsLib.Workflow.TaskResponse). Thank you all very much for your attention! Thank you @Robert.Cemper1003 for your kind review! Great app, @LuisAngel.PérezRamos ! There is a set of other apps on OEX that are intended to improve the UI experience. Here is the API by @Eduard.Lebedyuk , Frontend 1 and Frontend 2 by @Sergei.Sarkisian , I'm not sure though which is preferrable?
Announcement
Olga Zavrazhnova · Jun 27, 2024

[Video] Demo: Monitoring and Alerting Capabilities of InterSystems IRIS

Hi Community, Watch this video to learn about the Monitoring and Alerting Capabilities of InterSystems IRIS. 🗣 Presenter: @Mark.Bolinsky, Principal Technology Architect, InterSystems This demo was prepared for one of our past online developer roundtables. We encourage you to ask your specific questions about this topic in the comments section, and we will invite our experts to answer them! Useful Links: InterSystems Documentation: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_monitoring https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_rest#GCM_rest_metrics https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_rest#GCM_rest_metrics_application https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCM_rest#GCM_rest_metrics_interoperability Prometheus Documentation: https://prometheus.io/docs/introduction/first_steps/ https://prometheus.io/docs/alerting/latest/alertmanager/ Cloud Watch Example: https://openexchange.intersystems.com/package/CloudWatch-IRIS Strong Community support: https://community.intersystems.com/post/grafana-support-intersystems-iris
Announcement
Toby Keod · Jun 18, 2024

Looking for InterSystems Cache developer [Remote, Part time]

We're looking for an experienced developer to join our team and help with the project on a part-time basis (20-30 hours a week). Required experience includes InterSystems Cache, PHP, and API. We're ready to start immediately if you're available. Fluency in English and the ability to work in the US time zone is preferred. About Us:Redline Coders, an IT consulting firm in California. Position Details:- Remote- 20-30 hours a week- Duration: 1-2 months Dear Sir/Madam, I am eager to express my interest in software development and have attached my resume for your review. With two years of experience in InterSystems Cache/Mumps, I am confident inmy ability to contribute effectively. I look forward to theopportunity to discuss further. Thank you for your time. Please see my Cache script I did https://www.youtube.com/watch?v=3tRgR7ma6Mk I am interested in joining your team. I have spent my entire professional career developing using Intersystems Cache developing very large scale web applications. I've enclosed my resume for your review. FYI...I will be on vacation from July 1st to July 12th.resume_april_2024.doc Hello, I am a software developer and started my MUMPS program experience 1990. After Micronetics quit's we switched to Caché. Because of a web-shop project I am familiar with PHP. Dear Recruiter, I hope this email finds you well. I wanted to take a moment to introduce myself and share a bit about my professional background in InterSystems technologies and healthcare IT. With over 12 years of experience, I have had the opportunity to work extensively in EMR, EHR, healthcare interoperability, HL7, FHIR, and CCDA, helping organizations enhance their healthcare data exchange and integration capabilities. My expertise includes: Healthcare Interoperability – Implementing HL7 v2/v3, FHIR, and IHE profiles to facilitate seamless communication between healthcare systems. EMR/EHR Implementation – Designing clinical data integration solutions that improve patient record management and ensure compliance with industry standards. Database & Application Development – Expertise in InterSystems IRIS, Cache, ObjectScript, SQL, and ODBC for building efficient and scalable healthcare applications. Additionally, my experience in investment & wealth management technology provides me with a unique perspective on designing secure, scalable, and compliance-driven solutions in healthcare IT. I am always eager to connect with like-minded professionals and explore potential collaborations where my expertise could contribute positively. Please feel free to reach out if there is an opportunity to connect or discuss any shared interests. Looking forward to staying in touch. Best regards,Arun Kumar Durairaj.+91-84088 03322.
Announcement
Anastasia Dyubaylo · Sep 10, 2024

[Video] InterSystems IRIS Vector Search and the Python Ecosystem

Hi Community, Play the new video on InterSystems Developers YouTube: ⏯ InterSystems IRIS Vector Search and the Python Ecosystem @ Global Summit 2024 InterSystems IRIS Vector Search is a new set of features that power your Generative AI applications. Learn how to get started with Vector Search and discover some examples of using it from popular Python frameworks such as LangChain and LlamaIndex. These open-source packages are popular among application developers, and there are hundreds of example projects available that can give you a head-start for your own AI application. Presenters:🗣 @tomd, Product Manager, Machine Learning, InterSystems🗣 @Dmitry.Maslennikov, Chief Technology Officer, CaretDev Enjoy watching, and expect more videos! 👍
Article
Laurel James (GJS) · Mar 12, 2024

Connecting to InterSystems IRIS in VS Code using SQLTools

SQLTools is a Visual Studio Code (VS Code) Extension with over 3.5 million downloads that provides connections to many of the most used databases, including InterSystems IRIS, using drivers. For developers new to VS Code, or those already familiar with it but are looking to streamline their connections to InterSystems IRIS, this tutorial will take you through installing the SQLTools extensions and the InterSystems IRIS drive. It then guides you on how to establish a connection to your instance of InterSystems IRIS and run a query. You will need: VS Code installed on your system and access to an instance of InterSystems IRIS. Installing the SQLTools extension and the InterSystems IRIS driver Launch VS Code. Navigate to the Extensions view on the Activity Bar or by pressing Ctrl+Shift+X. In the search bar, type "SQLTools" and press Enter. Locate the SQLTools extension from the search results and click on the "Install" button. Wait for the installation to complete, then close the tab. Take note of the new SQLTools icon in your Activity Bar. In the Extension search bar, type “SQLTools IRIS” and press Enter. Find the SQLTools InterSystems IRIS extension from the search results and click on the “Install” button. Once successfully installed, close the tab. Connecting to InterSystems IRIS Go to the SQLTools icon on the Activity Bar. Click “Add New Connection” and select the “InterSystems IRIS” driver. Enter a name for your connection. Fill in the connection details and optionally configure additional settings based on your environment. Test your connection using the “Test Connection” button. Once your connection has been successfully tested, click “Save Connection” to create the connection. Running a Query Navigate to the SQLTools icon on the activity bar, where you will see your connections. Right-click on the connection you want to make and select “Connect” from the context menu. Once connected, write a simple query. Click “Run on active connection”. SQLTools will then generate results, displayed in the right panel. To explore the tables in your database drill down on your connection in the Primary Sidebar. Select “Show Table Record” (Ctrl+E Ctrl+S) or click the magnifying glass icon. Click “Open” and “Open results as JSON”. I hope you found this tutorial useful and that using SQLTools helps to streamline your development environment in VS Code. If you give it a go, I’d love to hear how you get on! There's a VS Code livestream that features SQL Tools. You can view it here: https://www.youtube.com/watch?v=_8nSXEIMMpA&t=120s It's so good that they re-broadcast it just a couple of weeks ago. Highly recommended viewing if you want to get a feel for the capabilities of SQL Tools.
Article
Mary Ann Fusi · Apr 30, 2024

Monitoring InterSystems IRIS environments with Red Hat Insights

InterSystems worked closely with the Red Hat Insights team to implement a curated set of recommendations for system administrators to ensure the best experience running InterSystems IRIS on Red Hat Enterprise Linux (RHEL). Included with all RHEL subscriptions, the Insights service proactively identifies potential issues with monitored platforms and applications running on RHEL. Through our joint collaboration, Insights now watches for common scenarios that decrease the performance of IRIS in most cases and offers an InterSystems-approved recommendation for consideration. Ten recommendations are currently implemented and can be found under the “InterSystems” topic within the Insights Advisor service. Advisor recommendations help in areas including: Performance Tuning Guidance. We provide best practices for configuring HugePages, Transparent HugePages (THP), swappiness, shmmax kernel parameters, and more. Product Compatibility. Insights highlights which versions of InterSystems products are encouraged to be used to provide the best experience. Journaling and High-availability Configuration Suggestions, like Write Image Journaling (WIJ) drive mapping, identifying an arbiter to support automatic failure, or enabling FreezeOnError for better integrity and recoverability of InterSystems IRIS database. Every recommendation contains details about the detected RHEL version, InterSystems IRIS instance information, and system-specific step-by-step instructions to remediate the detected issue. Links to the InterSystems documentation are also provided for further reference. Enable Insights with InterSystems today. Registering your systems with Red Hat Insights is very straightforward and typically requires only a single command to be executed. Alternatively, the Red Hat registration assistant application can be used to complete the necessary steps based on your setup. Analysis of InterSystems IRIS workloads does not require additional steps and is enabled once systems are registered with Insights. Specific recommendations can easily be turned off if they are not applicable to your environment. Head to Red Hat Insights to learn more about the service and get started with the registration assistant. Talk with Red Hat experts at InterSystems Global Summit 2024. Red Hat will be exhibiting at InterSystems Global Summit June 9-12 and available to discuss Insights and other Red Hat capabilities. Great article! Thanks for sharing it with our Community :) This is great!!!!!!
Article
Luis Angel Pérez Ramos · May 3, 2024

Tasks flow with InterSystems IRIS Workflow Engine - Configuration

In our previous article we presented the general concepts as well as the problem that we wanted to solve by using the task engine integrated in InterSystems IRIS, in today's article we will see how we configure an interoperability production to provide a solution. Workflow Engine Configuration First we are going to define the roles of the tasks that we are going to manage, in our example we are going to define two types: AutomaticBloodPressureRole: to create automatic tasks that will have no intervention from the user. ManualBloodPressureRole: to create those tasks that the user must manually validate. It will not be necessary to assign users to these roles since we will do it later as we go along as we receive HL7 messages from different patients. We also do not need to add IRIS users to the Workflow since we will do it by code from production. Production setup For our example we are going to create a production within a NAMESPACE created ad-hoc and which we have called WORKFLOW. It will be in this production where we will include the business components that we need. Let's start by explaining the simplest components: Business Services HL7_File_IN: responsible for collecting HL7 files from a specific server path that will simulate receiving messaging from a medical device. Business Operations AutomaticBloodPressureRole:component of the class EnsLib.Workflow.Operation, with the name of one of the defined roles that we will use to generate in our Workflow the tasks that will not involve direct interaction with the user. ManualBloodPressureRole: similar to the previous Business Operation, but in this case the tasks we generate will require the user to intervene directly to close them. Let's now see in detail the Business Process that will manage the flow of information and the creation and management of the tasks involved in our cycle. Workflow.BP.BloodPressurePlan This Business Process is of the BPL type and will be responsible for creating the tasks involved in patient care and capturing the response, both from the patient and from the medical device that will send the information related to blood pressure levels. Start of the process: In this part the flow does the following: Checking user: checks the user received in the received ADT^A08 message and if it exists, continues moving through the flow, otherwise it creates the user in IRIS and assigns it to the roles defined in the workflow. To assign users to the role, it runs the following command: /// Workflow user creation set sc = ##class(EnsLib.Workflow.UserDefinition).CreateUser(username) /// Assigning Workflow user to the role set sc = ##class(EnsLib.Workflow.RoleDefinition).AddUserToRole(role, username) Get automatic task: Since in this flow we are going to manage both automatic and manual tasks, we must check if there are pending automatic tasks for the user for the patient received. This is relevant since if there are pending automatic tasks it means that we have had a previous reading whose values exceed normal levels. We will do the checking directly on the TaskResponse table where all the created tasks are saved, the query will be as follows: &sql(SELECT ID INTO :taskId FROM EnsLib_Workflow.TaskResponse WHERE TaskStatus_AssignedTo = :username AND TaskStatus_IsComplete = 0 AND %RoleName = :role) Getting count of OBX: we retrieve the number of OBX segments from our HL7 message. Check OBX values: we go through the OBX segments and extract only the data related to blood pressure. Pending tasks?: As we said in point 2, we check if we have a pending automatic task or not. First blood pressure reading: In this part of the flow we will deal with those messages that are not generated by a first reading that exceeds the defined maximum blood pressure levels. Check pressure: We check if blood pressure levels exceed pre-established limits; if they do not, the process will conclude without the need to do anything else. Otherwise it will be necessary to create the necessary tasks. Create manual task: The blood pressure has exceeded the defined safety levels, so it will be necessary to create a manual task in which we will inform the patient of the situation, indicating that they must take a second reading. Let's see the configuration of this activity. We will invoke the Business Operation ManualBloodPressureRole which will be in charge of generating the task by passing it a message of type EnsLib.Workflow.TaskRequest. We will define the actions that the patient can perform separated by commas in callrequest.%Actions, in this case we have only defined the "Accept" action. We configure the message that will be shown to the patient in callrequest.%Message. We assign the patient the created task by defining her username in callrequest.%UserName. Finally we will indicate a subject or title in callequest.%Subject and a priority (between 1 and 3) in callrequest.%Priority. Create auto task: similar to the previous activity configuration, but this time we will send it to the Business Operation AutomaticBloodPressureRole. This task will be the one that will be kept waiting for the patient's second blood pressure reading and will be the one that will cause any new message received by production for this patient not to generate new tasks by obtaining a false in the Pending task? activity. Wait for tasks: This activity will keep the task flow on hold until the task and manual are completed, that is, until the patient closes the alarm created by ManualBloodPressureRole and the IRIS production receives a second message from the medical device. Check if warning: We will get to this activity once the previous pending tasks have been closed. At this point we will check if the closing of the automatic task has received a new reading with levels that exceed the maximum configured blood pressure values (the task will be closed with a warning action) or not. If the measurement is less than the maximum values, the process will conclude. If the measurements exceed the maximum values, you will move on to the next activity. Warning task for doctor: A manual task is created to inform the doctor assigned to the patient that the patient may be suffering a crisis. Warning task for patient: we inform the patient with a new manual task that his doctor has been informed of the situation. Second blood pressure reading This part of the flow will only be accessed when there is a previously created automatic task that has not been completed. Check pressure: We again validate for the message received whether the blood pressure values exceed the limit or not. Close normal task: If the levels do not exceed the maximum values, we will close the pending task with the CompleteTask method provided by the EnsLib.Workflow.TaskResponse class that our task instantiates. The parameter used will indicate the action taken, in this case we will indicate that it is a false alarm by passing the value FalseAlarm, we could define any other one we want. Close warning task:Same as in the previous case, with the difference that in this case the action that we pass to the Workflow engine will be Warning and that it will be the value that the "Check if warning" activity that we have seen previously will check. As you can see in the following diagram (it is not literal but you can get an idea of how it will work), our task flow will work with 2 "threads" or "processes": The first thread/process will remain open in case it is necessary to wait for a second reading and it will be the second thread/process that will cause the reactivation of the first open thread upon receiving said second reading, thus concluding the defined task flow. Conclusion As you can see, configuring a task flow in a BPL is quite simple, and you can simulate automatic and manual tasks without much complication. In the next and last article we will see how users can interact with their tasks from an external application. Thank you all for your attention!
Announcement
Anastasia Dyubaylo · Oct 22, 2024

[Video] Using LLMs with InterSystems IRIS Interoperability Productions

Hi Community, Play the new video on InterSystems Developers YouTube: ⏯ Using LLMs with InterSystems IRIS Interoperability Productions @ Global Summit 2024 When we think of Large Language Models (LLMs), we usually think of chatbots like ChatGPT. These mimic human communication and are great for interacting with humans. But what if we have a different use case, such as a requirement for machine- readable output? Prompt engineering allows us to influence the output of the model. This video uses examples (e.g. sentiment analysis) to show how you can use InterSystems IRIS Productions, Embedded Python, and REST APIs to realize your own LLM-based applications. This can be done either by using self-hosted models to achieve maximum data protection or by using web services to gain access to the most powerful models currently available. 🗣 Presenter: @Andreas.Schuetz, Sales Engineer, InterSystems Enjoy watching, and expect more videos! 👍