Search

Clear filter
Announcement
Anastasia Dyubaylo · Nov 11, 2021

InterSystems Security Contest Kick-off Webinar

Hi Community, We are pleased to invite all the developers to the upcoming InterSystems Security Contest Kick-off Webinar! The topic of this webinar is dedicated to the Security contest. We’ll discuss the aspects of Security Model implementation in InterSystems IRIS, the requirements, and what do we expect from participants of the Security contest. Also, we’ll answer all the questions related to the contest! Date & Time: Monday, November 15 — 12:00 AM EDT Speakers: 🗣 @Andreas.Dieckow, Principal Product Manager at InterSystems Corporation🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager So! We will be happy to talk to you at our webinar! ✅ JOIN THE KICK-OFF WEBINAR! The Eventbrite record looks a bit strange. Why not on sale until 3 weeks after today's kickoff? Hi John, Thanks for noticing! Fixed. Please join in an hour ;) Hey Developers, The recording of this webinar is available on InterSystems Developers YouTube! Please welcome: ⏯ InterSystems Security Contest Kick-off Webinar Big applause to our speakers! 👏🏼
Announcement
Anastasia Dyubaylo · Feb 1, 2022

InterSystems Python Contest Kick-off Webinar

Hi Community, We are pleased to invite all the developers to the upcoming InterSystems Python Contest Kick-off Webinar! The topic of this webinar is dedicated to the Python contest. In this webinar, we’ll present two templates to start working with Embedded Python : What is Embedded Python and Jupyter; Embedded Python with Interoperability (PEX hacked to use Embedded Python). As always, our experts will answer the questions on how to develop, build, and deploy Python solutions using InterSystems IRIS. Date & Time: Monday, February 7 – 12:00 PM EDT Speakers:🗣 @Guillaume.Rongier7183, InterSystems Sales Engineer 🗣 @Robert.Kuszewski, InterSystems Product Manager🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager We will be happy to talk to you at our webinar in Zoom. ✅ Register for the kick-off today! Hey Developers, The recording of this webinar is available on InterSystems Developers YouTube! Please welcome: ⏯ InterSystems Python Contest Kick-off Webinar
Announcement
Anastasia Dyubaylo · Jan 21, 2022

InterSystems Developer Community Annual Survey 2021

Hey Developers, Thank you so much for being with InterSystems Developer Community for yet another year! Day by day our team is trying to make it better and more useful for InterSystems developers. More than 10K+ members are already registered in our Community! We'd like to know how helpful the Developer Community is for you today. Please take a few questions to let us know what do you think and what could be improved. 👉🏼 InterSystems Developer Community Annual Survey 2021 👈🏼 Note: The survey will take less than 5 minutes to complete. Please take part in our survey. Any of your feedback is also welcome in the comments on this post. Enjoy! 😉 Hey Developers, Please tell us what you think about the Developer Community! Your thoughts and ideas are very important for us. 🙏 Dear DC Members, We're waiting for your feedback! Please take part in our annual 5-min survey: https://www.surveymonkey.co.uk/r/PYHC3GD Hey guys, If you haven't taken our survey yet, now is the time! We definitely need your feedback on our Dev Community: 👉 https://www.surveymonkey.co.uk/r/PYHC3GD Enjoy! Only a few days left! Hurry up to tell us your thoughts and ideas. Let's make our Community better together! 👉 https://www.surveymonkey.co.uk/r/PYHC3GD
Announcement
Anastasia Dyubaylo · Jun 2, 2020

InterSystems Developer Survey: Your Opinion Matters!

Hey Everyone! At InterSystems, the developer community is an integral part of our ecosystem and this role is pivotal in the development of our products and services. As a result, we wanted to undertake market research in recognition of this to discover how best businesses can support developers. We have already asked 300 developers their thoughts, but we wanted to extend this survey to reach more people and also get your views on the current climate as we have all had to adapt our working environments. ➡️ Please click this link to take part in our survey! Note: The survey will take less than 5 minutes to complete. Come on! COS what else ? Hey developers, We want to hear from you! What resources do you use to help you in your developments/app builds? ✅ Please take part in our 5-min survey.
Discussion
Evgeny Shvarov · Nov 24, 2020

Managing Security Strategy in InterSystems: Users or Applications?

Hi Developers! Want to raise security discussion today! Let's discuss how InterSystems security for applications works. In general, the concept is clear: we have Resources (what to protect), Roles which combine a set of privileges and accesses to Resources and Users which can have this or that Role. But there is also a concept of Application which also could have a Role. So you either provide a Role for a User or for an Application. What do you use in production? What is your strategy and why? Pros, cons? The applications you mentioned, it's not exactly applications, it's just kind of entrypoint to the application. Security in Caché and in IRIS now, was not so good in my opinion, for many reasons. An application developer, if he would like to use role-based security is too limited to use the Security model from InterSystems. And no matter how many different applications customers would like to use on their own Instance of IRIS, security will be global. Issues with mirroring, with ECP, any instance of IRIS use own tables, and have to be synchronized in some ways. Such big clusters should have the ability to use the same security settings on any instance, out of the box. Application, real, not virtual, should have the ability to re-use Security and store it close to Application's data. Security settings synchronization for mirroring and ECP is a different problem though a serious one. But there are strong recommendations from very experienced specialists to follow the Application-based security model. I want to have a discussion around - what are the key reasons for it? I think both should be used. If an application needs some privilege for itself (=for all users), e.g. for reading database with code, then this should be role for the application. If different users within same application have different permissions then this should (can) be handled via user roles.
Announcement
Anastasia Dyubaylo · Jan 21, 2021

InterSystems AI+ML Summit 2021: Agenda

Hi Community, As you may know, this year we're holding InterSystems AI+ML Summit 2021 virtually from January 25 to February 4. All sessions, both in German and English, will be free to attend. Let's find out more about the exciting sessions that await us and book a virtual seat today! Check the agenda below: #Healthcare #CrossIndustry MO, 25.01.21, 11:00 Uhr: Current State of Affairs: A bird’s Eye View on AI & ML, @Benjamin.DeBoe, InterSystems MO, 01.02.21, 11:00 Uhr: When is Artificial Intelligence Trustworthy? Prof. Roberto V. Zicari, Founder Frankfurt Big Data Lab – Goethe University Frankfurt DI, 26.01.21, 11:00 Uhr: AI & ML in Healthcare: Introduction & Uses Cases Dr. Yossi Cohen, NHS England und InterSystems MO, 01.02.21, 11:30 Uhr: Podiumsdiskussion DI, 26.01.21, 13:30 Uhr: KI im Gesundheitswesen: Anwendungen in der Medizininformatik-Initiative Dr. Danny Ammon, Universitätsklinikum Jena, mit Kollegen der März Internetwork Services AG und InterSystems MO, 01.02.21, 13:30 Uhr: Wie KI & ML die industrielle Produktion revolutionieren Daniel Carton, BotCraft GmbH MI, 27.01.21, 11:00 Uhr: AI & ML in Healthcare: The AI/ML Journey – Technical Framework @Thomas.Nitzsche, InterSystems DI, 02.02.21, 11:00 Uhr: Einführung in die Welt von KI + ML @Michael.Braam, InterSystems MI, 27.01.21, 13:30 Uhr: Making Machine Learning Actionable, @Alex.MacLeod und Randy Palotta, InterSystems DI, 02.02.21, 11:30 Uhr: KI + ML: Innovation mit InterSystems IRIS @Stefan.Wittmann, InterSystems DO, 28.01.21, 11:00 Uhr: Convergent Analytics @Sergey.Lukyanchikov & @Eduard.Lebedyuk, InterSystems DI, 02.02.21, 13:30 Uhr: KI + ML Projekte in der Praxis: “Und schon läuft’s!” Jochen Scharafin & @Michael.Iserhardt, InterSystems DO, 28.01.21, 13:30 Uhr: Preventing Readmissions in Hospitalizations with Machine Learning @Amir.Samary, InterSystems DI, 02.02.21, 14:30 Uhr: Neue Lösungen für alte Kundenherausforderungen durch ML/AI Ditmar Tybussek, POINT-ERP4 GmbH DO, 28.01.21, 16:00 Uhr: Gesundheitsversorgung – KI und Ethik Jun.-Prof. Dr. Susanne Michl, Charité – Universitätsmedizin Berlin MI, 03.02.21, 11:00 Uhr: Enriching Master Data Management product KanoMDM with AI/ML @Liudmyla.Valerko, KANOSOFTWARE FR, 29.01.21, 11:00 Uhr: Mitmach-Demo “IntegratedML Made easy” @Stephan.Mohr, InterSystems MI, 03.02.21, 13:30 Uhr: Convergent Analytics @Sergey.Lukyanchikov & @Eduard.Lebedyuk, InterSystems FR, 29.01.21, 13:30 Uhr: Executive Summary – Highlights der Woche Jochen Scharafin & Ralf Geldhäuser, InterSystems DO, 04.02.21, 11:00 Uhr: Mitmach-Demo “IntegratedML Made easy @Stephan.Mohr, InterSystems A quick reminder: ⏱ Time: Jan 25 - Feb 04, 2021 ✅ Registration: SAVE THE DATE Enjoy! And see you at InterSystems AI+ML Summit 2021! Hi In which time zone are the times for the presentations? If I am in South Africa which is GMT+2 in GMT terms what are the times for these presentations? Is the seminar being held in Germany in which case I can probably work it out via google but it's not clear other than the announcement says that the presentations will be available in English and German. Hence my assumption that its being held in Germany. Thanks Nigel Hi Nigel, Scheduled sessions are based on Central European Time (CET) time. If you click on the link of the session you are interested in, the time zone in which you are located will be automatically pulled up. To find out in what language the session will be, just look at its description by clicking on the link. If the description is in English, then the speakers will present materials in English. How to view replay?Thx!
Announcement
Anastasia Dyubaylo · Jan 25, 2021

Voting Time: InterSystems Multi-Model Contest!

Hey Developers, This week is a voting week for the InterSystems Multi-Model Contest! So, it's time to give your vote to the best solutions built with InterSystems IRIS. 🔥 You decide: VOTING IS HERE 🔥 How to vote? With our new voting engine and algorithm for the Experts and Community nomination, you can select 3 projects: the 1st, the 2nd, and the 3rd place upon your decision. This is how it works for the Community leaderboard: Community Leaderboard: Place Points 1st 3 2nd 2 3rd 1 And there will be more complex math for the Experts leaderboard, where different levels of experts have more "points" power: Experts Leaderboard: Level Place 1st 2nd 3rd VIP level in GM, Moderators, Product Managers 9 6 3 Expert level in Global Masters 6 4 2 Specialist level in Global Masters 3 2 1 Experts' votes will also contribute 3-2-1 points to the Community leaderboard too. Voting 1. Sign in to Open Exchange – DC credentials will work. 2. Make any valid contribution to Developer Community – answer or ask questions, write an article, comment on any post, and you'll see vote buttons available. If you changed your mind, cancel the choice and give your vote to another application – you have 7 days to choose! 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! ➡️ Also, please check out the new voting rules for InterSystems online contest here. Hey Developers, After the first day of the voting, we have great results! Expert Nomination, Top 3 zapm – 26 iris-image-index-demo – 15 iris-vaccine-tracker – 10 ➡️ The leaderboard. Community Nomination, Top 3 iris-vaccine-tracker – 22 Iqewd-jsdb-kit-iris – 18 HealthInfoQueryLayer – 17 ➡️ The leaderboard. Experts, we are waiting for your votes! 🔥 Participants, improve & promote your solutions! We are having a lot of requests that voting is not available! Actually to vote for the contest you need: 1. Sign in to Open Exchange - DC credentials will work. 2. Make any valid contribution to DC - answer or ask questions, write an article, comment on any post. Hey developers, Watch the new videos on InterSystems Developers YouTube related to the multi-model contest: ⏯ Hierarchical Global storage visualized using QEWD Monitor by @Rob.Tweed And one more demo... ⏯ IRIS Multi-Model Suite Demo by @Renato.Banzai Enjoy and don't forget to cast your vote for the project you like! Here are the results after 2 days of voting: Expert Nomination, Top 3 zapm – 37 iris-image-index-demo – 30 IRIS Publisher – 21 ➡️ The leaderboard. Community Nomination, Top 3 iris-vaccine-tracker – 33 HealthInfoQueryLayer – 27 qewd-jsdb-kit-iris– 22 ➡️ The leaderboard. So, the voting continues. Please support the application you like! Some really interesting and well documented projects here. Good luck all Voting for the InterSystems Multi-Model Contest goes ahead! And here're the results at the moment: Expert Nomination, Top 3 zapm – 45 iris-image-index-demo – 34 IRIS Publisher – 24 ➡️ The leaderboard. Community Nomination, Top 3 HealthInfoQueryLayer – 59 iris-vaccine-tracker – 55 qewd-jsdb-kit-iris– 30 ➡️ The leaderboard. Developers! Only 2 days left before the end of voting. Please check out the Contest Board and vote for the solutions you like! 👍🏼 Lets go vote Good luck all Nice projects guys ! Have fun ! Yes! But this contest a bit late :) Vote for this one ;) it's a good idea and even the explanation is well detailed Good luck all
Announcement
Anastasia Dyubaylo · Oct 13, 2020

New Video: Big Data in InterSystems IRIS

Hi Community! Enjoy watching the new video on InterSystems Developers YouTube: ⏯ Big Data in InterSystems IRIS One of the greatest benefits of using InterSystems IRIS to build your application is its ability to effectively harvest and handle vast amounts of data. InterSystems IRIS has options to address big data challenges, including the InterSystems IRIS Spark connector, built-in sharding, and machine learning tools. ➡️ Learn more at the "Big Data QuickStart" learning course. Subscribe to InterSystems Developers YouTube. Enjoy and stay tuned!
Question
Yi Han · Mar 4, 2021

In which industries are InterSystems products used more?

InterSystems has been widely used in medical and health fields. Which other industries have high market share? What's the difference between InterSystems Trakcare and InterSystems Healthshare? we also expanding into Finance, Logistics, Government etc. Trakcare is our package HIS/EMR solution: https://www.intersystems.com/cn/products/trakcare/ HealthShare is a product family to support unified care record. For more info pls connect with our local sales team. @Jun.Qian. THX! Metallurgy, construction, clothing industry, peat extraction, trade, logistics. Also as universal system for financial and accounting for any enterprise.
Announcement
Anastasia Dyubaylo · Mar 8, 2021

InterSystems Grand Prix Contest: CONGRATS THE WINNERS!

Hey everyone, The InterSystems Grand Prix Contest is over. It was an incredible competition with a record number of participating apps and developers! Thank you all for participating! And now it's time to announce the winners! A storm of applause goes to these developers and their applications: 🏆 Experts Nomination - winners were determined by a specially selected jury: 🥇 1st place and $6,000 go to the vscode-intersystems-iris project by @Dmitry.Maslennikov 🥈 2nd place and $3,000 go to the iris-rad-studio project by @Henrique and @José.Pereira 🥉 3rd place and $2,000 go to the HealthInfoQueryLayer project by @Botai.Zhang 🏆 Community Nomination - an application that received the most votes in total: 🥇 1st place and $3,000 go to the HealthInfoQueryLayer project by @Botai.Zhang 🥈 2nd place and $1,500 go to the Dictionary comparison scheme of cache database project by @Weiwei.Yang 🥉 3rd place and $500 go to the vscode-intersystems-iris project by @Dmitry.Maslennikov And... This time, we would also like to reward the developers who took 4-10 places in the Expert nomination! 10,000 points on Global Masters go to these apps and their developers: 🏅 4th place: iris-image-index-demo by @José.Pereira 🏅 5th place: Terminal Multi-Line Command Editor​​​​ by @Robert.Cemper1003 🏅 6th place: Dictionary comparison scheme of cache database by @Weiwei.Yang 🏅 7th place: Create a unified hospital data extraction scheme based on IRIS for Health by @Deming.Xu 🏅 8th place: iris4health-fhir-analytics by @José.Pereira 🏅 9th place: iris-fhir-portal by @Henrique.GonçalvesDias 🏅 10th place: ObjectScript Kernel by @Nikita.Mullin Congratulations to all the winners and participants! Thank you all for your attention to the contest and the efforts you pay in our mega competition! Congratulations to all winners! Congratulations to all winners! Congratulations to all winners! Congratulations to all winners! Congratulations! And congratulations to all the participants - that's awesome work, great applications! Big congratulations to you and @José.Pereira!!! 🤩 Hey everyone, As always, we really appreciate the contribution of all participants to the Grand Prix competition. And this time, we would also like to reward the developers who took 4-10 places in the Expert nomination! 10,000 points on Global Masters go to these apps and their developers: 🏅 4th place: iris-image-index-demo by @José.Pereira 🏅 5th place: Terminal Multi-Line Command Editor​​​​ by @Robert.Cemper1003 🏅 6th place: Dictionary comparison scheme of cache database by @Weiwei.Yang 🏅 7th place: Create a unified hospital data extraction scheme based on IRIS for Health by @Deming.Xu 🏅 8th place: iris4health-fhir-analytics by @José.Pereira 🏅 9th place: iris-fhir-portal by @Henrique 🏅 10th place: ObjectScript Kernel by @Nikita.Mullin Thank you all! And our big congratulations! That's good news! and a real surprise! I appreciate it highly Congratulations to all winners! Thanks @Anastasia.Dyubaylo It's our pleasure to create apps that people enjoy Hey developers! We also want to thank the rest of the participants and their cool applications that were in the InterSystems Grand Prix Contest: interoperability-integratedml-adapter , iris-integratedml-monitor-example and iris-analytics-notebook by @José Roberto Pereira IRIS-REST-API-DATABASEMANAGER by @Lucas.Bourré IRIS Interoperability Message Viewer , iris-history-monitor , npm-iris and isc-generate-db by @Henrique Dias Wsock-Embedded-Py , The adopted Bitmap , Using ZPM for Node.js and WebSocket Client JS with IRIS Native API as Docker Micro Server by @Robert Cemper iris-for-money by @Oliver.Wilms springboot-iris-crud by @Yuri.Gomes Airplane React, Material UI, and REST API by @FlávioLúcio.NavesJúnior appmsw-telestat , zapm , apptools-admin and isc-apptools-lockdown by @MikhailenkoSergey realworld-intersystems-iris , isc-tar and BlocksExplorer by @Dmitry.Maslennikov RESTFUL_API_For_Hotel_OverBooking_System by @jingqi.LIu cmPurgeBackup by @Alexey.Maslov fhir-chatbot , iris-ml-suite and iris-python-suite by @Renato.Banzai IRIS import manager by @Oleh.Dontsov ISC DEV by @Gevorg.Arutiunian Questy by Alexey Nechaev M-commands instead of Excel formulas in cells by @alex.kosinets units by @Dmitrii.Kuznetsov We are waiting for your applications in the next contests🔥🔥🔥 Congratulations to all winners! Congratulations to all Congratulations to all winners ! Well done guys! I'm very proud to had been participated! Glad to see how these contests are stimulating so many people to do their best! I see those apps as ground to create awesome projects in 2021! Indeed @Robert.Cemper1003! Thank you @Anastasia.Dyubaylo ! :) Very happy to had the chance of sharing a project with @Henrique.GonçalvesDias. More brains and hands working together it's better! Congratulations to the winners for their commitment, dedication and for the work presented. certainly, that initiatives like this contribute in a unique way to the expansion of technology and all its potential.
Article
Yuri Marx · Mar 1, 2021

Day 4: Developing with InterSystems Objects and SQL

I'm participating in the Developing with InterSystems Objects and SQL with Joel Solon. The course is very nice and I will share with you some tips I got during the training. Tips presented in the day 4: All data are stored in Globals and Global names start with ^. Example of global: ^animal. Global can have multiples locations to the data ("sub data"). Example: ^animal(1). ^%* globals are accessible from any system-wide (from any namespace). Globals enables IRIS to support multimodel data (object, relational, document, multidimensional, etc). To see globals go the Management Portal > Explorer > Globals > Select Global > View or in Terminal type do ^%G or zwrite ^global. There are an automatic correspondence between persistent classes and SQL Tables: Package is SQL Schema; Class is a Table; Property is a Column; Method is a Store Procedure; (when sqlProc); Relationship between classes is a SQL Foreign Key constraint (must be bi-directional); Object is a Row. One table can correspond to multiple classes, but serial class is part of the table of the persistent class (don't have a specific table). One class can correspond to multiple tables. We have some classes types: Non-registered: not class object (container for methods only); Registered: transient objects; Persistent: SQL persistence in tables; Serial: SQL persistence in the main table (serial is embedded); Datatype: not class object is used to do new validations and conversions to base data types. Classes can be composed by: Properties; Methods; Class queries: SQL Select statements; Parameters: user constants or system constants to configure the class behavior; Foreign keys: to referencial integrity; Indexes: to improve performance and do unique values; Triggers: fire methods associated with persistence events; XData: XML or JSON definitions associated with the class; Storage: description of the data storage. Classes by convention has first letter of the word in Capital. Example: CountryOrigin. Parameters are all capital. Example: COLORNUMBER. Class attributes qualify/configure a class. Example [SqlTableName = Animal] set the table name to a class. [Final] not allows inheritence. [Private] not allows call methods or use properties for non-subclasses. Internally IRIS generate Get and Set to properties, and are not visible but can be declared to change the behavior. Is possible override a method of the superclass, to do this, repeat the class name, the arguments. Is possible increase the number of arguments, not decrease. Use ##super() to call base class method. To create abstract class use [Abstract] and prevent instantiation. Is possible extends multiple classes. Example Class Person extends (%Persistent, %Animal). (Persistent must be the fisrt in the extends, see joel tip in the comments) REST is REpresentational State Transfer. Is based in the HTTP protocol. Use HTTP verbs: GET (select), POST (insert), PUT (update) and DELETE (delete). For expose your class as REST resource extend from %CSP.REST. Use URLMap inside XData block to configure the routes of your REST service. Using the Portal, create a Web Application, enable REST and specify Dispatch class. %JSONAdaptor provides convertion between objects and JSON. Use obj.%JSONImport(jsonObj) to assign DynamicObject to a object. Use obj.%JSONExportToString(.jsonString) to write a JSON String to a object. %JSON.Formatter format a JSON String for human readability. Good tips! Congrats! Could you give an example for items 6 and 7? I always thought that the relationship was a class for a table. 6 & 7 are side effects of object inheritance.Think of a class Person.But Employee Extends PersonSimilar Students Extends Person tooSo you have 3 tables but all are Persons Some with extension some not. @6: Table Employee corresponds to class Person and to class Employee @7: So class person corresponds to Table PERSON, EMPLOYEE , STUDENT Yes, thanks the nice example. Regarding 9, can we change the stored information manually? I know it is generated automatically. @9.9. storage is generated once if not existing yet.you may change it manually (typically data location global) as long as there is nothing stored yetotherwise you lose the existing content. Or you copy it to the new location.My article The adopted Bitmap shows such an example [actually also in contest} Hello YURI MARX GOMES, Thank you for your articles. Always good tips Thanks @Delphine.Morel, good to hear this, is an incentive to keep writing more articles. Point 5-5: Relationship on the object side is bi-directional. Class A has a reference to class B, and class B has a collection of references to class A. On the SQL side, table A has a reference to table B, along with automatic referential integrity. Point 16: Important: for a class to be persistent, %Persistent must be the first class. So the example should be: Class Person extends (%Persistent, Animal) Thanks additional tips! If there is no storage definition then a storage definition whose type is %Storage.Persistent is created when compiling the class. This is done before the storage definition is compiled (every class member is compiled by the class compiler). Then, when the storage definition is compiled and if the type is %Storage.Persistent then the %Storage.Persistent.STORAGECOMPILERCLASS will generate a full storage definition for the current class definition. What does that mean? Well - if this is the first time this storage definition has been compiled then it is most likely empty, other than the type class. The STORAGECOMPILERCLASS will generate a complete storage definition. But even if the storage definition is already defined, the STORAGECOMPILERCLASS still reviews that definition. If there are any changes detected to the class definition then the storage definition is updated to reflect those changes. That means that the user can manually edit the storage definition at any time and the storage compiler will simply make sure that the definition is "complete" - no missing properties, no missing indexes, and so on. Bottom line is that the user is free to make any desired changes, including deleting the storage definition completely. Keep in mind that some changes can make the compiled class incompatible with existing data. Just to clarify - inheritance considers the primary super class hierarchy. %Persistent must be the first class some where in the primary super class hierarchy. Sample.Employee extends Sample.Person which extends %Library.Persistent. Great, thanks!
Article
Yuri Marx · Mar 2, 2021

Day 5: Developing with InterSystems Objects and SQL

I finished my participation in the Developing with InterSystems Objects and SQL with Joel Solon. The course is very nice and I will share with you some tips I got during this the training final day. Tips presented in the day 5: %SYSTEM package has general utiliy classes. Use $system.class.Help() to list the utilities. The main %SYSTEM classes are Encryption (industry encryption methods), OBJ to manage classes and objects, Security for security methods and SQL to use SQL language. IRIS allows validation to the properties and arguments using MINVAL and MAXVAL to integer, FORMAT to date and time, SCALE to decimal, MINLEN, MAXLEN, TRUNCATE, VALUELIST (restrict the input to a list of values) and PATTERN to string. Example: Method Print(name As %String(MAXLEN=50)). You can create new data type validations and convertions extending a datatype like %String and using DisplayToLogical() and LogicalToDisplay() to implement new behaviors. Is possible change the datatype parameter like the PATTERN parameter for change the validation of a string. IRIS uses -> operator to do implicit joins, example: select Country->States->County from Simple.Places. This joins 3 related tables. To create a reference between classes/tables use ForeignKey. Example: ForeignKey CountryFK(Country) References Simple.Country() [ OnDelete = setnull ]. There are the options setnull to set null to the otherside table/class, cascade to propagate the deletion, noaction to no action and setdefault to configure a default value to the reference. Use %ConstructClone() to do a clone of a object and its references. Use SqlComputeCode to the calculated fields. Example: (from IRIS documentation) Property FullName As %String [ SqlComputeCode = {set {*}={FirstName}_" "_{LastName}}, SqlComputed ]; Is possible automate tests using %UnitTest framework. Use %UnitTest.TestCase for defining test cases and %UnitTest.Manager for running a set of Test Cases. To see the results go to System Explorer > Tools > UnitTest Portal. See https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=TUNT. IRIS supports 2 type collections: List: key based on position starting in 1. Declaration: Property States as list of Simple.State. Get: country.States.GetAt(1) Insert: country.States.Insert(florida) Remove: country.States.RemoveAt(1) Count: country.States.Count() Clear: country.States.Clear() Next: country.States.GetNext(1) - to get item 2 Loop: for i=1:1:country.States.Count() { write !, country.States.GetAt(i) Array: key based on associated value. Declaration: Property States as array of Simple.State. Get: country.States.GetAt("FL") Insert: country.States.SetAt(florida, "FL") Remove: country.States.RemoveAt("FL") Count: country.States.Count() Clear: country.States.Clear() Next: country.States.GetNext("FL") - to get item GA Loop: set state = "" for { set val = country.States.GetNext(.state) quit: (state = "") write !, val } To create relationships between classes, we have: Parent/Children: Relationship States as Simple.State [ cardinality = children, Inverse = Country ]. The otherside: Relationship Country as Simple.Country [ cardinality = parent, Inverse = Country ]. One/Many: Relationship States as Simple.State [ cardinality = many, Inverse = Country ]. The otherside: Relationship Country as Simple.Country [ cardinality = one, Inverse = Country ]. One-To-One and Many-to-Many are not supported. One-To-One may be simulated and Many-To-Many can be made using 2 Many-to-One to a relationship table. Stream is object that can contain amount of data larger than limit of regular properties, may store characters (%Stream.GlobalCharacter) or binary (%Stream.GlobalBinary) data. Use the following methods to read/write data: Write(text): write in the end of line; WriteLine(text): write to a new line; Clear(): clear the content of the stream; CopyFrom(stream): copy from a stream and overwrite the current content; Read(length): read characters limited to the length; ReadLine(length): read characters in the current line limited to the length; Rewind(): retorna para o início do stream; MoveToEnd(): move to end of stream. You can use triggers to do something before or after a CRUD event. Example: Trigger T1 [Event = INSERT, Time = AFTER, Order = 1, Foreach = row/object] { write your code }. The IRIS has some functions frequently used: $EXTRACT: get a substring - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fextract $FIND: get the position of a value passed as argument - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_ffind $LENGTH: get the size of a string or substring - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_flength $LIST: return/create a list of elements - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_flist $LISTDATA: return the element in the list by position - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_flistdata $LISTFIND: return the index of a element in the list - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_flistfind $LISTGET - get an element in the list - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_flistget $LISTLENGTH - get total of elements in the list - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_flistlength $PIECE - return or replace a substring using a delimiter - https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_fpiece The course was very nice and has a rich set of practical exercices. The course is important to preparation to IRIS developer certification too. See the course agenda in https://www.intersystems.com/support-learning/learning-services/classroom-learning/?course-view=course-schedule. @11: 1:1 could be a degraded 1:N relationship orby inheriting from a base class as mentioned earlier: "Employee Extends Person" many-to-many can be covered as M:N relationship as I described in my article 3 years ago. Thanks Cemper. Point #11: one-to-one is not supported but can be imperfectly simulated. many-to-many is supported by combining one-to-many among 3 classes. Oops! I posted this without noticing that Robert already handled this one! Perfect! Thanks the contribution! The interactive tutorials with exercises built into the documentation helped me a lot in my time: Caché Tutorial Topics Map Caché Tutorials Also included was a database "SAMPLES" (code and data) with examples for every taste. I often used it for performance testing. Note: I give a link to version 2016.2, because since version 2017.1, for some reason, the developers have changed the display styles in the online documentation and removed some information. Local documentation does not have these disadvantages. In addition, in the <cachesys>\dev\ folder there were numerous demos with source code for various programming languages and connection technologies (С++, C#, Java, PHP, Python, ODBC, JDBC, ADO.NET, ActiveX, XEP, etc.): Incomplete content \dev\tutorials\ \dev\tutorials\csp \dev\tutorials\java \dev\tutorials\mv \dev\tutorials\pojo \dev\tutorials\security \dev\tutorials\UnitTestEx \dev\tutorials\webservices \dev\tutorials\zen \dev\Cache\ \dev\Cache\callin \dev\Cache\callout \dev\Cache\cctrlcpp \dev\Cache\cctrlvb \dev\Cache\ctrldemo \dev\Cache\HAcluster \dev\odbc\samples\ \dev\odbc\samples\php \dev\odbc\samples\select \dev\odbc\samples\sqlgateway \dev\python\ \dev\python\samples \dev\python\samples3 \dev\cdirect \dev\cpp\samples \dev\dblib\samples \dev\dotnet\samples \dev\java\samples \dev\mv\samples \dev\node.js\samples \dev\perl\samples Great tip, thanks! I think Objects and Groovy are actually a bit similar... I don't know if my idea is right or wrong, actually I write very little Objects. Thank you for sharing your experience, It seems to be an enriching training
Announcement
Evgeny Shvarov · Mar 3, 2021

Technology Bonuses for Projects of the InterSystems Grand Prix!

Hi Developers! We had a set of technology bonuses for the InterSystems Grand Prix contest. And here is how projects collected it: Project Total Bonus zapm 10 HealthInfoQueryLayer 13 Data extraction solution between heterogeneous systems 0 Airplane React, Material UI, and REST API 10 springboot-iris-crud 10 iris-rad-studio 4 iris-python-suite 7 fhir-chatbot 11 iris-ml-suite 10 IRIS Interoperability Message Viewer 10 isc-generate-db 10 iris-image-index-demo 17 iris4health-fhir-analytics 23 interoperability-integratedml-adapter 23 iris-integratedml-monitor-example 12 iris-analytics-notebook 14 ObjectScript Reports 0 iris-for-money 12 vscode-intersystems-iris 14 ObjectScript Kernel 5 apptools-admin 10 RESTFUL_API_For_Hotel_OverBooking_System 10 units 2 realworld-intersystems-iris 12 isc-tar 6 BlocksExplorer 8 iris-fhir-portal 15 npm-iris 12 iris-history-monitor 12 Dictionary comparison scheme of cache database 0 IRIS-REST-API-DATABASEMANAGER 13 ISC DEV 4 M-commands instead of Excel formulas in cells 2 appmsw-telestat 13 isc-apptools-lockdown 4 WebSocket Client JS with IRIS Native API as Docker Micro Server 5 Wsock-Embedded-Py 10 Terminal Multi-Line Command Editor 4 The adopted Bitmap 8 Using ZPM for Node.js 7 cmPurgeBackup 4 IRIS import manager 5 Questy 7 ➡️ Here you can find a detailed distribution of bonuses for each application ⬅️ This table is subject to change upon project improvements or if we missed something. Fill free to claim the bonus in the comments here or on discord. Stay tuned!
Announcement
Anastasia Dyubaylo · Aug 31, 2020

Winners of the InterSystems IRIS for Health FHIR Contest!

Hi Developers! The InterSystems IRIS for Health FHIR Contest is over. Thank you all for participating in our FHIR Competition! And now it's time to announce the winners! A storm of applause goes to these developers and their applications: 🏆 Experts Nomination - winners were determined by a specially selected jury: 🥇 1st place and $1,500 go to the iris-fhir-portal project by @Henrique 🥇 1st place and $1,500 go to the iris4health-fhir-analytics project by @José.Pereira 🥉 3rd place and $500 go to the fhir-chatbot project by @Renato.Banzai 🏆 Community Nomination - an application that received the most votes in total: 🥇 1st place and $1,000 go to the iris-fhir-portal project by @Henrique 🥈 2nd place and $500 go to the iris4health-fhir-analytics project by @José.Pereira Congratulations to all the participants! Thank you for your attention to the contest and the efforts you pay in this exciting coding competition! And what's next? A whole series of programming contests awaits InterSystems Developers! We will announce the next competition very soon – stay tuned! ➡️ More details in this post.
Announcement
Neal Assing · Aug 18, 2020

InterSystems Ensemble/Health Connect Developer Required

We have an immediate requirement for an experienced Intersystems Ensemble/Health Connect consultant to join our team with a good grounding in OO Programming, Healthcare Integration and at least 2 years experience with InterSystems Ensemble/Healthshare Health Connect The InterSystems Ensemble/Health Connect Consultant will be expected to go on to client sites, identify their needs and recommend how and what they should do in order to improve their business. From there you will then be expected to implement the services where required and provide documentation or training to compliment this. The successful candidate will have the ability to take ownership of technical projects, deal with any issues and see them through to completion. This will require excellent communication and management skills as well as a strong hands-on background in Healthcare Integration. This is an opportunity to play a key role in a growing business with real authority to make a difference along the way. Key skills 2 years InterSystems Ensemble/Healthshare Health Connect Experience BS or MS in Computer Science or equivalent; (Physics, Mathematics, Sciences) Software Development experience with Java, J2EE, JMS Ability to identify, analyze, discuss and confirm application/system requirements from customers and relevant stakeholders and produce detailed specifications Have sound understanding and experience with Information Technology and Systems and associated processes (development life cycle, testing processes, support, etc.) Good communication skills, (oral, verbal and written), with the ability to produce clear concise documentation, which is easily understood by developers and customers Experience with Application software testing and preparation of test plans and test data Knowledge of standard industry processes and methodologies (eg, for implementation, enhancement requests, development and product release, change control, customer support) Understand principles of Project Management and possession of core Project Management skills Proficient in Microsoft Office suite, Email, Internet Explorer as well as Unix A good understanding of the business issues within a specific domain such as banking, healthcare and retail Experience with other Middleware technologies (SOA & BPM) such as Mulesoft, SeeBeyond, JCAPS, WebMethods will be highly advantageous in this role Any experience working with MUMPS and Cache would also be beneficial Please apply using the following link: https://www.jobserve.com/gb/en/search-jobs-in-London,-London,-United-Kingdom/INTERSYSTEMS-ENSEMBLE-HEALTHSHARE-HEALTH-CONNECT-CONSULTANT-DEVELOPER-ENGINEER-D032A554C17488CB9E/ CALLS FROM CANVASSERS OR AGENCIES WILL NOT BE RESPONDED TO