Search

Clear filter
Article
Mikhail Khomenko · Jan 21, 2021

InterSystems Kubernetes Operator Deep Dive: Part 2

In the previous article, we looked at one way to create a custom operator that manages the IRIS instance state. This time, we’re going to take a look at a ready-to-go operator, InterSystems Kubernetes Operator (IKO). Official documentation will help us navigate the deployment steps. Prerequisites To deploy IRIS, we need a Kubernetes cluster. In this example, we’ll use Google Kubernetes Engine (GKE), so we’ll need to use a Google account, set up a Google Cloud project, and install gcloud and kubectl command line utilities. You’ll also need to install the Helm3 utility: $ helm version version.BuildInfo{Version:"v3.3.4"...} Note: Be aware that on Google free tier, not all resources are free. It doesn’t matter in our case which type of GKE we use – zonal, regional, or private. After we create one, let’s connect to the cluster. We’ve created a cluster called “iko” in a project called “iko-project”. Use your own project name in place of “iko-project” in the later text. This command adds this cluster to our local clusters configuration: $ gcloud container clusters get-credentials iko --zone europe-west2-b --project iko-project Install IKO Let’s deploy IKO into our newly-created cluster. The recommended way to install packages to Kubernetes is using Helm. IKO is not an exception and can be installed as a Helm chart. Choose Helm version 3 as it's more secure. Download IKO from the WRC page InterSystems Components, creating a free developer account if you do not already have one. At the moment of writing, the latest version is 2.0.223.0. Download the archive and unpack it. We will refer to the unpacked directory as the current directory. The chart is in the chart/iris-operator directory. If you just deploy this chart, you will receive an error when describing deployed pods: Failed to pull image "intersystems/iris-operator:2.0.0.223.0": rpc error: code = Unknown desc = Error response from daemon: pull access denied for intersystems/iris-operator, repository does not exist or may require 'docker login'. So, you need to make an IKO image available from the Kubernetes cluster. Let’s push this image into Google Container Registry first: $ docker load -i image/iris_operator-2.0.0.223.0-docker.tgz $ docker tag intersystems/iris-operator:2.0.0.223.0 eu.gcr.io/iko-project/iris-operator:2.0.0.223.0 $ docker push eu.gcr.io/iko-project/iris-operator:2.0.0.223.0 After that, we need to direct IKO to use this new image. You should do this by editing the Helm values file: $ vi chart/iris-operator/values.yaml ... operator: registry: eu.gcr.io/iko-project ... Now, we’re ready to deploy IKO into GKE: $ helm upgrade iko chart/iris-operator --install --namespace iko --create-namespace $ helm ls --all-namespaces --output json | jq '.[].status' "deployed" $ kubectl -n iko get pods # Should be Running with Readiness 1/1 Let’s look at the IKO logs: $ kubectl -n iko logs -f --tail 100 -l app=iris-operator … I1212 17:10:38.119363 1 secure_serving.go:116] Serving securely on [::]:8443 I1212 17:10:38.122306 1 operator.go:77] Starting Iris operator Custom Resource Definition irisclusters.intersystems.com was created during IKO deployment. You can look at the API schema it supports, although it is quite long: $ kubectl get crd irisclusters.intersystems.com -oyaml | less One way to look at all available parameters is to use the “explain” command: $ kubectl explain irisclusters.intersystems.com Another way is using jq. For instance, viewing all top-level configuration settings: $ kubectl get crd irisclusters.intersystems.com -ojson | jq '.spec.versions[].schema.openAPIV3Schema.properties.spec.properties | to_entries[] | .key' "configSource" "licenseKeySecret" "passwordHash" "serviceTemplate" "topology" Using jq in this way (viewing the configuration fields and their properties), we can find out the following configuration structure: configSource name licenseKeySecret name passwordHash serviceTemplate metadata annotations spec clusterIP externalIPs externalTrafficPolicy healthCheckNodePort loadBalancerIP loadBalancerSourceRanges ports type topology arbiter image podTemplate controller annotations metadata annotations spec affinity nodeAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution podAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution podAntiAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution args env imagePullSecrets initContainers lifecycle livenessProbe nodeSelector priority priorityClassName readinessProbe resources schedulerName securityContext serviceAccountName tolerations preferredZones updateStrategy rollingUpdate type compute image podTemplate controller annotations metadata annotations spec affinity nodeAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution podAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution podAntiAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution args env imagePullSecrets initContainers lifecycle livenessProbe nodeSelector priority priorityClassName readinessProbe resources limits requests schedulerName securityContext serviceAccountName tolerations preferredZones replicas storage accessModes dataSource apiGroup kind name resources limits requests selector storageClassName volumeMode volumeName updateStrategy rollingUpdate type data image mirrored podTemplate controller annotations metadata annotations spec affinity nodeAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution podAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution podAntiAffinity preferredDuringSchedulingIgnoredDuringExecution requiredDuringSchedulingIgnoredDuringExecution args env imagePullSecrets initContainers lifecycle livenessProbe nodeSelector priority priorityClassName readinessProbe resources limits requests schedulerName securityContext serviceAccountName tolerations preferredZones shards storage accessModes dataSource apiGroup kind name resources limits requests selector storageClassName volumeMode volumeName updateStrategy rollingUpdate type There are so many settings, but, you don’t need to set them all. The defaults are suitable. You can see examples of configuration in the file iris_operator-2.0.0.223.0/samples. To run a minimal viable IRIS, we need to specify only a few settings, like IRIS (or IRIS-based application) version, storage size, and license key. Note about license key: we’ll use a community IRIS, so we don’t need a key. We cannot just omit this setting, but can create a secret containing a pseudo-license. License secret generation is simple: $ touch iris.key # remember that a real license file is used in the most cases $ kubectl create secret generic iris-license --from-file=iris.key An IRIS description understandable by IKO is: $ cat iko.yaml apiVersion: intersystems.com/v1alpha1 kind: IrisCluster metadata: name: iko-test spec: passwordHash: '' # use a default password SYS licenseKeySecret: name: iris-license # use a Secret name bolded above topology: data: image: intersystemsdc/iris-community:2020.4.0.524.0-zpm # Take a community IRIS storage: resources: requests: storage: 10Gi Send this manifest into the cluster: $ kubectl apply -f iko.yaml $ kubectl get iriscluster NAME DATA COMPUTE MIRRORED STATUS AGE iko-test 1 Creating 76s $ kubectl -n iko logs -f --tail 100 -l app=iris-operator db.Spec.Topology.Data.Shards = 0 I1219 15:55:57.989032 1 iriscluster.go:39] Sync/Add/Update for IrisCluster default/iko-test I1219 15:55:58.016618 1 service.go:19] Creating Service default/iris-svc. I1219 15:55:58.051228 1 service.go:19] Creating Service default/iko-test. I1219 15:55:58.216363 1 statefulset.go:22] Creating StatefulSet default/iko-test-data. We see that some resources (Service, StatefulSet) are going to be created in a cluster in the “default” namespace. In a few seconds, you should see an IRIS pod in the “default” namespace: $ kubectl get po -w NAME READY STATUS RESTARTS AGE iko-test-data-0 0/1 ContainerCreating 0 2m10s Wait a little until the IRIS image is pulled, that is, until Status becomes Ready and Ready becomes 1/1. You can check what type of disk was created: $ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-b356a943-219e-4685-9140-d911dea4c106 10Gi RWO Delete Bound default/iris-data-iko-test-data-0 standard 5m Reclaim policy “Delete” means that when you remove Persistent Volume, GCE persistent disk will be also removed. There is another policy, “Retain”, that allows you to save Google persistent disks to survive Kubernetes Persistent Volumes deletion. You can define a custom StorageClass to use this policy and other non-default settings. An example is present in IKO’s documentation: Create a storage class for persistent storage. Now, let’s check our newly created IRIS. In general, traffic to pods goes through Services or Ingresses. By default, IKO creates a service of ClusterIP type with a name from the iko.yaml metadata.name field: $ kubectl get svc iko-test NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE iko-test ClusterIP 10.40.6.33 <none> 1972/TCP,52773/TCP 14m We can call this service using port-forward: $ kubectl port-forward svc/iko-test 52773 Navigate a browser to http://localhost:52773/csp/sys/UtilHome.csp and type _system/SYS. You should see a familiar IRIS user interface (UI). Custom Application Let’s replace a pure IRIS with an IRIS-based application. First, download the COVID-19 application. We won’t consider a complete, continuous deployment here, just minimal steps: $ git clone https://github.com/intersystems-community/covid-19.git $ cd covid-19 $ docker build --no-cache -t covid-19:v1 . As our Kubernetes is running in a Google cloud, let’s use Google Docker Container Registry as an image storage. We assume here that you have an account in Google Cloud allowing you to push images. Use your own project name in the below-mentioned commands: $ docker tag covid-19:v1 eu.gcr.io/iko-project/covid-19:v1 $ docker push eu.gcr.io/iko-project/covid-19:v1 Let’s go to the directory with iko.yaml, change the image there, and redeploy it. You should consider removing the previous example first: $ cat iko.yaml ... data: image: eu.gcr.io/iko-project/covid-19:v1 ... $ kubectl delete -f iko.yaml $ kubectl -n iko delete deploy -l app=iris-operator $ kubectl delete pvc iris-data-iko-test-data-0 $ kubectl apply -f iko.yaml You should recreate the IRIS pod with this new image. This time, let’s provide external access via Ingress Resource. To make it work, we should deploy an Ingress Controller (choose nginx for its flexibility). To provide a traffic encryption (TLS), we will also add yet another component – cert-manager. To install both these components, we use a Helm tool, version 3. $ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx $ helm upgrade nginx-ingress \ --namespace nginx-ingress \ ingress-nginx/ingress-nginx \ --install \ --atomic \ --version 3.7.0 \ --create-namespace Look at an nginx service IP (it’s dynamic, but you can make it static): $ kubectl -n nginx-ingress get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-ingress-ingress-nginx-controller LoadBalancer 10.40.0.103 xx.xx.xx.xx 80:32032/TCP,443:32374/TCP 88s Note: your IP will differ. Go to your domain registrar and create a domain name for this IP. For instance, create an A-record: covid19.myardyas.club = xx.xx.xx.xx Some time will pass until this new record propagates across DNS servers. The end result should be similar to: $ dig +short covid19.myardyas.club xx.xx.xx.xx Having deployed Ingress Controller, we now need to create an Ingress resource itself (use your own domain name): $ cat ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: iko-test annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/use-regex: "true" nginx.ingress.kubernetes.io/ssl-redirect: "true" certmanager.k8s.io/cluster-issuer: lets-encrypt-production # Cert manager will be deployed below spec: rules: - host: covid19.myardyas.club http: paths: - backend: serviceName: iko-test servicePort: 52773 path: / tls: - hosts: - covid19.myardyas.club secretName: covid19.myardyas.club $ kubectl apply -f ingress.yaml After a minute or so, IRIS should be available at http://covid19.myardyas.club/csp/sys/UtilHome.csp (remember to use your domain name) and the COVID-19 application at http://covid19.myardyas.club/dsw/index.html (choose namespace IRISAPP). Note: Above, we’ve exposed the HTTP IRIS port. If you need to expose via nginx TCP super-server port (1972 or 51773), you can read instructions at Exposing TCP and UDP services. Add Traffic Encryption The last step is to add traffic encryption. Let’s deploy cert-manager for that: $ kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/v0.10.0/deploy/manifests/00-crds.yaml $ helm upgrade cert-manager \ --namespace cert-manager \ jetstack/cert-manager \ --install \ --atomic \ --version v0.10.0 \ --create-namespace $ cat lets-encrypt-production.yaml apiVersion: certmanager.k8s.io/v1alpha1 kind: ClusterIssuer metadata: name: lets-encrypt-production spec: acme: # Set your email. Let’s Encrypt will send notifications about certificates expiration email: mvhoma@gmail.com server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: lets-encrypt-production solvers: - http01: ingress: class: nginx $ kubectl apply -f lets-encrypt-production.yaml Wait a few minutes until cert-manager notices IRIS-application ingress and goes to Let’s Encrypt for a certificate. You can observe Order and Certificate resources in progress: $ kubectl get order NAME STATE AGE covid19.myardyas.club-3970469834 valid 52s $ kubectl get certificate NAME READY SECRET AGE covid19.myardyas.club True covid19.myardyas.club 73s This time, you can visit a more secured site version - https://covid19.myardyas.club/dsw/index.html: About Native Google Ingress Controller and Managed Certificates Google supports its own ingress controller, GCE, which you can use in place of an nginx controller. However, it has some drawbacks, for instance, lack of rewrite rules support, at least at the moment of writing. Also, you can use Google managed certificates in place of cert-manager. It’s handy, but initial retrieval of certificate and any updates of Ingress resources (like new path) causes a tangible downtime. Also, Google managed certificates work only with GCE, not with nginx, as noted in Managed Certificates. Next Steps We’ve deployed an IRIS-based application into the GKE cluster. To expose it to the Internet, we’ve added Ingress Controller and a certification manager. We’ve tried the IrisCluster configuration to highlight that setting up IKO is simple. You can read about more settings in Using the InterSystems Kubernetes Operator documentation. A single data server is good, but the real fun begins when we add ECP, mirroring, and monitoring, which are also available with IKO. Stay tuned and read the upcoming article in our Kubernetes operator series to take a closer look at mirroring.
Article
Mihoko Iijima · Mar 5, 2021

[InterSystems IRIS for the First Time] Interoperability: What a Production is

**This article is a continuation of this post.** In the previous article, how the Interoperability menu works for system integration was explained. In this article, I would like to explain how to develop a system integration using the Interoperability menu. To begin with, what kind of process do you want to create? While thinking about this, make the following content. * Production * Message * Components * Business Services * Business Processes * Business Operations Production is a definition used to specify the components required for system integration and to store the component settings, which are configured using the Management Portal (internally stored as a class definition for Production). For example, suppose you are creating a business service that processes files placed in a specified directory at regular intervals. In that case, it is necessary to set up exactly which directories to monitor and which files to process. A Production is prepared to store these settings. The settings depend on the **adapter** used by the component that sends and receives data. Adapters are classes to simplify the connection to external systems, some are protocol-specific such as Mail/File/SOAP/FTP/HTTP/SQL/TCP, and some are standards specific HL7. Please refer to the documentation (protocol-specific adapters and adapters related to EDI documentation for more information on adapters. Since we will define the necessary components for the **Production**, "Start Production" will start the system integration, and "Stop Production" will stop the system integration. The development required to complete the Production is the creation of the components necessary for system integration, specifically the following contents: * Message * Components (Business Services, Business Processes, Business Operations) * Data conversion, etc. The content above will be explained slowly in the articles coming after this one. First of all, let's start **Production** using the sample **Production** and check the message process by processing data while checking the settings. Sample can be downloaded from https://github.com/Intersystems-jp/selflearning-interoperability. To use a Container, download the sample code using the git clone, navigate the clone's directory, and run docker-compose up -d It's that easy! See here for the procedure (it will take some time to create a container). If you do not use containers, create a new namespace after downloading the sample, and import all class definition files (extension .cls) under the src folder into the created namespace. For more information on the process of creating a namespace, please refer to the video after 07:03 of this article. Please refer to the README for more details on the sample code. When you are ready, access the management portal (change the web server's port number to match your environment). **** Go to the **Management Portal > Interoperability > Configuration > Production**. If you are using a method other than containers, connect to the namespace where you imported the source code, access [Configuration] > [Production], click the [Open] button, select [Start] > [Production], and then click the [Start] button. ※ If you are using something other than a container, you will need to make some initial settings. Please set up the contents described below before trying the following contents. ![image](/sites/default/files/inline/images/image1051jp.png) The production page will be displayed as **[**● **Component Name]** for each of the "Service", "Process", and "Operation" components. Click on the component name to change the contents of the "Settings" tab on the right side of the screen. For example, when you click on **Start.GetKionOperation** (single click), the display is as follows. ![image](/sites/default/files/inline/images/image1052jp.png) This component has the [HTTP Server] and [URL] settings for connecting to the Web API. There is a [appid] field at the bottom of the settings where you can enter the API key that you get it. There is a [lang] field near [appid] and is set "ja" ("ja" = Japanese). [lang] set language of response from OpenWeather. For English, set "en". When you finish to set these settings , click the "Apply" button. ![image](/sites/default/files/inline/images/image1053jp_0.png) If you are using a container, the setup is complete. For more information, please click [here](#datasend). * * * #### If you are experimenting with something other than containers Please make the following two settings in advance: 1) Configure the SSL client. Since the Web API to be connected to will be communicated using HTTPS, configure the SSL client on the IRIS side in advance. To match the settings of the sample production, we will use the name **[openweather]**. The settings in the Production are as follows: ![image](/sites/default/files/inline/images/image1054jp.png) **Click the Management Portal > [System Administration] > [Security] > [SSL/TLS Configuration] > [Create New Configuration]** button, enter **"openweather"** in the "Configuration Name" field, and then click in the "Save" button to finish. ![image](/sites/default/files/inline/images/image1055jp.png) 2) Create a base URL for REST In the sample production, we have configured it so that the information can be entered via REST, and the base URL for REST needs to be configured on the IRIS side. In the sample, we set /start as the base URL. Since the Start.REST class exists in the namespace where the sample was imported, we will specify this class as the dispatch class and add %All as the application role to omit authentication at the time of access. **Management Portal > System Administration > Security > Applications > Web Application Path > Click the "Create new web application"** button. In the Name field, specify **/start**; in the Namespace field, specify the namespace from which the sample was imported; in the Dispatch Class field, specify **Start.REST**; in the Allowed Authentication Method field, select **"Unauthenticated"**, and save the file. After saving, add the **%All** role to the **application role** on the "Application Roles" tab. ![image](/sites/default/files/inline/images/image1056jp.png) ![image](/sites/default/files/inline/images/image1057jp.png) * * * ### Try to send data Once you are all set up, try to use a business service to send information via REST and let it run. The above example is a URL that supposes that someone has purchased "Takoyaki" in Osaka City. The screen after execution is as follows. ![image](/sites/default/files/inline/images/image1124_0.png) Check the messages that have been sent to the **Production**. In the **Management Portal > Interoperability > Configuration > Production**, click on the service below: ![](https://jp.community.intersystems.com/sites/default/files/inline/images/images/image(1060).png) Select the **"Messages"** tab on the right side of the screen and click on any number below to the header field column. If you do not see it, reload your browser. ![image](/sites/default/files/inline/images/image1059jp.png) Using the Visual Trace page, you can see the information of **messages** sent and received between components. You can see that the weather information is retrieved from the Web API and sent back in the **light blue frame**. In this way, you can use tracing to see what data was being sent and received at that time and in what order. Throughout this article, we have confirmed that **Production** has defined the necessary components and their settings for system integration by referring to the sample code settings. We also confirmed that we could refer to the messages flowing through the **Production** in chronological order by using the Visual Trace page. In the next articles, we will discuss the concept behind creating the **"message"** shown in this trace and how actually to define it.
Announcement
Anastasia Dyubaylo · Mar 9, 2021

Online Meetup with the InterSystems Grand Prix Contest Winners

Hi Community, We're pleased to invite you to the online meetup with the winners of the InterSystems Grand Prix Contest! Date & Time: Friday, March 12, 2021 – 10:00 EDT What awaits you at this virtual Meetup? Our winners' bios. Short demos on their applications. An open discussion about technologies being used, bonuses, questions. Plans for the next contests. Our speakers: @Dmitry.Maslennikov, Co-founder, CTO and Developer Advocate, CaretDev Corp @José.Pereira, Business Intelligence Developer at Shift Consultoria e Sistemas Ltda @Henrique, System Management Specialist / Database Administrator, Sao Paulo Federal Court @Botai.Zhang, Developer from China @Weiwei.Yang, Developer from China @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager You will also have the opportunity to ask any questions to our developers in a special webinar chat. We will be happy to talk to you at our Virtual Meetup! ➡️ REGISTER TODAY! Hey developers, ➡️ Please join today's meetup using this link. See you! Hey Developers! The recording of this virtual meetup is already on InterSystems Developers YouTube: ⏯ Online Meetup with the InterSystems Grand Prix Contest Winners Big applause to all the speakers! 👏🏼
Question
Sharafath Fazil · Mar 10, 2021

React Native or Flutter which is most compatible with InterSystems

React Native or Flutter which is most compatible with InterSystems Hi @Sharafath.Fazil I never worked with React Native, but I developed something in Flutter a few years ago. In my humble opinion, it doesn't matter that much since I'm assuming you'll be consuming data using a REST service to interact with flutter/react-native applications. It's up to you :) Maybe taking into consideration the pros and cons of each one of them. Hope that helps. I think the same, Flutter is easier to develop in my opinion, but it's just personal taste. I am not sure what your requirements are but a 3rd option is to use Ionic (Ionic - Cross-Platform Mobile App Development (ionicframework.com)) and stick with any existing nodeJs knowledge and integration you have.
Announcement
Derek Robinson · May 6, 2021

Episode 18: InterSystems IRIS® FHIR Accelerator Service

Episode 18 of Data Points features a discussion with Regilo Souza, Patrick Jamieson, and Evgeny Shvarov about the new InterSystems IRIS® FHIR Accelerator Service. This new product offers a turnkey solution for FHIR application developers, and there is an upcoming developer community programming contest around it! For all episodes of Data Points and to subscribe on your favorite app, check out https://datapoints.intersystems.com.
Announcement
Evgeny Shvarov · Jul 6, 2021

Technical Bonus Points for InterSystems AI/ML Contest

Hi Developers! Here're the technology bonuses for the InterSystems IRIS AI contest that will give you extra points in the voting. IntegratedML usage - 4 points Use InterSystems IntegratedML in you AI/ML solution. Here is the template that uses it. Be sure that the IRIS version is not less than 2021. The latest ML images with ZPM are: intersystemsdc/iris-ml-community:2021.1.0.215.0-zpm intersystemsdc/irishealth-ml-community:2021.1.0.215.0-zpm R Gateway and Python gateway usage - 4 points InterSystems IRIS 2021 release contains two new features - R gateway and Python gateway. Here is the template on how to use the R gateway. Here is a short demo of how to use it. Embedded Python usage - 4 points Embedded Python is a very new feature of InterSystems IRIS that gives you the option to use python as a "first-class citizen" in backend business logic development with InterSystems classes. Short demo of Embedded Python. Embedded python could be used in "on-demand" images that could be delivered via InterSystems Early Access Program (EAP) if you refer to python-interest@intersystems.com. Here is the template package on how to use Embedded Python deployable with ZPM. Don't forget to change the image to the one you get from the Early Access program. PMML usage - 4 points PMML - Predictive Modelling Markup Language - can be used to build AI/ML solutions with InterSystems IRIS. Check with documentation. There is an example in Open Exchange on how to use PMML. Docker container usage - 2 points The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from. ZPM Package deployment - 2 points You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with: zpm "install your-multi-model-solution" command on IRIS with ZPM client installed. ZPM client. Documentation. Unit Testing - 2 points Applications that have Unit Testing for the InterSystems IRIS code will collect the bonus. Learn more about ObjectScript Unit Testing in Documentation and on Developer Community. Online Demo of your project - 3 pointsCollect 3 more bonus points if you provision your project to the cloud as an online demo. You can use this template or any other deployment option. Example. Here is the video on how to use it. Code quality analysis with zero bugs - 2 points Include the code quality Github action for code static control and make it show 0 bugs for ObjectScript. Article on Developer Community - 2 points Post an article on Developer Community that describes the features of your project. Collect 2 points for each article. Translations to different languages work too. Video on YouTube - 3 points Make the Youtube video that demonstrates your product in action and collect 3 bonus points per each. Example. The list of bonuses is subject to change. Stay tuned!
Announcement
Evgeny Shvarov · Oct 4, 2021

Technology Bonuses for InterSystems InterOperability Contest 2021

Hi Developers! Here're the technology bonuses for the InterSystems Interoperability Contest 2021 that will give you extra points in the voting: Business Process BPL or Business Rule DTL Usage Custom Interoperability Adapter Usage Production EXtension(PEX) Java or .NET usage Workflow Engine usage Docker container usage ZPM Package deployment Online Demo Code Quality pass Article on Developer Community Video on YouTube See the details below. Business Process BPL or Business Rules Usage - 3 point One of the key features of IRIS Interoperability Productions are business processes, which could be described by BPL (Business Process Language). Learn more on Business Processes in documentation. Business Rules it's a no-code/low-code approach to manage the processing logic of the interoperability production. In InterSystems IRIS you can create a business rule which you can create visually or via the ObjectScript representation. You can collect the Business Process/Business Rule bonus if you create and use the business process or business rule in your interoperability production. Business Rule Example Learn more on Business Rules in documentation. Custom Interoperability Adapter Usage - 2 point InterSystems Interoperability production can contain inbound or Outbound adapters which are being used to communicate with external systems by business services and operations of the production. You can use out-of-the-box adapters (like File, or Email) or develop your own. You get the bonus if you develop your own custom inbound or outbound adapter and use it in your production. Example of an adapter. Learn more on adapters. Production EXtension (PEX) Usage - 4 points PEX is a Java or .NET extension of Interoperability productions. You get this bonus if you use PEX with JAVA or .NET in your interoperability production. PEX Demo. Learn more on PEX in Documentation. Workflow Engine Usage - 2 point Workflow Engine is a part of IRIS Interoperability which could be used to automate the distribution of tasks among users. You get this bonus if you use include the usage of Workflow Engine in your interoperability production. Learn more on Workflow in Documentation. There are Community modules WorkflowAPI and WorkflowUI-ngx which provide a nice UI layer on Angular for the Workflow engine. Docker container usage - 2 points The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from. ZPM Package deployment - 2 points You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with: zpm "install your-multi-model-solution" command on IRIS with ZPM client installed. ZPM client. Documentation. Online Demo of your project - 3 pointsCollect 3 more bonus points if you provision your project to the cloud as an online demo. You can do it on your own or you can use this template - here is an Example. Here is the video on how to use it. Code quality pass with zero bugs - 1 point Include the code quality Github action for code static control and make it show 0 bugs for ObjectScript. Article on Developer Community - 2 points Post an article on Developer Community that describes the features of your project. Collect 2 points for each article. Translations to different languages work too. Video on YouTube - 3 points Make the Youtube video that demonstrates your product in action and collect 3 bonus points per each. Example. The list of bonuses is subject to change. Stay tuned! Good luck in the competition! can we add a China video website to add since China developers since we cannot access Youtube? If I translate my own article count as 2 articles!? Just kidding
Announcement
Anastasia Dyubaylo · Nov 11, 2021

Video: Working with FHIR Profiles in InterSystems IRIS for Health

Hey Developers, Don't miss our new video on InterSystems Developers YouTube: ⏯ Working with FHIR Profiles in IRIS for Health Learn how a FHIR server built with InterSystems IRIS for Health can support multiple FHIR profiles, including those available in the US Core Implementation Guide and other published FHIR packages. FHIR profiles and other conformance resources allow you to adapt FHIR for a specific purpose or environment. 🗣Presenter: @Kurt.Dawn , Technical Writer, InterSystems FHIR team Subscribe and enjoy watching!
Article
Yuri Marx · Nov 12, 2021

InterSystems IRIS Building Blocks to TOGAF Architecture Domains

The TOGAF is the The Open Group Architecture Framework. It provides an approach for planning, design, implement, deploy and govern your EA (Enterprise Architecture) projects. The TOGAF has a concept called Building Block. It is any element that can be used, reused a executed to deliver value and new functions to the business. In the picture above, I present to you the main IRIS building blocks to create fantastic apps. To learn more about TOGAF and building blocks, see https://www.opengroup.org/togaf. Hi Yuri and DC members As you know I have challenged the DC members to come up with cheat sheets for IRIS and this is a perfect example of what I was hoping to see from DC members. With your permission, I would like to include it in my collection of IRIS Cheat/Information sheets. For other DC members reading this post and there is an aspect of IRIS that you are particularly familiar with or passionate about then have a go and see if you can come up with a similar informative diagram. Typically the cheat/information sheets are one-two page long. When it comes to a language explanation then you would typically create a page on commands, another on operators and so on. Let your inner artist guide your layout and colour scheme. Once I have built up a substantial collection of IRIS topics I'll see if Olga, Evgeny and Anastasia and the ISC Experts will vote on the best layout and all cheat/information sheets will be modified to conform to that look. Who knows, they may even reward the winner. Bear in mind that ISC have a certain style, colour scheme and logo's and this should be taken into consideration/ Nigel P.S. Sorry Yuri for high jacking your Article ro further my personal mission. Thanks Nigel. If you want, send me an email - yurimarx@gmail.com, to get the editable diagram file.
Article
Yuri Marx · Jan 5, 2022

InterSystems IRIS Open Datasets for predict important diseases

According to the WHO, The top global causes of death, in order of total number of lives lost, are associated with three broad topics (source: https://www.who.int/news-room/fact-sheets/detail/the-top-10-causes-of-death): Cardiovascular (ischaemic heart disease, stroke), Respiratory (chronic obstructive pulmonary disease, lower respiratory infections) and Neonatal conditions – which include birth asphyxia and birth trauma, neonatal sepsis and infections, and preterm birth complications. I created an application that's provides real data (without personal data) for some of these top 10 scenarios of diseases identified by WHO. The datasets for this application are: Diabetes dataset: data to predict diabetes diagnosis Heart Disease: data to predict heart disease Kidney Disease: data to predict kidney disease Breast Cancer: data to predict breast cancer Maternal Health Risk: data to predict maternal health risk level To download and install the application go to https://openexchange.intersystems.com/package/Health-Dataset Follow these instructions: 1. Clone/git pull the repo into any local directory $ git clone https://github.com/yurimarx/automl-heart.git 2. Open a Docker terminal in this directory and run: $ docker-compose build 3. Run the IRIS container: $ docker-compose up -d 4. Do a Select to the HeartDisease dataset: SELECT age, bp, chestPainType, cholesterol, ekgResults, exerciseAngina, fbsOver120, heartDisease, maxHr, numberOfVesselsFluro, sex, slopeOfSt, stDepression, thallium FROM dc_data_health.HeartDisease 5. Do a Select to the Kidney Disease dataset: SELECT age, al, ane, appet, ba, bgr, bp, bu, cad, classification, dm, hemo, htn, pc, pcc, pcv, pe, pot, rbc, rc, sc, sg, sod, su, wc FROM dc_data_health.KidneyDisease 6. Do a Select to the Diabetes dataset: SELECT Outcome, age, bloodpressure, bmi, diabetespedigree, glucose, insulin, pregnancies, skinthickness FROM dc_data_health.Diabetes 7. Do a Select to the Breast Cancer dataset: SELECT areamean, arease, areaworst, compactnessmean, compactnessse, compactnessworst, concavepointsmean, concavepointsse, concavepointsworst, concavitymean, concavityse, concavityworst, diagnosis, fractaldimensionmean, fractaldimensionse, fractaldimensionworst, perimetermean, perimeterse, perimeterworst, radiusmean, radiusse, radiusworst, smoothnessmean, smoothnessse, smoothnessworst, symmetrymean, symmetryse, symmetryworst, texturemean, texturese, textureworst FROM dc_data_health.BreastCancer 8. Do a Select to the Maternal Health Risk dataset: SELECT BS, BodyTemp, DiastolicBP, HeartRate, RiskLevel, SystolicBP, age FROM dc_data_health.MaternalHealthRisk These datasets can be used into AutoML/Machine Learning applications to support breast cancer, heart disease, kidney disease and diabetes diagnostics (support only, because human doctor diagnosis is mandatory). Enjoy! Hi Yuri, Your video is now on InterSystems Developers YouTube: ⏯ Health Datasets using InterSystems IRIS Have a good weekend) Great! Thanks!
Article
Anastasia Dyubaylo · Jun 30, 2021

How to learn on InterSystems Developer Community? Part 1

Hi developers, In this post, we would like to tell you how to take the most out of the Developer Community, to learn as much as you can from the InterSystems experts on the technology! Pay attention to these steps to become an advanced user of our community! Follow the members you are interested in You can follow any member of the Community if you like the content they publish. Just click the "Follow" button on the right sidebar of any member and you will be notified by email when that member publishes a post (article/question/announcement, etc.) on the Community. Also, in the top menu of the homepage, you can click on "Members" and search for a specific person or members with more views, or more likes... and start following them. Follow the tags you are interested in All the tags used to describe the posts on the Community can be found under the section "Tags" on the DC homepage: In the DC Tag Tree, you can find topics you are interested in and follow related tags. Just select a tag and click on the "Follow" button next to it. When you follow any tag, you receive an email with all posts using that tag. Tags we suggested to start from: Best practices | Tips and tricks | Beginner | Tutorial. Follow the posts you are interested in Following a post, you will receive (by email) all updates to that post, such as new comments, or if a second part is published, or any other activity related to the post you are following. To follow a post, you just need to click the bell icon below each post: -> How do I know which members, tags, and posts I'm following? To know the members, tags, and posts that you follow, you just need to go to your account, in the upper right-hand corner: and then go to "Subscriptions" in the left column: At the bottom of this page, you can see and customize your subscriptions across three tabs – each showing the members, tags, and posts you are following. For example, the screenshots below show that the user is following some tags and DC members: Note: If you want to follow members or tags in different languages, you need to switch your subscription settings to the language you are interested in. Add posts to your bookmarks Bookmark the post you like so you can access the post quickly and easily later. If you like a post (article, question or announcement) and want to save it for later, you can add it to your bookmarks. This way, you can access the post quickly and easily and read it when you want. To add a post to your bookmarks, you just need to click the star icon below each post: To see all your bookmarks, go to your account and then to "Bookmarks" in the left column: So, developers, Please use all our DC features that can help you become an expert in InterSystems technologies! And you're very welcome to submit other ways and advice on how to learn InterSystems Technology on Developer Community in the comments below. Thanks, Nice information to learn on InterSystems Developer Community Great recommendations and very helpful with the screenshots - thank you @Anastasia.Dyubaylo :) Thanks, Ben! We're planning to make a series of such articles. Stay tuned! ;)
Article
Eduard Lebedyuk · Mar 5, 2022

Running InterSystems IRIS in a FaaS mode with Kubeless

Function as a service (FaaS) is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app. Building an application following this model is one way of achieving a "serverless" architecture, and is typically used when building microservices applications. Wikipedia FaaS is an extremely popular approach to running workloads in the cloud, allowing developers to focus on writing code. This article will show you how to deploy InterSystems IRIS methods in a FaaS way. Install Kubernetes First of all, install Kubernetes 1.16. There are a lot of guides available so that I won't be copying them here, but I'm using minicube. With minicube to run kubernetes, it's enough to execute this command: minikube start --kubernetes-version=v1.16.1 Install kubeless Next, we will install kubeless. kubeless is a Kubernetes-native serverless framework that lets you deploy small bits of code without worrying about the underlying infrastructure plumbing. It leverages Kubernetes resources to provide auto-scaling, API routing, monitoring, troubleshooting, and more. kubectl create ns kubeless kubectl create -f https://github.com/kubeless/kubeless/releases/download/v1.0.8/kubeless-v1.0.8.yaml kubectl get pods -n kubeless Output should be something like this: NAME READY STATUS RESTARTS AGEkubeless-controller-manager-666ffb749-26vhh 3/3 Running 0 83s You also need to install a kubeless client (on the same instance you have kubectl). You can get it here. Installation on Linux is as simple as: sudo install kubeless /usr/local/bin/kubeless Test kubeless First, let's deploy a simple Python function to check that kubeless works. Create test.py: def hello(event, context): return event['data'] To read more about function environment check this doc, generally function accepts two arguments - event and context with this data: event: data: # Event data foo: "bar" # The data is parsed as JSON when required event-id: "2ebb072eb24264f55b3fff" # Event ID event-type: "application/json" # Event content type event-time: "2009-11-10 23:00:00 +0000 UTC" # Timestamp of the event source event-namespace: "kafkatriggers.kubeless.io" # Event emitter extensions: # Optional parameters request: ... # Reference to the request received response: ... # Reference to the response to send # (specific properties will depend on the function language) context: function-name: "pubsub-nodejs" timeout: "180" runtime: "nodejs6" memory-limit: "128M" Now we can deploy our hello function by specifying our file with a function and a runtime: kubeless function deploy hello --runtime python3.7 --from-file test.py --handler test.hello kubeless function ls hello And let's test it: kubeless function call hello --data 'Hello world!' You should receive Hello World! as an answer. Add IRIS config Next we need to add an InterSystems IRIS function handler, to do that open kubeless config for edit: kubeless get-server-config kubectl get -n kubeless configmaps -o yaml > configmaps.yaml kubectl edit -n kubeless configmaps Add this entry to runtime-images array and save: {"ID": "iris","depName": "","fileNameSuffix": ".cls","versions": [{"images": [{"image": "eduard93/kubeless-iris-runtime:latest","phase": "runtime"}],"name": "iris2022.1","version": "2022.1"}]} Restart kubeless controller for the changes to take effect. kubectl delete pod -n kubeless -l kubeless=controller Build IRIS function CRD and publish it Now let's write our first function in InterSystems IRIS: Class User.Test { ClassMethod hi(event, context) As %Status { if $isObject(event) { write event.Text + event.Text } else { write "HELLO FROM IRIS" } quit $$$OK } } Next, we need to build a function CRD: Here's our template: function.yaml apiVersion: kubeless.io/v1beta1 kind: Function metadata: name: !name! namespace: default spec: runtime: iris2022.1 timeout: "180" handler: !handler! deps: "" function-content-type: text deployment: spec: template: spec: securityContext: runAsUser: 51773 runAsGroup: 51773 function: | And we need to fill: name: function name (for kubeless) handler: class.name_method (for InterSystems IRIS) function body: add at the end (don't forget tabs!) So our CRD looks like this: function_demo.yaml apiVersion: kubeless.io/v1beta1 kind: Function metadata: name: iris-demo namespace: default spec: runtime: iris2022.1 timeout: "180" handler: User_Test.hi deps: "" function-content-type: text deployment: spec: template: spec: securityContext: runAsUser: 51773 runAsGroup: 51773 function: | Class User.Test { ClassMethod hi(event, context) As %Status { if $isObject(event) { write event.Text + event.Text } else { write "HELLO FROM IRIS" } quit $$$OK } } This can be easily automated. On Linux execute: sed 's/!name!/iris-demo/; s/!handler!/User_Test.hi/' function.yaml > function_demo.yaml sed 's/^/ /' User.Test.cls >> function_demo.yaml And on Windows (PowerShell): Get-Content function.yaml | ForEach-Object { $_ -replace "!handler!", "User_Test.hi" -replace "!name!", "iris-demo" } | Set-Content function_demo.yaml " " + [string]((Get-Content User.Test.cls) -join "`r`n ") | Add-Content function_demo.yaml Now we need to publish our CRD in kubeless: kubectl apply -f function_demo.yaml Test IRIS function First, let's see that the function is deployed and ready (can take a few minutes the first time): kubeless function ls And now call it: kubeless function call iris-demo --data '{"Text":123}' If you're on Windows, call the function like this (same for all other calls with escaped double quotes): kubeless function call iris-demo --data '{\"Text\":123}' Anyway, the response should be 456 since 123 is a number. HTTP access kubeless also offers HTTP access. To test this, use the kubectl proxy command: kubectl proxy -p 8081 Next, send this request using your preferred REST API client: GET http://localhost:8081/api/v1/namespaces/default/services/iris-demo:http-function-port/proxy/ {"Text":111} Here's how it looks like in Postman: Next, let's publish it on the internet. There are two approaches. Preferably configure ingress as described here. Additionally you can patch function service: kubectl get svc kubectl patch svc iris-demo -p '{"spec": {"type": "LoadBalancer"}}' kubectl get svc Clean up To remove a deployed function call: kubectl delete -f function_demo.yaml Conclusion While this is undoubtedly a proof-of-concept and not a production-grade solution, this approach demonstrates that it's possible to run InterSystems IRIS workloads using the serverless, FaaS approach. Links Minicube Kubeless InterSystems IRIS runtime Great article ! Is it possible to use a custom image from a local docker registry with Kubeless ? Yes, it's possible. fantastic @Eduard.Lebedyuk ! Thanks, Ron!
Announcement
Evgeny Shvarov · Sep 10, 2021

Technology Bonuses Results for Projects in the InterSystems Analytics Contest!

Hi Developers! We had a set of technology bonuses for the InterSystems IRIS Analytics contest. And here is how projects collected it: Project AtScale PowerBI Tableau Logi IRIS BI IRIS NLP Docker ZPM Unit Testing Online Demo Article on DC Video on YouTube Total Bonus Nominal 4 3 3 3 3 3 2 2 2 3 2 3 33 iris-analytics-datastudio 3 3 3 9 promjet-stats 4 3 3 3 2 3 18 pop-song-analytics 3 2 5 Analytics OKR 3 2 2 2 9 iris-analytics-for-money 3 2 5 AlertDashboard 3 3 We can discuss bonuses here or on the Discord channel
Announcement
Thomas Dyar · Jan 24, 2022

InterSystems IRIS and IRIS for Health 2021.2 is published

The Data Platforms team is very pleased to announce the 2021.2 release of InterSystems IRIS Data Platform, InterSystems IRIS for Health and HealthShare Health Connect, which are now Generally Available (GA) to our customers and partners. Release Highlights InterSystems IRIS Data Platform 2021.2 makes it even easier to develop, deploy and manage augmented applications and business processes that bridge data and application silos. It has many new capabilities including: Enhancements for application and interface developers, including: Embedded Python Interoperability Productions in Python Updates to Visual Studio Code ObjectScript Extension Pack New Business Services and operations added allowing users to set and run SQL query with minimal custom coding Enhancements for Analytics and AI, including: New SQL LOAD command efficiently loads CSV and JDBC source data into tables Enhancements to Adaptive Analytics Enhancements for Cloud and Operations tasks, including: New Cloud Connectors make it simple to access and use cloud services within InterSystems IRIS applications IKO enhancements improve manageability of Kubernetes resources Enhancements for database and system administrators, including: Online Shard Rebalancing automates distribution of data across nodes without interrupting operations Adaptive SQL engine uses fast block sampling and automation to collect advanced table statistics and leverages runtime information for improved query planning Storage needs for InterSystems IRIS are reduced with new stream and journal file compression settings Support for TLS 1.3 and OpenSSL 1.1.1, using system-provided libraries New ^TRACE utility reports detailed process statistics such as cache hits and reads More details on all these features can be found in the product documentation: InterSystems IRIS 2021.2 documentation and release notes InterSystems IRIS for Health 2021.2 documentation and release notes HealthShare Health Connect 2021.2 documentation and release notes How to get the software InterSystems IRIS 2021.2 is a Continuous Delivery (CD) release, which now comes with classic installation packages for all supported platforms, as well as container images in OCI (Open Container Initiative) a.k.a. Docker container format. Container images are available for OCI compliant run-time engines for Linux x86-64 and Linux ARM64, as detailed in the Supported Platforms document. Full installation packages for each product are available from the WRC's product download site for CD releases. Using the "Custom" installation option enables users to pick the options they need, such as InterSystems Studio and IntegratedML, to right-size their installation footprint. Container images for the Enterprise Edition, Community Edition and all corresponding components are available from the InterSystems Container Registry using the following commands: docker pull containers.intersystems.com/intersystems/iris:2021.2.0.651.0 docker pull containers.intersystems.com/intersystems/iris-ml:2021.2.0.651.0 docker pull containers.intersystems.com/intersystems/irishealth:2021.2.0.651.0 docker pull containers.intersystems.com/intersystems/irishealth-ml:2021.2.0.651.0 For a full list of the available images, please refer to the ICR documentation. Alternatively, tarball versions of all container images are available via the WRC's product download site for CD containers. Our corresponding listings on the main cloud marketplaces will be updated in the next few days. Sharing your experiences We are excited to see this version now hitting the GA milestone and eager to hear your experiences with the new software. Please don't hesitate to get in touch through your account team or the Developer Community with any comments on the technology or the use cases you're addressing with it. For selected new capabilities and products, we've set up Early Access Programs to allow our users to evaluate software before it gets released. Through these focused initiatives, we can learn from our target audience and ensure the new product fulfills their needs when it gets released. Please reach out through your account team or watch the Developer Community if you're interested in participating in any of these. Please note that 2021.2 is also available via the InterSystems Evaluation Service: https://evaluation.InterSystems.com. If you are a supported customer you can request evaluation keys or get full/community edition kits/containers. Prospects can get Community Edition kits/containers (see https://community.intersystems.com/post/introducing-evaluation-service-community-edition-downloads). And images with ZPM package manager 0.3.2 are available accordingly: intersystemsdc/iris-community:2021.2.0.651.0-zpm intersystemsdc/iris-ml-community:2021.2.0.651.0-zpm intersystemsdc/irishealth-community:2021.2.0.651.0-zpm intersystemsdc/irishealth-ml-community:2021.2.0.651.0-zpm intersystemsdc/iris-community:2021.1.0.215.3-zpm intersystemsdc/irishealth-community:2021.1.0.215.3-zpm intersystemsdc/irishealth-ml-community:2021.1.0.215.3-zpm intersystemsdc/irishealth-community:2021.1.0.215.3-zpm And to launch IRIS do: docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-community:2021.2.0.651.0-zpm docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-ml-community:2021.2.0.651.0-zpm docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-community:2021.2.0.651.0-zpm docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community:2021.2.0.651.0-zpm docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-ml-community:2021.2.0.651.0-zpm docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community:2021.2.0.651.0-zpm And for terminal do: docker exec -it my-iris iris session IRIS and to start the control panel: http://localhost:9092/csp/sys/UtilHome.csp To stop and destroy container do: docker stop my-iris And the FROM clause in dockerfile can look like: FROM intersystemsdc/iris-community:2021.2.0.651.0-zpm Or to take the latest image: FROM intersystemsdc/iris-community Are there any news on docker hub publication? docker pull store/intersystems/iris-community:2021.2.0.649.0 Error response from daemon: manifest for store/intersystems/iris-community:2021.2.0.649.0 not found: manifest unknown: manifest unknown InterSystems IRIS 2021.2 is now available on docker hub, you can retry that command. However, due to Docker changing the terms of licensing, InterSystems is phasing out its Community version listings on docker hub after January 31, 2022. In the future, we may have a listing there, but that is not finalized. Currently, as well as in the future, these images can be obtained with docker CLI via: docker pull containers.intersystems.com/intersystems/iris-community:2021.2.0.651.0 Note that containers.intersystems.com does not require authentication when pulling Community Edition (CE) of InterSystems IRIS (see InterSystems Container Registry). Stay tuned for an announcement about our plans for docker hub, and please let us know if you have concerns or questions! docker pull containers.intersystems.com/intersystemscorp/iris-community:2021.2.0.649.0 is probably docker pull containers.intersystems.com/intersystems/iris-community:2021.2.0.649.0 Interesting news. Question: as access to containers.intersystems.com requires a WRC account, how do prospects/new users/people without WRC access can get community version of InterSystems IRIS? Thanks, Eduard! I updated the above comment to fix the typo! The Community Edition (CE) of InterSystems IRIS are available from containters.intersystems.com without credentials. This should work for anyone: docker pull containers.intersystems.com/intersystems/iris-ml-community:2021.2.0.651.0 That's good to hear. UPDATE! We discovered a defect in the Windows builds of InterSystems IRIS 2021.2, and have now updated those images on the WRC download site for Continuous Delivery releases. The new build number for the Windows kits is 651. Please change all the 649's in this to 651 - 2021.2 was republished Updated to 651, thanks, @Jeffrey.Fried! Also, we have the latest tag for ZPM images, so this will take the latest: FROM intersystemsdc/iris-community:latest Or just like this: FROM intersystemsdc/iris-community Hi Ben. For some reason, only IRIS 2021.1CE is available for Windows, although IRIS 2021.2CE is available for many other operating systems, such as MacOSX. Is it possible for Windows to update the version to 2021.2 too? @Vitaliy.Serdtsev - thank you very much for bringing this to our attention! There was a small issue resulting in the version listing being out of date. This has been corrected and you should be able to get access to 2021.2 for Windows now (please let me know if you still have issues). Thanks for reaching out! Now everything is OK, thanks. Now on evaluation.intersystems.com for Windows/MacOSX/Container allows to download the version of IRIS 2020.1CE, and for the rest - IRIS 2021.2CE. What happened and when will the problem with downloading the latest version disappear once and for all? This is a bug. We'll look into it. Thank you for bringing it to our attention. @Vitaliy.Serdtsev2149 thank you for pointing this out. We've fixed the issue; it was actually a separate root cause from before. Now everything is OK, thanks.
Announcement
Anastasia Dyubaylo · Jun 8, 2021

Online Meetup with the InterSystems FHIR Accelerator Contest Winners

Hi Community, We're pleased to invite you to the online meetup with the winners of the InterSystems FHIR Accelerator contest! Date & Time: Friday, June 11, 2021 – 11:00 EDT What awaits you at this Virtual Meetup? Our winners' bios. Short demos on their applications. An open discussion about technologies being used. Q&A. Plans for the next contests. Our speakers: @Dmitry.Maslennikov, Co-founder, CTO and Developer Advocate, CaretDev Corp @José.Pereira, Business Intelligence Developer at Shift Consultoria e Sistemas Ltda @Henrique, System Management Specialist / Database Administrator, Sao Paulo Federal Court @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager @Patrick.Jamieson3621, InterSystems Product Manager - Health Informatics Platform @Regilo.Souza, InterSystems Product Owner You will also have the opportunity to ask any questions to our developers in a special webinar chat. We will be happy to talk to you at our Virtual Meetup! ➡️ REGISTER TODAY! Hey Developers, Watch the recording of the meetup on InterSystems Developers YouTube: ⏯ Online Meetup with the InterSystems FHIR Accelerator Contest Winners Big applause to all the speakers! 👏🏼