Clear filter
Announcement
Anastasia Dyubaylo · Jan 29, 2021
Hey Developers,
You asked for it – we did it! Now it's time for all Chinese speaking users of our community!
Finally, we're pleased to announce the official start of the Chinese InterSystems Developer Community!
And let me introduce you @Xuying.Zheng and @Weiwei.Zhu from InterSystems China as managers of the InterSystems Developer Community in Chinese!
Also, a big welcome to the CN Moderators Team: @Peng.Qiao, @Yunfei.Lei, @Louis.Lu, @Hao.Ma, @Lin.Zhu, @Jieliang.Liu, @Li.Yan, @Lu.Wang.
And here are the main points you need to know:
➡️ You can switch between sites using the language menu in the top right corner:
If you know Chinese, it's great that you can contribute articles, make discussions, ask and answer questions about InterSystems Data Platforms now in Chinese too!
Also!
➡️ You can use Language Switcher – the option to switch to the Chinese version of the article.
Also!
➡️ If you published a post in English or any other language, it could be translated by anyone in Chinese and will be helpful for even more people!
Everyone is able now to add or request a translation to any post on the Developer Community. After selecting any language using the Language Switcher, any user can add a link to the translation of the post or request its translation.
➡️ The same thing works for the Chinese Community site – you can translate the Chinese article into English or any other language. Be sure, you know both languages well!
And...
For those who contribute to the Developer Community best each month, including those who post most articles, and those who achieve the most “vote ups”, the InterSystems China team will give out a custom gift. Don't miss your chance to get it – be active! 😉
So,
Don't hesitate to provide your feedback on how to make the Chinese InterSystems Community better.
And welcome to the Chinese InterSystems Developer Community! 🚀 Awesome! Welcome to the community
欢迎
Announcement
Dean Andrews · Apr 4, 2022
We are excited to introduce you to our new feedback portal, InterSystems Ideas!
We aim to improve our feedback mechanisms so that you can suggest ways our products could evolve to meet your business challenges. Developer Community Questions are a great way to interact with your peers around a specific coding issue, and Customer Support is, as always, the way to get an immediate problem fixed.
This new portal is meant to capture higher level ideas. Less of how you do something today, and more about how you would like to see the product work better in the future. It allows you to post your own feedback & comment/upvote on feedback provided by others. InterSystems can view any feedback you submit, respond to your feedback directly, and update the status of your feedback items as we make progress on your requests.
So please take a look, contribute your ideas, and bookmark it for the future. Thank you! @Dean.Andrews2971 - this is very exciting! I know that the members of the D.C. have a lot of great ideas and I look forward to reading about them in the portal :)
For some of them exist even concrete proposals for solutions. (e.g. Global <-> JSON) Maybe we can move them to "solved"? Or at least provide the list of solutions in OEX? What do you think @Dean.Andrews2971 ?
Announcement
Anastasia Dyubaylo · Jan 26, 2022
Hey Developers,
We are pleased to invite you all to the next InterSystems online programming contest focused on Python!
🏆 InterSystems Python Contest 🏆
Duration: February 7 - 27, 2022
In prizes: $10K - more prizes included!
Prizes
1. Experts Nomination - a specially selected jury will determine winners:
🥇 1st place - $4,000
🥈 2nd place - $2,000
🥉 3rd place - $1,000
🌟 4-15th places - $100
2. Community winners - applications that will receive the most votes in total:
🥇 1st place - $1,000
🥈 2nd place - $750
🥉 3rd place - $500
If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners.
Who can participate?
Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account!
Developers can team up to create a collaborative application. Allowed from 2 to 5 developers in one team.
Do not forget to highlight your team members in the README of your application – DC user profiles.
Contest Period
🛠 February 7 - 20: Application development and registration phase.
✅ February 21 - 27: Voting period.
Note: Developers can improve their apps throughout the entire registration and voting period.
The topic
The recent release of InterSystems IRIS 2021.2 brings Embedded Python functionality and also extends PEX to Python. We invite you to use Embedded Python in a new programming contest! Applications that use Native API for Python or PEX for Python are welcomed too.
Submit an open-source application that uses either Embedded Python or Native API for Python or Python PEX for Python with InterSystems IRIS or InterSystems IRIS for Health.
General Requirements:
Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our team will review all applications before approving them for the contest.
The application should work either on IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition.
The application should be Open Source and published on GitHub.
The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works.
Helpful resources
1. Developing Python Applications with InterSystems IRIS:
Learning Path Writing Python Application with InterSystems
Embedded Python Documentation
Native API for Python Documentation
PEX Documentation
2. For beginners with ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
3. How to submit your app to the contest:
How to publish an application on Open Exchange
How to submit an application for the contest
4. Example applications:
interoperability-python
pex-demo
python-examples
WebSocket
AOC2021
Python Faker
5. Videos:
Introduction to Embedded Python
Embedded Python: Bring the Python Ecosystem to Your ObjectScript App
Embedded Python for ObjectScript Developers: Working with Python and ObjectScript Side-By-Side
Embedded Python with Interoperability
InterSystems IRIS Native Python API in AWS Lambda
Judgment
Voting rules will be announced soon. Stay tuned!
So!
We're waiting for YOUR project – join our coding marathon to win!
❗️ Please check out the Official Contest Terms here.❗️  so exited! hehehe))) ??? OEX Conrests shows: Start on March 7th, 2022.I hope Feb. 7th is correct, ??? Thank you Robert, already changed the date.🙏 Hello Developers!
Don't miss the opportunity to join the InterSystems Python Contest!
Participate, make your solutions and win the prizes! Glad to see this contest and what comes out of it!! I'm waiting the start date to participate with this app: https://openexchange.intersystems.com/package/AI-Image-Object-Detector Community!
A few days left to the start of the InterSystems Python Contest!
Stay tuned and participate! Developers!
Do not miss the upcoming InterSystems Python Contest Kick-off Webinar - tomorrow, February 7 at 12:00 PM EDT! Community!
The registration to the InterSystems Python Contest is finally started!
We are waiting for your participation! Hey, Devs!
We already have 3 participants in the game! 🚀
Check them out:
AI Image Object Detector by @Yuri.Gomes
appmsw-sql2xlsx by @MikhailenkoSergey
GlobalToJSON-embeddedPython by @Robert.Cemper1003
Who is gonna be next?! Another application has been uploaded by @Robert.Cemper1003 ! 🚀
GlobalToJSON-ePython-pure
What a great job! Check it out!
Developers!
Technology bonuses for InterSystems Python Contest have been released!
Don't forget to check them! They will give you extra points in the voting.
Hi Community!
Half of the second week for the registration period is almost over.⌛
We are looking forward to your solutions!👨💻
Whose application will be next?👀
What timezone is the deadline for the 20th ? I am looking at the eleventh hour here if I can pull it off and was wondering if I have until midnight 2/20 EST. Registration Ends – February 20, 2022, 11:59:59 PM EST Registration ends on the right day when Python is 31 !! I've posted two articles attached to OEX Application for the Contest: Comparison of Python&Dashboards | InterSystems Developer Community |and Dash-Python-IRIS | InterSystems Developer Community | Dashboards|EmbeddedHow to get bonus points?
Announcement
Anastasia Dyubaylo · Mar 10, 2022
Hey Community,
Ready for the next contest? We are glad to invite you all to the 19th InterSystems online programming competition:
🏆 InterSystems Globals Contest 🏆
Duration: March 21 - April 10, 2022
In prizes: $10,000
The topic
Globals or direct data access - is the heart of InterSystems IRIS persistence engine. All the IRIS data that could be accessed via SQL, REST-API, ObjectScript, DocDB, or Native API is stored in globals.
Globals engine is responsible for the performance, reliability, and scalability of InterSystems IRIS.
In this contest, we invite everyone to contribute open source applications that will use InterSystems IRIS globals to read, store and change the data. We invite you to use the power of globals to leverage the performance of data ingestion and reading along with the flexibility of storage schema that lets to introduce arbitrary data model implementations.
General Requirements:
Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our team will review all applications before approving them for the contest.
The application should work either on IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition.
The application should be Open Source and published on GitHub.
The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works.
Contest Prizes:
1. Experts Nomination – winners will be selected by the team of InterSystems experts:
🥇 1st place - $4,000
🥈 2nd place - $2,000
🥉 3rd place - $1,000
🌟 4-15th places - $100
2. Community winners – applications that will receive the most votes in total:
🥇 1st place - $1,000
🥈 2nd place - $750
🥉 3rd place - $500
✨ Global Masters badges for all winners included!
Note: If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners.
Important Deadlines:
🛠 Application development and registration phase:
March 21st, 2022 (00:00 EST): Contest begins.
April 3, 2022 (23:59 EST): Deadline for submissions.
✅ Voting period:
April 4, 2022 (00:00 EST): Voting begins.
April 10, 2022 (23:59 EST): Voting ends.
Note: Developers can improve their apps throughout the entire registration and voting period.
Who Can Participate?
Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account!
Developers can team up to create a collaborative application. Allowed from 2 to 5 developers in one team.
Do not forget to highlight your team members in the README of your application – DC user profiles.
Helpful Resources:
Globals are sparse multidimensional arrays that could be stored and managed within the IRIS database. You can deal with Globals using ObjectScript and Native API.
✓ Example applications:
GlobalToJSON-embeddedPython
errors-global-analytics
✓ Documentation:
Globals
Using Globals
Using Multidimensional Storage (Globals)
Managing globals in management portal
✓ Articles + video:
Globals are Magic Swords for managing data
The art of mapping Globals to Classes
Globals QuickStart
✓ For beginners with IRIS:
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
✓ For beginners with ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
✓ How to submit your app to the contest:
How to publish an application on Open Exchange
How to submit an application for the contest
Need Help?
Join the contest channel on InterSystems' Discord server or talk with us in the comment to this post.
We can't wait to see your projects! Good luck 👍
By participating in this contest, you agree to the competition terms laid out here. Please read them carefully before proceeding. Developers!
Only 5 days left for the start of the InterSystems Globals Contest!The Kick-off Webinar will be announced soon.
Stay tuned! We are looking for the implementations of different data models with globals as a persistence engine. Technically everyone can implement their own graph, temporal, columnar, document, or any other type of a persistence engine implementing the API via Embedded Python, ObjectScript, or through Native API libs of node.js, java, python, or dotnet.
Also, we are looking for smart data index implementations, such as spatial index, functional indexes for search, etc.
There will be technical bonuses of such. Stay tuned and join our Monday's kick-off for more details. Developers!
Don't miss the upcoming InterSystems Globals Contest Kick-off Webinar!
Date & Time: Monday, March 21 – 11:00 AM EDT
Speakers: 🗣 @Daniel Kutac, Senior Sales Engineer🗣 @Joel Solon, Senior Technical Trainer🗣 @Timothy Leavitt, Development Manager 🗣 @Evgeny Shvarov, InterSystems Developer Ecosystem Manager
Tomorrow the registration phase will be started!Upload your solutions, and join the contest! Also interested to see submissions / ideas on handling really BIG globals. DataMove is a powerful feature for moving data from one database to another in a live environment, but it operates at a fairly low level. Adding a layer around it for easy archiving of table data, an interface to keep track of (potentially large numbers of) subscript-level mappings, etc.. would be examples of helpful utilities in the big global space.
FWIW, we have several roadmap items for IRIS in this area, but I won't go into detail on them as it's much more exciting and informative for us to learn about the problems you are seeing and the solutions you'd propose to them :-) Developers!
The first competitor is already in the game! What a great job by @Robert.Cemper1003 🚀
Check out the application: Globals: Embedded Python vs. ObjectScript
Community!
3 more applications have been uploaded by @Robert.Cemper1003
GlobalToJSON-Compact
GlobalToJSON-Efficient
GlobalToJSON-XL-Academic
Go check it out!
For anyone wanting to learn more about globals as a database storage technology, and some information on how to use them to model various kinds of database structures, I've created this repository of documents just for you! Hopefully it will provide some inspiration towards this competition.
https://github.com/robtweed/global_storage
Developers!
2 more new apps are in the competition:
Spreadsheets based on globals by @alex.kosinets
Student score query by @yang.shijie
You still have time till Monday to upload your apps.
Happy weekend!✌ Community!
Today is the last day to upload your application! Join the competition!
So don't miss your chance to participate!
Stay tuned!
Announcement
Christine Tang · Sep 18, 2021
Just wanted to thank InterSystems for sponsoring this year's HACKMIT! You are very welcome, @Christine.Tang! Thank you for your participation! Hey Christiane,
We hope you had a great experience and a lot of fun at HackMIT with us and InterSystems Technologies!
Greetings from InterSystems team at HackMIT 2021:
⭐️ @Anton.Umnikov ⭐️ @Ron.Sweeney1582 ⭐️ @Anastasia.Dyubaylo ⭐️ @Jeffrey.Fried ⭐️ @Regilo.Souza ⭐️ @Evgeny.Shvarov ⭐️
Keep in touch 🤗 Hi Christine,
We are impressed with the organization. It's no surprise the success of the event. Every year you raise the bar.
We love the interesting ideas participants had during the weekend and hope at least some will be successful businesses.
Thank you for the chance to be a small part of the event and congratulations on the success.
Announcement
Anastasia Dyubaylo · Dec 13, 2021
Hey Developers,
With the release of InterSystems IRIS 2021.2 Preview and all-new LOAD DATA functionality, we'd like to put it to the test with the new DATASETS contest!
🏆 InterSystems Datasets Contest 🏆
Duration: December 27 - January 16, 2022
In prizes: $9,450
Prizes
1. Experts Nomination - a specially selected jury will determine winners:
🥇 1st place - $4,000
🥈 2nd place - $2,000
🥉 3rd place - $1,000
🌟 4-10th places - $100
2. Community winners - applications that will receive the most votes in total:
🥇 1st place - $1,000
🥈 2nd place - $500
🥉 3rd place - $250
If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners.
Who can participate?
Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account!
👥 Developers can team up to create a collaborative application. Allowed from 2 to 5 developers in one team.
Do not forget to highlight your team members in the README of your application – DC user profiles.
Contest Period
🛠 December 27 - January 9: Application development and registration phase.
✅ January 10 - 16: Voting period.
Note: Developers can improve their apps throughout the entire registration and voting period.
The topic
One of the most discussed problems with our previous programming contests is the lack of datasets. Every time you have a project idea about a particular subject area or industry, you need a related dataset, and part of the work with the contest is to find/prepare/load the dataset.
That’s why we decided to have a dataset contest! Let’s bring several helpful datasets to the InterSystems Community!
What are we looking for?
Present a repository that will load a dataset into the InterSystems IRIS namespace.
This could be done ideally with a ZPM package, and the data can be inside the package, or the package can have a method that loads data from the URL into the IRIS instance. Anyways your project, once installed, should bring a class (classes) and its data for it that are related to a particular topic, subject area, idea, industry, name it.
The project should suggest how to use data - SQL query, REST API, or both.
Visualization of the data is a plus. Both visualization and API (if any) can be delivered with another project, but it’s not mandatory.
We don’t limit you in the ways, how the data can be stored in the repository. E.g., this could be:
Export of the global(-s) (preferably in XML than in GOF format).
An SQL script that creates data
An ObjectScript (or java, js, python, name it) that generates data in IRIS
Integration with external Data API
Here are the project examples, that deliver the thing:
Dataset-titanic,
Dataset-countries,
Posts and tags,
Synthea
Requirements:
Class naming convention. Start the class names with: dc.data.your_name.class. E.g. if there is a dataset on trading data the class names could be: dc.data.finance.transaction, dc.data.finance.instrument.
The reference to the source of data. If you take the dataset from somewhere on the Internet and adapt it to InterSystems IRIS format, please provide the link to the source. If this is your data, please provide the license of the usage.
The ZPM package should start with a“dataset-” name, e.g., dataset-countries, dataset-titanic.
And as usual, we’ll have technical bonuses for docker, demo, article, zpm, video, etc.
Provide the license to a dataset.
👉 Common license types for datasets (the source)
Spoiler
Common licenses in order of most open to most restrictive:
PUBLIC DOMAIN MARK - PUBLIC DOMAIN
Dedicate your dataset to the public domain: This isn’t technically a license since you are relinquishing all your rights in your dataset by choosing to dedicate your dataset to the public domain. To donate your work to the public domain, you can select “public domain” from the license menu when creating your dataset.
OPEN DATA COMMONS PUBLIC DOMAIN DEDICATION AND LICENSE - PDDL
This license is one of the Open Data Commons licenses and is like a public domain dedication. It allows you, as a dataset owner, to use a license mechanism to surrender your rights in a dataset when you might not otherwise be able to dedicate your dataset to the public domain under applicable law.
CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL CC-BY
This license is one of the open Creative Commons licenses and allows users to share and adapt your dataset so long as they give credit to you.
COMMUNITY DATA LICENSE AGREEMENT – CDLA PERMISSIVE-2.0
This Community Data License Agreement is similar to permissive open source licenses such as the MIT license. It allows users to use, modify and adapt your dataset and the data within it, and to share it. The CDLA-Permissive-2.0 terms explicitly do not impose any obligations or restrictions on results obtained from users’ computational use of the data. The 2.0 version is significantly shorter, uses plain language to express the grant of permissions and requirements. The only obligation is to "make available the text of this agreement with the shared Data," including the disclaimer of warranties and liability.
OPEN DATA COMMONS ATTRIBUTION LICENSE - ODC-BY
This license is one of the Open Data Commons licenses and allows users to share and adapt your dataset so long as they give credit to you.
CREATIVE COMMONS ATTRIBUTION-SHAREALIKE 4.0 INTERNATIONAL - CC-BY-SA
This license is one of the open Creative Commons licenses and allows users to share and adapt your dataset so long as they give credit to you and distribute any additions, transformations or changes to your dataset under this license. We consider this license (a.k.a a viral license) problematic since others may decide not to work with your CC-BY-SA licensed dataset if there is risk that by doing so their work on your dataset will need to be shared under this license when they would rather use another license.
COMMUNITY DATA LICENSE AGREEMENT – CDLA-SHARING-1.0
This license is one of the Community Data License Agreement licenses and was designed to embody the principles of "copyleft" in a data license. It allows users to use, modify and adapt your dataset and the data within it, and to share the dataset and data with their changes so long as they do so under the CDLA-Sharing and give credit to you. The CDLA-Sharing terms explicitly do not impose any obligations or restrictions on results obtained from users’ computational use of the data.
OPEN DATA COMMONS OPEN DATABASE LICENSE - ODC-ODBL
This license is one of the Open Data Commons licenses and allows users to share and adapt your dataset so long as they give credit to you and distribute any additions, transformation or changes to your dataset under this license. We consider this license (a.k.a a viral license) problematic since others may decide not to work with your ODC-ODbL licensed dataset if there is risk that by doing so their work on your dataset will need to be shared under this license when they would rather use another license.
CREATIVE COMMONS ATTRIBUTION-NONCOMMERCIAL 4.0 INTERNATIONAL - CC BY-NC
This license is one of the more restrictive Creative Commons licenses. Users can share and adapt your dataset if they give credit to you and do not use your dataset for any commercial purposes.
CREATIVE COMMONS ATTRIBUTION-NODERIVATIVES 4.0 INTERNATIONAL - CC BY-ND
This license is one of the more restrictive Creative Commons licenses. Users can share your dataset if they give credit to you, but they cannot make any additions, transformations or changes to your dataset under this license.
CREATIVE COMMONS ATTRIBUTION-NONCOMMERCIAL-SHAREALIKE 4.0 INTERNATIONAL - CC BY-NC-SA
This license is one of the most restrictive Creative Commons licenses. Users can share your dataset only if they (1) give credit to you, (2) do not use your dataset for any commercial purposes, and (3) distribute any additions, transformations or changes to your dataset under this license. We consider this license a viral license since users will need to share their work on your dataset under this same license and any users of the adapted dataset would likewise need to share their work on the adapted dataset under this license and so on for any other changes to those modified datasets.
CREATIVE COMMONS ATTRIBUTION-NONCOMMERCIAL-NODERIVATIVES 4.0 INTERNATIONAL - CC BY-NC-ND
This license is one of the most restrictive Creative Commons licenses. Users can share only your unmodified dataset if they give credit to you and do not share it for commercial purposes. Users cannot make any additions, transformations or changes to your dataset under this license.
ADDITIONAL LICENSE COVERAGE OPTIONS
If a license is not listed in the data.world menu options, you may select Other and specify the details in the summary of your dataset.
NO LICENSE SPECIFIED
No one can use, share, distribute, re-post, add to, transform or change your dataset if you have not specified a license.
These descriptions are only summaries of these licenses. For the actual text of the licenses, which we strongly encourage you to read, click on the links provided.
Summary of common license types:
PUBLIC DOMAIN
The work has been dedicated to the public domain by waiving all rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
ATTRIBUTION
You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
SHARE-ALIKE
If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
NON-COMMERCIAL
You may not use the material for commercial purposes.
DATABASE ONLY
License applies to the database only and not its contents or data.
NO DERIVATIVES
No Derivative Works. You may not alter, transform, or build upon this work.
All licenses that begin with CC-BY in the table above refer to version 4.0 of those licenses.
General Requirements:
Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our team will review all applications before approving them for the contest.
The application should work either on IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition.
The application should be Open Source and published on GitHub.
The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works.
Helpful resources
1. For beginners with InterSystems IRIS:
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
2. For beginners with ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
3. How to submit your app to the contest:
How to publish an application on Open Exchange
How to submit an application for the contest
4. And more:
InterSystems IRIS 2021.2 Preview
LOAD DATA
Judgment
Voting rules will be announced soon. Stay tuned!
So!
We're waiting for YOUR project – join our coding marathon to win!
❗️ Please check out the Official Contest Terms here.❗️ It would be great to see a solution that made it easy to get data from open government systems using popular APIs such as Socrata and CKAN. For example, Cambridge, MA uses Socrata. And the US Government uses CKAN. Another interesting area is ingesting Synthea data directly into IRIS! Thanks for sharing, Raj! That's a great competition. I look forward to It. Here are two examples using Synthea:
https://github.com/intersystems-community/irisdemo-base-synthea
https://github.com/grongierisc/synthea-fhir-iris
And two example repositories using LOAD DATA (but not yet ZPM-enabled):
https://github.com/bdeboe/isc-tpch-script
https://github.com/bdeboe/isc-adventureworks (using the DWH flavour of this well-known dataset only)
Developers!
Only 2 days left and the InterSystems Datasets Contest begins!Get ready to upload your applications!
Happy weekends!😊 The InterSystems Datasets Contest is only started and we already have the first competitor in the game!
Medical Dataset by @Muhammad.Waseem Check it out!
Upload your applications, we are waiting for your solutions!
A new competitor is in the game with 2 great applications!
Dataset OEX reviews by @Robert.Cemper1003 Dataset Lightweight M:N by @Robert.Cemper1003
Check them out!And don't forget to join a new InterSystems Datasets Contest 🏆 Developers!
Happy new year and merry Xmas!
Have a great weekends, and happynes to everyone! Wow! One more application on the Contest board:
openflights_dataset by @Andreas.Schneider
We're also waiting for other participants and their cool apps!
Happy weekends! Another application is in the competition!
iris-kaggle-socrata-generator by @Henrique.GonçalvesDias
Who is gonna be next? We are waiting for you! Community!
Only 4 days left to register your application! Upload your app and join the competition!
And we have 2 more new apps by developers in the InterSystems Datasets Contest!
dataset-covid19-fake-news by @Henry.HamonPereira Health Dataset by @Yuri.Gomes
Developers!One more application on the Contest board:
exchange-rate-cbrf by @MikhailenkoSergey
Hurry up to upload your solutions! 😎
Hey Devs!
The registration period is will be over on Monday!So don't forget to use Technology Bonuses to get extra points in the voting!
And by the way, we have another application in the game:iris-python-faker by @Dmitry.Maslennikov
We are waiting for your solutions, join the InterSystems Datasets Contest !Happy weekends😊
Announcement
Anastasia Dyubaylo · Nov 1, 2021
Security wanted!
Welcome to the next InterSystems online programming competition:
🏆 InterSystems Security Contest 🏆
Duration: November 15 - December 05, 2021
Prizes: $9,450 in prizes!
Prizes
1. Experts Nomination - a specially selected jury will determine winners:
🥇 1st place - $4,000
🥈 2nd place - $2,000
🥉 3rd place - $1,000
🌟 4-10th places - $100
2. Community winners - applications that will receive the most votes in total:
🥇 1st place - $1,000
🥈 2nd place - $500
🥉 3rd place - $250
If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners.
Who can participate?
Any Developer Community member, except for InterSystems employees (ISC contractors allowed). Create an account!
👥 Developers can team up to create a collaborative application. Allowed from 2 to 5 developers in one team.
Do not forget to highlight your team members in the README of your application – DC user profiles.
Contest Period
🛠 November 15 - 28: Application development and registration phase.
✅ November 29 - December 05: Voting period.
Note: Developers can improve their apps throughout the entire registration and voting period.
The topic
In the security contest, we encourage developers to share the solutions that show how to perform security tasks related to InterSystems IRIS and InterSystems IRIS for Health. We invite you to contribute apps that will reveal tasks related to the Authentication, Authorization, Auditing and Encryption parts of the InterSystems Security Model.
Such tasks could be:
OAuth/OpenID/SAML/LDAP Authentication implementations.
PKI implementations
Access Management to certain parts of a REST API: application-level security, role/user-level security.
Access Management to data: on a database, table, column, or row-level access.
Access to interoperability components
Access to IRIS BI components: cubes, pivots, dashboards etc.
DevOps questions of authorization (users, roles, resources) and authentication (OAuth) settings.
Developer and support tools related to authentication and authorization.
Your idea!
Requirements:
Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our team will review all applications before approving them for the contest.
The application should work either on IRIS Community Edition or IRIS for Health Community Edition or IRIS Advanced Analytics Community Edition.
The application should be Open Source and published on GitHub.
The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works.
Helpful resources
1. For beginners with InterSystems IRIS:
Build a Server-Side Application with InterSystems IRIS
Learning Path for beginners
2. For beginners with ObjectScript Package Manager (ZPM):
How to Build, Test and Publish ZPM Package with REST Application for InterSystems IRIS
Package First Development Approach with InterSystems IRIS and ZPM
3. How to submit your app to the contest:
How to publish an application on Open Exchange
How to submit an application for the contest
4. Documentation, courses, and videos:
Security Documentation
Course: InterSystems Security Basics
Video: Active Directory Integration with LDAP
Video: Configuring a Web Server for IIS for Better Performance and Security
Video: Webinar: Securing the Management Portal
Video: Advances in Security
Article: Building an FHIR Repository + OAuth2 Authorization Server/Resource Server Configuration on IRIS for Health Part 1
Article: InterSystems IRIS Open Authorization Framework (OAuth 2.0) implementation - part 1
Article: Protect your REST API applying OWASP Top Ten
5. Templates
Secured REST API example
Judgment
Voting rules will be announced soon. Stay tuned!
So!
We're waiting for YOUR project – join our coding marathon to win!
❗️ Please check out the Official Contest Terms here.❗️ My suggestion is an implementation to pseudonymization or anonymization to protect sensitive data to not fall within the scope of the GDPR or LGPD(Brazilian version of GDPR) could fits to the security contest. I planning to do something like that if it fits I like that idea, Henry. Either update real data to fake data or just create fake data for testing. It is a contest about security not about privacy. In the rules, it is necessary use InterSystems Security Model. Yuri, yes, data anonymization and obfuscation is not a part of the InterSystems Security model but it's an interesting topic related to secure IT practicies. And regarding privacy - I think it becomes privacy when you agree or disagree with the consent. So IMHO privacy begins when the solution is implemented which we don't expect to see in the contest :) Henry, it's an interesting topic! If we don't see strong objections and concerns we'll expand the scope of the contest. Consent in the privacy is a legacy resource, because all days we give consent without read the contract and conditions. Now, to reach privacy, you need to use the resource of transparency. When the user know what the data controller did with your data and it is allowed to the data holder manage data sharings, get reports and claim privacy rights using this transparency, you get the real privacy. Gdpr, lgpd is about it. Is not about cypher data or allows a consent opt in, but to give to the holder the power to manage all aspects about your data. So to expand the security contest with privacy, will require to you review all current rules. The risk to see apps using 95% from another technologies and 5% of iris it is real with this expansion. While when you has the requirement to use intersystems security model, we have more chance to see apps with intensive use of iris Encryption is the part of InterSystems security model. I think the data anonymization task is close to data encryption, isn't it?
And privacy regulations can even deal with anonymized and unencrypted data. If @Henry.HamonPereira removes GDPR or LGPD terms from the question (which are the potential implementation goals), will the case work as a security topic?
So our contest is not about privacy. But we can include encryption and data obfuscation/anonymization. IRIS has encryptation already, but not anonymization. Is a valid security topic. Thank you @Yuri.Gomes and @Evgeny.Shvarov for all enlightenment. I will follow the advice to remove GDPR and LGPD from the implementation goal and will focus on anonymization data, if it's included on scope. Hey Developers!
Are you started creating your solutions? We are waiting to see them!
Don't forget, that the new InterSystems Security Contest is starting on Monday!
So, good luck to everybody!
Added an example of REST API with basic authentication and users deployed and an example of roles authorization implemented. We expanded the topic for Auditing and Encryption too. So, @Henry.HamonPereira, your idea meets the contest requirements - please apply for the contest!
@Yuri.Gomes, thanks for your attention and useful comments as always! Hey Devs!
The registration period is finally started! Join our Security Contest!
Here is the landing page: https://contest.intersystems.com/ WOW! Developers!
There are already 2 applications that have been uploaded by @MikhailenkoSergey ! What a speed! ⚡
appmsw-forbid-old-passwdisc-apptools-lockdown
Go check it out!
So, who will be next? Hey Developers,
The recording of the InterSystems Security Contest Kick-off Webinar is available on InterSystems Developers YouTube!
Please welcome:
⏯InterSystems Security Contest Kick-off Webinar
Hey Community!
We are waiting for your participation in the Security Contest!
Here is the landing page: https://contest.intersystems.com/ Hello Developers!
The first week of the registration period has ended, so only one week left!
So, upload your applications and participate! Wow, participants have added new apps!🎉 Let's see them:
passwords-tool by @Dmitry.Maslennikov
API Security Mediator and Audit Mediator by @Yuri.Gomes
iris-disguise by @Henry.HamonPereira
Developers, only 3 days left till the end of the registration period. Hurry up!
Happy coding) Hi Community!
Only 2 days left before the start of voting.
Hurry up to upload your application! Developers!
Only one day left for registration!
Join us to win! 🚀 Community!
Last call! Today is the last day of registration!
5 more articles gave been added to the competition!
iris-saml-example by @Dmitry.Maslennikov Server Manager 3.0 Preview by @John.Murray appmsw-dbdeploy by @MikhailenkoSergey
Data_APP_Security by @Muhammad.Waseem IRIS Middlewares by @davimassaru.teixeiramuta
Announcement
Eduard Lebedyuk · Aug 31, 2021
We invite you to the webinar "InterSystems Reports", on Tuesday, September 7th, at 10:00 (Moscow time). The language of the webinar is Russian.
InterSystems Reports, a part of InterSystems IRIS and InterSystems IRIS for Health, is a robust, modern report generation and publishing solution that includes:
Report Designer - a tool for report developers to create and preview reports.
Report Server, which gives users access to run, schedule, filter, and modify reports.
In this webinar, we'll cover all the steps of working with the InterSystems Reports, including:
Connecting InterSystems IRIS as a data source
Creating reports
Publishing reports
Administration
Registration is required.
Register here.
Article
Aasir Waseer · Jul 28, 2022
Hi Folks,
Before I begin my writing journey here I wish to introduce myself briefly, so that everyone who reads and follows me will get a clear picture.
To start with I did my Bachelors in Physical Sciences, Mathematics and Computer Science were my core subjects. I have 4+ years of experience in HealthCare Revenue Cycle operations including Medical Coding, Billing, AR Collections, Denial Management and Fincial Reconciliation. Also, 2+ years of experience in Data Operations and Analytics, specifically in Python, PowerBI, SQL and MsExcel.
i'm a beginner here. I love reading, exploring and I'm a continous learner.
I'm pursuing towards DataScince and AI. I will continue to write blog related to my path.
Let's support each other and grow together. Please don't hesitate to share your inputs and thoughts.
Thank you for your time
Aasir Waseer Welcome Aasir! Aasir! Welcome to the InterSystems Community!
Article
Eduard Lebedyuk · Oct 18, 2016
In this article I would like to tell you about macros in InterSystems Caché. A macro is a symbolic name that is replaced with a set of instructions during compilation. A macro can “unfold” in various instruction sets each time it is called, depending on the parameters passed to it and activated scenarios. This can be both static code and the result of ObjectScript execution. Let's take a look at how you can use them in your application.
Compilation
To begin with, let's see how ObjectScript code is compiled:
The class compiler uses class definitions to generate MAC codeIn some cases, the compiler uses classes as a basis for generating additional classes. You can see these classes in the studio, but you should not change them. This happens, for example, while generating classes that define web services and clientsThe class compiler also generates a class descriptor used by Caché at runtimeThe preprocessor (also referred to as macro preprocessor, MPP) uses INC files and replaces macros. Besides, it also processes embedded SQL in ObjectScript routinesAll of these changes take place in the memory; the user's code remains unchangedAfter that, the compiler creates INT code for ObjectScript routines. This layer is known as intermediate code. All access to data on this level is provided via globalsINT code is compact and can be read by a human. To view it in the studio, press Ctrl+Shift+V.INT code is used for generating OBJ codeOBJ code is used by the Caché virtual machine. Once it's generated, CLS/MAC/INT code is no longer needed and can be deleted (for example, if we want to ship a product without the source code)If the class is persistent, the SQL compiler will create corresponding SQL tables
Macros
As I mentioned before, a macro is a symbolic name that is replaced by the preprocessor with a set of instructions. A macro is defined with the help of the #Define command followed by the name of the macro (perhaps with a list of arguments) and its value:
#Define Macro[(Args)] [Value]
Where can macros be defined? Either in the code or in standalone INC files containing only macros. The necessary files are included into classes at the very beginning of class definitions using the Include MacroFileName command – this is the main and preferred method of including macros into classes. Macros included this way can be used in any part of a class. You can use the #Include MacroFileName command to include an INC file with macros into MAC routines or the code of particular class methods.
Note, that method generators require #Include inside their own body if you want to use macros at compile time or use of IncludeGenerator keyword in a class.
To make macro available in studio autocomple, add /// on a previous line:
///
#Define Macro[(Args)] [Value]
Examples
Example 1
Let's jump to some examples now, and why don't we start with the standard “Hello World” message? COS code:
Write "Hello, World!"
We'll create a macro called HW that will write this line:
#define HW Write "Hello, World!"
All we need to do now is to write $$$HW ($$$ for calling the macro, then its name):
ClassMethod Test()
{
#define HW Write "Hello, World!"
$$$HW
}
It will be converted into the following INT code during compilation:
zTest1() public {
Write "Hello, World!" }
The following text will be shown in the terminal when this method is called:
Hello, World!
Example 2
Let's use variables in the following example:
ClassMethod Test2()
{
#define WriteLn(%str,%cnt) For ##Unique(new)=1:1:%cnt { ##Continue
Write %str,! ##Continue
}
$$$WriteLn("Hello, World!",5)
}
Here the %str string is written %cnt time. The names of variables must start with %. The ##Unique(new) command creates a new unique variable in the generated code, while the ##Continue command allows us to continue defining the macro on the next line. This code converts into the following INT code:
zTest2() public {
For %mmmu1=1:1:5 {
Write "Hello, World!",!
} }
The terminal will show the following:
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Example 3
Let's proceed to the more complex examples. ForEach operator can be very useful for iterating through globals, let's create it:
ClassMethod Test3()
{
#define ForEach(%key,%gn) Set ##Unique(new)=$name(%gn) ##Continue
Set %key="" ##Continue
For { ##Continue
Set %key=$o(@##Unique(old)@(%key)) ##Continue
Quit:%key=""
#define EndFor }
Set ^test(1)=111
Set ^test(2)=222
Set ^test(3)=333
$$$ForEach(key,^test)
Write "key: ",key,!
Write "value: ",^test(key),!
$$$EndFor
}
Here is how it looks in INT code:
zTest3() public {
Set ^test(1)=111
Set ^test(2)=222
Set ^test(3)=333
Set %mmmu1=$name(^test)
Set key=""
For {
Set key=$o(@%mmmu1@(key))
Quit:key=""
Write "key: ",key,!
Write "value: ",^test(key),!
} }
What is going on in these macros?
Write the name of the global to a new variable %mmmu1 ($name function)The key assumes the initial empty string valueIteration cycle startsNext value to the key is assigned using indirection and the $order functionPost-condition is used to check if the key has assumed a "" value; if it has, the iteration is completed and the cycle endsArbitrary user code is executed – in this case, key and value outputThe cycle closes
The terminal shows the following when this method is called:
key: 1
value: 111
key: 2
value: 222
key: 3
value: 333
If you are using lists and arrays inherited from the %Collection.AbstractIterator class, you can write a similar iterator for it.
Example 4
Yet another capability of macros is the execution of arbitrary ObjectScript code on the compilation stage and substitution of its results instead of a macro. Let's create a macro for showing the compilation time:
ClassMethod Test4()
{
#Define CompTS ##Expression("""Compiled: " _ $ZDATETIME($HOROLOG) _ """,!")
Write $$$CompTS
}
Which transforms into the following INT code:
zTest4() public {
Write "Compiled: 18.10.2016 15:28:45",! }
The terminal will display the following line when this method is called:
Compiled: 18.10.2015 15:28:45
The ##Expression executes the code and substitutes the result. The following elements of the ObjectScript language can be used for input:
Strings: "abc"Routines: $$Label^RoutineClass methods: ##class(App.Test).GetString()COS functions: $name(var)Any combination of these elements
Example 5
Preprocessor directives #If, #ElseIf, #Else, #EndIf are used for selecting the source code during compilation depending on the value of the expression following a directive. For example, this method:
ClassMethod Test5()
{
#If $SYSTEM.Version.GetNumber()="2016.2.0" && $SYSTEM.Version.GetBuildNumber()="736"
Write "You are using the latest released version of Caché"
#ElseIf $SYSTEM.Version.GetNumber()="2017.1.0"
Write "You are using the latest beta version of Caché"
#Else
Write "Please consider an upgrade"
#EndIf
}
Will be compiled into the following INT code in Caché version 2016.2.0.736:
zTest5() public {
Write "You are using the latest released version of Caché"
}
And the following will be shown in the terminal:
You are using the latest released version of Caché
If we use Caché downloaded from the beta-portal, the compiled INT code will look differently:
zTest5() public {
Write "You are using the latest beta version of Caché"
}
The following will be shown in the terminal:
You are using the latest beta version of Caché
Older versions of Caché will compile the following INT code with a suggestion to update the program:
zTest5() public {
Write "Please consider an upgrade"
}
The terminal will show the following text:
Please consider an upgrade
This capability may come in handy, for example, in situations where you want to ensure compatibility of the client application with older and newer versions, where new Caché features may be used. Preprocessor directives #IfDef, #IfNDef serve the same purpose by verifying the existence or absence of a macro, respectively.
Conclusions
Macros can make your code more readable by simplifying frequently used constructions and help you implement some of your application's business logic on the compilation stage, thus reducing the load at runtime.
What's next?
In my next article, I will tell you about a more practical example of using macros in an application – a logging system.
Links
About compilationList of preprocessor directivesList of system macrosClass with examples from this articlePart 2: Logging On the whole a nice job. Three points however.Be careful in saying the .CLS, .MAC code can be deleted. If they ever wish to change their code they will need the classes and possibly the .MAC code.There continues to be a lot of confusion around writing .INT code as a main source. The VA does it all the time. The dangers of this should be pointed out.The differences between .MAC (Macro) Routines and Macros should be explained. Using the term MACRO for code saved as .INC is quite a challenge to beginners working in .MAC and more in .CLSAlways a nice check for a trainer to verify attention of his victims Be careful when using ##Unique.
The problems with scope of generated "unique" variable can introduce weird bugs (in some cases it is not as unique as you would expect; WRC problems 879820 and 879901).
Citing ISC support from WRC 879820:
The problem is that the variable name created by ##Unique is only unique among the set of variables
for that method. However, the variable itself is globally scoped.
Since the variable name is globally scoped, I think the variable names should be unique for the
entire class, not just for the method. I will report this to development. Please note, however,
since the variable is globally scoped, using the preprocessor directive as you are here will leak
information to any code that calls this class. To prevent this, you should NEW the variable prior
to using it:
#define A(%x) NEW #Unique(new) SET #Unique(old)=%x
Also ##Unique directives cannot be used in nested macros (macro calling another macro; WRC 879901).
Article
Yuri Marx · Jun 2, 2020
What is the OData
OData (Open Data Protocol) is an ISO/IEC approved, OASIS standard that defines a set of best practices for building and consuming RESTful APIs. OData helps you focus on your business logic while building RESTful APIs without having to worry about the various approaches to define request and response headers, status codes, HTTP methods, URL conventions, media types, payload formats, query options, etc. OData also provides guidance for tracking changes, defining functions/actions for reusable procedures, and sending asynchronous/batch requests (source: OData.org).
The OData use cases
Deploy data as REST Services with an interoperable format without development effort;
Allows BI, data visualization, ERP, CRM, ESB, Workflow tools and engines consume data using REST without development effort;
Virtualize corporate data in API Management tools;
OData advocates a standard way of implementing REST APIs that allows for SQL-like querying capabilities using these RESTful APIs. OData is essentially SQL for the web built n top of standard protocols – HTTP, JSON & ATOM – while leveraging the REST architecture style (progress.com);
OData has a broad adoption, see:
OData helps to implement FHIR: FHIR, or Fast Healthcare Interoperability Resources Specification, is a standard for exchanging healthcare information electronically. In order to make FHIR truly interoperable, it is recommended that systems use the rules specified by OData specification for the $search parameter. Further, FHIR also uses OAuth in order to establish a trusted relationship with the client for an extra layer of security (progress.com);
OData supports pagination, batch requests and different formats like JSON, ATOM, XML, etc.
OData and InterSystems IRIS
The InterSystems IRIS does not support OData but is possible use the OData Server for InterSystems IRIS to allows expose Persistent classes as REST.
Follow these instructions:
Clone the source code of the IRIS OData Server: git clone https://github.com/yurimarx/isc-iris-odata.git
Go to: isc-iris-odata folder
Execute: mvnw install (MS Windows) or ./mvnw install (linux or mac)
Execute: docker build -t odata:1.0.0 .
Execute: docker run -p 8080:8080 odata:1.0.0. Your OData Server started:
Start your InterSystems IRIS instance with any persistent class, in my ca
In your browser access: http://localhost:8080/. Set parameters on the screen:
This is parameters to my instance. Set the parameters to your IRIS instance. In namespace set your iris namespace, in the schema, the SQL Table schema, and in the port, the port to your JDBC database connection.
Press submit and RELOAD YOUR ODATA SERVER DOCKER INSTANCE TO APPLY PARAMETERS.
Access http://localhost:8080/odata.svc/ to see all persistent classes to your IRIS schema. In my case is:
To navigate to a persistent class browse: http://localhost:8080/odata.svc/<Persistent_Class> e.g.: http://localhost:8080/odata.svc/Animal
The OData server list Animal data, see:
To see in JSON format browse: http://localhost:8080/odata.svc/Animal?$format=application/json. See:
To see details about a row browse: http://localhost:8080/odata.svc/Animal(8)?$format=application/json
To delete send a DELETE in your postman with http://localhost:8080/odata.svc/Animal(8)
To insert send a POST in your postman with http://localhost:8080/odata.svc/Animal and a JSON body with property name and value pairs, like:
So you can do all CRUD operations with your persistent classes.
Many other features will be released in the future, if IRIS OData Server get the community adoption.
Thanks!
Fantastic application, Yuri!
For those who is on Mac you also need to change mvnw to executable:
chmod +x mvnw
Discussion
Timothy Leavitt · Oct 19, 2022
Hello community! I'm working on an internal innovation effort at InterSystems considering our documentation/resources around upgrades. As part of this, I'd love to have your answers to any/all of the following questions, either via comment or (if you prefer your answers to be more private) direct message.
Thanks in advance!
What InterSystems products + versions are you running? ($zv is ideal.)
What makes you decide to upgrade?
What are your blockers to upgrading?
What is your process for evaluating and planning a possible upgrade?
What documentation resources do you use?
What gaps/issues do you see in our existing documentation around upgrades?
What would make your InterSystems software upgrade process better?
What has made an upgrade fail?
When have you had to roll-back? Seeing as I just completed a production upgrade yesterday:
What InterSystems products + versions are you running? ($zv is ideal.)
IRIS for Windows (x86-64) 2022.1 (Build 209U) Tue May 31 2022 12:16:40 EDT [Health:3.5.0]
What makes you decide to upgrade?
New features + security fixes
What are your blockers to upgrading?
Bugs in new releases + being limited to the non-CD releases due to current configuration
What is your process for evaluating and planning a possible upgrade?
Install in our NPE and use the new version, run tests against the most heavily used elements
What documentation resources do you use?
Release notes + any upgrade guides that explicitly call out versions you can/can't upgrade from
What gaps/issues do you see in our existing documentation around upgrades?
It's a small thing, but a link to the release notes from the online distribution page on WRC would be greatly received alongside the release in question.
What would make your InterSystems software upgrade process better?
One step that always bothers me is the need to do a recompile post upgrade, as it's not been made quite clear to me at what stage this needs to be done when working in a mirrored environment. This could be a step handled by the installer given that it should happen with any major version change.
What has made an upgrade fail?
Not to hammer on at the same point, but I did have an upgrade "fail" due to a miscommunication about if the version change was major or minor, and we hadn't run the recompile of all namespaces.
When have you had to roll-back?
Never had to fully roll back, but have had to fall back to a secondary mirror after noting the upgraded mirror was having issues (see above). Otherwise we aim for a "fix forward" approach to issues found following an upgrade.
@Julian.Matthews7786 thanks for the super quick reply!
A follow-up question - do you tend to do maintenance release updates or just jump major versions? Mainly major version jumps unless something is problematic in the version that has ended up in our production environment.
Last jump was 2019.1 to the current 2022.1 and I'm blaming the pandemic on no upgrades between those two releases Thank you - this is a helpful data point too! We have put our upgrade on pause right now due to constraints, but will be starting it back up and hopefully upgrading by March.
What InterSystems products + versions are you running? ($zv is ideal.) We are currently running HealthShare Health Connect 2018.1.3
Cache for UNIX (IBM AIX for System Power System-64) 2018.1.3 (Build 414U) Mon Oct 28 2019 11:24:02 EDTWhat makes you decide to upgrade? Push to move away from AIX and more towards Red Hat for costs, support, additional enhancements and options available to us in IRIS vs 2018.1.3
What are your blockers to upgrading? New network/security policies, new hardware, new OS
What is your process for evaluating and planning a possible upgrade?
What is the benefit to upgrade
What does the new version offer and benefits to the Medical Center
Where is the Medical Center going
What new requirements/policies do we need to address
What is the EOL/EOS for the version we are on
What documentation resources do you use? Release notes, installation requirements and guide
What gaps/issues do you see in our existing documentation around upgrades? While the release notes is nice, but more explanation of what is changing, screen shots, etc...
What would make your InterSystems software upgrade process better?
Lessons Learned Guide to Upgrades
What we should be on the lookout for
Notes on the individual changes to be worked
Dedicated InterSystems contact that could help with any questions or guide us on the upgrade.
Thank you! I've added two more questions at a colleague's suggestion:
What has made an upgrade fail?
When have you had to roll-back? I have added these to my initial response Probably our biggest pain point related to InterSystems software upgrade, and one we have to try and make sure sites using our Deltanji source code management tool are aware of, is that the procedure can result in class dictionaries of remote databases being upgraded to a dictionary version that the instance hosting the databases cannot handle.
Our Deltanji documentation now includes this paragraph in the section about InterSystems platform upgrades:
Before upgrading an InterSystems IRIS, Caché or Ensemble instance we strongly recommend that you first disable all ECP connections the instance makes to other instances. Leave these connections disabled until after you have completed the upgrade, including execution of any post-upgrade steps recommended by InterSystems such as the recompilation of code in all namespaces. These precautions should prevent the upgrading instance from inadvertently upgrading class dictionary entries and routines on remote instances which may still be running an earlier InterSystems platform version. I think docker is ideal for upgrading - just change the line of the docker image or just use the latest.
It may not be the case for production, but for development, docker is a no-brainer IMHO. This is a good point. Fortunately, dictionary version updates are few and far between these days. (They used to happen all the time.) @Evgeny.Shvarov agreed - although it's good to be sure that you're developing on the same version that you're targeting in production.
Question
Oliver Wilms · Nov 28, 2019
Hello,
I work with Ensemble Business Operation with SQL Outbound Adapter. I try to query a DSN defined database that happens to be Cache on the same machine in the same instance of Healthshare 2017.1.3. This worked fine on Linux server when I used JDBC driver. Now I want to run it on my Windows 10 laptop. I set up DSN and I can test connection successfully. I provided DSN in Operation DSN setting and I tried with and without Credential. I get ERROR <Ensd>ErrOutConnectFailed: ODBC Connect failed for 'myDSN' / 'myDSN' with error ERROR #6022: Gateway failed: DSN/User Connect.
I tried to set up SQL Gateway Connection. I choose ODBC. I only see two DSN which were created by install for Samples and User databases.
Any advice is welcome and will be appreciated. I believe I need System DSN, not User DSN. How do I create System DSN? I need to run Control Panel as Administartor? It does not allow me... System DSN and Credential was required. Now it works without error. Thank you You are on the right way.It has to be a SYSTEM DSN.
in win10 clich to startthen click the GEAR symbolnext search for ODBC and you should be there.
OR
search from WINDOWS control panel -> administration -> ODBC data sources (64bit) -> System DSN
Question
Matías Peña · Nov 15, 2019
Hello everyone,
It is my first post in the community. Very recently I started working using IRIS, creating services with Cache.
Today they gave me a new task and I'm really lost.
How can I use an oracle database to create services using iris?
Throughout the day I was looking for a guide to use a remote Oracle database. but unfortunately I only managed the connection in SQL Gateway Yes, no problem.I must create a very simple service. I should only use a procedure that is already created in the Oracle database.I must use that procedure and do a rest service. You can map an Oracle Stored procedure to IRIS method using the SQL Gateway. Once the mapping is done, you can expose it with a service or any other means IRIS provides. Hello, I thought I achieved the connection with the oracle, I was able to call the procedure, but now when I have the procedure in sql, it doesn't throw any data at me. The procedure does not work
Could you give us a bit more details? What kind of services you should create with IRIS and why from Oracle, or how? Have you used JDBC drivers before? I have a couple of connections that I have created through JDBC to connect to Oracle to pull data from an Oracle table to create an HL7 message. Currently we are using the Oracle JDBC driver to connect to the Oracle system.