Search

Clear filter
Announcement
Anastasia Dyubaylo · May 20

Vote for the Best Demo! The InterSystems Demo Games Are On!

Hi Community, We’ve got something exciting for you — it’s time for a new demo video contest, and this time, you’re in the judge’s seat! 📺 Demo Games for InterSystems Sales Engineers 📺 For this contest, InterSystems Sales Engineers from around the world submitted short demo videos showcasing unique use cases, smart solutions, and powerful capabilities of InterSystems technologies. Now it’s your turn! We’re opening up voting to the entire Developer Community. Your insight and perspective as developers make you the perfect experts. 👉 How to participate Watch the demos on the Demo Games Contest Page Vote for your favourite entries (Developer Community login required) 🗓 Contest period Voting is open from May 26 until September 14, 2025, and winners will be announced shortly after. New videos will be added throughout the contest — so keep checking back. You might find a favourite right at the end! ✅ How to vote: All active members who have made a valid contribution to the Developer Community or Open Exchange — such as asking or answering questions, writing articles, or publishing applications — are eligible to vote. This includes customers, partners, and employees who registered using their corporate email addresses. To vote: Log in (or create an account) on the Developer Community Visit the Contest Page Select your top 3 favourite videos and click the “Vote” button for each 🏆 Scoring system: 1st place vote = 9 points 2nd place = 6 points 3rd place = 3 points 🔁 Votes from the Official Community Moderators* count double, so your top picks really matter! * Moderators are indicated by a green circle around their avatar. Let the Demo Games begin – and may the best demo win!
Announcement
Bob Kuszewski · May 21

InterSystems Platforms Update Q2-2025

We have a big update this quarter. RHEL 10 was released yesterday, read on for what that means for you 2025.3 will use OpenSSL 3 across all operating systems  SUSE 15 sp6 will be the minimum OS for orgs using SUSE The minimum CPU standards are going up in 2025.3 Older Windows Server operating systems will no longer be supported in 2025.3 If you’re new to these updates, welcome! This update aims to share recent changes as well as our best current knowledge on upcoming changes, but predicting the future is tricky business and this shouldn’t be considered a committed roadmap. InterSystems IRIS Production Operating Systems and CPU Architectures Minimum Supported CPU Architecture In 2024, InterSystems introduced a minimum supported CPU architecture for all Intel- & AMD-based servers that allows us to take advantage of new CPU instructions to create faster versions of InterSystems IRIS. InterSystems IRIS 2025.3 will update that list to require the x86-64-v3 microarchitecture level, which requires the AVX, AVX2, BMI, and BMI2 instructions. For users with Intel-based systems, this means that Skylake and up will be required while Hasell/Broadwell will not be supported. For users with AMD-based systems, this means that Excavator and up will be required while Piledriver & Steamroller will not be supported. Are you wondering if your CPU will still be supported? We published a handy article on how to look up your CPU’s microarchitecture in 2023. Red Hat Enterprise Linux Upcoming Changes RHEL 10 - Red Hat released RHEL 10 on May 20th. We’ve been testing on the latest beta of RHEL 10 on InterSystems IRIS 2025.1. InterSystems IRIS 2025.1 support – We anticipate officially adding support for RHEL 10 in about a month. That’s assuming the GA version of RHEL 10 doesn’t introduce any significant problems, of course. Moving forward – once we have support for RHEL 10 in InterSystems IRIS, we will stop supporting RHEL 8 on moving forward versions of InterSystems IRIS. This likely means that InterSystems IRIS 2025.2 will just support RHEL 9 & 10. Previous Updates RHEL 9.5 has undergone minor OS certification without incident. Further reading: RHEL Release Page Ubuntu Current Update Ubuntu 24.04.2 has just been released and minor OS certification has begun. Further Reading: Ubuntu Releases Page SUSE Linux Upcoming Changes InterSystems IRIS 2025.3+ will require SUSE Linux Enterprise Server 15 SP6 or greater – SLES 15 sp6 has given us the option to use OpenSSL 3 and, to provide you with the most secure platform possible, we’re going to change InterSystems IRIS to start taking advantage of it. In preparation for moving to OpenSSL 3 in IRIS 2025.3, there will be no IRIS 2025.2 for SUSE. Further Reading: SUSE lifecycle Oracle Linux Upcoming Changes We’re expecting Oracle Linux 10 to be released around the same time as RHEL 10. Since we support Oracle Linux via the IRIS RHEL kit, we’re expecting Oracle Linux 10 support at the same time as RHEL 10 support is released. Further Reading: Oracle Linux Support Policy Microsoft Windows Recent Changes Windows Server 2025 is now supported in InterSystems IRIS 2025.1 and up. Upcoming Changes InterSystems IRIS 2025.3+ will no longer support Windows Server 2016 & 2019. Microsoft has pushed back the anticipated release date for Windows 12 to the fall of 2025. We’ll start the process of supporting the new OS after it’s been released. Further Reading: Microsoft Lifecycle AIX Upcoming Changes IBM is rolling out new Power 11 hardware this summer. We anticipate running the new hardware through the paces over the course of the late summer and early fall. Look for a full update on our findings in the Q4 newsletter. Previous Changes IRIS 2024.3 and up only support OpenSSL 3. NOTE: This means that 2024.2 is the last version of IRIS that has both OpenSSL 1 and OpenSSL 3 kits. In IRIS 2023.3, 2024.1, & 2024.2, we provided two separate IRIS kits – one that supports OpenSSL 1 and one that supports OpenSSL 3. Given the importance of OpenSSL 3 for overall system security, we’ve heard from many of you that you’ve already moved to OpenSSL 3. Further Reading: AIX Lifecycle Containers Previous Updates We changed the container base image from Ubuntu 22.04 to Ubuntu 24.04 with IRIS 2024.2 We’re considering changes to the default IRIS container to, by default, have internal traffic (ECP, Mirroring, etc) on a different port from potentially externally facing traffic (ODBC, JDBC, etc). If you have needs in this area, please reach out and let me know. InterSystems IRIS Development Operating Systems and CPU Architectures MacOS Recent Changes IRIS 2025.1 adds support for MacOS 15 on both ARM- and Intel-based systems. InterSystems Components Upcoming Releases InterSystems API Manager 3.10 will be released soon. InterSystems Kubernetes Operator 3.8 will be released in the coming weeks as well. Caché & Ensemble Production Operating Systems and CPU Architectures Previous Updates A reminder that the final Caché & Ensemble maintenance releases are scheduled for Q1-2027, which is coming up sooner than you think. See Jeff’s excellent community article for more info. InterSystems Supported Platforms Documentation The InterSystems Supported Platforms documentation is the definitive source information on supported technologies. IRIS 2025.1 Supported Server Platforms IRIS 2024.1 Supported Server Platforms IRIS 2023.1 Supported Server Platforms Caché & Ensemble 2018.1 Supported Server Platforms … and that’s all folks. Again, if there’s something more that you’d like to know about, please let us know. IBM POWER supported processors continues the same as POWER 8 or later? That's right. There's no planned change in supported POWER processors. IBM does a good job of phasing out older processors with new versions of the OS. According to Wikipedia x86-64-v3 microarchitecture level is Intel Haswell and newer.Intel Skylake and newer is x86-64-v4 microarchitecture level.
Announcement
Anastasia Dyubaylo · Dec 12, 2022

InterSystems Developer Ecosystem Fall News 2022

Hello and welcome to the Developer Ecosystem Fall News! This fall we've had so much fun and activities online and offline in the InterSystems Developer Ecosystem. In case you missed something, we've prepared for you a selection of the hottest news and topics to catch up on! News 🫂 InterSystems Developer Ecosystem Team 📊 Online Analytics Dashboard for Community Members 🎃 Halloween season on Global Masters 🔗 Developer Connections on GM 💡 InterSystems Ideas News 🔥 Back to school on FHIR with DC FR 🎉 InterSystems a Leader in Latest Forrester Wave Report: Translytical Data Platforms Q4 2022 📝 Updated Learning Path "Getting Started with InterSystems ObjectScript" ✅ InterSystems IRIS System Administration Specialist Certification Exam is now LIVE 📦 ZPM is now InterSystems Package Manager (IPM) Contests & Events InterSystems Interoperability Contest: Building Sustainable Solutions Contest Announcement Kick-off Webinar Technology Bonuses Time to Vote Technical Bonuses Results Winners Announcement Meetup with Winners Your Feedback InterSystems IRIS for Health Contest: FHIR for Women's Health Contest Announcement Kick-off Webinar Technology Bonuses Time to Vote Technical Bonuses Results Winners Announcement Community Roundtables 1. VSCode vs Studio 2. Best Source Control 3. Developing with Python InterSystems Idea-A-Thon Contest Announcement Winners Announcement 📄 [DC Contest] 1st Tech Article Contest on Chinese Developer Community ⏯ [Webinar] What’s New in InterSystems IRIS 2022.2 ⏯ [Webinar] Building and Enabling Healthcare Applications with HL7 FHIR ⏯ [Webinar] Deployments in Kubernetes with High Availability 👥 [Conference] InterSystems Iberia Summit 2022 👥 [Conference] InterSystems UK & Ireland Summit 2022 👥 [Conference] InterSystems at Big Data Minds DACH 2022 in Berlin 👥 [Conference] InterSystems Partnertage DACH 2022 👥 [Conference] InterSystems at data2day 👥 [Conference] InterSystems at Global DevSlam in Dubai 👾 [Hackathon] InterSystems at HackMIT 👾 [Hackathon] InterSystems at CalHacks hackathon 👾 [Hackathon] InterSystems at TechCrunch Disrupt 👾 [Hackathon] InterSystems at the European Healthcare Hackathon in Prague ☕️ [Meetup] InterSystems Developer Meetup in San Francisco ☕️ [Meetup] The 1st Spanish Developer Community Meetup in Valencia ☕️ [Meetup] InterSystems <> Mirantis Developer Meetup on Kubernetes in Boston 👋 InterSystems FHIR Healthtech Incubator Caelestinus Final Demo Day Latest Releases ⬇️ Developer Community Release, September 2022 ⬇️ Open Exchange - ObjectScript Quality status ⬇️ New Multi-Channel View on Global Masters ⬇️ InterSystems IRIS, IRIS for Health, HealthShare Health Connect, & InterSystems IRIS Studio 2022.2 ⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1.1 ⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.3 developer previews Preview 1 Preview 2 ⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.2 developer previews Preview 7 Preview 8 Preview 9 Preview 10 ⬇️ InterSystems Package Manager Release 0.5.0 Release 0.4.0 ⬇️ InterSystems extension for Docker Desktop ⬇️ VS Code Server Manager 3.2.1 ⬇️ SAM (System Alerting & Monitoring) 2.0 ⬇️ InterSystems Container Registry web user interface Best Practices & Key Questions 🔥 Best Practices of Autumn 2022 GitHub Codespaces with IRIS Using Grafana directly from IRIS Uploading and downloading files via http Adding VSCode into your IRIS Container Reading AWS S3 data on COVID as SQL table in IRIS IRIS Embedded Python with Azure Service Bus (ASB) use case BILLIONS - Monetizing the InterSystems FHIR® with Google Cloud's Apigee Edge Let's fight against the machines! Top 10 InterSystems IRIS Features The way to launch Jupyter Notebook + Apache Spark + InterSystems IRIS Apache Web Gateway with Docker ❓ Key Questions of Autumn 2022: September, October, November People and Companies to Know About 👋 Muhammad Waseem - New Developer Community Moderator 👋 Tete Zhang - New Developer Community Moderator 👋 New Partner - PainChek® Ltd 🌟 Global Masters of Autumn 2022: September, October, November Job Opportunities 💼 InterSystems HealthShare Architect (Remote Opportunity) 💼 InterSystems HealthShare Practice Lead (Remote Opportunity) 💼 REMOTE InterSystems Object Developer with Docker Experience 💼 Integration Developer OR Business Analyst with IRIS/Ensemble 💼 Looking for InterSystems Developer So... Here is our take on the most interesting and important things! What were your highlights from this past season? Share them in the comments section and let's remember the fun we've had! @Anastasia.Dyubaylo, I am always amazed at what you and your team accomplishes ... great work! As usual, lots of things are going on in the Community! Thanks, Ben! Glad to hear! Your feedback is always greatly appreciated :) Even more ahead ;)
Article
Stefan Cronje · Jan 25, 2023

InterSystems IRIS Persistent Class Audit Package

Hi folks, I am announcing a new package I have loaded on the OEX, which I am also planning on entering into the contest this month. In a nutshell, what it offers you are the following. Base classes to use on Persistent (table) classes for InterSystems IRIS to keep record history These classes enable the historizing of persistent class records into another persistent class when touched. This provides for a full history of any record. It allows for record rollback to a specific version. It can automatically purge old history records. Do you need it? Have you ever had the scenario where a data fix has gone terribly wrong, and you need to roll back the update?Have you ever tried to find out what or who updated or inserted a specific record?Have you ever needed to find out what has happened to a record over its lifetime? You can get all this now, by simply extending from two classes. What this article covers is what it offers. The package contains all the instructions needed, and there are only a few. The Basics The table that contains the "current" record have two sets of fields Create This contains the details of when the entry was created and is immutable. Update This contains the information of the last time the record was updated. The table that contains the history records have three sets of fields Create This is copied as is from the current record when inserted. Update This is copied as is from the current record when inserted. Historize This contains details on the historization entry on insertion, and is immutable. Each of the sets above contain the following fields: Name Content DateTimeStamp The system's date and time Job The PID value ($JOB) SystemUser The system user performing the action. $USERNAME BusinessHost The interoperability business host that was involved, if available. ClientIP The client's IP address that instructed this, if available. CSPSessionID The CSP Session ID that was involved, if available. Routine The calling routing. This can really help pinpoint where in the code this originated from. The "current" record table has a Version property, and this is set when extending from the base class.The history racoed table has a Version property, which is the version that the "current" record was at that point. What can it historize? Serial Properties "Normal" Properties Class References Arrays of Data types Lists of Data types Arrays of Objects Lists of Objects Relationship - where cardinality is "one" Note that in this case, the history table's prpperty must be an object reference and not a relationship. What can't it historize? Relationships where the cardinality is "many" What about my other triggers? The triggers activate in order slot number 10. This means you can add your triggers before or after the execution of these triggers. Additional Functionality Record historization can be switched off for a specific table by setting a global. This is to cater for bulk updates where is the history is not required, for example, populating a new field during a deployment. An auto purge setting can be set per table in a global. If you have a table that does get a lot of updates, and you only need the previous two records for example, you can set it to keep the last two records in hte history and remove the older ones. This happens during the historization of the record. Restoring Previous Versions The base classes will generate methods in the "current" record class that can be used to restore a specific version, or the previous version, back into the current table.These can be invoked via SQL too, if you need to restore from a selection of rows. Note that the restored record will bump the version number on the "current" table and will not have its old version number, which is probably a good thing. Congrats on your first entry to our contests on Open Exchange! good luck :) Hi Stefan, Your video is now on InterSystems Developers YouTube: ⏯ IRIS Table Audit Demo
Article
Rizmaan Marikar · Mar 20, 2023

InterSystems Embedded Python with Pandas - Part 1

Introduction Data analytics is a crucial aspect of business decision-making in today's fast-paced world. Organizations rely heavily on data analysis to make informed decisions and stay ahead of the competition. In this article, we will explore how data analytics can be performed using Pandas and Intersystems Embedded Python. We will discuss the basics of Pandas, the benefits of using Intersystems Embedded Python, and how they can be used together to perform efficient data analytics. What's Pandas for? Pandas is a versatile tool that can be used for a wide range of tasks, to the point where it may be easier to list what it cannot do rather than what it can do. Essentially, pandas serves as a home for your data. It allows you to clean, transform, and analyze your data to gain familiarity with it. For instance, if you have a dataset saved in a CSV file on your computer, pandas can extract the data into a table-like structure called a DataFrame. With this DataFrame, you can perform various tasks such as: Calculating statistics and answering questions about the data such as finding the average, median, maximum, or minimum of each column, determining if there is correlation between columns, or exploring the distribution of data in a specific column. Cleaning the data by removing missing values or filtering rows and columns based on certain criteria. Visualizing the data with the help of Matplotlib, which enables you to plot bars, lines, histograms, bubbles, and more. Storing the cleaned and transformed data back into a CSV, database, or another type of file. Before delving into modeling or complex visualizations, it's essential to have a solid understanding of your dataset's nature, and pandas provides the best way to achieve this understanding. Benefits of using Intersystems Embedded Python Intersystems Embedded Python is a Python runtime environment that is embedded within the Intersystems data platform. It provides a secure and efficient way to execute Python code within the data platform, without having to leave the platform environment. This means that data analysts can perform data analytics tasks without having to switch between different environments, resulting in increased efficiency and productivity. Combining Pandas and Intersystems Embedded Python By combining Pandas and Intersystems Embedded Python, data analysts can perform data analytics tasks with ease. Intersystems Embedded Python provides a secure and efficient runtime environment for executing Python code, while Pandas provides a powerful set of data manipulation tools. Together, they offer a comprehensive data analytics solution for organizations. Installing Pandas. Install a Python Package To use Pandas with InterSystems Embedded Python, you'll need to install it as a Python package. Here are the steps to install Pandas: Open a command prompt as Administrator mode (on Windows). Navigate to the <installdir>/bin directory in the command prompt. Run the following command to install Pandas: irispip install --target <installdir>\mgr\python pandas This command installs Pandas into the <installdir>/mgr/python directory, which is recommended by InterSystems. Note that the exact command may differ depending on the package you're installing. Simply replace pandas with the name of the package you want to install. That's it! Now you can use Pandas with InterSystems Embedded Python. irispip install --target C:\InterSystems\IRIS\mgr\python pandas Now that we have Pandas installed, we can start working with the employees dataset. Here are the steps to read the CSV file into a Pandas DataFrame and perform some data cleaning and analysis: First Lets create a new instance of python Set python = ##class(%SYS.Python).%New() Import Python Libraries, in this case i will be importing pandas and builtins Set pd = python.Import("pandas") #;To import the built-in functions that are part of the standard Python library Set builtins = python.Import("builtins") Importing data into the pandas library There are several ways to read data into a Pandas DataFrame using InterSystems Embedded Python. Here are three common methods.I am using the following sample file as a example. Read data from a CSV. Use read_csv() with the path to the CSV file to read a comma-separated values Set df = pd."read_csv"("C:\InterSystems\employees.csv") Importing text files Reading text files is similar to CSV files. The only nuance is that you need to specify a separator with the sep argument, as shown below. The separator argument refers to the symbol used to separate rows in a DataFrame. Comma (sep = ","), whitespace(sep = "\s"), tab (sep = "\t"), and colon(sep = ":") are the commonly used separators. Here \s represents a single white space character. Set df = pd."read_csv"("employees.txt",{"sep":"\s"}) Importing Excel files To import Excel files with a single sheet, the "read_excel()" function can be used with the file path as input. For example, the code df = pd.read_excel('employees.xlsx') reads an Excel file named "diabetes.xlsx" and stores its contents in a DataFrame called "df". Other arguments can also be specified, such as the header argument to determine which row becomes the header of the DataFrame. By default, header is set to 0, which means the first row becomes the header or column names. If you want to specify column names, you can pass a list of names to the names argument. If the file contains a row index, you can use the index_col argument to specify it. It's important to note that in a pandas DataFrame or Series, the index is an identifier that points to the location of a row or column. It labels the row or column of a DataFrame and allows you to access a specific row or column using its index. The row index can be a range of values, a time series, a unique identifier (e.g., employee ID), or other types of data. For columns, the index is usually a string denoting the column name. Set df = pd."read_excel"("employees.xlsx") Importing Excel files (multiple sheets) Reading Excel files with multiple sheets is not that different. You just need to specify one additional argument, sheet_name, where you can either pass a string for the sheet name or an integer for the sheet position (note that Python uses 0-indexing, where the first sheet can be accessed with sheet_name = 0) #; Extracting the second sheet since Python uses 0-indexing Set df = pd."read_excel"("employee.xlsx", {"sheet_name":"1"}) Read data from a JSON. Set df = pd."read_json"("employees.json") Lets look at the data in the dataframe. How to view data using .head() and .tail() For this we can use the builtins library which we imported (ZW works too ) do builtins.print(df.head()) Let's list all the columns on the dataset Do builtins.print(df.columns) Lets Cleanup the data Convert the "Start Date" column to a datetime object. Set df."Start Date" = pd."to_datetime"(df."Start Date") the updated dataset looks as follows. Convert the 'Last Login Time' column to a datetime object Set df."Last Login Time" = pd."to_datetime"(df."Last Login Time") Fill in missing values in the 'Salary' column with the mean salary Set meanSal = df."Salary".mean() Set df."Salary" = df."Salary".fillna(meanSal) Perform Some Analysis. Calculate the average salary by gender. Do builtins.print(df.groupby("Gender")."Salary".mean()) Calculate the average bonus percentage by team. Do builtins.print(df.groupby("Team")."Bonus %".mean()) Calculate the number of employees hired each year. Do builtins.print(df."Start Date".dt.year."value_counts"()."sort_index"()) Calculate the number of employees by seniority status. Do builtins.print(df."Senior Management"."value_counts"()) Outputting data in pandas Just as pandas can import data from various file types, it also allows you to export data into various formats. This happens especially when data is transformed using pandas and needs to be saved locally on your machine. Below is how to output pandas DataFrames into various formats. Outputting a DataFrame into a CSV file A pandas DataFrame (here we are using df) is saved as a CSV file using the ."to_csv"() method. do df."to_csv"("C:\Intersystems\employees_out.csv") Outputting a DataFrame into a JSON file Export DataFrame object into a JSON file by calling the ."to_json"() method. do df."to_json"("C:\Intersystems\employees_out.json") Outputting a DataFrame into an Excel file Call ."to_excel"() from the DataFrame object to save it as a “.xls” or “.xlsx” file. do df."to_excel"("C:\Intersystems\employees_out.xlsx") Let's create a basic bar chart that shows the number of employees hired each year. for this i am using matplotlib.pyplot //import matplotlib Set plt = python.Import("matplotlib.pyplot") //create a new dataframe to reprecent the bar chart set df2 = df."Start Date".dt.year."value_counts"()."sort_index"().plot.bar() //export the output to a png do plt.savefig("C:\Intersystems\barchart.png") //cleanup do plt.close() That's it! With these simple steps, you should be able to read in a CSV file, clean the data, and perform some basic analysis using Pandas in InterSystems Embedded Python. Video You are now able to access the video by utilizing the link provided below. The video itself serves as a comprehensive overview and elaboration of the above tutorial.https://youtu.be/hbRQszxDTWU Conclusion The tutorial provided only covers the basics of what pandas can do. With pandas, you can perform a wide range of data analysis, visualization, filtering, and aggregation tasks, making it an invaluable tool in any data workflow. Additionally, when combined with other data science packages, you can build interactive dashboards, develop machine learning models to make predictions, automate data workflows, and more. To further your understanding of pandas, explore the resources listed below and accelerate your learning journey. Disclaimer It is important to note that there are various ways of utilizing Pandas with InterSystems. The article provided is intended for educational purposes only, and it does not guarantee the most optimal approach. As the author, I am continuously learning and exploring the capabilities of Pandas, and therefore, there may be alternative methods or techniques that could produce better results. Therefore, readers should use their discretion and exercise caution when applying the information presented in the article to their respective projects. Great article, if your are looking for an approach without objectscript and making use of "irispyhton", check this code : python code : ```python import pandas as pd from sqlalchemy import create_engine,types engine = create_engine('iris+emb:///') df = pd.read_csv("/irisdev/app/notebook/Notebooks/date_panda.csv") # change type of FullDate to date df['FullDate'] = pd.to_datetime(df['FullDate']) df.head() df.to_sql('DateFact', engine, schema="Demo" ,if_exists='replace', index=True, dtype={'DayName': types.VARCHAR(50), 'FullDate': types.DATE, 'MonthName': types.VARCHAR(50), 'MonthYear': types.INTEGER, 'Year': types.INTEGER}) ``` requirements.txt : ``` pandas sqlalchemy==1.4.22 sqlalchemy-iris==0.5.0 irissqlcli ``` date_panda.csv ``` ID,DayName,FullDate,MonthName,MonthYear,Year 1,Monday,1900-01-01,January,190001,1900 2,Tuesday,1900-01-02,January,190001,1900 3,Wednesday,1900-01-03,January,190001,1900 4,Thursday,1900-01-04,January,190001,1900 5,Friday,1900-01-05,January,190001,1900 6,Saturday,1900-01-06,January,190001,1900 7,Sunday,1900-01-07,January,190001,1900 8,Monday,1900-01-08,January,190001,1900 9,Tuesday,1900-01-09,January,190001,1900 ``` @Guillaume.Rongier7183 that’s awesome thank you for sharing, will check this out. Hi Rizman, Your video is available on InterSystems Developers YouTube: ⏯Pandas with embedded python Thank you! 💡 This article is considered as InterSystems Data Platform Best Practice. Avec l'approche Python, je rencontre l'erreur suivante :ERREUR <Ens>ErrCanNotAcquireJobRootLock: Impossible d'obtenir un verrouillage pour l'enregistrement de la globale Ci-dessous le code implémenté :import pandas as pdfrom sqlalchemy import create_engine, types class FileOperationEmbedded(BusinessOperation): tablename = None engine = None def on_init(self): if not hasattr(self, "dsnIris"): self.dnsIris = 'iris+emb:///' if not hasattr(self, "schema"): self.schema = 'Toto' self.engine = create_engine(self.dnsIris) return None def on_message(self, request:DFrameRequest): df = pd.DataFrame(request.dframe.col) for row in request.dframe.col: df = pd.DataFrame.from_dict(row, orient='index').T.reset_index(drop=True) try: df.to_sql(name=self.tablename, con=self.engine, if_exists='append', index=False, schema=self.schema, dtype={'id': types.INTEGER, 'col_type': types.VARCHAR(50), 'col_center': types.VARCHAR(50), 'col_name': types.VARCHAR(50), 'col_issue_name': types.VARCHAR(50), 'col_model': types.VARCHAR(50), 'col_treatment': types.VARCHAR(50), 'source': types.VARCHAR(50), 'filename': types.VARCHAR(100), 'created_at': types.TIMESTAMP}) except Exception as e: self.log_info(f"Une erreur s'est produite : {e}") return NoneAvez-vous une idée d'où pourrait provenir l'erreur et quel la marche suivre pour résoudre le problème ? As it's a question written in French, I've moved it here. I'll also try to answer it in English. Hi, I can't reproduce your error. I'm missing some information. What I have done so far is : - adding the missing imports - adding the missing class DFrameRequest - i suppose it is a dataclass with a field named dframe of type pd.DataFrame - i suppose it is a subclass of Message - i have added a main function to run the code - i'm not sure of the format of the dataframe and the data in it ```python from dataclasses import dataclass import pandas as pd from grongier.pex import BusinessOperation,Message from sqlalchemy import create_engine, types @dataclass class DFrameRequest(Message): dframe: pd.DataFrame class FileOperationEmbedded(BusinessOperation): tablename = None engine = None def on_init(self): if not hasattr(self, "dsnIris"): self.dnsIris = 'iris+emb:///' if not hasattr(self, "schema"): self.schema = 'Toto' self.engine = create_engine(self.dnsIris) return None def on_message(self, request:DFrameRequest): df = pd.DataFrame(request.dframe.col) for row in request.dframe.col: df = pd.DataFrame.from_dict(row, orient='index').T.reset_index(drop=True) try: df.to_sql(name=self.tablename, con=self.engine, if_exists='append', index=False, schema=self.schema, dtype={'id': types.INTEGER, 'col_type': types.VARCHAR(50), 'col_center': types.VARCHAR(50), 'col_name': types.VARCHAR(50), 'col_issue_name': types.VARCHAR(50), 'col_model': types.VARCHAR(50), 'col_treatment': types.VARCHAR(50), 'source': types.VARCHAR(50), 'filename': types.VARCHAR(100), 'created_at': types.TIMESTAMP}) except Exception as e: self.log_info(f"Une erreur s'est produite : {e}") return None if __name__ == '__main__': # create a new instance of the business operation bo = FileOperationEmbedded() # initialize the business operation bo.on_init() # create a new message msg = DFrameRequest(pd.DataFrame()) msg.dframe.col = [ {'id': 1, 'col_type': 'type1', 'col_center': 'center1', 'col_name': 'name1', 'col_issue_name': 'issue1', 'col_model': 'model1', 'col_treatment': 'treatment1', 'source': 'source1', 'filename': 'file1', 'created_at': '2021-10-01 00:00:00'}, {'id': 2, 'col_type': 'type2', 'col_center': 'center2', 'col_name': 'name2', 'col_issue_name': 'issue2', 'col_model': 'model2', 'col_treatment': 'treatment2', 'source': 'source2', 'filename': 'file2', 'created_at': '2021-10-02 00:00:00'} ] # send the message to the business operation bo.on_message(msg) print("Done") ``` Then, from your code I can see the following issues : - you are using the same variable name for the dataframe and the list of rows - the variable `self.tablename` is not initialized - the name `FileOperationEmbedded` it's maybe not the best name for your class as it is not a file operation - why are you using a for loop to iterate over the rows of the dataframe ? I have modified your code to fix these issues : ```python from dataclasses import dataclass import pandas as pd from grongier.pex import BusinessOperation,Message from sqlalchemy import create_engine, types @dataclass class DFrameRequest(Message): dframe: pd.DataFrame class IrisSqlAlchmyEmbedded(BusinessOperation): tablename = None engine = None def on_init(self): if not hasattr(self, "dsnIris"): self.dnsIris = 'iris+emb:///' if not hasattr(self, "schema"): self.schema = 'Toto' if not hasattr(self, "tablename") or self.tablename is None: self.tablename = 'mytable' self.engine = create_engine(self.dnsIris) return None def on_message(self, request:DFrameRequest): try: request.dframe.to_sql(name=self.tablename, con=self.engine, if_exists='append', index=False, schema=self.schema, dtype={'id': types.INTEGER, 'col_type': types.VARCHAR(50), 'col_center': types.VARCHAR(50), 'col_name': types.VARCHAR(50), 'col_issue_name': types.VARCHAR(50), 'col_model': types.VARCHAR(50), 'col_treatment': types.VARCHAR(50), 'source': types.VARCHAR(50), 'filename': types.VARCHAR(100), 'created_at': types.TIMESTAMP}) except Exception as e: print(f"Une erreur s'est produite : {e}") return None if __name__ == '__main__': # create a new instance of the business operation bo = IrisSqlAlchmyEmbedded() # initialize the business operation bo.on_init() # create a new message msg = DFrameRequest(pd.DataFrame([ {'id': 1, 'col_type': 'type1', 'col_center': 'center1', 'col_name': 'name1', 'col_issue_name': 'issue1', 'col_model': 'model1', 'col_treatment': 'treatment1', 'source': 'source1', 'filename': 'file1', 'created_at': '2021-10-01 00:00:00'}, {'id': 2, 'col_type': 'type2', 'col_center': 'center2', 'col_name': 'name2', 'col_issue_name': 'issue2', 'col_model': 'model2', 'col_treatment': 'treatment2', 'source': 'source2', 'filename': 'file2', 'created_at': '2021-10-02 00:00:00'} ])) # send the message to the business operation bo.on_message(msg) print("Done") ```
Article
Shanshan Yu · Apr 19, 2023

InterSystems IntegratedML-Height and weight prediction

With the improvement of living standards, people pay more and more attention to physical health. And the healthy development of children has become more and more a topic of concern for parents. The child's physical development can be reflected from the child's height and weight. Therefore, it is of great significance to predict the height and weight in a timely manner. Pay attention to the child's developmental state through scientific prediction and comparison. The project uses InterSystems IRIS Cloud SQL to support by entering a large number of weight and height related data, and establishes AutoML based on IntegratedML for predictive analysis. According to the input parent height, it can quickly predict the future height of children, and judge whether the child's body mass index is based on the current height and weight status. In the normal range. Key Applications: InterSystems IRIS Cloud SQL, IntegratedML Function: By applying this program, the height of children in normal developmental state can be quickly predicted. Through the results, parents can judge whether the child's development is normal and whether clinical intervention is required, which will help to understand the child's future height; through the current weight status Determine whether the current child's BMI is normal and understand the child's current health status. Application Scenario 1. Children's height prediction 2. Monitoring of child development Application Principles The client and server of the application were completed using Vue and Java respectively, while the database was completed using InterSystems Cloud SQL, a cloud database platform from Intersystems. ***The main prediction function of the application uses the Integrated ML of InterSystems Cloud SQL. It effectively helped me quickly create and train data models, and successfully implemented prediction functions. Test Flow ① Select the module ② Fill in the relevant data. If there is adult sibling data, you can click add to fill in the information. ③ Click Submit and wait for the prediction result to appear in a while.
Article
Vadim Aniskin · Apr 28, 2023

How to create a new idea on InterSystems Ideas

Hey Community! Here is a short article on how to create an idea on InterSystems Ideas. 0. Register on Ideas Portal if you aren't a member yet or log in. You can easily register using your InterSystems Developer Community ID. 1. Read carefully Portal Guide page on the Ideas Portal, especially "Idea promotion rules" section. All posted ideas are moderated following these rules. 2. Click on the "Add a new idea" button and you will see the form to add the idea. 3. First, provide a one-sentence summary of the idea which is the required field. When you start typing, you will see a list of ideas with similar words in their names or tags. In case a similar idea is already created, vote or comment on this idea. The optimal size of an idea summary is 4-12 words. 4. Next, describe the idea in the "Please add more details" field. In addition to text, you can attach screenshots or other files and insert tables and links. There is a full-screen mode that helps you see the whole description of your idea without scrolling. 5. Then you need to fill in the required field "Category". The correct category will help to assign your idea to the appropriate expert in the InterSystems team. In case you first sorted ideas by category and then pushed the button "Add a new idea", the idea's category will be added automatically. 6. Optionally, you can add tags to your idea, so other users can find it easily based on tags. The list of tags starts with tags having an "InterSystems" title, all other tags are sorted in alphabetical order. 7. Click on "Add idea" to submit. Hope this helps you share your ideas with others! If you have any questions, please send a direct message to @Vadim.Aniskin. --------------------- * Please take into account that ideas and comments should be in English.* Ideas Portal admins can ask questions using Developer Community direct messages to clarify the idea and its category. Please answer these questions to make your idea visible to all users.* When you create an idea you automatically subscribe to e-mail notifications related to your idea, including: changes in the status of your idea comments on your idea posted by portal admins (you don't get notifications about comments from other users)
Announcement
Raj Singh · Nov 8, 2022

ZPM is now InterSystems Package Manager (IPM)

I'm pleased to announce a milestone in the lifecycle of the ObjectScript package manager, ZPM. The package manager has offered developers the ability to neatly package up ObjectScript code and deployment configuration settings and version information in a convenient way. Over the last few years, it has evolved greatly into an integral part of many development workflows. It has proven so important that InterSystems has decided to use it for packaging our own components, and that has led us to a decision to move the GitHub repository from the community into our corporate one, and rename it InterSystems Package Manager (IPM). IPM will still be open source. Community members will be able to review the code and submit pull requests. But this change gives us the ability to ensure the security of the software in a way we could not with non-employees being able to make changes to the code base directly. And a heightened level of security and trust is key with software that can install code alongside your data. So please celebrate the life of ZPM with me, welcome the birth of IPM, and give thanks to the contributors -- especially Nikolay Soloviev and @Dmitry.Maslennikov, who has once again shown amazing insight into developer needs, coupled with the skills and dedication to build great software! --- https://github.com/intersystems/ipm This is super exciting and I look forward to seeing what's next! Exciting news! absolutely! Great work - long time coming and well worth it!!! Good to see this. Minor nit is the Info panel at https://openexchange.intersystems.com/package/ObjectScript-Package-Manager still has some links pointing to the old intersystems-community repo. They forward correctly but deserve to be updated anyway. Will this change the commands from zpm to ipm? Nope, it's it will require changes in the language itself. And I'm sure there is no reasons for it. Thanks a lot to all the contributors and to the community that supported with feedback, pull-requests and which adopted broadly the tool! Currently there are 250+ packages published on OEX, at least 300+ developers who install packages every month, and the amount of installed packages is above 2,000 every month. Thank you! my review on OEX now shows also if the package supports IPMall 19 reviews have been updated thank you so much for your efforts on this @Robert.Cemper1003 !!
Announcement
Anastasia Dyubaylo · Feb 6, 2023

Time to vote in InterSystems Developer Tools Contest

Hi Community, It's voting time! Cast your votes for the best applications in our InterSystems Developer Tools Contest: 🔥 VOTE FOR THE BEST APPS 🔥 How to vote? Details below. Experts nomination: InterSystems experienced jury will choose the best apps to nominate the prizes in the Experts Nomination. Please welcome our experts: ⭐️ @akoblov, Support Specialist⭐️ @Guillaume.Rongier7183, Sales Engineer⭐️ @Eduard.Lebedyuk, Senior Cloud Engineer⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Timothy.Leavitt, Development Manager⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager⭐️ @Dean.Andrews2971, Head of Developer Relations⭐️ @Alex.Woodhead, Technical Specialist⭐️ @Andreas.Dieckow , Principal Product Manager⭐️ @Aya.Heshmat, Product Specialist⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Robert.Kuszewski, Product Manager⭐️ @Carmen.Logue , Product Manager⭐️ @Jeffrey.Fried, Director of Product Management⭐️ @Luca.Ravazzolo, Product Manager⭐️ @Raj.Singh5479, Product Manager⭐️ @Patrick.Jamieson3621, Product Manager⭐️ @Stefan.Wittmann, Product Manager⭐️ @Steven.LeBlanc, Product Specialist⭐️ @tomd, Product Specialist Community nomination: For each user, a higher score is selected from two categories below: Conditions Place 1st 2nd 3rd If you have an article posted on DC and an app uploaded to Open Exchange (OEX) 9 6 3 If you have at least 1 article posted on DC or 1 app uploaded to OEX 6 4 2 If you make any valid contribution to DC (posted a comment/question, etc.) 3 2 1 Level Place 1st 2nd 3rd VIP Global Masters level or ISC Product Managers 15 10 5 Ambassador GM level 12 8 4 Expert GM level or DC Moderators 9 6 3 Specialist GM level 6 4 2 Advocate GM level or ISC Employees 3 2 1 Blind vote! The number of votes for each app will be hidden from everyone. Once a day we will publish the leaderboard in the comments to this post. The order of projects on the contest page will be as follows: the earlier an application was submitted to the competition, the higher it will be on the list. P.S. Don't forget to subscribe to this post (click on the bell icon) to be notified of new comments. To take part in the voting, you need: Sign in to Open Exchange – DC credentials will work. Make any valid contribution to the Developer Community – answer or ask questions, write an article, contribute applications on Open Exchange – and you'll be able to vote. Check this post on the options to make helpful contributions to the Developer Community. If you changed your mind, cancel the choice and give your vote to another application! Support the application you like! Note: contest participants are allowed to fix the bugs and make improvements to their applications during the voting week, so don't miss and subscribe to application releases! quite interesting.OEX was unreachable just now for some timeand now my previous voting is gone.no problem, I still remember.It's a warning to other early voters. Since the beginning of the voting we have the results: Expert Nomination, Top 5 OpenAPI-Suite by @Lorenzo.Scalese irissqlcli by @Dmitry.Maslennikov iris-tripleslash by @henry Intersystems IRIS platform queue trend monitoring component by @yubo.mao message_key_query by @wang.zhe ➡️ Voting is here. Community Nomination, Top 5 Intersystems IRIS platform queue trend monitoring component by @yubo.mao iris-tripleslash by @henry message_key_query by @wang.zhe DX Jetpack for VS Code by @John.Murray OpenAPI-Suite by @Lorenzo.Scalese ➡️ Voting is here. So, the voting continues. Please support the application you like! Wow thanks Robert,Thank you for bringing to our attention the issue with the votes during the downtime of the OEx website. As soon as we got down alerts we started working to resolve the problem and get OEx back up and running. But the good news here is that OEx has been gaining popularity, and we understood that this has put additional strain on our server resources. Rest assured that we have taken this into consideration while fixing the issue. At the moment we have next results: Expert Nomination, Top 5 irissqlcli by @Dmitry Maslennikov OpenAPI-Suite by @Lorenzo Scalese iris-tripleslash by @Henry Pereira iris-geo-map by @Muhammad.Waseem IRIS Data Migration Manager by @Oleh.Dontsov ➡️ Voting is here. Community Nomination, Top 5 iris-tripleslash by @Henry Pereira Intersystems IRIS platform queue trend monitoring component by @Yubo Mao irissqlcli by @Dmitry Maslennikov OpenAPI-Suite by @Lorenzo Scalese message_key_query by @王喆 ➡️ Voting is here. Don't forget to vote for your favorite app! Please check out today's voting results: Expert Nomination, Top 5 irissqlcli by @Dmitry Maslennikov OpenAPI-Suite by @Lorenzo Scalese iris-geo-map by @Muhammad Waseem iris-tripleslash by @Henry Pereira iris-log-viewer by @Oliver.Wilms ➡️ Voting is here. Community Nomination, Top 5 iris-tripleslash by @Henry Pereira Intersystems IRIS platform queue trend monitoring component by @Yubo Mao irissqlcli by @Dmitry Maslennikov OpenAPI-Suite by @Lorenzo Scalese message_key_query by @王喆 ➡️ Voting is here. Developers! Last call!Only one day left to the end of voting! Cast your votes for applications you like!
Announcement
Anastasia Dyubaylo · Feb 13, 2023

Winners of the InterSystems Developer Tools Contest 2023

It's time to announce the winners of the InterSystems Developer Tools Contest! But first, we'd like to say Thank you to all our amazing participants who submitted 21 applications 🔥 We are thrilled to know that you think this subject is important! Now, without further ado, the winners are... Experts Nomination 🥇 1st place and $5,000 go to the irissqlcli app by @Dmitry.Maslennikov 🥈 2nd place and $3,000 go to the DX Jetpack for VS Code app by @John.Murray 🥉 3rd place and $1,500 go to the OpenAPI-Suite app by @Lorenzo.Scalese 🏅 4th place and $750 go to the iris-geo-map app by @Muhammad.Waseem 🏅 5th place and $500 go to the iris-tripleslash app by @José.Pereira, @Henrique, @Henry.HamonPereira More winners: 🏅 $100 go to the iris-log-viewer app by @Oliver.Wilms 🏅 $100 go to the iris-persistent-class-audit app by @Stefan.Cronje1399 🏅 $100 go to the iris-connections app by @Yuri.Gomes 🏅 $100 go to the cos-url-shortener app by @Daniel.Aguilar 🏅 $100 go to the iris-deploy-tools app by @Francisco.López1549 Community Nomination 🥇 1st place and $1,000 go to the iris-tripleslash app by @José.Pereira, @Henrique, @Henry.HamonPereira 🥈 2nd place and $750 go to the Intersystems IRIS platform queue trend monitoring component app by @yubo.mao 🥉 3rd place and $500 go to the irissqlcli app by @Dmitry.Maslennikov Our sincerest congratulations to all the participants and winners! Join the fun next time 😎 Congrats to all winners WOW!!!! this is the first time that I participate in a Intersystems contest and it won't be the last... thanks for all voted and congrats to the winners Congratulations to all the winners Congrats everyone. There were so many worthy projects this time around that voting was really tricky. Thank you all for your contributions and Congrats to the Winners!! Congratulations to all! It was a fantastic contest!This is the first time I have seen so many applications. Congratulations to all winners!! Congrats to all the winners! Congratulations everyone! Well done everyone! Congratulations to all the participants! This was an amazing contest! Congratulations to all Video highlighting the winners
Announcement
Anastasia Dyubaylo · Apr 21, 2023

[Video] Connecting to InterSystems Cloud Services with Java

Hi Community, Watch this video to see how to connect to InterSystems Cloud Services from your Java application using the InterSystems JDBC driver: ⏯ Connecting to InterSystems Cloud Services with Java Subscribe to InterSystems Developers YouTube and stay tuned!
Announcement
Anastasia Dyubaylo · Apr 28, 2023

[Video] Connecting to InterSystems Cloud Services with Python

Hey Community, Watch this video to see how to connect to InterSystems Cloud Services from your Python application using the InterSystems DB-API driver interface: ⏯ Connecting to InterSystems Cloud Services with Python Stay tuned and don't forget to subscribe to InterSystems Developers YouTube!
Announcement
Anastasia Dyubaylo · May 5, 2023

[Video] Connecting to InterSystems Cloud Services with .NET

Hey Community, Watch this video to see how to connect to InterSystems Cloud Services from your .NET application using the InterSystems ADO.NET Managed Provider: ⏯ Connecting to InterSystems Cloud Services with .NET Stay tuned for more educational videos on our InterSystems Developers YouTube channel!
Announcement
Anastasia Dyubaylo · May 12, 2023

[Video] Connecting to InterSystems Cloud Services with ODBC

Hi Community, Watch this video to see how to connect to InterSystems Cloud Services from your C++ application, using the InterSystems ODBC Driver: ⏯ Connecting to InterSystems Cloud Services with ODBC Subscribe to our InterSystems Developers YouTube channel to stay updated!
Announcement
Anastasia Dyubaylo · Mar 17, 2023

[Video] Passwordless mode for development with InterSystems IRIS

Hey Community, Tired of entering login-password during the docker build with your InterSystems IRIS every time? There is a handy way to turn it on and off – use the passwordless zpm module. Watch this video to explore how to use the passwordless ipm module to turn on and off entering login-password during docker build with your InterSystems IRIS: ⏯️ Passwordless mode for development with InterSystems IRIS Add zpm "install passwordless" in %SYS namespace during your docker build phase, and IRIS will no longer ask for a password. Example application with passwordless.