Search

Clear filter
Announcement
Irène Mykhailova · Apr 24

InterSystems Ideas News #21

Hi Community! Welcome to Issue #21 of the InterSystems Ideas newsletter! This edition highlights the latest news from the Ideas Portal, such as: ✓ General statistics✓ Community Opportunity ideas Here are some March numbers for you. During this month, we had: 19 new ideas 1 implemented idea 6 comments 72 votes 👏 Thanks to everyone who contributed in any way to the Ideas Portal last month. In recent months, you've added several ideas that were categorized as Community Opportunity, which means that any member of the Developer Community is welcome to implement them and thus pave their way to the Hall of Fame! So here they are: Idea Author Dapper support in IRIS Vadim Cherdak InterSystems IRIS Project Initializer @Yuri.Gomes Use InterSystems Interoperability as a Traceability tool for GenAI LLM pipelines @Evgeny.Shvarov Introduce Flyway Support in IRIS @Evgeny.Shvarov Load Data on VSCode @Yuri.Gomes Add InterSystems wrapper for Supabase @Evgeny.Shvarov ✨ Share your ideas, support your favorites with comments and votes, and bring the most interesting ones to life! 🙏
Announcement
Anastasia Dyubaylo · Jan 27

[Video] Moving to InterSystems Reports

Hey Community, Enjoy the new video on InterSystems Developers YouTube: ⏯ Moving to InterSystems Reports @ Global Summit 2024 Learn how SHD Einzelhandelssoftware GmbH is leveraging InterSystems Reports, why they chose to use it, benefits, and lessons learned. Presenters: 🗣 Eric Hoelper, Managing Director, SHD Einzelhandelssoftware GmbH🗣 @Michael.Braam, Senior Sales Engineer, InterSystems Watch, learn, and grow with us — subscribe to never miss a beat!👍
Announcement
arun kumar · Mar 19

Looking for Opportunities in InterSystems Technology

Hi everyone, I am looking for new opportunities in the InterSystems technology space and would love to connect with professionals and organizations working in this ecosystem. With 12+ years of experience in software development, I specialize in: ✅ InterSystems Technologies:• InterSystems IRIS & IRIS for Health, Cache, MUMPS, GT.M, Ensemble• InterSystems HealthShare 2023.1, ODBC & MSSQL Integration, Data Exchange & System Design• Clinical Viewer, Registries (Patient, Clinical, Facility), Consent Policies ✅ Healthcare IT & Interoperability:• VA VistA EHR Applications, EMR, EHR, HL7, FHIR, CCDA• Data Interoperability, Clinical Data Exchange, and Scalable Healthcare Solutions ✅ Enterprise & Solution Architecture:• Scalable, High-Performance Systems in Healthcare & BFSI• Investment & Wealth Management – Fintech innovations, risk analytics, and digital transformations ✅ AI & Data Science:• AI, NLP, Digital Image Processing – Healthcare & Fintech Applications• Courses in NLP & Digital Image Processing from IIIT Hyderabad Additionally, I hold an Executive Program in Business Management (EPBM) from IIM Calcutta, strengthening my strategic decision-making and leadership capabilities. Previously, I worked at Franklin Templeton Investments, Optum (UnitedHealth Group), and IQVIA, contributing to enterprise solutions, fintech innovations, and large-scale system integrations. I am eager to explore collaborations and contribute to cutting-edge InterSystems-based solutions. If you know of any opportunities or would like to connect, feel free to reach out! Looking forward to engaging with the community! Best regards,Arun Kumar Durairaj,+918408803322,darunk67@gmail.com,linkedin.com/in/arun-kumar-d-14159457
Announcement
Irène Mykhailova · Mar 25

InterSystems Ideas News #20

Hi Community! Welcome to Issue #20 of the InterSystems Ideas newsletter! This edition highlights the latest news from the Ideas Portal, such as: ✓ General statistics✓ Results of the "DC search" sweepstakes✓ DC search ideas to vote for Here are some numbers from February for you. During this month, we had: 20 new ideas 2 implemented ideas 17 comments 59 votes 👏 Thanks to everyone who contributed in any way to the Ideas Portal last month. In our sweepstakes dedicated to improving the DC search, we've received 17 unique ideas! We will review them in the next few weeks and try our best to implement your great suggestions! Moreover, we're happy to announce the winner of our sweepstakes — @Jiayan.Xiang, who will soon receive the prize. More sweepstakes are in the works, so don't miss your chance to become a lucky winner! To wrap up this bulletin, check out the DC search suggestions and vote for your favorites, so we know what you're looking forward to the most Idea Author Search by key topics and parameters @Andre.LarsenBarbosa Improving Search Results Display @Andrew.Leniuk Empty Search Query @Andrew.Leniuk Typo Correction and Synonym Search @Andrew.Leniuk Personalized search @Andrew.Leniuk Search by version @DavidUnderhill DC Search by date range @Yuri.Gomes Remember user picked search result @Jiayan.Xiang Perform results query through translation @Andre.LarsenBarbosa Combined filter for search @Andre.LarsenBarbosa In relevance search order by date desc @Iryna.Mykhailova Phonetic search in the community @Andre.LarsenBarbosa AI-Powered Recommendations @diba Add filtering by type of post in DC search @Iryna.Mykhailova People Also Search For @Yuri.Gomes Voice search @Yuri.Gomes Improve selectivity of Articles and Questions in DC @Robert.Cemper1003 ✨ Share your ideas, support your favorites with comments and votes, and bring the most interesting ones to life! 🙏 Fantastic👏
Announcement
Irène Mykhailova · Feb 25

InterSystems Ideas News #19

Hi Community! Welcome to Issue #19 of the InterSystems Ideas newsletter! This edition highlights the latest news from the Ideas Portal, such as: ✓ General statistics✓ New "DC search" sweepstakes✓ New ideas to support Here are some numbers from January for you. During this month, we had: 8 new ideas 1 implemented idea 8 comments 24 votes 👏 Thanks to everyone who contributed in any way to the Ideas Portal last month. After the resounding success of the previous sweepstakes, we've launched a new one dedicated to the DC search. Share your idea(s) on how we can improve our search and get in the running to win a prize! More details are in the announcement. To wrap up this bulletin, check out the ideas submitted to the Ideas Portal last month. Maybe you will find something to vote for or even implement! Idea Author Status Native JSON Datatype exclusively for JSON Ashok Kumar Future Consideration Option for Assign append to escape automatically in DTL editor Mark OReilly Needs Review Add InterSystems wrapper for Supabase Evgeny Shvarov Community Opportunity Provide list for export Lewis Houlden Needs Review Load Data on VSCode Yuri Marx Community Opportunity IRIS Architectural solutions Contest Yuri Marx Needs Review Introduce Flyway Support in IRIS Evgeny Shvarov Community Opportunity Add support for SQL Host Variables Robert Cemper Done by Community ✨ Share your ideas, support your favorites with comments and votes, and bring to life the ones you believe matter the most to the Developer Community! 🙏
Article
Ashok Kumar T · Jul 21

InterSystems IRIS JSON 2

This article is a continuation of the IRIS JSON project and features additional methods and insights. Let's continue with the instance methods %GetTypeOf(Key) This instance method is used to determine the JSON data type of the %DynamicObject or %DynamicArray. It returns one of the following strings: "null" - JSON null"boolean" - Either "true" or "false""number" - Any numeric value"oref" - An %ObjectHandle (an ObjectScript oref)"object" - A nested object"array" - A nested array"string" - Normal text string"unassigned" - The value is unassigned USER>Set array = [1,"test",true,12.3256,{"version":($ZVersion)},[1,2,3]] USER>Write array.%GetTypeOf(2) boolean USER>Write array.%GetTypeOf(4) object USER>Write array.%GetTypeOf(5) array %GetIterator() When working with a JSON object whose structure is unknown at runtime, you can utilize the %GetIterator method to iterate through each key-value pair dynamically. This method returns an instance of %Iterator.Object. To retrieve each key and its corresponding value, employ the %GetNext(.key, .value,.type) method in a loop. %GetNext(Key, Value, Type) This method has three output-type formal parameters: Key: It returns the key in a JSON object, or the index in a JSON array. Value: It is a value associated with a key or index. Type: It is an optional parameter that becomes particularly helpful when handling unknown or dynamic JSON structures. The Type parameter helps avoid <MAXSTRING> errors when a key’s value exceeds InterSystems IRIS’s maximum string length. In such cases, providing this parameter allows the method to automatically convert the value from a string to a stream, ensuring safe and efficient parsing. USER>Set json = {"username":"Test", "role":"Admin", "data": ("this data exceeded the maxlength of IRIS")} USER>Set jsonIter = json.%GetIterator() USER>While jsonIter.%GetNext(.key,.value,.type) { Write "key: ",key," value : ",value," and type is :",type,! } key: username value : Test and type is : string key: role value : Admin and type is : string key: data value : 7@%Stream.DynamicCharacter and type is : string This approach is especially beneficial when processing dynamic or unpredictable JSON content in InterSystems ObjectScript. Enhancements in %DynamicAbstractObject: New Methods in Version 2024.1 As of version 2024.1, several new methods have been introduced to the %DynamicAbstractObject (%DAO) class to enhance usability and support for language interoperability (e.g., Python-style access). Method Overview: toString() It is a convenience wrapper for the %ToJSON() method. It returns the JSON representation of the object as a string. get(key) It is a Python-style wrapper for the %Get() method. It accepts only one formal parameter (key), unlike %Get, which takes up to three (key, default, type). put(key, value, type) It is a Python-style wrapper for %Set. This method supports all three parameters and can be used to assign values to keys with optional type control. rename(currentkey,newkey) - replace the key of the element identified by currentKey with newKey putAll(object)It merges the contents of another %DynamicObject into the current object. This parameter must be a valid %DynamicObject instance. USER>set json = {} USER>set json1 = {"username":($USERNAME),"roles":($ROLES)} USER>zw json json={} ; <DYNAMIC OBJECT> USER>do json.putAll(json1) USER>zw json json={"username":"_SYSTEM","roles":"%All"} ; <DYNAMIC OBJECT> USER>set json={} USER>do json.put("name","test") USER>zw json json={"name":"test"} ; <DYNAMIC OBJECT> USER>write json.get("name") ; using python style wrapper method get() test LEARN Embedded Python Embedded Python Functions rename(currentkey,newkey) -replace the key of the element identified by currentKey with newKey toJson() / toString() - JSON serialization functions /// Embedded Python Class Sample.DAO.EmpeddedPY Extends %RegisteredObject { ClassMethod DynObjSet() { Set object = {} Do ..DynObjSetPY(object) Write object.%ToJSON() } ClassMethod DynObjSetPY(dynamicObject) [ Language = python ] { import iris do = iris.cls("%DynamicObject")._New() do.put("id",1212) do.put("int",12) dynamicObject.putAll(do) } } OutputUSER>do ##class(Sample.DAO.EmpeddedPY).DynObjSet()object={"id":1212,"int":12} addAll(array): This method is employed to iterate over a %DynamicArray and push its elements into the current object. The first parameter value must be a %DynamicArray. This method is chainable, allowing multiple addAll() calls in a single expression. USER>ZWrite [1,2,3].addAll([4,5,6]) [1,2,3,4,5,6] ; <DYNAMIC ARRAY> USER>ZWrite [1,2,3].addAll([4,5,6]).addAll([7,8,9]) [1,2,3,4,5,6,7,8,9] ; <DYNAMIC ARRAY> Class Sample.DAO.EmpeddedPY Extends %RegisteredObject { ClassMethod DynArraySet() { Set array = [] Do ..DynArraySetPY(array) zw array } ClassMethod DynArraySetPY(dynamicArray) [ Language = python ] { import iris da = iris.cls("%DynamicArray")._New() # used a new add method da.add(1) da.add(3) # use %Push method da._Push(2) dynamicArray.addAll(da) } } OutputUSER>do ##class(Sample.DAO.EmpeddedPY).DynArraySet()array=[1,3,2] ; <DYNAMIC ARRAY> Deserialization of JSON from Streams and Strings If an element of a JSON array or JSON object contains more characters than an ObjectScript string can support, the way to manipulate that element is to send it to a %File or a %Stream. %FromJSON(string) The ##class(%DynamicAbstractObject).%FromJSON(input) class method accepts an "input" arguments of the following types: A JSON string containing a JSON array or object. A %Stream object containing a JSON array or object. A %File object. If the above-mentioned input is successfully parsed, it returns an object reference to either a %DynamicArray or %DynamicObject class. If the parsing is unsuccessful, it will signal an error. Creating JSON from a File The %FromJSONFile(file) method does not take a %File object as an argument. It takes a string containing the file name instead. Consider the following replacement: ClassMethod CreateFromFile(FileName As %String) { Set newObject = ##Class(%DynamicAbstractObject).%FromJSONFile(FileName) Set newObject = {}.%FromJSON(file) } JSON Serialization This section will cover converting a %DynamicObject or %DynamicArray into a JSON-formatted string. %ToJSON(stream) The %ToJSON(output) method converts the contents of a %DynamicObject or %DynamicArray into a JSON-formatted string. The output can be directed to such various destinations as a device, a file, or a %Stream object. This parameter is optional. Without Arguments – Output to Current Device When %ToJSON() is called without any arguments, the resulting JSON is written directly to the current output device (e.g., the terminal): With a %Stream Object – Output to Stream When a stream object is passed as the argument, the JSON text is written to the stream instead of the output device.It is practical for storing or transmitting the JSON data programmatically. ClassMethod CreateStreamFromJSON() { Set json = {"SomeNumber":42,"SomeString":"a string","SomeArray":["an array element",123]} Set stream =##class(%Stream.TmpCharacter).%New() Do json.%ToJSON(stream) ; set into stream object Write stream.Read() } OutputUSER> Do ##class(Sample.DAO.EmpeddedPY).CreateStreamFromJSON(){"SomeNumber":42,"SomeString":"a string","SomeArray":["an array element",123]} Abstract Set Query (ASQ) Abstract Set Query (ASQ) is a superset of the JSON Path Language (JPL), designed for iterating over and querying dynamic objects and arrays. It provides powerful capabilities for expressive and precise querying of hierarchical and structured data. In ObjectScript, ASQ queries can be executed with the help of the apply() method. ASQ extends the functionality of JSON Path by supporting the following: Richer and more flexible query expressions Support for data types and metadata Advanced navigation of structured objects Below you can see a sample JSON array that can be utilized to demonstrate ASQ (Abstract Set Query).Assign this to a dynamic object variable called JSON in ObjectScript: [{"id":"123","name":"John Doe","gender":"male","visits":[{"date":"2024-12-01","reason":"checkup"},{"date":"2025-02-15","reason":"flu"}]},{"id":"124","name":"Alice Smith","gender":"female","visits":[{"date":"2024-11-10","reason":"allergy"},{"date":"2025-01-20","reason":"annual physical"}]},{"id":"125","name":"Michael Johnson","gender":"male","visits":[{"date":"2025-03-12","reason":"sprained ankle"}]},{"id":"126","name":"Fatima Noor","gender":"female","visits":[{"date":"2024-09-18","reason":"checkup"},{"date":"2024-12-05","reason":"vaccination"},{"date":"2025-06-01","reason":"fever"}]},{"id":"127","name":"Carlos Martinez","gender":"male","visits":[]},{"id":"128","name":"Emily Chen","gender":"female","visits":[{"date":"2025-04-22","reason":"eye exam"},{"date":"2025-05-19","reason":"back pain"}]}] Example ASQ Queries in ObjectScript Member Access .fieldName: Accesses a property or member field. .*: Wildcard access to all fields at that level. .field[0]: Accesses an array element inside a named field. Retrieve all ID values: Write json.apply("$.id").%ToJSON() Output["123", "124", "125", "126", "127", "128"] Get names that start with "J": Write json.apply("$[*]?(@.name STARTS WITH 'J').name") //["John Doe"] Array Slicing [0 to 3]: Selects elements at indices 0, 1, 2, 3. [*]: Choose all elements in the array. [last]: Picks the last element in the array. [1, 3, 5]: Selects elements at specified indices. Retrieve the first visit’s entry for each person: Write json.apply("$.visits[0]").%ToJSON() Output[{"date":"2024-12-01","reason":"checkup"},{"date":"2024-11-10","reason":"allergy"},{"date":"2025-03-12","reason":"sprained ankle"},{"date":"2024-09-18","reason":"checkup"},{"date":"2025-04-22","reason":"eye exam"}] Get the last object in the array: Write json.apply("$[last]").%ToJSON() Get both the first and last objects in the array: Write json.apply("$[last]").%ToJSON() //[{"id":"128","name":"Emily Chen","gender":"female","visits":[{"date":"2025-04-22","reason":"eye exam"},{"date":"2025-05-19","reason":"back pain"}]}] Get both the first and last objects in the array: Write json.apply("$[last,0]").%ToJSON() //[{"id":"128","name":"Emily Chen","gender":"female","visits":[{"date":"2025-04-22","reason":"eye exam"},{"date":"2025-05-19","reason":"back pain"}]},{"id":"123","name":"John Doe","gender":"male","visits":[{"date":"2024-12-01","reason":"checkup"},{"date":"2025-02-15","reason":"flu"}]}] JSON SQL Functions InterSystems IRIS offers a simple and flexible way to create and manipulate JSON directly within SQL, without the need to write any ObjectScript code. Using built-in JSON functions, you can generate and work with JSON data effortlessly. JSON_OBJECT It is a conversion function that returns data as a JSON-formatted string. It accepts one or more key–value pairs, where the following conditions apply: Each key is a user-defined literal string enclosed in single quotes. Each value can be a column, expression, or literal. Multiple key–value pairs are separated by commas. The syntax follows standard JSON structure within parentheses. Example: JSON_OBJECT('key1' : "value1", 'key2' : "value2", 'key3' : "value3") You can convert the resulting JSON string into a dynamic object using the %FromJSON() method: Set json = ##class(%Library.DynamicAbstractObject).%FromJSON(jsonStr) Note: JSON_OBJECT does not support the asterisk (*) wildcard to include all fields from a table. SELECT JSON_OBJECT('name':Name,'Id':Id) FROM SAMPLE.PERSON WHERE ID=1 Add null into the JSON SELECT JSON_OBJECT('name': Name,'Id': Id,'CreateDate': (CASE WHEN CreateDate IS NOT NULL THEN CreateDate ELSE NULL END),'SSN':(SSN)) FROM Sample.Person WHERE Id = 1 Embedded JSON object inside a JSON object SELECT JSON_OBJECT('name': Name,'Id': Id,'CreateDate':CreateDate,'gender':JSON_OBJECT('code':gender,'description':'gender info')) FROM Sample.Person WHERE Id = 1 JSON_ARRAY It is a conversion function that returns data as a JSON array. JSON_ARRAY does not support the asterisk (*) syntax to specify all fields in a table. SELECT JSON_ARRAY(name,SSN, ,City ABSENT ON NULL) FROM Sample.Person WHERE Id = 1 JSON_ARRAYAGG It is an aggregate function utilized to aggregate values into a JSON array. You can aggregate strings, numbers, and even large objects. SELECT JSON_ARRAYAGG(State) FROM Sample.Person This SQL aggregates the JSON_OBJECT into a JSON array. SELECT JSON_ARRAYAGG(JSON_OBJECT('id':Id,'Name':Name,'Gender':Gender,'IsActive':IsActive,'default':'available')) FROM SAMPLE.PERSON JSON_TABLE The JSON_TABLE function is a Table-Valued Function (TVF) employed in SQL to map JSON data into a relational table format. It enables direct querying of JSON content (whether stored as a literal string, in a column, or returned from a function) by extracting values based on JSON Path Language (JPL) expressions. JSON_TABLE can process the following JSON sources: Literal JSON strings embedded directly in SQL. String properties (e.g., VARCHAR columns) that contain valid JSON. Functions that return JSON, e.g., %Net.GetJSON(<JSON-URL>, <SSL-config>). Parsing a Literal JSON String The following example extracts the number and status fields from a JSON array: SELECT number,status FROM JSON_TABLE( '[{"number":12,"status":false}, {"string":"test"}, {"status":true,"number":100.0}]', '$' COLUMNS ( number varchar(20) PATH '$.number', status BIT PATH '$.status' ) ) Parsing JSON from a Column Assume the class Sample.Users has a VARCHAR(String) property named AdditionalInfo, which stores JSON like: {"id":"123","name":"John Doe","gender":"male","visits":[{"date":"2024-12-01","reason":"checkup"},{"date":"2025-02-15","reason":"flu"}]} You can use JSON_TABLE to extract the visit and reason information from this “additionalInfo” column. This query flattens the visits array, so each visit becomes a row, showing its date and reason. select visitDate,reason FROM Sample.Users, JSON_TABLE(AdditionalInfo, '$.visits[*]' COLUMNS( visitDate DATE PATH '$.date', reason VARCHAR(100) PATH '$.reason' ) ) Cloning JSON Objects and Arrays Unlike other registered or persistent objects, %DynamicObject and %DynamicArray do not support direct cloning via a method like %ConstructClone because such a method is not available for dynamic entities. To clone a dynamic object or array, you must do the following: Serialize it to a JSON string or stream using %ToJSON(). Reconstruct the clone with %FromJSON(). Example (utilizing a string): ClassMethod ConstructJSONClone(JSON) { Set cloneJSON = ##class(%DynamicAbstractObject).%FromJSON(JSON.%ToJSON()) Return cloneJSON } USER>Set json = {"userName": ($UserName)}USER>Set cloneJson = ##class(%DynamicAbstractObject).%FromJSON(json.%ToJSON())USER>Write json.%ToJSON(){"userName":"_SYSTEM"}USER>Write json.%ToJSON(){"userName":"_SYSTEM"} Handling Large JSON (avoiding <MAXSTRING> error): If the JSON structure is large and exceeds IRIS’s maximum string length, serialization using a string will result in a <MAXSTRING> error. Solution: Employ a stream instead: ClassMethod ConstructCloneFromLargeJSON(JSON) { Set stream = ##class(%Stream.TmpCharacter).%New() Do JSON.%ToJSON(stream) Set cloneJSON = ##class(%DynamicAbstractObject).%FromJSON(stream) Return cloneJSON } This approach safely handles large JSON content and creates a deep copy of the original dynamic object or array. JSON Formatter The %JSON.Formatter class is utilized to format a %DynamicArray or %DynamicObject and display it in a more human-readable format. ClassMethod JSONFormatter() { Set json = {"SomeNumber":42,"SomeString":"a string","SomeArray":["an array element",123]} Set formatter = ##class(%JSON.Formatter).%New() Set formatter.Indent = 51 Do formatter.Format(json) } Common JSON Parsing Errors in InterSystems IRIS Below you can find some frequent errors that may occur while parsing JSON with the help of the %DynamicObject or %DynamicArray: <MAXSTRING> It occurs when attempting to convert a string that exceeds the maximum string length allowed in IRIS (maximum length of 3,641,144 characters). To handle large strings safely, use the "stream" or "stream>base64" type when retrieving values. <STRINGSTACK> It is raised when the JSON expression is too long or deeply nested for the system to evaluate. <INVALID OREF> It indicates that the reference is not a valid instance of %DynamicObject or %DynamicArray. <THROW>%FromJSON+22^%Library.DynamicAbstractObject.1 *%Exception.General Parsing error 3 Line 1 Offset 1 This error appears when the input to %FromJSON is not a valid JSON object or array. Limitations of Dunder Methods with %DynamicObject in Embedded Python The %DAO class in InterSystems IRIS stores data as dynamic key-value pairs rather than predefined properties. Since DAO objects are not native Python objects—but proxy objects returned by the iris module to wrap IRIS objects. Python’s dunder methods like __setattr__() and __getattribute__() do not work for setting or retrieving these dynamic properties. Attempting to use these methods results in an AttributeError, as the keys are not recognized as actual Python attributes. Instead, %DynamicObject requires the use of its .set() and .get() methods to manipulate data. Therefore, attribute-style access via dunder methods is not supported due to the dynamic, non-attribute-based structure of %DynamicObject. Class Sample.EmbeddedPy.DunderMethod Extends %RegisteredObject { Property Key As %String; Property Value As %String; ClassMethod DunderMethodOnRegObj() [ Language = python ] { import iris obj = iris.cls(__name__)._New() obj.__setattr__("Key","date") obj.__setattr__("Value","01011991") # print(obj.__getattribute__("Key")) #ouput : date print(obj.__getattribute__("Value")) #ouput : 01011991 } ClassMethod DunderMethodOnDynamicObj() [ Language = python ] { import iris obj = iris.cls("%Library.DynamicObject")._New() obj.__setattr__("Key","date") obj.__setattr__("Value","01011991") print(obj.__getattribute__("Key")) """<THROW>DebugStub+40^%Debugger.System.1 *%Exception.PythonException <PYTHON EXCEPTION> 246 <class 'AttributeError'>: Property Key not found in object of type iris.%Library.DynamicObject""" return } } Your examples are very educational, thank you for taking the time!
Announcement
Irène Mykhailova · May 29

InterSystems Ideas News #22

Hi Community! Welcome to Issue #22 of the InterSystems Ideas newsletter! This edition highlights the latest news from the Ideas Portal, such as: ✓ General Statistics✓ Recently implemented ideas✓ New features Here are some April numbers for you. During this month, we had: 11 new ideas 2 implemented idea 18 comments 29 votes 👏 Thanks to everyone who contributed in any way to the Ideas Portal last month. In recent months, several of your ideas have been implemented by both other Developer Community members and InterSystems. Here they are: Idea Implementor Warning/Confirmation for Delete popup for User when using VSCode extensions InterSystems add support for SQL Host Variables @Robert.Cemper1003 Need Help or Assistance menu or portal for Global Masters InterSystems New reward: tickets to global summit 2025 InterSystems Generate Fake data from table sample with GenAI @Yuri.Gomes Use of package management systems InterSystems LIMIT OFFSET support for IRIS SQL InterSystems Aha platform had a recent update, and now our Ideas Portal has some new cool features! It now supports user mentions in comments and allows you to like comments you find helpful or relevant. Look out for a standalone announcement on how it works very soon! ✨ Share your ideas, support your favorites with comments and votes, and bring the most interesting ones to life!
Announcement
Irène Mykhailova · Jul 29

InterSystems Ideas News #23

Hi Community! Welcome to Issue #23 of the InterSystems Ideas newsletter! These have been very busy two months, so let's look at the latest news from the Ideas Portal, such as: ✓ General Statistics✓ Results of InterSystems Ideas Contest✓ Community Opportunity Ideas Here are some June numbers for you. During this month, we had: 33 new ideas 2 implemented ideas 10 comments 113 votes 👏 Thanks to everyone who contributed in any way to the Ideas Portal last month! We've just announced the winners of the InterSystems Ideas Contest! Twenty-six ideas were accepted into the contest, and four community members were crowned as winners. Our most sincere congratulations! Now it's the turn for the rest of the Community to vote and comment, so that these ideas have a higher chance of being implemented. Here's the list of ideas Author Idea @Yuri.Gomes Extending an open source LLM to support efficient code generation in intersystems technology @David.Hockenbroch Add Typescript Interface Projection @Enrico.Parisi Make DICOM iteroperability adapter usable in Mirror configuration/environment @Marykutty.George1462 Ability to abort a specific message from message viewer or visual trace page @Enrico.Parisi Do not include table statistics when exporting Production for deployment @Ashok.Kumar recursive search in Abstract Set Query @Ashok.Kumar TTL(Time To Live) Parameter in %Persistent Class @Ashok.Kumar Programmatic Conversion from SDA to HL7 v2 @Ashok.Kumar Streaming JSON Parsing Support @Ashok.Kumar Differentiating System-Defined vs. User-Defined Web Applications in IRIS @Ashok.Kumar Need for Application-Specific HTTP Tracing in Web Gateway @Ashok.Kumar Add Validation for Dispatch Class in Web Application Settings @Ashok.Kumar Encoding in SQL functions @Ashok.Kumar Compression in SQL Functions @Alexey.Maslov Universal Global Exchange Utility @Ashok.Kumar Automatically Expose Interactive API Documentation @Vishal.Pallerla Dark Mode for Management Portal @Ashok.Kumar IRIS Native JSON Schema Validator @Ashok.Kumar Enable Schema Validation for REST APIs Using Swagger Definitions @diba Auto-Scaling for Embedded Python Workloads in IRIS @Dmitry.Maslennikov Integrate InterSystems IRIS with SQLancer for Automated SQL Testing and Validation @Dmitry.Maslennikov Bring IRIS to the JavaScript ORM World @Ashok.Kumar HTML Report for UnitTest Results @Andre.LarsenBarbosa AI Suggestions for Deprecated Items @Mark.OReilly Add a field onto Oauth Client to allow alerting expiry dates alert @Mark.OReilly Expose "Reply To" as default on EnsLib.EMail.AlertOperation In recent months, several of your ideas have been marked as Community Opportunity, which means that any Developer Community member is welcome to implement them and enter the Hall of Fame of the Ideas Portal. To make it easier for you to choose, here are the ideas that changed the status in the last couple of months: Idea Author The Tool That Cares(T³C) Mohamed Shabeer Mohamed Ali Vector Database Web Gateway offload encoding inbound and generative inference outbound @Alex.Woodhead Business Operation Testing mode per namespace @Scott.Roth Bring IRIS to the JavaScript ORM World @Dmitry.Maslennikov Embedded Python methods : toggle line comment with # regardless of indentation level using Visual Studio Code @Sylvain.Guilbaud ✨ Share your ideas, support your favorites with comments and votes, and bring the most interesting ones to life!
Announcement
Irène Mykhailova · Aug 26

InterSystems Ideas News #24

Hi Community! Welcome to Issue #24 of the InterSystems Ideas newsletter! Let's look at the latest news from the Ideas Portal, such as: ✓ General Statistics✓ Recently implemented ideas by InterSystems✓ Recently implemented ideas by Developer Community members Here are some July numbers for you. During this month, we had: 23 new ideas 2 implemented ideas 15 comments 91 votes 👏 Thanks to everyone who contributed in any way to the Ideas Portal last month! Since Ideas News bulletin #22, where I listed the recently implemented ideas, and thanks to the recent release 2025.2 of IRIS, we have quite a few ideas implemented by InterSystems. Here's the full list Nodejs with IRIS a dynamic platform by @Sharafat.Hussain Publish the InterSystems IRIS Native SDK for Node.js on npm by @John.Murray Create DTL on the fly from within a Business Process by @Scott.Roth Store table tuning statistics with globals, not routines by @David.Hockenbroch Developer Community members also actively participated in implementing ideas from the Ideas Portal to get bonus points during the latest programming contest. So, now there are also quite a few new implemented ideas by Community members: Here's the full list Idea Author Implementer Data Analyzer @Stella.Tickler @Landon.Minor Programmatic reports @Yuri.Gomes @Yuri.Gomes Surface test coverage information in VS Code @John.Murray @John.Murray Google Forms Interoperability adapter @Yuri.Gomes @Yuri.Gomes Bring IRIS to the JavaScript ORM World @Dmitry.Maslennikov @Dmitry.Maslennikov HTML Report for UnitTest Results @Ashok.Kumar @Ashok.Kumar ObjectScript API to create MS Word files based on templates @Yuri.Gomes @Yuri.Gomes ✨ Share your ideas, support your favorites with comments and votes, and bring the most interesting ones to life!
Question
Kishan Ravindran · Jun 1, 2017

Can I use InterSystems iKnow without InterSystems DeepSee?

Can we use iknow in the Cache tool means if i don't have deepsee tool to work on like for doing some sample programs. Because i don't have deepsee tool with me?And is there any open source for downloading deepsee? DeepSee has a Developer Tutorial in the Documentation. This Is very good . Some example available for this Document .For Ex."HoleFoods" and "Patients" cubes in the SAMPLES namespace . Hi, Kishan!Yes, you don't need DeepSee to develop solutions with iKnow.And also you can make solutions which combine iKnow and DeepSee.
Announcement
Anastasia Dyubaylo · Jul 15, 2020

New Videos: "What is InterSystems IRIS for Health?" and "FHIR in InterSystems IRIS for Health"

Hey Developers, Check out the latest video on InterSystems IRIS for Health Data Platform: ⏯ What is InterSystems IRIS for Health? ⏯ FHIR in InterSystems IRIS for Health InterSystems IRIS for Health is the world's first and only data platform specifically engineering to extract value from health care data. At the core of the platform, InterSystems IRIS for Health provides advanced scalablity tools that enable both horizontal and vertical scaling. ➡️ Want more? Explore this InterSystems Learning course. InterSystems IRIS for Health provides developers with the benefits of FHIR combined with scalability, a high-speed database, and an analytics platform which makes it easy to create modern health care applications. ➡️ Try it at InterSystems Learning. Enjoy watching these videos and stay tuned!
Announcement
Stefan Wittmann · Oct 5, 2020

InterSystems IRIS and InterSystems IRIS for Health 2020.3 are GA (Generally Available)

GA releases are now published for the 2020.3 version of InterSystems IRIS, InterSystems IRIS for Health, and InterSystems IRIS Studio! A full set of containers for these products is available from the WRC Software Distribution site, including community editions of InterSystems IRIS and InterSystems IRIS for Health. In addition, all containers are also available from the new InterSystems Container Registry. This article explains how to use the registry. The build number for these releases is 2020.3.0.221.0. Community Edition containers can also be pulled from the Docker store using the following commands: docker pull store/intersystems/iris-community:2020.3.0.221.0 docker pull store/intersystems/iris-community-arm64:2020.3.0.221.0 docker pull store/intersystems/irishealth-community:2020.3.0.221.0 docker pull store/intersystems/irishealth-community-arm64:2020.3.0.221.0 InterSystems IRIS Data Platform 2020.3 makes it even easier to develop and deploy real-time, machine learning-enabled applications that bridge data and application silos. It has many new capabilities including: Enhancements to the deployment and operations experience, both in the cloud and on-prem: IKO - configuring a Kubernetes cluster just got way easier with the new InterSystems Kubernetes Operator (IKO) ICM adds support for IAM deployments Asynchronous mirroring support for sharded clusters Work Queues are now manageable from the System Management Portal Enhancements to the developer experience, including new facilities, higher performance, and compatibility with recent versions of key technology stacks: Python Gateway - invoke Python code snippets for your analytics and machine-learning related tasks Support for JDBC and Java Gateway reentrancy .NET Core 2.1 support for the .NET Gateway XEP adds support for deferred indexing Support for Spark 2.4.4 InterSystems IRIS for Health 2020.3 includes all of the enhancements of InterSystems IRIS. In addition, this release includes APIs for sending and receiving FHIR request/response messages, for performing client-side FHIR operations. eGate support in the HL7 Migration Tooling Documentation can be found here: InterSystems IRIS 2020.3 documentation and release notes InterSystems IRIS for Health 2020.3 documentation and release notes InterSystems IRIS Studio 2020.3 is a standalone development image supported on Microsoft Windows. It works with InterSystems IRIS and InterSystems IRIS for Health version 2020.3 and below, as well as with Caché and Ensemble. As this is a CD release, it is only available in OCI (Open Container Initiative) a.k.a. Docker container format. Container images are available for OCI compliant run-time engines for Linux x86-64 and Linux ARM64, as detailed in the Supported Platforms document. Best Regards, Stefan Here is the set of updated ZPM images with ZPM 0.2.7: intersystemsdc/iris-community:2020.3.0.221.0-zpm intersystemsdc/iris-community:2020.2.0.204.0-zpm intersystemsdc/irishealth-community:2020.3.0.221.0-zpm intersystemsdc/irishealth-community:2020.2.0.204.0-zpm And to launch IRIS do: docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-community:2020.3.0.221.0-zpm docker run --rm --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-community:2020.2.0.204.0-zpm docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community:2020.3.0.221.0-zpm docker run --rm --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/irishealth-community:2020.2.0.204.0-zpm And for terminal do: docker exec -it my-iris iris session IRIS and to start the control panel: http://localhost:9092/csp/sys/UtilHome.csp To stop and destroy container do: docker stop my-iris Thank you Evgeny and Stefan, very helpful. A minor note: There is a typo at the end of the control panel url (cspv->csp). Don't forget that SuperServer port changed from 51773 to **1972** cf : https://irisdocs.intersystems.com/iris20203/csp/docbook/Doc.View.cls?KEY=GCRN_upgrade20203#GCRN_install_port docker run --rm --name my-iris -d --publish 9091:**1972** --publish 9092:52773 intersystemsdc/iris-community:2020.3.0.221.0-zpm docker run --rm --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/iris-community:2020.2.0.204.0-zpm docker run --rm --name my-iris -d --publish 9091:**1972** --publish 9092:52773 intersystemsdc/irishealth-community:2020.3.0.221.0-zpm docker run --rm --name my-iris -d --publish 9091:51773 --publish 9092:52773 intersystemsdc/irishealth-community:2020.2.0.204.0-zpm Thanks, Jean! Fixed Indeed, @Guillaume.Rongier7183 ! Thanks for the heads up! This is fixed in the comment.
Announcement
Nermin Kibrislioglu Uysal · Sep 14, 2022

50% discount on InterSystems Certification exams at InterSystems UK&I Summit 2022

InterSystems is proud to offer 50% discount on InterSystems Certification exams to all registered attendees of UK&I summit. Vouchers will be available at the registration desk. Available Exams HealthShare Health Connect HL7 Interface Specialist InterSystems IRIS Core Solutions Developer HealthShare Unified Care Record Technical Specialist HealthShare Patient Index Technical Specialist InterSystems CCR Technical Implementation Specialist New! InterSystems IRIS System Administration Specialist (link will be available soon) Don't miss your chance to upgrade your skills!! Register for UK&I Summit today!
Announcement
Bob Kuszewski · Jun 20

InterSystems announces InterSystems IRIS support for Red Hat Enterprise Linux 10

InterSystems is pleased to announce that the following products are now available for Red Hat Enterprise Linux 10 InterSystems IRIS Data Platform 2025.1.0.230.2 InterSystems IRIS for Health 2025.1.0.230.2 HealthShare Health Connect 2025.1.0.230.2 This release adds support for the Red Hat Enterprise Linux 10 operating system. RHEL 10 includes Linux kernel 6.12.0, security improvements, performance optimizations, and improved developer tools. How to get the software Installation packages are available from the WRC's Extended Maintenance Releases page. Additionally, kits can also be found in the Evaluation Services website.