InterSystems Developers https://community.intersystems.com/podcasts InterSystems Intersystems Community info@intersystems.com We’re InterSystems Developers. Specialize in Data Platforms: InterSystemsIRIS, Caché, HealthShare en Intersystems Community We’re InterSystems Developers. Specialize in Data Platforms: InterSystemsIRIS, Caché, HealthShare Wed, 28 Jan 2026 07:05:15 -0500 JSON2Class, the JSON to ObjectScript converter you've always wanted 0:00 How many times have you had to receive or generate a JSON and wished you could work on it using DTLs without having to deal with DynamicObjects trying to remember the name of each field? Do you want to break down and make your giant JSON file more digestible? In my case, never, but I thought that someone might find it useful to have a feature that captures your JSON and breaks it down into a series of ObjectScript classes that you can work with more easily and conveniently. Well then.behold JSON2Class in all its glory! How does JSON2Class work? Wed, 28 Jan 2026 07:05:15 -0500 post587221 Why Choosing the Right Custom Healthcare Software Development Company Matters in 2026 and Beyond 0:00 Introduction. The healthcare industry is going through one of the most significant digital transformations in its history. From hospitals and clinics to diagnostic labs, pharmacies, insurance providers, and telemedicine startups, every healthcare organization today relies heavily on technology to deliver safe, efficient, and patient‑centric services. At the heart of this transformation lies one critical factor choosing the right Custom Healthcare Software Development Company. Healthcare is no longer just about treatment; it is about experience, accuracy, compliance, and scalability. Wed, 28 Jan 2026 06:53:36 -0500 post587223 The Ultimate Guide To Tax Advice For Expats In 2026 0:00 . Navigating taxes as an American expat can feel overwhelming, especially with 2026's updated IRS rules and global compliance demands. Whether you're filing a tax return in Switzerland or another country, this guide delivers practical tax advice for expats to minimise liabilities, stay compliant, and optimise your finances. From U.S. filing basics to smart planning strategies, we'll cover everything you need to thrive abroad. 1. Filing U.S. Taxes Abroad (for American Expats). American residents and green card holders must file U.S. Wed, 28 Jan 2026 06:50:39 -0500 post587222 Reviews on Open Exchange - #62 0:00 If one of your packages on OEX receives a review, you get notified by OEX only of YOUR own package. The rating reflects the experience of the reviewer with the status found at the time of review. It is kind of a snapshot and might have changed meanwhile. Reviews by other members of the community are marked by * in the last column. I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix. Some were accepted and merged, and some were just ignored. So if you made a major change and expect a changed review, just let me know. The table. Tue, 27 Jan 2026 09:51:37 -0500 post587078 The Importance of Aftercare According to Dermatech Polyclinic 0:00 Achieving optimal results from dermatology and aesthetic treatments does not end with the procedure itself. Post-treatment care, or aftercare, plays a critical role in healing, maintaining results, and ensuring long-term skin health. Derma clinic Dubaiemphasizes structured, evidence-based aftercare protocols to maximize treatment efficacy, minimize complications, and support patient satisfaction. Understanding the Role of Aftercare in Skin Treatments. Tue, 27 Jan 2026 00:57:36 -0500 post587211 Ways to store and query lists and arrays in IRIS 0:00 As mentioned in the previous article, it is possible to configure the way you wish your collections to be stored and queried in SQL. To set this up, you will need to use the following field parameters and settings. The The code block. parameter tells the IRIS compiler which physical data structure to use when writing a collection to a Global. For a list of properties, the default value is "list", meaning that the data is serialized into a single string using $LISTBUILD (an internal binary format). It is stored as part of the main object’s data node in the global. Mon, 26 Jan 2026 19:23:06 -0500 post587209 AI Agents from Scratch Part 1: Forging the Brain 0:00 ![image1](/sites/default/files/inline/images/images/art01.png) Some concepts make perfect sense on paper, whereas others require you to get your hands dirty. Take driving, for example. You can memorize every component of the engine mechanics, but that does not mean you can actually drive. You cannot truly grasp it until you are in the driver's seat, physically feeling the friction point of the clutch and the vibration of the road beneath. While some computing concepts are intuitive, Intelligent Agents are different. To understand them, you have to get in the driver's seat. Mon, 26 Jan 2026 18:50:02 -0500 post587176 Remove deleted classes after import 0:00 When you deploy code from a repo, class (file) deletion might not be reflected by your CICD system.Here's a simple one-liner to automatically delete all classes in a specified package that have not been imported. It can be easily adjusted for a variety of adjunct tasks. The code block. The first command compiles classes and also returns a list of loaded classes. The second command deletes all classes from specified packages, except for the classes loaded just before that. Any generated classes are also skipped since they won't be in the loaded list. Mon, 26 Jan 2026 15:13:23 -0500 post581931 IRIS Agents: Building Agents on IRIS! 0:00 . Ever since I started using IRIS, I have wondered if we could create agents on IRIS. It seemed obvious we have an Interoperability GUI that can trace messages, we have an underlying object database that can store SQL, Vectors and even Base64 images. We currently have a Python SDK that allows us to interface with the platform using Python, but not particularly optimized for developing agentic workflows. This was my attempt to create a Python SDK that can leverage several parts of IRIS to support development of agentic systems. First, I set out to define the functional requirements. Mon, 26 Jan 2026 09:34:38 -0500 post587194 Reviews on Open Exchange - #63 0:00 If one of your packages on OEX receives a review, you get notified by OEX only of YOUR own package. The rating reflects the experience of the reviewer with the status found at the time of review. It is kind of a snapshot and might have changed meanwhile. Reviews by other members of the community are marked by * in the last column. I also placed a bunch of Pull Requests on GitHub when I found a problem I could fix. Some were accepted and merged, and some were just ignored. So if you made a major change and expect a changed review, just let me know. The table. Mon, 26 Jan 2026 07:25:14 -0500 post587191 Connecting IRIS to Apache Kafka securely with SSL and SASL 0:00 1-) Introduction. This article reflects my recent experiences at trying to connect an IRIS Business Operation to a secure Kafka Server, using SSL tunnels to encrypt the communications and using SASL (Simple Authentication and Security Layer) password hashing with SCRAM-SHA-512. 2-) Background Information. Kafka implementations can be made extremely secure by using encryption and ACLs (Access Control Lists) to control access to topics and other resources in the cluster. 2.1-) SSL Encryption. The first part, encryption, can be easily implemented by configuring SSL on the Kafka Listeners. Mon, 26 Jan 2026 05:52:07 -0500 post587168 Vibecoding Full Stack Applications With IRIS Backend in January 2026 0:00 How I Vibecoded a Backend (and Frontend) on InterSystems IRIS. I wanted to try vibecoding a real backend + frontend setup on InterSystems IRIS, ideally using something realistic rather than a toy example. The goal was simple take an existing, well-known persistent package in IRIS and quickly build a usable UI and API around it — letting AI handle as much of the boilerplate as possible. Here is the result of the experiments. Choosing the Data Model. For this experiment, I picked the Samples BI Demo. It’s good for vibecoding. Mon, 26 Jan 2026 05:51:30 -0500 post587190 ClassMethods Are Not Your Friends 0:00 There seems to be a generous use of ClassMethods in ObjectScript code generally. I hope my own experiences aren't representative, but I bet they are. Forgive me for giving away the ending of this article, but in short don't use them. Unless you can make a pretty convincing case that you have to, just never use them.1. What is a ClassMethod? In an ObjectScript class, you can define methods in two different ways in a Method, you must instantiate an instance of the class to call the method, and in a ClassMethod, you can call the method without instantiating the class. Mon, 26 Jan 2026 05:51:10 -0500 post585777 What Are Custom Mailer Boxes and How Do They Work? 0:00 Custom mailer boxes have become a popular packaging solution for businesses that ship products directly to customers. These boxes are designed to protect items during transit while offering a neat and organized presentation. Unlike generic shipping cartons, mailer boxes are often customized in size, structure, and material to match specific product needs. Their growing use in e-commerce and retail shows how packaging has evolved beyond simple protection. Mon, 26 Jan 2026 01:15:04 -0500 post587196 GraphRAG Inside InterSystems IRIS: Hybrid Retrieval for Fraud Detection (and other complex problems) 0:00 > **TL;DR ** This article demonstrates how to run GraphRAG-style hybrid retrieval—combining vector similarity, graph traversal, and full-text search—entirely within InterSystems IRIS using the [`iris-vector-graph`](https //github.com/intersystems-community/iris-vector-graph) package. We use a fraud detection scenario to show how graph patterns reveal what vector search alone would miss. - ## Why Fraud Detection Needs Graphs Every year, businesses and consumers lose billions to fraud. In 2024 alone, consumers reported $12.5 billion lost—a 25% increase year over year. Sun, 25 Jan 2026 22:21:07 -0500 post587193 ...ToLogical / LogicalTo... Visualization 0:00 A recent discussion made me aware that the documentation on DataType classes is excellent.http //docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_datatypes#GOBJ_datatypes_definingI just miss the visualization of the methods for Data Format Conversions. LogicalToDisplay() / DisplayToLogical()LogicalToOdbc() / OdbcToLogical()LogicalToStorage() / StorageToLogical()LogicalToXSD() / XSDToLogical()Graphic makes it much easier to understand for anyone beginning with Caché objects. Sun, 25 Jan 2026 10:10:14 -0500 post435686 Materialized Views 0:00 A VIEW in SQL is basically a prepared SQL statement.It has to be executed and assembled like any other SQL query.MATERIALIZED VIEW means that the content is collected before hands and can be retrieved rather fast.I saw the concept first with my favorite competitor named O* and they made a lot of noise about it. { favorite because I could win every benchmark against them }. Sun, 25 Jan 2026 10:04:39 -0500 post476306 Multidimensional Property Persistence - Part 2 (New Age) 0:00 While the classic solution followed rather close the concepts and design of the ancestorsCaché / IRIS allows a more modern approach to flexible/multidimensional propertiesLet's see our demo class as before. Class DC.Multi Extends (%Persistent, %Populate) [ Final ]{Property Name As %String;Property DOB As %Date;Property mJSON As %DynamicObject;/// Property Multi As %String [ MultiDimensional ]; The JSON object allows us all the flexibility you may needwith the key-value paradigm as a basic concept.The storage map honors this with a suitable entry. Sun, 25 Jan 2026 10:03:19 -0500 post476366 Multidimensional Property Persistence - Part 1 (Classic) 0:00 As you know in Caché / IRIS you have the possibility to define a property as Multidimensional as documented here https //docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_proplit#GOBJ_proplit_multidimand the explanation of how to use ithttps //docs.intersystems.com/iris20201/csp/docbook/Doc.View.cls?KEY=GOBJ_proplit#GOBJ_proplit_multidim_valuesThough the access is quite comfortable (in traditional COS sense) there are 2 main restrictions that hurt #1) It is not saved to disk unless your application includes code to save it specifically.#2) It cannot be stored in or expo Sun, 25 Jan 2026 10:02:01 -0500 post476361 Parameter passing to Language Extentions 2:01 IRIS and Caché / Ensemble offer the possibility to add Languages Extension as SystemFunctions, SystemVariables, SystemCommands. The related documentation tells you where to add the system-wide extension. Parameter passing is not covered explicitly.In principal, it is always a call for a subroutine. And at the end, you terminate with QUIT returning a value or not. SystemFunctionsYou call them as any other standard system function with all required parameters in parenthesis. eg $ZZR(47,11) and it will be processed. Just mentioned for completeness. Sun, 25 Jan 2026 09:57:49 -0500 post479496 Semi-Persistent Classes and Tables 0:00 If you define a Persistent Class / Table the class compiler generates for you an appropriate Storage definition.A different option is to define a SQL mapping for an already existing Global storage. This has been excellentlyexplained already in a different series of articles. The Art of Mapping Globals to Classes 1 of 3Once your storage map is defined it might be extended by the class compiler but the fundamentalstorage parameters will not change.This does not mean that you can't change it manually yourself.My article on The adopted Bitmap includes such a case. Sun, 25 Jan 2026 09:56:41 -0500 post476286 Websocket Client IRIS internal 0:00 IRIS 2010.1 brought us a new feature %Net.WebSocket.Client. As a continuation of my series of WS Clients I just couldn't resist to try it.Well, this is the result and it was rather simple in the end. After I succeeded in my personal fight against Windows Firewall ;-) You basically need to prepare 3 classes. Sun, 25 Jan 2026 09:55:04 -0500 post475641 Organize ZLANG 0:00 The guide “Extending Languages with %ZLANG Routines”Tells you all details you need to know to extend your programming language.EXCEPT How to do it in a clean way. This example of a %ZLANGC00.mac may show a possible approachto get an easy to overview and to manage setup.With less than 50 lines of code you might not be affected.But if your Studio shows close to 1000 rows or more you may get in troubles. My recommendation is simple.Instead of adding line-by-line commands and it's codeyou isolate each command and its code into a separate Include file. Sun, 25 Jan 2026 09:51:42 -0500 post479501 Native API for ObjectScript Demo 0:00 The demo is based on the raw class descriptions.The data classes used are Address, Person, Employee, CompanyFor a more attractive demo, a JSONtoString method by ID was added. After installation with ZPM just run from Terminal. The code block. Next, you get a list of possible demo actions.No input means no action.The menu loops until you exit. The code block. GitHub. Sun, 25 Jan 2026 09:46:02 -0500 post481551 fast JSON formatting (Caché / Ensemble) 0:00 t's also an example for a customized command extension (ZZJSN) in Caché & IRIS. This is the Caché version for fast JSON formatting but it also works in IRIS.Requires package ZPrettyTo allow parallel existence in IRIS this is named ZZJSN. see. The code block. This doesn't look so easy to follow.So this is a shorthand to save time and reduce mistyping. The attached ZZJSN.inc is to be included into your %ZLANGC00.mac. The code block. output to stream. The code block. output to string. The code block. GitHub. Sun, 25 Jan 2026 09:44:22 -0500 post479626 Fast JSON formatting (IRIS) 0:00 t's also an example for a customized command extension (ZZJSON) in IRIS. IRIS has a nice %JSON.Formatter class.But for debugging it is not really handy.see. The code block. so you proceed for the most simple case. The code block. Not a big thing.You do it once, you do it twice, and after the 5th time your fingers get tired. So this is a shorthand to save time and reduce mistyping. The attached ZZJSON.inc is to be included into your %ZLANGC00.mac. The code block. The code block. The code block. GitHub. Sun, 25 Jan 2026 09:44:01 -0500 post479576 Function to Check if string is JSON object 0:00 It's also an example of a customized SystemFunction extension (ZZISJSON) in Caché & IRISThis time it is to be included in %ZLANGF00.mac. A JSON string is mostly imported from a file or over RESTYou rely on a clean and compatible structure. This is the check. required ZPretty.mac. demo. The code block. The code block. The code block. GitHub. Sun, 25 Jan 2026 09:42:28 -0500 post479631 more usefull Object Dump 0:00 During testing your code you are often confronted with the need to examinethe actual content of an object. Either using ZWRITE or $system.OBJ.Dump()you get a picture of simple properties as "- attribute values -"while "- swizzled references -" are more confusing than informativeand with "- calculated references -" you are just left in the lurch. This small helper class allows you to dump an object to terminal ore.g in background to some stream for later review.By default, you see just properties with content,. The code block. or if explicitly requested all properties. The code block. Sun, 25 Jan 2026 09:36:13 -0500 post462641 M:N Relationship 0:00 If you have worked with Caché Objects,You know already all about Relationships (one many , parent child).But you will not find a word on many many relationships in the docs. But I met the question quite often from new adopters of Caché objects "Is it possible to implement many many relationships ?" YES - of course ! HowTo depends on the related tasks There is a heavy and a lightweight solution.Both have in common that they are not just out of the box and you haveto add some code to manage it. Let's take an example based on SAMPLES namespace. we have the case of an N 1 relationship. Sun, 25 Jan 2026 09:32:37 -0500 post445186 Outperforming PostgreSQL and MySQL 0:00 In a previous exercise, I was able to show the power of Caché.A medium-designed set of interdependent tables with some GB of data.URLs cross reference over some million pages resulting in ~3 billion records. Competition was between. Caché PostgreSQL MySQL Criteria were Speed + Storage consumptionI composed a customized loader fed over a "raw" TCP connectionMapping the "objects" into the final table by directly writing to Global Storage.,. Sun, 25 Jan 2026 09:30:56 -0500 post435451