Search

Clear filter
Announcement
Evgeny Shvarov · Jul 24, 2017

Come to the 1st InterSystems Community Meetup in Cambridge!

Hi, Community! Recently we announced Developer Community Meetup in Cambridge, MA. Let me describe what is it. Meetup it's a one evening event where you can enjoy some sessions by presenters (today InterSystems engineers, tomorrow you can be a presenter) and chat with local developers and InterSystems developers, engineers and product managers (depends on who is in town) and discuss your problems, experience, and success with InterSystems technologies. InterSystems would provide the place, technical sessions, some food and beverages. We think the Developer Community would benefit from it. We can make the event a regular thing and introduce it in different cities and countries. The success of the event depends on whether you come. D you want InterSystems meetup? See you on 8th of August in Cambridge Innovation Center!
Announcement
Evgeny Shvarov · Aug 7, 2018

InterSystems IRIS is Available on Google Cloud Platform Marketplace

Hi, Community! Just want to let you know that InterSystems IRIS is available on Google Cloud Marketplace. Start here to get your InterSystems IRIS VM on GCP. You can request a license for InterSystems IRIS here. Learn more in an official press release Create an IRIS instance in 5 minutes video... https://youtu.be/f_uVe_Q5X-c
Article
Gevorg Arutiunian · Sep 4, 2018

How I implemented GraphQL for InterSystems platforms

![](https://pp.userapi.com/c849024/v849024561/cea1/ayx4tJnAKRE.jpg) I already talked about [GraphQL](https://community.intersystems.com/post/graphql-intersystems-data-platforms) and the ways of using it in this article. Now I am going to tell you about the tasks I was facing and the results that I managed to achieve in the process of implementing GraphQL for InterSystems platforms. ## What this article is about - Generation of an [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) for a GraphQL request and its validation - Generation of documentation - Generation of a response in the JSON format Let’s take a look at the entire process from sending a request to receiving a response using this simple flow as an example: ![](https://habrastorage.org/webt/us/9d/6v/us9d6vhhpnpjs_ttqwwafufrnxq.jpeg) The client can send requests of two types to the server: - A schema request. The server generates a schema and returns it to the client. We’ll cover this process later in this article. - A request to fetch/modify a particular data set. In this case, the server generates an AST, validates and returns a response. ## AST generation The first task that we had to solve was to parse the received GraphQL request. Initially, I wanted to find an external library and use it to parse the response and generate an AST. However, I discarded the idea for a number of reasons. This is yet another black box, and you should keep the issue with long callbacks in mind. That’s how I ended up with a decision to write my own parser, but where do I get its description? Things got better when I realized that [GraphQL](http://facebook.github.io/graphql/October2016/) was an open-source project with a pretty good description by Facebook. I also found multiple examples of parsers written in other languages. You can find a description of an AST [here](http://facebook.github.io/graphql/October2016/#Document). Let’s take a look at a sample request and tree: ``` { Sample_Company(id: 15) { Name } } ``` **AST** ``` { "Kind": "Document", "Location": { "Start": 1, "End": 45 }, "Definitions": [ { "Kind": "OperationDefinition", "Location": { "Start": 1, "End": 45 }, "Directives": [], "VariableDefinitions": [], "Name": null, "Operation": "Query", "SelectionSet": { "Kind": "SelectionSet", "Location": { "Start": 1, "End": 45 }, "Selections": [ { "Kind": "FieldSelection", "Location": { "Start": 5, "End": 44 }, "Name": { "Kind": "Name", "Location": { "Start": 5, "End": 20 }, "Value": "Sample_Company" }, "Alias": null, "Arguments": [ { "Kind": "Argument", "Location": { "Start": 26, "End": 27 }, "Name": { "Kind": "Name", "Location": { "Start": 20, "End": 23 }, "Value": "id" }, "Value": { "Kind": "ScalarValue", "Location": { "Start": 24, "End": 27 }, "KindField": 11, "Value": 15 } } ], "Directives": [], "SelectionSet": { "Kind": "SelectionSet", "Location": { "Start": 28, "End": 44 }, "Selections": [ { "Kind": "FieldSelection", "Location": { "Start": 34, "End": 42 }, "Name": { "Kind": "Name", "Location": { "Start": 34, "End": 42 }, "Value": "Name" }, "Alias": null, "Arguments": [], "Directives": [], "SelectionSet": null } ] } } ] } } ] } ``` ## Validation Once we receive a tree, we’ll need to check if it has classes, properties, arguments and their types on the server – that is, we’ll need to validate it. Let’s traverse the tree recursively and check whether its elements match the ones on the server. [Here’s](https://github.com/intersystems-ru/GraphQL/blob/master/cls/GraphQL/Query/Validation.cls) how a class looks. ## Schema generation A **schema** is a type of documentation for available classes and properties, as well as a description of property types in these classes. GraphQL implementations in other languages or technologies use resolvers to generate schemas. A resolver is a description of the types of data available on the server. **Examples or resolvers, requests, and responses** ``` type Query { human(id: ID!): Human } type Human { name: String appearsIn: [Episode] starships: [Starship] } enum Episode { NEWHOPE EMPIRE JEDI } type Starship { name: String } ``` ``` { human(id: 1002) { name appearsIn starships { name } } } ``` ```json { "data": { "human": { "name": "Han Solo", "appearsIn": [ "NEWHOPE", "EMPIRE", "JEDI" ], "starships": [ { "name": "Millenium Falcon" }, { "name": "Imperial shuttle" } ] } } } ``` However, before we generate a schema, we need to understand its structure, find a description or, even better, examples. The first thing I tried was attempting to find one that would help me understand the structure of a schema. Since GitHub has its own [GraphQL API](https://developer.github.com/v4/explorer/), it was easy to get one from there. But the problem was that its server-side was so huge that the schema itself occupied 64 thousand lines. I really hated the idea of delving into all that and started looking for other methods of obtaining a schema. Since our platforms are based on a DBMS, my plan for the next step was to build and start GraphQL for PostgreSQL and SQLite. With PostgreSQL, I managed to fit the schema into just 22 thousand lines, and SQLite gave me an even better result with 18 thousand lines. It was better than the starting point, but still not enough, so I kept on looking. I ended up choosing a [NodeJS](https://graphql.org/graphql-js/) implementation, made a build, wrote a simple resolver, and got a solution with just 1800 lines, which was way better! Once I had wrapped my head around the schema, I decided to generate it automatically without creating resolvers on the server in advance, since getting meta information about classes and their relationships is really easy. To generate your own schema, you need to understand a few simple things: - You don’t need to generate it from scratch – take one from NodeJS, remove the unnecessary stuff and add the things that you do need. - The root of the schema has a queryType type. You need to initialize its “name” field with some value. We are not interested in the other two types since they are still being implemented at this point. - You need to add all the available classes and their properties to the **types** array. ``` { "data": { "__schema": { "queryType": { "name": "Query" }, "mutationType": null, "subscriptionType": null, "types":[... ], "directives":[... ] } } } ``` - First of all, you need to describe the **Query** root element and add all the classes, their arguments, and class types to the **fields** array. This way, they will be accessible from the root element. **Let’s take a look at two sample classes, Example_City and Example_Country** ``` { "kind": "OBJECT", "name": "Query", "description": "The query root of InterSystems GraphQL interface.", "fields": [ { "name": "Example_City", "description": null, "args": [ { "name": "id", "description": "ID of the object", "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, "defaultValue": null }, { "name": "Name", "description": "", "type": { "kind": "SCALAR", "name": "String", "ofType": null }, "defaultValue": null } ], "type": { "kind": "LIST", "name": null, "ofType": { "kind": "OBJECT", "name": "Example_City", "ofType": null } }, "isDeprecated": false, "deprecationReason": null }, { "name": "Example_Country", "description": null, "args": [ { "name": "id", "description": "ID of the object", "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, "defaultValue": null }, { "name": "Name", "description": "", "type": { "kind": "SCALAR", "name": "String", "ofType": null }, "defaultValue": null } ], "type": { "kind": "LIST", "name": null, "ofType": { "kind": "OBJECT", "name": "Example_Country", "ofType": null } }, "isDeprecated": false, "deprecationReason": null } ], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null } ``` - Our second step is to go one level higher and extend the **types** array with the classes that have already been described in the **Query** object with all of the properties, types, and relationships with other classes. **Descriptions of classes** ``` { "kind": "OBJECT", "name": "Example_City", "description": "", "fields": [ { "name": "id", "description": "ID of the object", "args": [], "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "Country", "description": "", "args": [], "type": { "kind": "OBJECT", "name": "Example_Country", "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "Name", "description": "", "args": [], "type": { "kind": "SCALAR", "name": "String", "ofType": null }, "isDeprecated": false, "deprecationReason": null } ], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null }, { "kind": "OBJECT", "name": "Example_Country", "description": "", "fields": [ { "name": "id", "description": "ID of the object", "args": [], "type": { "kind": "SCALAR", "name": "ID", "ofType": null }, "isDeprecated": false, "deprecationReason": null }, { "name": "City", "description": "", "args": [], "type": { "kind": "LIST", "name": null, "ofType": { "kind": "OBJECT", "name": "Example_City", "ofType": null } }, "isDeprecated": false, "deprecationReason": null }, { "name": "Name", "description": "", "args": [], "type": { "kind": "SCALAR", "name": "String", "ofType": null }, "isDeprecated": false, "deprecationReason": null } ], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null } ``` - The third point is that the “types” array contains descriptions of all popular scalar types, such as int, string, etc. We’ll add our own scalar types there, too. ## Response generation Here is the most complex and exciting part. A request should generate a response. At the same time, the response should be in the JSON format and match the request structure. For each new GraphQL request, the server has to generate a class containing the logic for obtaining the requested data. The class is not considered new if the values of arguments changed – that is, if we get a particular dataset for Moscow and then the same set for London, no new class will be generated, it’s just going to be new values. In the end, this class will contain an SQL query and the resulting dataset will be saved in the JSON format with its structure matching the GraphQL request. **An example of a request and a generated class** ``` { Sample_Company(id: 15) { Name } } ``` ``` Class gqlcq.qsmytrXzYZmD4dvgwVIIA [ Not ProcedureBlock ] { ClassMethod Execute(arg1) As %DynamicObject { set result = {"data":{}} set query1 = [] #SQLCOMPILE SELECT=ODBC &sql(DECLARE C1 CURSOR FOR SELECT Name INTO :f1 FROM Sample.Company WHERE id= :arg1 ) &sql(OPEN C1) &sql(FETCH C1) While (SQLCODE = 0) { do query1.%Push({"Name":(f1)}) &sql(FETCH C1) } &sql(CLOSE C1) set result.data."Sample_Company" = query1 quit result } ClassMethod IsUpToDate() As %Boolean { quit:$$$comClassKeyGet("Sample.Company",$$$cCLASShash)'="3B5DBWmwgoE" $$$NO quit $$$YES } } ``` How this process looks in a scheme: ![](https://habrastorage.org/webt/ep/e4/im/epe4imwumbaj5dlty-cbo2bfbke.jpeg) For now, the response is generated for the following requests: - Basic - Embedded objects - Only the many-to-one relationship - List of simple types - List of objects Below is a scheme containing the types of relationships that are yet to be implemented: ![](https://habrastorage.org/webt/vc/-d/wn/vc-dwncluqivqmk8msc0uagowpy.jpeg) Summary - **Response** — at the moment, you can get a set of data for relatively simple requests. - **Automatically generated schema** — the schema is generated for stored classes accessible to the client, but not for pre-defined resolvers. - **A fully functional parser** – the parser is fully implemented, you can get a tree by making a request of any complexity. → [Link to the project repository](https://github.com/intersystems-community/GraphQL) → [Link to the demo server](http://37.139.6.217:57773/graphiql/index.html) Demo server doesn't work Thank you, I fixed this issue!
Announcement
Evgeny Shvarov · Oct 1, 2018

InterSystems Global Summit Key Notes Live Stream

hi Community!Here is the link: https://portal.xyvid.com/group/GS18It will start now! Today is the second InterSystem Global Summit KeyNotes day! Don't miss breaking news!
Announcement
David Reche · Nov 13, 2018

(27 November, Madrid) InterSystems Iberia Healthcare Summit

Hi Everyone! We are pleased to invite you to the InterSystems Iberia Summit 2018 on 27th of November in Madrid, Spain! The New Challenges of Connected Health Matter Date: November 27, 2018 Place: Hotel Meliá Serrano, Madrid Please check the original agenda of the event. REGISTER NOW and hope to see you at the Iberia Healthcare Summit 2018 in Madrid!
Announcement
Anastasia Dyubaylo · Jul 3, 2023

Time to vote in InterSystems Grand Prix Contest 2023

Hi Community, It's voting time! Cast your votes for the best applications in our InterSystems Grand Prix Contest 2023: 🔥 VOTE FOR THE BEST APPS 🔥 How to vote? Details below. Experts nomination: InterSystems experienced jury will choose the best apps to nominate the prizes in the Experts Nomination. Please welcome our experts: ⭐️ @Alexander.Koblov, Support Specialist⭐️ @Guillaume.Rongier7183, Sales Engineer⭐️ @Eduard.Lebedyuk, Senior Cloud Engineer⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Timothy.Leavitt, Development Manager⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager⭐️ @Dean.Andrews2971, Head of Developer Relations⭐️ @Alexander.Woodhead, Senior Systems Developer⭐️ @Andreas.Dieckow , Principal Product Manager⭐️ @Aya.Heshmat, Product Specialist⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Robert.Kuszewski, Product Manager⭐️ @Carmen.Logue , Product Manager⭐️ @Jeffrey.Fried, Director of Product Management⭐️ @Luca.Ravazzolo, Product Manager⭐️ @Raj.Singh5479, Product Manager⭐️ @Patrick.Jamieson3621, Product Manager⭐️ @Stefan.Wittmann, Product Manager⭐️ @Steven.LeBlanc, Product Specialist⭐️ @Thomas.Dyar, Product Specialist⭐️ @Daniel.Franco, Interoperability Product Management Community nomination: For each user, a higher score is selected from two categories below: Conditions Place 1st 2nd 3rd If you have an article posted on DC and an app uploaded to Open Exchange (OEX) 9 6 3 If you have at least 1 article posted on DC or 1 app uploaded to OEX 6 4 2 If you make any valid contribution to DC (posted a comment/question, etc.) 3 2 1 Level Place 1st 2nd 3rd VIP Global Masters level or ISC Product Managers 15 10 5 Ambassador GM level 12 8 4 Expert GM level or DC Moderators 9 6 3 Specialist GM level 6 4 2 Advocate GM level or ISC Employees 3 2 1 Blind vote! The number of votes for each app will be hidden from everyone. Once a day we will publish the leaderboard in the comments to this post. The order of projects on the contest page will be as follows: the earlier an application was submitted to the competition, the higher it will be on the list. P.S. Don't forget to subscribe to this post (click on the bell icon) to be notified of new comments. To take part in the voting, you need: Sign in to Open Exchange – DC credentials will work. Make any valid contribution to the Developer Community – answer or ask questions, write an article, contribute applications on Open Exchange – and you'll be able to vote. Check this post on the options to make helpful contributions to the Developer Community. If you changed your mind, cancel the choice and give your vote to another application! Support the application you like! Note: contest participants are allowed to fix the bugs and make improvements to their applications during the voting week, so don't miss and subscribe to application releases! So! After the first day of the voting we have: Community Nomination, Top 5 oex-vscode-snippets-template by @John.Murray irisChatGPT by @Muhammad.Waseem oex-mapping by @Robert.Cemper1003 irisapitester by @Daniel.Aguilar DevBox by @Sean.Connelly ➡️ Voting is here. Experts, we are waiting for your votes! 🔥 Participants, improve & promote your solutions! Devs! Here are the results after two days of voting: Community Nomination, Top 5 oex-vscode-snippets-template by @John Murray oex-mapping by @Robert Cemper irisChatGPT by @Muhammad Waseem irisapitester by @Daniel Aguilar iris-user-manager by @Oliver.Wilms ➡️ Voting is here. So, the voting continues. Please support the application you like! Hi Developers! Here are the results at the moment: Community Nomination, Top 5 iris-fhir-generative-ai by @José.Pereira irisChatGPT by @Muhammad Waseem oex-mapping by @Robert Cemper IntegratedMLandDashboardSample by @珊珊.喻 oex-vscode-snippets-template by @John Murray ➡️ Voting is here. Expert Nomination, Top 5 irisChatGPT by @Muhammad Waseem iris-fhir-generative-ai by @José.Pereira oex-vscode-snippets-template by @John Murray ZProfile by @Dmitry.Maslennikov DevBox by @Sean Connelly ➡️ Voting is here. Don't forget to vote for your favorite app! Hi, Dev's! And here're the results at the moment: Community Nomination, Top 5 iris-fhir-generative-ai by @José Roberto Pereira IntegratedMLandDashboardSample by @Shanshan Yu IntegratedML-IRIS-PlatformEntryPrediction by @Zhang.Fatong irisChatGPT by @Muhammad Waseem oex-mapping by @Robert.Cemper1003 ➡️ Voting is here. Expert Nomination, Top 5 iris-fhir-generative-ai by @José Roberto Pereira irisChatGPT by @Muhammad Waseem IRIS FHIR Transcribe Summarize Export by @Ikram.Shah3431 oex-mapping by @Robert.Cemper1003 FHIR - AI and OpenAPI Chain by @Ikram.Shah3431 ➡️ Voting is here. Was there a problem with the voting earlier this week? I know of two people who voted on Monday but when they re-checked yesterday or today found that their votes were no longer registered, so they had to vote again. I think something similar happened during a previous contest. It happened to me too. My votes were deleted I had to vote again and I don't know who voted for me I have the same issue. I voted on the 03rd of July. I've read your comment and discovered that my votes have disappeared. So I voted again now. Dear all, We encountered an issue with the voting and are currently working to fix it. Please don't worry - all your votes will be restored and counted in the voting. We hope for your understanding. Thank you! Developers! Last call!Only one day left to the end of voting! Cast your votes for applications you like! @Anastasia.Dyubaylo @Irina.Podmazko I'm unable to vote because of an issue with open exchange login. I'm able to login to community but not open exchange. I think the issue is related to my email id which is too long. I see an error like below. length longer than MAXLEN allowed of 50\r\n > ERROR #5802: Datatype validation failed on property 'MP.Data.User:Referrer', with value equal to Do you if there is a workaround? Is there any alternate way in which I can share my votes with you? Hi! Could you please try again? I've fixed this issue. Hi Semion, Thanks for fixing! I'm able to login now, but when I try to vote it says, I should be an active contributor to be able to vote. I've posted a few articles and comments already - https://community.intersystems.com/user/sowmiya-nagarajan. Do you know if these issues are related? What should I do to fix this? The activity status is updated every few days so that new users cannot cheating with votes during the contest. You are participant, so I can fix it for you. Done. Could you please try to vote again? Got it, Thanks Semion! I'm able to vote now.
Announcement
Preston Brown · Jul 16, 2023

Remote InterSystems Cache Object + XSLT Application Developer

Strong technical experience with InterSystems Cache Objects, XSLT is a must for this position.Experience in CACHE/MUMPS technology.Experience in IHE XCA, XDS.b profiles, CCDA exchange.Experience in HL7 v2 messaging.This position is good thru 2023 and very good possibility of extension if budget gets approved.This position is for Pacific time hours. We have several temporary open positions for InterSystems Application Developer. If you are interested, please drop your resume to pbrown@cybercodemasters.com
Announcement
Anastasia Dyubaylo · Jul 4, 2023

Keynotes from InterSystems Global Summit 2023 are available!

Hello Community! The Global Summit 2023 in Hollywood has just ended but keynotes are already available for those who missed them while being on the premises or who couldn't attend this in-person event at all for some reason or another (or just for those who wish to refresh their memory and listen to them again). Enjoy watching all the keynotes from all three days of Global Summit 2023 via this YouTube playlist: ➡️ Global Summit 2023 on InterSystems Developers YouTube We hope you enjoy watching them and see you next time! Great News, Thanks @Anastasia.Dyubaylo
Article
Hiroshi Sato · Feb 8, 2024

Points to note when uninstalling InterSystems IRIS on Linux

Spoiler InterSystems FAQ rubric On Linux, use the following steps to delete an instance of InterSystems IRIS (hereinafter referred to as IRIS). (1) Stop the IRIS instance you want to uninstall using iris stop # iris stop <instance name> (2) Delete the instance information using the following command # iris delete <instance name> (3) Delete the IRIS installation directory using the rm -r command # rm -r <install directory> In addition to the installation directory, IRIS also uses (a) and (b) below. ----------------------------------------- (a) /usr/local/etc/irissys <folder> (b) /usr/bin/iris /usr/bin/irisdb /usr/bin/irissession ----------------------------------------- If you want to completely remove all IRIS from your machine, please remove all of (a) and (b) in addition to the uninstallation steps above. However, these are commonly used in all instances. Therefore, please do not remove it from Unix/Linux unless you are "uninstalling all IRIS". *Note(a) There are three files in the directory: the executable file (iris, irissession) and the instance information (iris.reg).(b) The three files are symbolic links.
Article
Mihoko Iijima · Feb 22, 2024

Points to note when uninstalling InterSystems products on Windows

InterSystems FAQ rubric To remove InterSystems products installed on your Windows system, use Add or Remove Programs in Control Panel (in Windows 10, select Apps from Windows Settings). Since we will be making changes to the system, you will need to log in as a user with administrator privileges. 1) Log in to the system as an administrator. 2) From the system tray, exit the launcher of the InterSystems product instance you want to uninstall (click launcher → exit). 3) Add or Remove Programs in the Control Panel (for Windows 10, select Apps from Windows Settings) Delete <InterSystems product> instance [xxxx] (where xxxx is the instance name). Example: InterSystems IRIS instance [IRIS] 4) Delete the InterSystems product installation directory (C:\InterSystems\<InterSystems product> by default) using Windows Explorer. After you uninstall all InterSystems product instances from your system using the steps above, you can remove any remaining information using the steps below. <Complete deletion> a. Delete related registry keys Delete the following registry key(*). [HKEY_LOCAL_MACHINE\SOFTWARE\InterSystems] [HKEY_CURRENT_USER\SOFTWARE\InterSystems] [HKEY_USER\xxxxxxxx\SOFTWARE\InterSystems] (If this key exists, also delete it) [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems] (64bit system only) Caution: Incorrect registry operations can seriously affect your system. We strongly recommend that you perform a backup such as creating a restore point before performing this task. b. Delete common files Instance common files are stored in the following folder, so delete them using Windows Explorer, etc. C:\Program Files\Common Files\Intersystems c. Remove IIS additional components If IIS (Internet Information Services) is installed on your Windows system and additional components for IIS (CSP Gateway/Web Gateway) are installed, the following folder will exist, so delete it. C:\Inetpub\CSPGateway d.Remove VC++ runtime library The following redistributed runtime libraries can be deleted if they are not referenced or used by other applications. Microsoft Visual C++ 2008 Redistributable - x86 xxxx *Delete using Apps and Features in Windows Settings.
Announcement
Anastasia Dyubaylo · Apr 11

[Video] Integrating DBT and Apache Airflow with InterSystems IRIS

Hi Community, Enjoy the new video on InterSystems Developers YouTube: ⏯ Integrating DBT and Apache Airflow with InterSystems IRIS @ Global Summit 2024 This session is your guide to setting up efficient, manageable data pipelines that save time and boost reliability. We'll show you how to bring together the processing power of dbt, the scheduling strength of Apache Airflow, and the robust data management capabilities of InterSystems IRIS. By the end of this session, you'll have a clear understanding of how to implement these tools in harmony, making your data workflows smoother and more effective. This is perfect for those looking to enhance their data operations with straightforward, effective solutions. Presenters:🗣 @Reven.Singh, Sales Engineer, InterSystems 🗣 @Hermanus.Bruwer, Sales Engineer, InterSystems Want to learn something new? Watch the video and subscribe for more!
Article
Evgeny Shvarov · Apr 13

Building (strikeout) Prompting the UI for InterSystems FHIR With Lovable

Hi developers! This will be a very short article as in April 2025 with Lovable and other Prompt-to-UI tools it becomes possible to build the frontend with prompting. Even to the folks like me who is not familiar with modern UI techics at all. Well, I know at least the words javascript, typescript and ReactJS, so in this very short article we will be building the ReactJS UI to InterSystems FHIR server with Lovable.ai. Let's go! First of all we will need an InterSystems FHIR Server instance. You can get it on AWS or you can spin it out directly on your laptop with IRIS for Health if you have docker installed. I will follow the docker way - and the easiest step is to clone this Open Exchange repository with: > cd devfoloder >git clone git clone git@github.com:intersystems-community/iris-fhir-template.git >cd iris-fhir-template >docker compose up -d Once started you can check FHIR server REST API working with the swagger at localhost:32873/swagger-ui/index.html: Check some calls (e.g. Patient resource) and see that there is some data. OK! Let's build the UI now. Go to Lovable.dev and create an account, its free. Ask Lovable to build the UI vs FHIR server, including the resources and functionality you want. E.g. prompt could be: Dear Lovable! Please build the UI vs an FHIR server R4 to manipulate Patient, Medication, observation, and lab results resources. And it will build it out. After it is done, ask Lovable to point the UI to a FHIR REST API URL: localhost:52873/fhir/v4. And it should work. Make sure you set up proper user access (I'd start with no security initially just to make sure REST services receive and provide data properly) and feel free to improve the UI with prompting. Next you can ask lovable to deploy the solution to internet. To make it working make sure you deploy IRIS FHIR server as well or point to AWS one if you are there. That's it! Lovely, isn't it? Here is the video with all the steps and more:
Announcement
Anastasia Dyubaylo · Dec 31, 2024

InterSystems Developer Ecosystem News, Q4 2024

Hello and welcome to the Developer Ecosystem News, Fourth Quarter! This last quarter of the year was full of exciting 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 🎇 Developer Community AI: InterSystems IRIS Documentation added 🎆 20,000 members on the InterSystems Developer Community! 🎆 400+ Ideas on the InterSystems Ideas Portal 🎇 Global Masters is back! Launch Date: October 3, 2024 🎊 2024 in Review: Celebrate Your Year with Developer Community! 🎊 Season's Greetings from the Developer Community! 🎊 Global Masters Holiday Cards 💡 InterSystems Ideas News #16 and #17 📝 Notifications & Co-Developers: New on Open Exchange! 📝 Faster Vector Searches with Approximate Nearest Neighbor index -- now available in the Vector Search Early Access Program 📝 InterSystems System Alerting and Monitoring (SAM) to Be Removed 📝 Production Decomposition - CCR Now Allows Source Controlling Individual Production Items 📝 InterSystems Package Manager (IPM) v0.9.0 Beta 👨‍🏫 InterSystems IRIS SQL Specialist Exam is now LIVE! Contests & Events InterSystems Developer Tools Contest 2024 Contest Announcement Kick-off Webinar Technology Bonuses Time to Vote Technical Bonuses Results Winners Announcement Meetup with Winners InterSystems Tech Video Challenge Announcement Bonuses Winners InterSystems Walking Challenge Announcement Winners InterSystems "Bringing Ideas to Reality" Contest Contest Announcement Kick-off Webinar Technology Bonuses Time to Vote Technical Bonuses Results Winners Announcement Advent of Code 2024 Contest Announcement Winners Announcement 🏆 First French Technical Article Contest 🏆 The 2nd InterSystems Japan Technical Writing Contest! 🏆 InterSystems IRIS Technical Tutorial Contest in Portuguese 👨‍💻 InterSystems at HackMIT 2024 👨‍💻 InterSystems at Hack Jak Brno Healthcare Hackathon 2024 🤝 Developer Meetup: Innovating on Health Data [GenAI, FHIR, Data Quality] 🤝 Developer Meetup on Security - October 15, Cambridge, MA 🤝 Developer Meetup on Gen AI, RAG, Hallucinations [Nov 19, Cambridge, MA] 🤝 Japan Developer Community Meetup in Tokyo 🎓 InterSystems DACH Symposium 2024 📺 Webinar in Spanish: ‘Facial recognition applied to application login using JavaScript+IRIS’ 📺 Webinar in Spanish: Unifying Data with InterSystems IRIS: Exploring the 'Connect or Collect' Paradigm 📺 [Webinar] Are you and your data AI ready? 📺 Webinar with the winners of the InterSystems IRIS Technical Tutorials Contest 🌐 [LinkedIn Live] Debunking AI Myths with Expert Insights Latest Releases ⬇️ General Availability of InterSystems IRIS, InterSystems IRIS for Health, and HealthShare Health Connect 2024.3 ⬇️ Maintenance Releases 2023.1.5 & 2024.1.2 of InterSystems IRIS, IRIS for Health, & HealthShare HealthConnect are now available ⬇️ First InterSystems IRIS, InterSystems IRIS for Health, and HealthShare Health Connect 2025.1 Developer Preview available ⬇️ IPM 0.9.0 Released Best Practices & Key Questions 🔥 Best practices Build iris image with cpf merge .NET Client-Side Development on IRIS Data Platform Connect Microsoft Excel to InterSystems IRIS via ODBC (Windows) A Better data import experience for LOAD DATA Working Around SOAP Service Timeouts A Peek at IRIS Data Platform Performance Strategies Uncovering Clues by Querying the Interoperability Message tables OpenTelemetry Traces from IRIS implemented SOAP Web Services Journaling Overview - Configuration, Operations, and Utilities Bridge AI/ML with your Adaptive Analytics solution ❓ Key Questions: September, October, November, December People and Companies to Know About 👨‍💻 Celebrating a Star of the Developer Community 👨‍💻 Celebrating a Journey of Dedication 💼 Remote: Strong InterSystems HL7, ADT, CCDA to FHIR + IRIS + GCP 💼 IRIS InterSystems Engineer 💼 IRIS experience at CVS Healthcare So... Here is our take on the most interesting and important things! What were your highlights from this past quarter? Share them in the comments section and let's remember the fun we've had! Congratulations everyone on the great set of content created by this community in the past 3 months! Happy New Year everyone!
Announcement
Anastasia Dyubaylo · Apr 2

InterSystems Developer Ecosystem News, Q1 2025

Hello and welcome to the Developer Ecosystem News! The first quarter of the year was full of exciting activities in the InterSystems Developer Ecosystem. In case you missed something, we've prepared a selection of the hottest news and topics for you to catch up on! News 🎇 Developer Community AI: descriptions of Open Exchange Applications added 🎆 Top InterSystems Developer Community Authors of 2024 🎆 Top Open Exchange Developers and Applications of 2024 🎇 Top InterSystems Ideas Contributors of 2024 🎊 Global Masters Update - Discover New Rewards 💡 InterSystems Ideas News #18, #19 and #20 📝 InterSystems Developer Ecosystem Annual Survey 2025 📝 Early Access Program for new Table Partitioning feature 📝 Alert: Invalid Data Introduced to Database and Journal files with Specific $LIST Operations 📝 Alert: SQL Queries Returning Wrong Results 📝 What's new with InterSystems Language Server 2.7 📝 Deprecation of MultiValue in InterSystems IRIS 2025.1 📝 InterSystems Platforms Update Q1-2025 📝 Using OpenEHR with InterSystems IRIS Contests & Events InterSystems Technical Article Contest 2025 Announcement Bonuses Winners "DC Search" Sweepstakes Announcement Winners UK&I Data Summit InterSystems UK & Ireland Data Summit 2025 [Video] Developer Ecosystem at UKI Data Summit UK&I Data Summit in Birmingham - freebies inside! 👨‍💻 InterSystems at European Healthcare Hackathon 2025 👨‍💻 InterSystems at TreeHacks 2025 👨‍💻 InterSystems GenAI challenge at NUS Health Hack 2025 hackathon 👨‍💻 InterSystems at IC HACK ‘25 🤝 AI Meetup with InterSystems Iberia 🤝 InterSystems Benelux and France Summit 2025 📺 Interoperability as a catalyst for AI 📺 Cloud Health: FHIR Server 📺 Webinar in Hebrew: GenAI + RAG - Leveraging InterSystems IRIS as your Vector DB 📺 Configuring a Web Server for use with InterSystems IRIS 📺 2025 Data Management: Technology Trends & Predictions Latest Releases ⬇️ General Availability of InterSystems IRIS, InterSystems IRIS for Health, and HealthShare Health Connect 2025.1 ⬇️ Maintenance Releases 2024.1.3 of InterSystems IRIS, IRIS for Health, & HealthShare HealthConnect are now available Best Practices & Key Questions 🔥 Best practices VIP in GCP IKO - Lessons Learned (Part 1 - Helm) IKO - Lessons Learned (Part 2 - The IrisCluster) IKO - Lessons Learned (Part 3 - Services 101 and The Sidecars) IKO - Lessons Learned (Part 4 - The Storage Class) Comfortable VSCode Auto Save and ObjectScript CompileOnSave settings Connecting to DynamoDB Using Embedded Python: A Tutorial for Using Boto3 and ObjectScript to Write to DynamoDB Getting data from InterSystems IRIS CloudSQL using xDBC Quickstart guide to IRIS DB on Linux Systems Orchestrating Secure Management Access in InterSystems IRIS with AWS EKS and ALB ❓ Key Questions: January, February, March (TBA) People and Companies to Know About 👩‍🏫 Celebrating a True Educator of the Developer Community 💼 IRIS Engineer Needed 💼 Role for IRIS Engineer 💼 Opportunity for HealthShare Engineers 💼 Principal Architect and Integration Engineer 👨‍💻 looking for new opportunity 👨‍💻 Looking for Opportunities in InterSystems Technology So... Here is our take on the most interesting and important things! What were your highlights from this past quarter? Share them in the comments section and let's remember the fun we've had!
Announcement
Evgeny Shvarov · Apr 3

Technological Bonuses Results for the InterSystems AI Programming Contest

Hi Developers! We are happy to present the bonuses page for the applications submitted to the InterSystems AI Programming Contest! See the results below. Project Agent AI Vector Search Embedded Python LLM AI or LangChain IntegratedML Docker IPM Online Demo Community Idea Implementation Find a bug First Article on DC Second Article on DC Video on YouTube First Time Contribution Suggest New Idea Total Bonus Nominal 5 4 3 3 3 2 2 2 4 2 2 1 3 3 1 40 ollama-ai-iris 4 3 3 2 3 15 mcp-server-iris 5 3 3 2 3 16 langchain-iris-tool 5 4 3 3 2 2 2 4 2 1 3 1 32 AiAssistant 4 3 3 2 2 3 17 pax-ai-iris 3 3 6 IRIS-Intelligent-Butler 4 3 3 3 13 iris-data-analysis 4 3 3 2 2 2 3 19 bg-iris-agent 5 3 2 2 2 2 3 3 22 Facilis 5 3 3 2 2 15 Vitals Lab 4 3 3 3 13 iris-AgenticAI 5 4 3 3 2 2 1 20 toot 4 3 2 2 3 14 iris-clinical-assistant 3 3 2 3 11 oncorag 5 4 3 2 3 17 iris-easybot 5 4 3 2 14 Please apply with your comments for new implementations and corrections to be made here in the comments or in Discord. Evgeny, hi! We have added a link to the demo in the description of the project (bg-iris-agent), this link is also available in our article. Could you please add bonuses for online demo on our project? Hi Elena! I've added bonus to your app. Thank you, Semion! Evgeny, hi! I have several apps that don't have bonuses, I want to confirm: Vector SearchDockerIPMFirst Time Contribution Hi! Your docker doesn't work after running. Ipm doesn’t work after installation. Fisrt Time I’ve fixed. First Article I’ve removed, because of it’s just copy of readme. Vector Search I’ve added. Thanks @Evgeny.Shvarov for sharing the Technological Bonuses Results.Note that the iris-AgenticAI application now supports Vector Search, and the second article is also published. Hi Muhammad! These bonuses have been added. Thank you!