Search

Clear filter
Question
Rui Figueiredo · Nov 1, 2019

InterSystems IRIS for Health Community Edition on Azure

Hi, Has anyone tried the InterSystems IRIS for Health Community Edition on Azure https://azuremarketplace.microsoft.com/en-us/marketplace/apps/intersystems.intersystems-iris-health-communityIt seems the image is the InterSystems IRIS for Health image instead of the Community Edition. Thanks, Rui I am confused. The link above is for the IRIS for Health Community Edition. I would expect you get the IRIS for Health image. Please elaborate Hi Andreas, From the link, you got an IRIS for Health image, the issue is that the image has BYOL license instead of a Comunity Edition Licence. Rui Thank you for the clarification Hi Rui - Yes this is true, but it's temporary. We had some issues with the Community Edition and the marketplace listing was set up this was as an interim measure. This will be replaced by the IRIS for Health Community Edition shortly. Meantime it gives you the same rights and you can develop with it fine, but it will expire (at which point you should just go to the marketplace and get a new one). -jeff
Announcement
Evgeny Shvarov · Nov 3, 2019

InterSystems Developers Community Release, November 2019

Hi Developers! Here is the release of what's was enhanced and fixed in the DC engine in October 2019. New look-and-feel and features for the Developers Events; "Smart" social sharing in Twitter; 5 min delay before sending emails, nested tags for group tags, better articles linkage, and other small enhancements and bug fixes. See the details below. New Developers Events We improved the Developers Events section, so now developers' events mandatory contain registration link, the place and you can add the event into your calendar including date, time, place, and the content. Check how it works! Twitter Smart Sharing Every post on DC contains social buttons panel - just in case you want to share the post in the preferred social network in conveniently opens your network account and adds the link of the post. With this release, we improved this feature, especially for Twitter sharings. Now if you share the post on twitter with this button it also introduces all the hashtags related to DC tags in the post. E.g. if you share the post on new IRIS and IRIS for Health release, you get the following for Twitter: Minor enhancements With this release, we introduced a 5 min delay before sending the announcements. This is to let you make final tweaks to your post after pressing the button "Publish". Often we see something which needs to be fixed just after we press "Publish". At least I do that ) We improved the tag tree: now it has nested tags to group posts to make the structure of taxonomy more close to the content semantics. Also, the linkage mechanism was improved: now if you include the "Next chapter" link in one post this automatically includes the "Prev post" link to another post which makes the linkage mechanism a lot easier. And as always, we fixed a ton of bugs, added a few more and have great plans for the future! Submit your ideas, share your InterSystems experience and stay tuned!
Article
Eduard Lebedyuk · Feb 11, 2020

Asymmetric RSA encryption with JS and InterSystems IRIS

Asymmetric cryptography is a cryptographic system that uses pairs of keys: public keys which may be disseminated widely, and private keys which are known only to the owner. The generation of such keys depends on cryptographic algorithms based on mathematical problems to produce one-way functions. Effective security only requires keeping the private key private; the public key can be openly distributed without compromising security. In such a system, any person can encrypt a message using the receiver's public key, but that encrypted message can only be decrypted with the receiver's private key. Robust authentication is also possible. A sender can combine a message with a private key to create a short digital signature on the message. Anyone with the sender's corresponding public key can combine the same message and the supposed digital signature associated with it to verify whether the signature was valid, i.e. made by the owner of the corresponding private key. (C) Wikipedia. In this article, I would demonstrate how asymmetric encryption can be used with InterSystems IRIS and JavaScript. We will build the app with a delegated authentication, that would encode credentials on a JS client and verify them inside InterSystems IRIS. This is more of a showcase for delegated authentication and asymmetric encryption than a recommended approach - OAuth authorization is much more robust and recommended for production use. First of all, let's store our keys: Class REST.Keys { Parameter PUBLICKEY = "-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlOJu6TyygqxfWT7eLtGDwajtN FOb9I5XRb6khyfD1Yt3YiCgQWMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76 xFxdU6jE0NQ+Z+zEdhUTooNRaY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4 gwQco1KRMDSmXSMkDwIDAQAB -----END PUBLIC KEY-----"; Parameter PRIVATEKEY = "-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDlOJu6TyygqxfWT7eLtGDwajtNFOb9I5XRb6khyfD1Yt3YiCgQ WMNW649887VGJiGr/L5i2osbl8C9+WJTeucF+S76xFxdU6jE0NQ+Z+zEdhUTooNR aY5nZiu5PgDB0ED/ZKBUSLKL7eibMxZtMlUDHjm4gwQco1KRMDSmXSMkDwIDAQAB AoGAfY9LpnuWK5Bs50UVep5c93SJdUi82u7yMx4iHFMc/Z2hfenfYEzu+57fI4fv xTQ//5DbzRR/XKb8ulNv6+CHyPF31xk7YOBfkGI8qjLoq06V+FyBfDSwL8KbLyeH m7KUZnLNQbk8yGLzB3iYKkRHlmUanQGaNMIJziWOkN+N9dECQQD0ONYRNZeuM8zd 8XJTSdcIX4a3gy3GGCJxOzv16XHxD03GW6UNLmfPwenKu+cdrQeaqEixrCejXdAF z/7+BSMpAkEA8EaSOeP5Xr3ZrbiKzi6TGMwHMvC7HdJxaBJbVRfApFrE0/mPwmP5 rN7QwjrMY+0+AbXcm8mRQyQ1+IGEembsdwJBAN6az8Rv7QnD/YBvi52POIlRSSIM V7SwWvSK4WSMnGb1ZBbhgdg57DXaspcwHsFV7hByQ5BvMtIduHcT14ECfcECQATe aTgjFnqE/lQ22Rk0eGaYO80cc643BXVGafNfd9fcvwBMnk0iGX0XRsOozVt5Azil psLBYuApa66NcVHJpCECQQDTjI2AQhFc1yRnCU/YgDnSpJVm1nASoRUnU8Jfm3Oz uku7JUXcVpt08DFSceCEX9unCuMcT72rAQlLpdZir876 -----END RSA PRIVATE KEY-----"; } Use Managed Key Infrastructure to store keys in production systems. Now let's go for REST brokers, we need two: Public, to serve our public key Private for authorization Abstract broker: Class REST.Abstract Extends %CSP.REST { Parameter UseSession As BOOLEAN = 1; Parameter HandleCorsRequest = 1; Parameter CHARSET = "UTF8"; } Public broker (published as /auth/public REST app with unauthorized access): Class REST.Public Extends REST.Abstract { XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/key" Method="GET" Call="GetKey"/> </Routes> } ClassMethod GetKey() { #dim sc As %Status = $$$OK write ##class(REST.Keys).#PUBLICKEY quit sc } } And private broker (published as /auth/private REST app with Password and Delegated access): Class REST.Private Extends REST.Abstract { XData UrlMap [ XMLNamespace = "http://www.intersystems.com/urlmap" ] { <Routes> <Route Url="/random" Method="GET" Call="GetRandom"/> </Routes> } ClassMethod GetRandom() { #dim sc As %Status = $$$OK write $random(100) quit sc } } That's it. /random is a protected call. And here is our ZUAUTHENTICATE routine, it accepts authorization in an XAUTH header, where value is RSA encrypted <user>$c(10)<pass>$c(10)<timestamp>. ZAUTHENTICATE(ServiceName,Namespace,Username,Password,Credentials,Properties) PUBLIC { #include %occStatus quit $$$OK } GetCredentials(ServiceName,Namespace,Username,Password,Credentials) Public { #include %occErrors #include %occStatus #dim separator As %Char = $c(10) #dim %request As %CSP.Request set ciphertext = %request.GetCgiEnv("HTTP_XAUTH") quit:ciphertext="" $$$ERROR($$$GeneralError, "No XAuth header") set text = $SYSTEM.Encryption.RSADecrypt($system.Encryption.Base64Decode(ciphertext), ##class(REST.Keys).#PRIVATEKEY,"",2) quit:text="" $$$ERROR($$$GeneralError, "Unable to decrypt") quit:$l(text, separator)'=3 $$$ERROR($$$GeneralError, "Wrong plaintext structure") set time = $p(text, separator, 3) set limit = 10 set diff = $system.SQL.DATEDIFF("s", $tr(time,"TZ", " "), $SYSTEM.Util.LocalWithZTIMEZONEtoUTC($H)) quit:diff>limit $$$ERROR($$$GeneralError, "Old request:" _ diff) set Username = $p(text, separator, 1) set Password = $p(text, separator, 2) quit $$$OK } Note that the REST package must be mapped to %SYS namespace. Now for a client. We're using the JSEncrypt library for RSA encryption and sending two requests - first to get the key and second (authorized request) to get a random value from our private broker. <!doctype html> <html> <head> <title>InterSystems IRIS - JavaScript RSA Encryption</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js"></script> <script type="text/javascript"> function getKey() { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) document.getElementById('pubkey').value = xmlHttp.responseText; } var url = '/auth/public/key'; xmlHttp.open("GET", url, true); xmlHttp.send(null); }; function doAuth() { // Encrypt with the public key... var encrypt = new JSEncrypt(); encrypt.setPublicKey(document.getElementById('pubkey').value); var encrypted = encrypt.encrypt(document.getElementById('user').value + "\n" + document.getElementById('pass').value + "\n" + new Date().toISOString()); var xmlHttp = new XMLHttpRequest(); var url = '/auth/private/random'; xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) document.getElementById('randomVal').innerHTML = xmlHttp.responseText; } xmlHttp.open("GET", url, true); xmlHttp.setRequestHeader("XAuth", encrypted) xmlHttp.send(null); } </script> </head> <body> <label for="pubkey">Public Key</label><br/> <textarea id="pubkey" rows="15" cols="65"></textarea><input type="button" value="Get Key" onclick="getKey();" /><br/> User:<br> <input id="user" type="text" name="user" value="_SYSTEM"><br> Pass:<br> <input id="pass" type="password" name="pass" value="SYS"><br><br> <input type="button" value="Auth" onclick="doAuth();" /> <br/><br/> <label>Random: </label><label id="randomVal"></label><br/> </body> </html> With this, we successfully encrypted our plaintext on a client and decrypted it with InterSystems IRIS. Get the code here. typo: zuauthenticat -> zauthenticate I think this " OAuth authorization is much more robust and recommended for production use. " should be emphasized a bit more :) This might lead to people getting the idea that rolling their own encryption related code is an acceptable idea :/
Announcement
Derek Robinson · Jan 21, 2020

New Podcast from InterSystems Learning Services!

InterSystems Learning Services is excited to announce the upcoming launch of Data Points! This podcast will feature conversations with experts about new and exciting features of InterSystems products, as well as cutting-edge topics in the tech industry today. You can subscribe to the podcast right now, ahead of the first episode in February! Subscribe on: Apple Podcasts Spotify Stitcher Google Play Great. I am looking forward to it.
Announcement
Evgeny Shvarov · Feb 1, 2020

InterSystems Developers Community Release, February 2020

Hi Developers! In January we introduced into Developers Community: New postings type - Discussions; No more answers - only comments-replies; bug fixes and small improvements. See the details below. Discussions We had requests for this type of posts - when it is not an article, it's not a question which needs a discreet answer, but a discussion where you want to know people's opinions. It can be combined with polls. So, we introduced it and people already contribute discussions. Answers Conversion to Comments A lot of people were confused with Answers: when you reply to the question, is it an answer or comment? If the comment is really an answer topic starter couldn't accept it. Search in answers or in comments? We solved it - all answers are now comments, but you can accept comments as an answer to the question. And no more doubts about replying to a question. See the discussion. Bug fixes We fixed a few bugs when you didn't get email notifications on some comments. We also fixed a few smaller bugs and improved the performance. Here is the full kanban of solved issues in January 2020. Here is the planned kanban for February 2020. Submit your ideas, bug fixes, contribute to Developers Community and stay tuned!
Question
Sergey Kamenev · Apr 30, 2019

Questions regarding InterSystems IRIS docker container

I follow the instruction on docker site.I have next troubles:After changing password fom "SYS" to my pass I see on screen non removable "USER>". Standart commands "exit" and "quit" are not worked. Next actions is possible only in new terminal window.I need some extra tool in container. Where I try install (by example "apt-get install mc") I get "E: Package 'mc' has no installation candidate". I don't understand why standart ubuntu package manager do not work in Iris container. 1. My steps: docker exec -it my-iris iris session IRIS Log in with these predefined credentials: Node: 8a6940088a16, Instance: IRIS Username: _SYSTEM Password: SYS For security, these credentials (and the other predefined accounts) are immediately expired the first time you use them, and you are required to change the password.After changing password I see non-removable and non-breakable "USER>"2. I found decision of this problem.After this "apt-get update" it's possible install other packages. 1. To exit the IRIS session use the command halt 2. And yes, for most container activity, it is best to do an apt-get update && apt-get install inside your containers, which will make sure it has the latest packages/repositories available. @Douglas.Foster if you're going to get the HALT info added to the Docker Hub page, maybe also clean up the debris I've highlighted below: What do you expect instead of "USER>", it is a session prompt, where you should put your commands. At this point, for me, it looks expectable. we'll add the USER> prompt and a link to the Terminal doc to these instructions, and get rid of the extraneous word. 1. What you did, to get it. Please add all your steps, so we can find what you did wrong.2. IRIS container changed nothing what comes from base Ubuntu image. If you can install mc there it should be possible on IRIS as well. But I don't see any reasons, why mc should be available inside the container. And why you need it there? Sergey,The prompt you see with USER> is an IRIS terminal prompt. To get a bash session you will need to run something like docker exec -it my-iris bash Package mc has no installation candidate because apt-get update hasn't been run since we built the image. Run apt-get update && apt-get install mc and you'll be fine. :)
Announcement
Anastasia Dyubaylo · Jun 19, 2019

New Video: InterSystems IRIS - Power of the Platform

Hi Community! Please welcome a new video on InterSystems Developers YouTube Channel: InterSystems IRIS - Power of the Platform Interoperability, a fast database, analytics, and rapid development have always been hallmarks of InterSystems technology, now all brought together in InterSystems IRIS Data Platform. This video highlights the stories of several customers from Russia and Latin America who are building solutions based on a combination of features provided by InterSystems IRIS. Takeaway: You can reap benefits from using InterSystems IRIS, even if you don't use its new features.Presenter: @joe.gallant, Senior Sales Engineer, InterSystems And... Additional materials to the video you can find in this InterSystems Online Learning Course. Don't forget to subscribe to our InterSystems Developers YouTube Channel. Enjoy and stay tuned!
Announcement
Evgeny Shvarov · Jun 19, 2019

InterSystems Open Exchange Release, June 2019

Hi Community!We have a new release of InterSystems Open Exchange applications gallery!What's new?Companies catalogBetter descriptionsApplication PreviewSee the details below.Companies catalogAs you already know you are able to introduce a Company profile and publish apps on behalf of a company. In this release, we introduced a catalog of companies presented on Open Exchange. Please, add your companies and get more traffic to your company sites and applications!Better descriptionsWe have two descriptions for the app.A short description is mandatory and is being used to display on app tile and to be displayed if you don't have a long description.With this release, a short description may be imported from Github repo linked to the app.Long description now supports markdown - so formatting, links, images are welcome!If your app is connected to a Github repo long description can be loaded from Github readme.md. This behavior could be altered by a special flag now.PreviewYes! We introduced the feature to preview the app before sending it for approval. Finally )Social Network SharesWe've introduced a set of social media buttons to let your application be shared easier on social networks and to let some extra traffic too. Also, check what else was fixed and introduced with the release in the kanban.Here are our plans for the next month! Report the issues and provide enhancement requests here!Stay tuned and submit your InterSystems IRIS solutions, tools and companies!
Announcement
Evgeny Shvarov · Jul 25, 2019

InterSystems Open Exchange July 2019 Release

Hi Developers!We are ready to present you a new release of InterSystems Open Exchange. What's new?Applications rating;Open Exchange profile <-> InterSystems Developers profile linkage.See the details below.Apps ratingYes, starting with this release you can show your attitude to different applications. If you like the app - open it and click on a star on a top-right corner of the application page:The feature is available for registered members. If you don't yet - sign in with your InterSystems Developers community account.You can sort the apps by rating: click on a sorting selector 2 times until "Sorted by stars" appears - you'll see the apps sorted with the most of stars on top.And you can filter the apps which you starred - the way to see only your favorite apps.InterSystems Developers Profile LinkageWe've introduced a new field in a member's profile - DC Link. Put the link to your member's page and it will appear on your Open Exchange profile page - like here.Also, we fixed a lot of bugs and introduced a set of small features - check the Open Exchange kanban page.Introduce your feature requests, submit your apps and stay tuned!
Article
Alberto Fuentes · Mar 2, 2020

Simple Angular app + InterSystems IRIS example

Hi all! I'd like to share the code we used in a hands-on session in the last InterSystems Iberia Summit (Spain) about developing a simple Angular app using InterSystems IRIS as backend. In this sample we will: Import data from a public dataset and store it in InterSystems IRIS. Create automatic REST APIs using RESTForms2. Build an Angular 8 app to consume the data from the InterSystems IRIS backend. Full instructions are available in the GitHub repository. Hi Alberto, I think file "/tmp/RESTForms2-master/src/Form/Installer.cls" is missing in the package. Bellow the erro when try to start the container: And the print of content of folder "\backend\src\Form": Hi Cristiano, Backend image is built using this Dockerfile. In this case, it is downloading RESTForms2 using wget and then loading it into IRIS. The download is done in the Dockerfile using wget https://github.com/intersystems-community/RESTForms2/archive/master.tar.gz Make sure in your logs that you had no errors while downloading RESTForms using wget.
Announcement
Evgeny Shvarov · Mar 2, 2020

InterSystems Developers Community Release, March 2020

Hi Developers! In February we introduced into Developers Community: Autosaved drafts; Open Exchange linkage; PDF attachments; Weekly Unanswered questions digest; language-specific search; bug fixes and small enhancements. See the details below. Autosaved drafts Sometimes when we create a long post directly on Developers Community we can accidentally close the page or browser and lose the draft text. This release comes with the feature of the autosaved draft. Every 10 seconds DC autosaves the draft you are working with and if you close the page it will suggest you restore the draft when you click Create Post again. Open Exchange Linkage Starting from this release your member profile page has the direct link to your Open Exchange profile and shows your published applications. E.g. here is the @Peter.Steiwer's members page: PDF attachments "You asked about it - and we did it!" This release comes with the option to attach pdf file to any post. There is a special control that gives you the option to upload a PDF file from you machine and DC will host it: And you can give it a description. Example. Weekly Unanswered questions digest Starting from the current release we introduce a new weekly Unanswered Questions Digest which will be sent on Wednesdays. It will contain questions that either don't have any reply or have replies but no accepted as an answer by its author. Questions are split by categories. You can subscribe or unsubscribe from it in your Member->Subscriptions settings: Language-specific search We fixed it. With this release if you search for something in the English community all the results will be for the English-speaking site. And the search on the Spanish community will give you the posts only in Spanish. Small enhancements We also fixed a few issues and did a couple of minor enhancements, like additional "Creation Date" sorting for posts to show the posts feed in a publishing date order, not last reply order: Also if you forgot to give a reply an "Accepted" sign we made a special filter for your questions "Without accepted answer": Here is the full kanban of solved issues in February 2020. Here is the planned kanban for March 2020. Submit your ideas, bug fixes, contribute to Developers Community and stay tuned! Wow!! Very useful enhancements! This Developers Community seems veeery professional Thanks a lot for your work! Esther Thank you, Esther!
Announcement
Evgeny Shvarov · Dec 2, 2019

InterSystems Developers Community Release, December 2019

Hi Developers! Here is what's we introduced in Developers Community features and UI last month: Pinned topics for main feed and tags; One-click unsubscribe option in every email we send; A 'new' indicator for the posts and comments; Notification of changes made by moderators; Articles without translation don't show 'access denied' anymore. See the details below! Pinned topics Important news and posts now could be pinned to the top of the main feed and tags. I think this will be very used by partners - tag owners. One-click unsubscribe action If you don't want to receive any email notifications from Developers Community now you can unsubscribe now with one click. New indicator DC marks with New indicator posts and comments you haven't seen yet since your last visit. And removes the indicator once you do. Also, you may find useful a New filter in the filter list: Notifications of changes made by moderators We have moderators on DC, and they work. Since this release, you will get a 'diff' notification of what changes moderators made to your post to make moderators' work more clear and visible. No 'Access denied for the posts without translation As you know, we are the two-languages community since May 2019! And every post has a switcher to another language. And if there is a translation you see the translated post. If there is no translation you see the UI to request a translation. If you are logged in. If not - you saw 'Access denied', now we fixed it. Also, we fixed a lot of bugs and introduced new tasks! Add your requests, contribute to InterSystems Developers Community, and stay tuned!
Announcement
Derek Robinson · Feb 14, 2020

ICYMI: A Discussion on IntegratedML in InterSystems IRIS

You may have seen earlier this week that we launched a brand-new learning podcast called Data Points! There are three episodes released, one of which was a really interesting discussion with Thomas Dyar — a product specialist here at InterSystems focused on machine learning. Take a listen and reach out if you're interested in exploring more about IntegratedML! You can check out the other two episodes — one on InterSystems IRIS and one on Kubernetes — by going to https://datapoints.intersystems.com. That page also has links to subscribe on Spotify, Apple Podcasts, and more!
Announcement
Anastasia Dyubaylo · Oct 14, 2019

InterSystems Global Summit 2019 Keynotes Videos

Hi Community, See all the Key Notes videos from Global Summit 2019 in a dedicated Global Summit 2019 Keynotes playlist on InterSystems Developers YouTube Channel! 1. The Age of Interoperability – presented by Terry Ragon, InterSystems CEO & Founder, presents a vision of data as the engine of the future and how the data platform will let people do more with their data. 2. The Future Begins Now – presented by Erica Orange, Executive Vice President and Chief Operating Officer of The Future Hunters. 3. Taking Flight with Data – presented by Scott Gnau, Head of Data Platforms, InterSystems. 4. InterSystems IRIS: Three Perspectives (panel) with Steve Ayer, Rhodes Group & David Gahan, RxMx & Jim Heiman, Northwell Health. 5. Healthcare Unbounded – presented by @Donald.Woodlock, Head of HealthShare, InterSystems & @Christine.Chapman, Head of TrakCare, InterSystems. 6. A Next-Generation Data & Technology Network for Healthcare Systems – presented by Jeff Elton, Concerto Health AI (CHAI) CEO. 7. We Have the Power to Make Healthcare Work Better – presented by David Braza, Executive VP, Chief Financial Officer, and Chief Actuary at Premera. 8. Artificial Intelligence in Healthcare and BioMedicine – presented by James Collins, MIT Professor. 9. Disruption and Opportunities for Developers – presented by Vivek Wadhwa, Distinguished Fellow at Harvard Law School and the Carnegie Mellon University College of Engineering at Silicon Valley. 10. InterSystems IRIS Show and Tell – presented by @Jeff.Fried, Director of Product Management, Data Platforms, InterSystems. BIG APPLAUSE TO ALL SPEAKERS! 👏🏼 And... If you want to learn more about Global Summit 2019, follow this link. Enjoy and stay tuned with InterSystems Developers!
Announcement
Anastasia Dyubaylo · Dec 20, 2019

New Video: InterSystems IRIS Containers for Developers

Hi Community, Please welcome the new Global Summit 2019 video on InterSystems Developers YouTube Channel: ⏯ InterSystems IRIS Containers for Developers This video aims to demystify the process of working with InterSystems IRIS containers in development scenarios. We will walk through setting up Docker, InterSystems IRIS in a container, and connecting Studio, Atelier, and the VS Code plugin. Examples will be on Windows, but are transferable to Mac. Takeaway: You will learn how easy it is to set up and use InterSystems IRIS for development purposes on a Windows or Mac laptop.Presenter: @Sean.Klingensmith, Software Developer, InterSystems Learn more in this InterSystems Online Learning Course. Enjoy watching the video! 👍🏼