Search

Clear filter
Announcement
Anastasia Dyubaylo · Jan 20, 2020

The Best InterSystems Open Exchange Developers and Applications in 2019

Hi Developers, 2019 was a really great year with almost 100 applications uploaded to the InterSystems Open Exchange! To thank our Best Contributors we have special annual achievement badges in Global Masters Advocacy Hub. This year we introduced 2 new badges for contribution to the InterSystems Open Exchange: ✅ InterSystems Application of the Year 2019 ✅ InterSystems Developer of the Year 2019 We're glad to present the most downloaded applications on InterSystems Data Platforms! Badge's Name Advocates Rules Nomination: InterSystems Application of the Year Gold InterSystems Application of the Year 2019 - 1st place VSCode-ObjectScript by @Maslennikov.Dmitry 1st / 2nd/ 3rd / 4th-10th place in "InterSystems Application of the Year 2019" nomination. Given to developers whose application gathered the maximum amount of downloads on InterSystems Open Exchange in the year of 2019. Silver InterSystems Application of the Year 2019 - 2nd place PythonGateway by @Eduard.Lebedyuk Bronze InterSystems Application of the Year 2019 - 3rd place iris-history-monitor by @Henrique InterSystems Application of the Year 2019 - 4th-10th places WebTerminal by @Nikita.Savchenko7047 Design Pattern in Caché Object Script by @Tiago.Ribeiro Caché Monitor by @Andreas.Schneider AnalyzeThis by @Peter.Steiwer A more useFull Object Dump by @Robert.Cemper1003 Light weight EXCEL download by @Robert.Cemper1003 ObjectScript Class Explorer by @Nikita.Savchenko7047 Nomination: InterSystems Developer of the Year Gold InterSystems Developer of the Year 2019 - 1st place @Robert.Cemper1003 1st / 2nd / 3rd / 4th-10th place in "InterSystems Developer of the Year 2019" nomination. Given to developers who uploaded the largest number of applications to InterSystems Open Exchange in the year of 2019. Silver InterSystems Developer of the Year 2019 - 2nd place @Evgeny.Shvarov @Eduard.Lebedyuk Bronze InterSystems Developer of the Year 2019 - 3rd place @Maslennikov.Dmitry @David.Crawford @Otto.Karlinger InterSystems Developer of the Year 2019 - 4th-10th places @Peter.Steiwer @Amir.Samary @Guillaume.Rongier7183 @Rubens.Silva9155 Congratulations! You are doing so valuable and important job for all the community! Thank you all for being part of the InterSystems Community. Share your experience, ask, learn and develop, and be successful with InterSystems! ➡️ See also the Best Articles and the Best Questions on InterSystems Data Platform and the Best Contributors in 2019.
Announcement
Anastasia Dyubaylo · Dec 18, 2019

New Video: InterSystems IRIS Roadmap - Analytics and AI

Hi Community, The new video from Global Summit 2019 is already on InterSystems Developers YouTube: ⏯ InterSystems IRIS Roadmap: Analytics and AI This video outlines what's new and what's next for Business Intelligence (BI), Artificial Intelligence (AI), and analytics within InterSystems IRIS. We will present the use cases that we are working to solve, what has been delivered to address those use cases, as well as what we are working on next. Takeaway: You will gain knowledge of current and future business intelligence and analytics capabilities within InterSystems IRIS. Presenters: 🗣 @Benjamin.DeBoe, Product Manager, InterSystems 🗣 @tomd, Product Specialist - Machine Learning, InterSystems 🗣 @Carmen.Logue, Product Manager - Analytics and AI, InterSystems Additional materials to this video you can find in this InterSystems Online Learning Course. Enjoy watching this video! 👍🏼
Article
Timothy Leavitt · Mar 24, 2020

Unit Tests and Test Coverage in the InterSystems Package Manager

This article will describe processes for running unit tests via the InterSystems Package Manager (aka IPM - see https://openexchange.intersystems.com/package/InterSystems-Package-Manager-1), including test coverage measurement (via https://openexchange.intersystems.com/package/Test-Coverage-Tool). Unit testing in ObjectScript There's already great documentation about writing unit tests in ObjectScript, so I won't repeat any of that. You can find the Unit Test tutorial here: https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=TUNT_preface It's best practice to include your unit tests somewhere separate in your source tree, whether it's just "/tests" or something fancier. Within InterSystems, we end up using /internal/testing/unit_tests/ as our de facto standard, which makes sense because tests are internal/non-distributed and there are types of tests other than unit tests, but this might be a bit complex for simple open source projects. You may see this structure in some of our GitHub repos. From a workflow perspective, this is super easy in VSCode - you just create the directory and put the classes there. With older server-centric approaches to source control (those used in Studio) you'll need to map this package appropriately, and the approach for that varies by source control extension. From a unit test class naming perspective, my personal preference (and the best practice for my group) is: UnitTest.<package/class being tested>[.<method/feature being tested>] For example, if unit tests for method Foo in class MyApplication.SomeClass, the unit test class would be named UnitTest.MyApplication.SomeClass.Foo; if the tests were for the class as a whole, it'd just be UnitTest.MyApplication.SomeClass. Unit tests in IPM Making the InterSystems Package Manager aware of your unit tests is easy! Just add a line to module.xml like the following (taken from https://github.com/timleavitt/ObjectScript-Math/blob/master/module.xml - a fork of @Peter.Steiwer 's excellent math package from the Open Exchange, which I'm using as a simple motivating example): <Module> ... <UnitTest Name="tests" Package="UnitTest.Math" Phase="test"/></Module> What this all means: The unit tests are in the "tests" directory underneath the module's root. The unit tests are in the "UnitTest.Math" package. This makes sense, because the classes being tested are in the "Math" package. The unit tests run in the "test" phase in the package lifecycle. (There's also a "verify" phase in which they could run, but that's a story for another day.) Running Unit Tests With unit tests defined as explained above, the package manager provides some really helpful tools for running them. You can still set ^UnitTestRoot, etc. as you usually would with %UnitTest.Manager, but you'll probably find the following options much easier - especially if you're working on several projects in the same environment. You can try out all of these by cloning the objectscript-math repo listed above and then loading it with zpm "load /path/to/cloned/repo/", or on your own package by replacing "objectscript-math" with your package names (and test names). To reload the module and then run all the unit tests: zpm "objectscript-math test" To just run the unit tests (without reloading): zpm "objectscript-math test -only" To just run the unit tests (without reloading) and provide verbose output: zpm "objectscript-math test -only -verbose" To just run a particular test suite (meaning a directory of tests - in this case, all the tests in UnitTest/Math/Utils) without reloading, and provide verbose output: zpm "objectscript-math test -only -verbose -DUnitTest.Suite=UnitTest.Math.Utils" To just run a particular test case (in this case, UnitTest.Math.Utils.TestValidateRange) without reloading, and provide verbose output: zpm "objectscript-math test -only -verbose -DUnitTest.Case=UnitTest.Math.Utils.TestValidateRange" Or, if you're just working out the kinks in a single test method: zpm "objectscript-math test -only -verbose -DUnitTest.Case=UnitTest.Math.Utils.TestValidateRange -DUnitTest.Method=TestpValueNull" Test coverage measurement via IPM So you have some unit tests - but are they any good? Measuring test coverage won't fully answer that question, but it at least helps. I presented on this at Global Summit back in 2018 - see https://youtu.be/nUSeGHwN5pc . The first thing you'll need to do is install the test coverage package: zpm "install testcoverage" Note that this doesn't require IPM to install/run; you can find more information on the Open Exchange: https://openexchange.intersystems.com/package/Test-Coverage-Tool That said, you can get the most out of the test coverage tool if you're also using IPM. Before running tests, you need to specify which classes/routines you expect your tests to cover. This is important because, in very large codebases (for example, HealthShare), measuring and collecting test coverage for all of the files in the project may require more memory than your system has. (Specifically, gmheap for the line-by-line monitor, if you're curious.) The list of files goes in a file named coverage.list within your unit test root; different subdirectories (suites) of unit tests can have their own copy of this to override which classes/routines will be tracked while the test suite is running. For a simple example with objectscript-math, see: https://github.com/timleavitt/ObjectScript-Math/blob/master/tests/UnitTest/coverage.list ; the user guide for the test coverage tool goes into further details. To run the unit tests with test coverage measurement enabled, there's just one more argument to add to the command, specifying that TestCoverage.Manager should be used instead of %UnitTest.Manager to run the tests: zpm "objectscript-math test -only -DUnitTest.ManagerClass=TestCoverage.Manager" The output (even in non-verbose mode) will include a URL where you can view which lines of your classes/routines were covered by unit tests, as well as some aggregate statistics. Next Steps What about automating all of this in CI? What about reporting unit test results and coverage scores/diffs? You can do that too! For a simple example using Docker, Travis CI and codecov.io, see https://github.com/timleavitt/ObjectScript-Math ; I'm planning to write this up in a future article that looks at a few different approaches. Excellent article Tim! Great description of how people can move the ball forward with the maturity of their development processes :) Hello @Timothy.Leavitt Thank you for this great article! I tried to add "UnitTest" tag to my module.xml but something wrong during the publish process.<UnitTest Name="tests" Package="UnitTest.Isc.JSONFiltering.Services" Phase="test"/> tests directory contain a directory tree UnitTest/Isc/JSONFiltering/Services/ with a %UnitTest.TestCase sublcass. Exported 'tests' to /tmp/dirLNgC2s/json-filter-1.2.0/tests/.testsERROR #5018: Routine 'tests' does not exist[json-filter] Package FAILURE - ERROR #5018: Routine 'tests' does not existERROR #5018: Routine 'tests' does not exist I also tried with objectscript-math project. This is the output of objectscript-math publish -v :Exported 'src/cls/UnitTests' to /tmp/dir7J1Fhz/objectscript-math-0.0.4/src/cls/unittests/.src/cls/unittestsERROR #5018: Routine 'src/cls/UnitTests' does not exist[objectscript-math] Package FAILURE - ERROR #5018: Routine 'src/cls/UnitTests' does not existERROR #5018: Routine 'src/cls/UnitTests' does not exist Did I miss something or is a package manager issue ?Thank you. Perhaps try Name="/tests" with a leading slash? Yes, that's it ! We can see a dot. It works fine.Thank you for your help. @Timothy.Leavitt Do you all still use your Test Coverage Tool at InterSystems? I haven't seen any recent updates to it on the repo so I I'm wondering if you consider it still useful and it's just in a steady state, stable place or are there different tactics for test coverage metrics since you published? @Michael.Davidovich yes we do! It's useful and just in a steady state (although I have a PR in process around some of the recent confusing behavior that's been reported in the community). Thanks, @Timothy.Leavitt! For others working through this too, I wanted to sum some points up that I discussed with Tim over PM. - Tim reiterated the usefulness of the Test Coverage tool and the Cobertura output for finding starting places based on complexity and what are the right blocks to test. - When it comes to testing persistent data classes, it is indeed tricky but valuable (e.g. data validation steps). Using transactions (TSTART and TROLLBACK) is a good approach for this. I also discussed the video from some years ago on the mocking framework. It's an awesome approach, but for me, it depends on retooling classes to fit the framework. I'm not in a place where I want to or can rewrite classes for the sake of testing, however this might be a good approach for others. There may be other open source frameworks for mocking available later. Hope this helps and encourages more conversation! In a perfect world we'd start with our tests and code from there, but well, the world isn't perfect! great summary ... thank you! @Timothy.Leavitt and others: I know this isn't Jenkins support, but I seem to be having trouble allowing the account running Jenkins to get into IRIS. Just trying to get this to work locally at the moment. I'm running on Windows through an organizational account, so I created a new local account on the computer, jenkinsUser, which I'm to understand is the 'user' that logs in and runs everything on Jenkins. When I launch IRIS in the build script using . . . C:\MyPath\bin\irisdb -s C:\MyPath\mgr -U MYNAMESPACE 0<inFile . . . I can see in the console it's trying to login. I turned on O/S authentication for the system and allowed the %System.Login function to use Kerbose. I can launch Terminal from my tray and I'm logged in without a user/password prompt. I am guessing that IRIS doesn't know about my jenkinsUser local account, so it won't allow that user to us O/S authentication? I'm trying to piece this together in my head. How can I allow this computer user trying to run Jenkins access to IRIS without authentication? Hope this helps others who are trying to set this up. Not sure if this is right, but I created a new IRIS user and then created delegated access to %Service_Console and included this in my ZAUTHENTICATE routine. Seems to have worked. Now . . . on to the next problem: DO ##CLASS(UnitTest.Manager).OutputResultsXml("junit.xml") ^ <CLASS DOES NOT EXIST> *UnitTest.Manager Please try %UnitTest.Manager I had to go back . . . that was a custom class and method that was written for the Widgets Direct demo app. Trial and error folks: @Timothy.Leavitt your presentation mentioned a custom version of the Coberutra plugin for the scatter plot . . . is that still necessary or does the current version support that? Not sure if I see any mention of the custom plugin on the GitHub page. Otherwise, I seem to me missing something key: I don't have build logic in my script. I suppose I just thought that step was for automation purposes so that the latest code would be compiled on whatever server. I don't have anything like that yet and thought I could just run the test coverage utility but it's coming up with nothing. I'll keep playing tomorrow but appreciate anyone's thoughts on this especially if you've set it up before! For those following along, I got this to work finally by creating the "coverage.list" file in the unit test root. I tried setting the parameter node "CoverageClasses" but that didn't work (maybe I used $LB wrong). Still not sure how to get the scatter plot for complexity as @Timothy.Leavitt mentioned in the presentation the Cobertura plugin was customized. Any thoughts on that are appreciated! I think this is it: GitHub - timleavitt/covcomplplot-plugin: Jenkins covcomplplot pluginIt's written by Tim, it's on the plugin library, and it looks like what was in the presentation, however I have some more digging come Monday. @Michael.Davidovich I was out Friday, so still catching up on all this - glad you were able to figure out coverage.list. That's generally a better way to go for automation than setting a list of classes. re: the plugin, yes, that's it! There's a GitHub issue that's probably the same here: https://github.com/timleavitt/covcomplplot-plugin/issues/1 - it's back on my radar given what you're seeing. So I originally installed the scatter plot plugin from the library, not the one from your repo. I uninstalled that and I'm trying to install the one you modified. I'm having a little trouble because it seems I have to download your source, make sure I have a JDK installed and Maven and package the code into a .hpi file? Does this sound right? I'm getting some issues with the POM file while running 'mvn pacakge'. Is it possible to provide the packaged file for those of us not Java-savvy? For other n00bs like me . . . in GitHub you click the Releases link on the code page and you can find the packaged code. Edit: I created a separate thread about this so it gets more visibility: The thread can be found from here: https://community.intersystems.com/post/test-coverage-coverage-report-not-generating-when-running-unit-tests-zpm ... Hello, @Timothy.Leavitt, thanks for the great article! I am facing a slight problem and was wondering if you, or someone else, might have some insight into the matter. I am running my unit tests in the following way with ZPM, as instructed. They work well and test reports are generated correctly. Test coverage is also measured correctly according to the logs. However, even though I instructed ZPM to generate Cobertura-style coverage reports, it is not generating one. When I run the GenerateReport() method manually, the report is generated correctly. I am wondering what I am doing wrong. I used the test flags from the ObjectScript-Math repository, but they seem not to work. Here is the ZPM command I use to run the unit tests: zpm "common-unit-tests test -only -verbose -DUnitTest.ManagerClass=TestCoverage.Manager -DUnitTest.UserParam.CoverageReportClass=TestCoverage.Report.Cobertura.ReportGenerator -DUnitTest.UserParam.CoverageReportFile=/opt/iris/test/CoverageReports/coverage.xml -DUnitTest.Suite=Test.UnitTests.Fw -DUnitTest.JUnitOutput=/opt/iris/test/TestReports/junit.xml -DUnitTest.FailuresAreFatal=1":1 The test suite runs okay, but coverage reports do not generate. However, when I run these commands stated in the TestCoverage documentation, the reports are generated. Set reportFile = "/opt/iris/test/CoverageReports/coverage.xml" Do ##class(TestCoverage.Report.Cobertura.ReportGenerator).GenerateReport(<index>, reportFile) Here is a short snippet from the logs where you can see that test coverage analysis is run: Collecting coverage data for Test: .036437 seconds Test passed Mapping to class/routine coverage: .041223 seconds Aggregating coverage data: .019707 seconds Code coverage: 41.92% Use the following URL to view the result: http://192.168.208.2:52773/csp/sys/%25UnitTest.Portal.Indices.cls?Index=19&$NAMESPACE=COMMON Use the following URL to view test coverage data: http://IRIS-LOCALDEV:52773/csp/common/TestCoverage.UI.AggregateResultViewer.cls?Index=17 All PASSED [COMMON|common-unit-tests] Test SUCCESS What am I doing wrong? Thank you, and have a good day!Kari Vatjus-Anttila %UnitTest mavens may be interested in this announcement: https://community.intersystems.com/post/intersystems-testing-manager-new-vs-code-extension-unittest-framework Helllo @Timothy.Leavitt Is there a way to ensure that the code sending messages through BusinessService or BusinessProcess can be fully tracked? The current issue is that when methods contain "SendRequestSync" or "SendRequestAsync", the code at the receiving end cannot be tracked and included in the test coverage report. Thank you. Here we are using the mocking framework that we developed (GitHub - GendronAC/InterSystems-UnitTest-Mocking: This project contains a mocking framework to use with InterSystems' Products written in ObjectScript Have a look at the https://github.com/GendronAC/InterSystems-UnitTest-Mocking/blob/master/Src/MockDemo/CCustomPassthroughOperation.cls class. Instead of calling ..SendRequestAsync we do ..ensHost.SendRequestAsync(...) Doing so enables us to create Expectations (..Expect(..ensHost.SendRequestAsync(.... Here a code sample : Class Sample.Src.CExampleService Extends Ens.BusinessService { /// The type of adapter used to communicate with external systems Parameter ADAPTER = "Ens.InboundAdapter"; Property TargetConfigName As %String(MAXLEN = 1000); Parameter SETTINGS = "TargetConfigName:Basic:selector?multiSelect=0&context={Ens.ContextSearch/ProductionItems?targets=1&productionName=@productionId}"; // -- Injected dependencies for unit tests Property ensService As Ens.BusinessService [ Private ]; /// initialize Business Host object Method %OnNew( pConfigName As %String, ensService As Ens.BusinessService = {$This}) As %Status { set ..ensService = ensService return ##super(pConfigName) } /// Override this method to process incoming data. Do not call SendRequestSync/Async() from outside this method (e.g. in a SOAP Service or a CSP page). Method OnProcessInput( pInput As %RegisteredObject, Output pOutput As %RegisteredObject, ByRef pHint As %String) As %Status { set output = ##class(Ens.StringContainer).%New("Blabla") return ..ensService.SendRequestAsync(..TargetConfigName, output) } } Import Sample.Src Class Sample.Test.CTestExampleService Extends Tests.Fw.CUnitTestBase { Property exampleService As CExampleService [ Private ]; Property ensService As Ens.BusinessService [ Private ]; ClassMethod RunTests() { do ##super() } Method OnBeforeOneTest(testName As %String) As %Status { set ..ensService = ..CreateMock() set ..exampleService = ##class(CExampleService).%New("Unit test", ..ensService) set ..exampleService.TargetConfigName = "Some test target" return ##super(testName) } // -- OnProcessInput tests -- Method TestOnProcessInput() { do ..Expect(..ensService.SendRequestAsync("Some test target", ..NotNullObject(##class(Ens.StringContainer).%ClassName(1))) ).AndReturn($$$OK) do ..ReplayAllMocks() do $$$AssertStatusOK(..exampleService.OnProcessInput()) do ..VerifyAllMocks() } Method TestOnProcessInputFailure() { do ..Expect(..ensService.SendRequestAsync("Some test target", ..NotNullObject(##class(Ens.StringContainer).%ClassName(1))) ).AndReturn($$$ERROR($$$GeneralError, "Some error")) do ..ReplayAllMocks() do $$$AssertStatusNotOK(..exampleService.OnProcessInput()) do ..VerifyAllMocks() } } The answer about mocking is great. At the TestCoverage level, by default the tool tracks coverage for the current process only. This prevents noise / pollution of stats from other concurrent use of the system. You can override this (see readme at https://github.com/intersystems/TestCoverage - set tPidList to an empty string), but there are sometimes issues with the line-by-line monitor if you do; #14 has a bit more info on this. Note - question also posted/answered at https://github.com/intersystems/TestCoverage/issues/33
Announcement
Anastasia Dyubaylo · Apr 6, 2020

Webinar: What's New in InterSystems IRIS 2020.1

InterSystems IRIS latest release (v2020.1) makes it even easier for you to build high performance, machine learning-enabled applications to streamline your digital transformation initiatives. Join this webinar to learn about what's new in InterSystems IRIS 2020.1, including: Machine learning and analytics Integration and healthcare interoperability enhancements Ease of use for developers Even higher performance And more... Speakers: 🗣 @Jeffrey.Fried, Director, Product Management - Data Platforms, InterSystems🗣 @Joseph.Lichtenberg, Director, Product Marketing, InterSystems IRIS Date: Tuesday, April 7, 2020Time: 10:00 a.m. - 11:00 a.m. EDT JOIN THE WEBINAR! Is a recording of this going to be available? Yes it is.I missed it and entered via registration. JOIN THE WEBINAR! Hi Developers! ➡️ Please find the webinar recording here. Enjoy!
Announcement
Anastasia Dyubaylo · Apr 10, 2020

New Video: What is IntegratedML in InterSystems IRIS?

Hi Community! Enjoy watching the new video on InterSystems Developers YouTube and learn about IntegratedML feature: ⏯ What is IntegratedML in InterSystems IRIS? This video provides an overview of IntegratedML - the feature of InterSystems IRIS Data Platform that allows developers to implement machine learning directly from the existing SQL environment. Ready to try InterSystems IRIS? Take our data platform for a spin with the IDE trial experience: Start Coding for Free. Stay tuned! 👍🏼 If you would like to explore a wider range of topics related to this video including videos and infographics, please check out the IntegratedML Resource Guide. Enjoy!
Question
Mohamed Hassan Anver · Apr 8, 2020

Using Entity Framework with InterSystems IRIS Data Platform

Hi There, I have Microsoft Visual Studio Community 2019 installed and tried to setup the entity framework as per Using Entity Framework with InterSystems IRIS Data Platform (https://learning.intersystems.com/course/view.php?id=1046) tutorial but I can't see the ISC data source in MS Visual Studio's Data source section. Does this mean that MS VS Community 2019 is not supported with the Entity Frmawork? Hassan Hello @MohamedHassan.Anver, I think that the tutorial is for EF 6 that is designed for .NET Framework. And MS is not promoting more EF Framework, right now, MS has EF core as goal (check this: https://docs.microsoft.com/es-es/ef/efcore-and-ef6/ ) and is the right EF to go in my opinion. However IRIS is not supporting EF Core https://community.intersystems.com/post/how-can-i-use-iris-net-core-entity-framework. :-( Any thought @Robert.Kuszewski ? Thank you @David.Reche for the reply. I wish IRIS would release support for EF Core in the near future. For now we will develop our app based on IRIS and EF.
Announcement
Anastasia Dyubaylo · Oct 6, 2023

[Webinar] GitOps using the InterSystems Kubernetes Operator

Hi Community, We're super excited to invite you to the webinar on How GitOps can use the InterSystems Kubernetes Operator prepared as a part of the Community webinars program. Join this webinar to learn how the FHIR Breathing Identity and Entity Resolution Engine for Healthcare (better known as PID^TOO||) was created. ⏱ Date & Time: Thursday, October 19, 12:00 PM EDT | 6:00 PM CEST 👨‍🏫 Speakers: @Ron Sweeney, Principal Architect at Integration Required Dan McCracken, COO at DevsOperative This webinar is a must for those of you tasked with running mission critical systems in the cloud. Tune in here for GitOps, a new era of running InterSystems workloads in the cloud! >> REGISTER HERE << Hey Community, We remind you about the upcoming webinar on GitOps using the InterSystems Kubernetes Operator! >> You can still register here Discover how cloud and InterSystems IRIS can streamline your deployments and boost productivity ✌️ 🚨 Last call to register! 🚨 Let's meet tomorrow at the online webinar on How GitOps can use the InterSystems Kubernetes Operator! You'll make a technical deep dive into the inner workings of the FHIR Breathing Identity and Entity Resolution Engine for Healthcare. ⏱ TOMORROW at 12:00 PM EDT | 6:00 PM CEST ➡️ REGISTER HERE Don't miss this opportunity to learn more about PID^TOO||! Hey everyone, The webinar will start in 20 minutes! Please join us here. Or enjoy watching the live stream on YouTube. Hi All, The recording of the "[Webinar] GitOps using the InterSystems Kubernetes Operator" is on InterSystems Developers YouTube! 🔥
Announcement
Olga Zavrazhnova · Nov 16, 2023

InterSystems Developer Community Roundtable - November 30 2023

Hi Developers,Our next online Developer Roundtable will take place on November 30 at 10 am ET | 4 pm CET.📍 Tech talks: 1. Foreign Tables - by @Benjamin.DeBoe Manager, Analytics Product Management, InterSystems2. Building "data products" with dbt and InterSystems IRIS - by @tomd Product Manager, Machine Learning, InterSystems We will have time for Q&A and open discussion. ▶ Update: watch the recording of the roundtable below: Not a Global Masters member yet? Log in using your InterSystems SSO credentials to join the program. Hi Community, please don't forget to register - we will send you a calendar hold and a reminder with direct link to join the roundtable :) Looking forward to seeing you tomorrow! Hi All, the roundtable has started - join us here. This is the final roundtable in 2023, looking forward to see you ! :) I tried to join 10 minutes before the start (20 minuts ago) but it's no longer possible: Ooops! Sorry friend, looks like this challenge is no longer available. Enrico Hi Enrico, correct the challenge for registration is already expired, please use this direct link to join the roundtable The recording of the roundtable is now available to watch here https://youtu.be/RxLj4d8GvkQ
Announcement
Anastasia Dyubaylo · Feb 5, 2024

Winners of InterSystems FHIR and Digital Health Interoperability Contest

Hi Community, It's time to announce the winners of the InterSystems FHIR and Digital Health Interoperability Contest! Thanks to all our amazing participants who submitted 12 applications 🔥 Experts Nomination 🥇 1st place and $5,000 go to the iris-fhirfy app by @José.Pereira, @henry, @Henrique.GonçalvesDias 🥈 2nd place and $3,000 go to the iris-fhir-lab app by @Muhammad.Waseem 🥉 3rd place and $1,500 go to the ai-query app by @Flavio.Naves, Denis Kiselev, Maria Ogienko, Anastasia Samoilova, Kseniya Hoar 🏅 4th place and $750 go to the Health Harbour app by @Maria.Gladkova, @KATSIARYNA.Shaustruk, @Maria.Nesterenko, @Alena.Krasinskiene 🏅 5th and 6th places and $300 each go to the FHIR-OCR-AI app by @xuanyou.du and iris-hl7 app by @Oliver.Wilms 🌟 $100 go to the Fhir-HepatitisC-Predict app by @shan.yue 🌟 $100 go to the fhirmessageverification app by @珊珊.喻 🌟 $100 go to the Clinical Mindmap Viewer app by @Yuri.Gomes 🌟 $100 go to the Patient-PSI-Data app by @Chang.Dao Community Nomination 🥇 1st place and $1,000 go to the iris-fhirfy app by @José.Pereira, @henry, @Henrique 🥈 2nd place and $750 go to the Fhir-HepatitisC-Predict app by @shan.yue 🥉 3rd place and $500 go to the FHIR-OCR-AI app by @xuanyou.du 🏅 4th place and $300 go to the iris-fhir-lab app by @Muhammad.Waseem 🏅 5th place and $200 go to the ai-query app by @Flavio.Naves, Denis Kiselev, Maria Ogienko, Anastasia Samoilova, Kseniya Hoar Our sincerest congratulations to all the participants and winners! Join the fun next time ;) Congrats @José Roberto Pereira, @Henry Pereira, @Henrique Dias , @Muhammad Waseem, @Flavio Naves, Denis Kiselev, Maria Ogienko, Anastasia Samoilova, Kseniya Hoar and all the participants to this FHIR contest !! Congratulations to all the winners and organizers 👏Once again It was a great competition and again a lot to learn. Thanks @Sylvain.Guilbaud Congratulations to all participants!!! ![happy](https://i.giphy.com/XR9Dp54ZC4dji.gif) thanks Congratulations to all the participants and winners! I'd like to thank the organizers for this contest and congratulate everyone who entered 🎉 🎉 🎉 Thank you @Sylvain.Guilbaud Really appreciate it thanks Thanks @José Pereira, @Henry Pereira, @Henrique Dias for your effort. Thanks for sharing your knowledge. Thank you!. ![thanks](https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExZDJsMGpkZW9sZHRlNjNsazF2MWlzeWR0bzZ6bXNhdDZ1aGloZjl6dSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/oxdg03Fr4E09wrjykN/giphy.gif)
Article
Hiroshi Sato · Feb 8, 2024

Points to note when uninstalling InterSystems IRIS on Linux

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
Olga Zavrazhnova · Oct 19, 2023

InterSystems Developer Community Roundtable - October 31 2023

Hi Developers, Join our next online Developer Roundtable on October 31 at 10 am ET | 3 pm CET. Our experts will cover two topics: "Deploying Python Applications" - by @Evgeny.Shvarov, Senior Manager of Developer and Startup Programs, InterSystems "Deploying Java project + InterSystems IRIS in Docker" - by @LuisAngel.PérezRamos, Sales Engineer, InterSystems We will have time for Q&A and open discussion. Update: Watch the recording below. Not a Global Masters member yet? Log in using your InterSystems SSO credentials to join the program. I think that I have too many names and last names... Hi all! Tomorrow Luis will be covering "Deploying Java project + InterSystems IRIS in Docker" - register for our roundtable to learn and prepare for Java programming contest! 🔥
Announcement
Evgeny Shvarov · Nov 13, 2023

Technology Bonuses for InterSystems Java Programming Contest 2023

Hi Developers! Here are the technology bonuses for the InterSystems Java Programming Contest 2023 that will give you extra points in the voting: Java Gateway usage - 2 Java Native API usage - 2 Java PEX Interoperability - 4 Java XEP Usage- 2 LLM AI or LangChain usage: Chat GPT, Bard and others - 3 InterSystems IRIS Cloud SQL Usage - 3 Community Java libs: Hibernate and Liquibase - 2 Questionnaire - 2 Docker container usage - 2 IPM Package deployment - 2 Online Demo - 2 Implement InterSystems Community Idea - 4 Find a bug in InterSystems IRIS Java Offerings - 2 New First Article on Developer Community - 2 New Second Article on Developer Community - 1 First Time Contribution - 3 Video on YouTube - 3 See the details below. Java Gateway - 2 pointsInterSystems IRIS has Java Gateway which provides an easy way for IRIS to interoperate with Java components. Java Native API - 2 points InterSystems IRIS introduces a Java Native API library that helps to interact with InterSystems IRIS from java. Use it and collect 2 extra points for your application. Java Pex Interoperability - 4 points InterSystems IRIS has Java Pex Interoperability module that provides the option to develop InterSystems Interoperability productions from Java. Use it and collect 4 extra points for your application. Here is a pex-demo application. Java XEP Usage- 2 Java XEP is an InterSystems Java library that introduces high-performance persistence technology for Java object hierarchies. Use it and collect 2 more bonus points. Learn more on JAVA XEP. Community Java libs: Hibernate and Liquibase - 2 Use Community Hibernate and Liquibase libs and collect 2 additional bonus points for each. LLM AI or LangChain usage: Chat GPT, Bard and others - 3 points Collect 3 bonus expert points for building a solution that uses LangChain libs or Large Language Models (LLM) such as ChatGPT, Bard and other AI engines like PaLM, LLaMA and more. AutoGPT usage counts too. A few examples already could be found in Open Exchange: iris-openai, chatGPT telegram bot. Here is an article with langchain usage example. IRIS Cloud SQL Usage -3 points Use InterSystems IRIS Cloud SQL in your solution and get 3 points more. You can deploy IRIS Cloud server here. Questionnaire - 2 Share your feedback in the questionnaire(TBD) and collect 2 extra points. Docker container usage - 2 points The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from. ZPM Package deployment - 2 points You can collect the bonus if you build and publish the ZPM(InterSystems Package Manager) package for your Full-Stack application so it could be deployed with: zpm "install your-multi-model-solution" command on IRIS with ZPM client installed. ZPM client. Documentation. Online Demo of your project - 2 pointsCollect 2 more bonus points if you provision your project to the cloud as an online demo at any public hosting. Implement Community Opportunity Idea - 4 points Implement any idea from the InterSystems Community Ideas portal which has the "Community Opportunity" status. This will give you 4 additional bonus points. Find a bug in InterSystems IRIS Java Offerings - 2 pointsWe want the broader adoption of InterSystems Java offerings so we encourage you to report the bugs you will face during the development of your java application with IRIS in order to fix it. Please submit the bug here in a form of issue and how to reproduce it. You can collect 2 bonus points for the first reproducible bug. New First Article on Developer Community - 2 points Write a brand new article on Developer Community that describes the features of your project and how to work with it. Collect 2 points for the article. New Second Article on Developer Community - 1 point You can collect one more bonus point for the second new article or the translation regarding the application. The 3rd and more will not bring more points but the attention will all be yours. First-Time Contribution - 3 points Collect 3 bonus points if you participate in InterSystems Open Exchange contests for the first time! Video on YouTube - 3 points Make new YouTube videos that demonstrate your product in action and collect 3 bonus points per each. The list of bonuses is subject to change. Stay tuned! Good luck in the competition! Hello Evgeny Shvarov, a question: we are thinking of participating in a group of 5 people, 4 of them have never contributed to InterSystems Open Exchange contests, in this case, are the points cumulative? Hi Ana, No, the points are awarded per team :) Looks like there are some conflicts in the points...Java Native has 2 and then 3 points.Here the LLM has 3, 4 and 6 points... LLM AI or LangChain usage: Chat GPT, Bard and others - 3LLM AI or LangChain usage: Chat GPT, Bard and others - 4 pointsCollect 6 bonus expert points for building a solution that uses LangChain libs or Large Language Models (LLM) Thank you, Sean! this is fixed. We know it is late, but we missed Java Gateway bonus - are you Ok if we add it? -
Announcement
Anastasia Dyubaylo · Nov 27, 2023

Time to vote in the InterSystems Java Programming Contest 2023

Hi Community, It's voting time! Cast your votes for the best applications in our InterSystems Java Programming 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: ⭐️ @Guillaume.Rongier7183, Sales Engineer⭐️ @Sylvain.Guilbaud, Sales Engineer⭐️ @akoblov, Senior Support Specialist⭐️ @Eduard.Lebedyuk, Senior Cloud Engineer⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Alex.Woodhead, Senior Systems Developer⭐️ @Andreas.Dieckow , Principal Product Manager⭐️ @Aya.Heshmat, Product Manager⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Robert.Kuszewski, Product Manager⭐️ @Carmen.Logue , Product Manager⭐️ @Luca.Ravazzolo, Product Manager⭐️ @Raj.Singh5479, Product Manager⭐️ @Patrick.Jamieson3621, Product Manager⭐️ @Stefan.Wittmann, Product Manager⭐️ @tomd, Product Manager⭐️ @Daniel.Franco, Senior Manager - Interoperability Product Management⭐️ @Timothy.Leavitt, Development Manager⭐️ @Evgeny.Shvarov, Senior Manager of Developer and Startup Programs⭐️ @Dean.Andrews2971, Head of Developer Relations⭐️ @Jeffrey.Fried, Director of 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 change 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: Expert Nomination, Top 4 presto-iris by @Dmitry.Maslennikov iris-parquet by @Yuri.Gomes iris-dmn by @Alexey.Nechaev InterLang by Zacchaeus Chok ➡️ Voting is here. Community Nomination, Top 5 presto-iris by @Dmitry.Maslennikov iris-parquet by @Yuri.Gomes iris-dmn by @Alexey.Nechaev StarChat by Anna Diak quiz-app by @Andrii.Mishchenko ➡️ Voting is here. Experts, we are waiting for your votes! 🔥 Participants, improve & promote your solutions! Here are the results after 2 days of voting: Expert Nomination, Top 4 presto-iris by @Dmitry Maslennikov iris-parquet by @yurimarx Marx iris-dmn by @Alexey Nechaev InterLang by Zacchaeus Chok ➡️ Voting is here. Community Nomination, Top 5 presto-iris by @Dmitry Maslennikov quiz-app by @Andrii Mishchenko fhir-pex by @Flavio.Neubauer iris-parquet by @yurimarx Marx StarChat by Anna Diak ➡️ Voting is here. So, the voting continues. Please support the application you like! Voting for the InterSystems Java Programming Contest 2023 goes ahead! And here're the results at the moment: Expert Nomination, Top 4 presto-iris by @Dmitry Maslennikov iris-parquet by @yurimarx Marx iris-dmn by @Alexey Nechaev InterLang by Zacchaeus Chok ➡️ Voting is here. Community Nomination, Top 5 presto-iris by @Dmitry Maslennikov quiz-app by @Andrii Mishchenko fhir-pex by @Flavio Neubauer StarChat by Anna Diak InterLang by Zacchaeus Chok ➡️ Voting is here. Since the beginning of the voting we have the results: Expert Nomination, Top 4 presto-iris by @Dmitry Maslennikov iris-parquet by @yurimarx Marx iris-dmn by @Alexey Nechaev InterLang by Zacchaeus Chok ➡️ Voting is here. Community Nomination, Top 5 presto-iris by @Dmitry Maslennikov quiz-app by @Andrii Mishchenko fhir-pex by @Flavio Neubauer StarChat by Anna Diak iris-parquet by @yurimarx Marx ➡️ Voting is here. And don't forget! You can use your Technology bonuses to gain more points for your application! Hey devs!Today is the last day of the voting!Please support participants! They need your votes! ➡️ Voting is hereLet's wish them good luck😎
Announcement
Jaceita Chilton- Walker · Oct 24, 2023

Are you looking for a role as a InterSystems Ensemble/IRIS Developer

If interested email to me at jwalkerbdrsolutionsllc.com Ensemble/IRIS Developer to join our growing team! This position will be performed virtually from the individual's home office working on EST time schedule. This position requires US Citizenship with a Public Trust or the ability to obtain one.(Military Veterans are highly encouraged to apply)Role OverviewBDR is in search of a proficient InterSystems Ensemble/IRIS developer to contribute to our Department of Veterans Affairs (VA) contract. The ideal candidate will have a solid background in InterSystems IRIS development within a healthcare setting. Key responsibilities include crafting documentation for VA-crafted software applications, and comprehensive IRIS coding, SQL queries, Object Oriented Programming, documentation, and IRIS system administration. Responsibilities IRIS and SQL Development: Detailed IRIS coding. Writing SQL queries. Object-Oriented Programming. Validate and update data integration reports in support of the VA's software. Validate load of Caché/IRIS Objects, SQL Tables, or other storage structures (Historical Pulls) in all regions/districts for classes in all environments with VistA or Data Syndication data. Documentation: Write documentation for VA-developed software applications. Write up procedures and documentation targeted towards software developers, system administrators, and database architects. Author technical documents illustrating data-center architecture and engineering. Data Analysis and Management: Review error and trace logs. Monitor Queue Depth by service/process/operation. Review Domain adds to Ensemble Production. Validate edits made to Domain record type, schema version, status, and payload size via the GUI Interface and Rule Builder. Validate Ensemble data flows built using VX130 ClassBuilder. Review, update, and maintain Cerner to CDW, VistA, Millennium or Cloud Database data mappings for potential data migrations. Evaluate and integrate data from multiple sources, which requires data mapping from one data source to another minimizing any data loss. Document VistA Extraction and monitoring process. Interpret Cerner's Data model to be used for the construction of APIs, queries, and reports that will be consumed by internal or external applications. Communication and Coordination: Able to coordinate with development and user teams to assess risks, goals, and needs and ensure that all are adequately addressed. Effective communication skills with both technical and non-technical audiences. Problem-Solving and Risk Management: Track messages by domain and reconcile table counts with Cerner. Track the number of records sent per message by domain. Track retry attempts and suspended messages. Experienced in introducing new hardware or software into a new or existing environment while minimizing disruption and mitigating risks. Experience in high-volume environments. Motivation to drive tasks to completion and take ownership of projects. Required Minimum Qualifications 15+ years of professional experience, including InterSystems IRIS in healthcare. Bachelor's degree in Computer Science, Engineering, Math, or equivalent (8 years of relevant experience can be substituted). Previous work experience in the VA. Experience with Electronic Health Record (EHR) implementation. Familiarity with VA legacy and private sector health data. Experience with ETL data processes. Knowledge of VistA data handling. Ability to obtain and maintain a VA Public Trust. Eligibility to work in the United States without sponsorship. Prior successful remote work experience. Code samples or GitHub link must be provided upon application. In addition, U.S Citizenship is required.