#Angular

0 Followers · 89 Posts

Angular (or AngularJS )is a JavaScript-based open-source front-end web application framework mainly maintained by Google and by a community of individuals and corporations to address many of the challenges encountered in developing single-page applications.

Official site.

Article Luis Angel Pérez Ramos · Oct 31, 2025 5m read

Yes, yes! Welcome! You haven't made a mistake, you are in your beloved InterSystems Developer Community in Spanish.

You may be wondering what the title of this article is about, well it's very simple, today we are gathered here to honor the Inquisitor and praise the great work he performed. 

So, who or what is the Inquisitor?

Perfect, now that I have your attention, it's time to explain what the Inquisitor is. The Inquisitor is a solution developed with InterSystems technology to subject public contracts published daily on the platform  https://contrataciondelestado.es/ to scrutiny.

0
0 41
Question Elisha Gould · Jul 28, 2025

With Intersystems indicating ZEN pages are being deprecated, I'm looking to find out how to add custom configuration pages for the management portal using the new method similar to the new Rules editor.

From what I can tell the new method uses rest pages using JWT Authentication, and has a mechanism to use the session cookie to generate the JWT token.
I've gotten the REST part done as per:

Creating a REST API with JWT Authentication in ObjectScript | InterSystems
 

0
0 69
Article Tani Frankel · Sep 22, 2024 1m read

Based on a great sample and workshop built by @Luis Angel Pérez Ramos (see related articles and related Open Exchange app), which included a local InterSystems IRIS for Health container (and desired setup), this sample presented here, adapted the workshop for using the InterSystems Cloud FHIR Server, and it's related setup.

3
1 390
Article Sergei Sarkisian · Jul 1, 2022 8m read

Before we start with some intermediate and advanced topics, I would like to sum up some more general points. They are subjective, of course, so I will be happy to discuss them if you have other opinion or better arguments for any of them.

The list is not comprehensive and this is intended, cause I will cover some topics in future articles.

Tip 1. Follow official styleguide

Angular is quite strict in terms of limiting the possible architecture of an application, but there are still many places in it that allow you to do things your own way. The imagination of the developers is limitless, but sometimes it makes the job difficult for those who work on the project with you or after you.

The Angular team does a good job by maintaining the Angular architecture itself and it’s libraries, so they definitely know how create stable and supportable codebase.

I recommend follow their official styleguide and deviate from it only if things don't work that way. This will make things easier when you will come to new project or if anyone will come into your project.

Remember, supportable, stable and easy to understand code and app architecture is more important than clever but cryptic solutions than nobody will able to catch up (possibly even you in the future).

Official Angular styleguide: https://angular.io/guide/styleguide

Tip 2. Consider to buy Angular Ninja book

You may think that this is ad, but here is the thing: that’s really good book with all the main concepts of Angular covered and the price is up to you. You can also choose how much money will go to writers and how much will go to charity.

One of the authors of this book is a member of Angular teem, so this is definitely the most reliable source of information about Angular after the official documentation. You can see the chapters of the book on the book’s page and read sample chapters to decide if it’s worth your buck.

Moreover, the book is updated with the release of a new version of Angular and you get all updates to the book for free.

The Ninja Squad blog itself is very good source of information about Angular, with articles and news about new versions, best practices, experimental features and more.

Angular Ninja book: https://books.ninja-squad.com/angular

Tip 3. Read official documentation

Before you dive in into the writing of some code of your app it’s a good idea to read through official documentation and guides, especially if you start your project on a version of Angular you hadn’t use before. Things keep getting deprecated all the time, tutorials and guides in the Internet could be outdated and you may end up with growing your technical debt instead of using new best practices and functionality.

That’s a good habit also to check for which version the guide was written for. If it’s 2+ version behind the one you are using then it’s better to check if things have changed since then.

Official documentation: https://angular.io

Tip 4. Consider of using Angular CDK even if you don’t use Angular Material

I will cover it better in future articles, but I know that many Angular Developers don’t even know about Angular CDK.

Angular CDK is a library of useful directives and base classes that can help you with developing better applications. For example, it has such things as FocusTrap, Drag & Drop, VirtualScroll and more which can be easily added to your components

Angular CDK: https://material.angular.io/cdk/categories

Tip 5. Fix your dependencies in package.json

It’s not particularly related to Angular and it might be important in any project. When you make npm install --save <something> , it will be added to your package.json with ^ or ~ in the beginning of package version. It means that your project will be able to use any minor/patch version of the same major version of the dependency. This will go wrong in the future with almost 100% probability. I faced this issue in different projects so many times. Time passing by and new minor version of some dependency coming out and your app won’t build anymore. Because an author of this dependency updated it’s dependencies in minor (or even patch) version and now they are in conflict with your build. Or may be there is a new bug presented in new minor version of your dependency and you have no problems in your code (cause you installed your dependencies before the new version came up) but anyone else trying to install and build your project from repository will face the bug you even don’t aware of (and you will not be able to reproduce it on your machine).

package-lock.json exists to solve this problem and to help developers have the same set of dependencies across the project. Ideally it should be committed to repository, but many developers are deciding to add this file to .gitignore. And id it’s gone, you may end up with problems above. So better do not blindly trust your dependencies resolution and fix it on the specific version, regularly scan it for vulnerabilities (with npm audit) and then update and test it manually.

Tip 6. Try to upgrade your app to the new Angular version as soon as you can

Angular is evolving continuously and new versions are releasing every 6 months or so. Keeping your app updated will allow you to use all the new features, including faster builds and other optimisations. Also, upgrading to the next major version of Angular should not be a big problem in this case. But if you are 5 versions behind and your application is mid or large size, the process of updating to last version can be tough as Angular has no schematics for upgrading apps skipping intermediate Angular versions. You will need to upgrade through all the intermediate versions one-by-one, checking that the application works on each version. The direct update without Angular CLI schematics is possible, but could also be tricky, so I’m suggesting keeping your app fresh and updated.

Tip 7. Try to reduce your dependency list

It’s easy to fall in habit of bringing new dependency in your app as you need new functionality. But with each dependency the complexity of your app is growing and the risk of sudden technical debt avalanche is increasing.

If you decided to add new dependency in your app think about this:

  • How well supported the dependency is?
  • How many people using it?
  • How big the development team?
  • How quickly they are closing GitHub issues?
  • How well documentation of the dependency is written?
  • How quickly it is updated after new major of Angular came out?
  • How big an impact of this dependency to performance and bundle size of your application?
  • How difficult will be to replace this dependency if it will be abandoned or deprecated in the future?

If some of this questions have negative tone answer, consider to get rid of it or at least to replace it for something more mature and well-supported.

Tip 8. Do not use <any> as your “temporary” type

Again, it’s easy to start using any as you write your business logic, cause writing proper types could be time-demanding, and you need finish your task in this sprint. Types can be added later, of course. But it is slippery slope to ramp up technical debt.

An architecture of your app and types should be defined before your write any business logic. You should clearly understand what objects you will have and where they will be used. Specification before the code, right? (Tom Demarco wrote a book about it before it went mainstream: https://www.amazon.com/Deadline-Novel-About-Project-Management/dp/0932633390).

If you are writing the code without pre-defined types, you might end up with worse app architecture and functions which use very similar but different objects. So you will need either create different types for each function (which will do things even worse) or spend your time for writing specification, types AND refactoring which is a waste of time compared to if it had been done before.

Tip 9. Spend your time to understand the build process

Angular does a great job to facilitate the work of the developer regarding the building of the project. But the default options not always best for every case.

Spend your time to understand how build process works in Angular, what the differences between Development and Production builds, which options Angular has for builds (like optimisations, source maps, bundling and more).

Tip 10. Investigate what’s inside your bundle

Not all libraries provide tree-shaking and not always we do imports right way, so there is always a chance that something redundant get bundled with our app.

So it’s good habit to investigate the content of your bundle from time to time.

There are good articles describing the process using webpack-bundle-analyzer , so I won’t cover it here, but here is a link for one of them: https://www.digitalocean.com/community/tutorials/angular-angular-webpack-bundle-analyzer

I will cover this topic more detailed later in the series.

Tip 11. Use services providedIn property instead of importing the service in the module

Many Angular code examples on the Internet use importing the services in the modules. But it is not preferred way of declaring services since Angular 6 or 7. We should use @Injectable decorator property providedIn for enabling tree-shaking and better bundling of our applications. Angular is smart enough to understand in which bundle the service should be included in, when it should be initialized and how many instances of the service should be created.

There are three values which providedIn accepts. Most of the time root is enough, but there are two more:

  • root: the service will be singleton in scope of application
  • any: one instance of the service will e created for all the eagerly loaded modules along, with different instance created for every lazy module
  • platform: the service will be singleton for all the applications running on the same page

Tip 12. Do not forget main performance rules

  • Use trackBy for collections to reduce redrawing operations and JavaScript execution
  • Use onPush change detection strategy in every place you can (I will cover it in the dedicated article)
  • Perform heavy calculations outside of ngZone
  • Use throttle and debounce patterns with your events to prevent unnecessary server calls and event flooding
  • Use Virtual Scrolling for displaying big data sets
  • Use pure pipes for data transformation in your templates
  • Use AoT compilation
  • Lazy load the parts of your app which not necessary for application to start
  • Avoid computations and conditional function calls in your templates (function calls should be used only for events)

Thanks for reading! Hope that some of this tips were useful for you. If you have any comments and remarks, please, let me know in the comments, I will be glad to discuss 😃

See you!

2
3 533
Article Luis Angel Pérez Ramos · Jul 25, 2024 4m read

With the introduction of vector data types and the Vector Search functionality in IRIS, a whole world of possibilities opens up for the development of applications and an example of these applications is the one that I recently saw published in a public contest by the Ministry of Health from Valencia in which they requested a tool to assist in ICD-10 coding using AI models.

How could we implement an application similar to the one requested? Let's see what we would need:

2
2 391
Article Andrii Mishchenko · Sep 22, 2024 5m read

Introduction

Managing databases and performing CRUD operations are fundamental tasks for developers building data-driven applications. While many database management systems (DBMS) exist, they can be complex and cumbersome to interact with, especially when it comes to creating databases and tables, handling constraints, and performing real-time data operations through an API.

4
0 355
Article Andrii Mishchenko · Sep 27, 2024 4m read

In this article, we’ll dive into the inner workings of the database management tool, exploring the architecture and technologies that power it. Understanding how the application functions behind the scenes will give you insight into its design, how it manages databases, tables, and how the API interacts with data.

We will discuss the core technologies used, including InterSystems IRIS as the primary database and Redis for caching. Additionally, we’ll break down the structure of the tables used and explain how the system handles data creation, retrieval, and manipulation through the REST API.

0
1 207
Article Luis Angel Pérez Ramos · Feb 16, 2024 6m read

In the last article we presented the architecture of our SMART On FHIR project, so it's time to get down to business and start configuring all the elements that we are going to need.

We will first start with Auth0.

AUTH0 configuration

We will start by creating an Auth0 account with a valid email, once registered we will have to create our first application, and we will do it from the menu on the left:

In our example, the application will be of the Single Page Web Application type as it is an application developed in Angular 16. We select this option and click Create.

1
2 583
Article Luis Angel Pérez Ramos · Jul 31, 2024 4m read

In the previous article we presented the d[IA]gnosis application developed to support the coding of diagnoses in ICD-10. In this article we will see how InterSystems IRIS for Health provides us with the necessary tools for the generation of vectors from the ICD-10 code list using a pre-trained language model, its storage and the subsequent search for similarities on all these generated vectors.

Introduction

1
1 356
Job Matthias Thon · Jun 12, 2024

Hello,

I have over 30 years of experience developing solutions with MUMPS and IRIS. Additionally, I also develop in C++, Python, Angular... 
Experiences with Container (Docker) , GIT and REST-API's

 I'm seated in Germany and looking for a job opportunity as a freelancer who mostly works from home office.

regards Matthias

3
0 316
Announcement Timothy Leavitt · Jun 27, 2022

Hello community,

I'd like to briefly announce three new packages, available on the Open Exchange / through ZPM, that can really help accelerate modern full-stack application development on IRIS. I announced all of these in a Global Summit session last week, but you may have missed it - and I hear there's a full-stack application development contest coming up!

1
1 442
Article Luis Angel Pérez Ramos · Apr 29, 2024 5m read

For some time I have been planning to do some type of proof of concept with the Workflow functionality, which, like so many other functionalities present in IRIS, tends to go quite unnoticed by our clients (and for which I say mea culpa). That's why I decided a few days ago to develop an example of how to configure and exploit this functionality by connecting it with a user interface developed in Angular.

2
8 599
Question Sylvie Greverend · May 7, 2024

I have an angular UI communicating with a iris rest api. Now I need to authenticate (to federated) before accessing the UI, and for a better solution  as the users are using the healthshare clinical viewer 2023, find a way to use the clinical viewer authentication / user to go to the UI.

The angular way would be to do an angular guard and have a function 'am I authenticate to federated', but I never found a function like this and how to get my username.

0
0 126
Article Luis Angel Pérez Ramos · May 3, 2024 6m read

In our previous article we presented the general concepts as well as the problem that we wanted to solve by using the task engine integrated in InterSystems IRIS, in today's article we will see how we configure an interoperability production to provide a solution.

Workflow Engine Configuration

First we are going to define the roles of the tasks that we are going to manage, in our example we are going to define two types:

0
2 291
Article Luis Angel Pérez Ramos · Feb 20, 2024 4m read

We conclude this series of SMART On FHIR articles with Auth0 and InterSystems IRIS FHIR Repository by reviewing our application developed in Angular 16.

Let's remember what the architecture defined for our solution is like:

Our front-end application corresponds to the second column and as you can see it will be in charge of two things:

  1. Redirect the login request to Auth0 and receive the response.
  2. Send and receive the response of requests via REST sent to the FHIR server.

Angular

0
3 536
Article Luis Angel Pérez Ramos · Feb 14, 2024 4m read

Introduction

I recently participated in a fantastically organized hands-on by @Patrick Jamieson in which an Angular application was configured together with an IRIS FHIR server following the protocols defined by SMART On FHIR and I found it really interesting, so I decided to develop my own Angular application and thus take advantage of what I learned to publish it in the Community.

SMART On FHIR

Let's see what Google tells us about SMART On FHIR:

0
1 702
Article Maria Nesterenko · Jan 28, 2024 4m read

Striking a Balance Between Health Analytics and Engaging Features

In today's digital era, health and lifestyle apps have flooded the market, promising a wide array of benefits from fitness tracking to nutrition planning and focusing on trendy features, such as step counting, calorie tracking, and habit monitoring. While  the surge in app development is undoubtedly a positive sign of society's growing interest in health and wellness features can be engaging and motivate users to adopt healthier lifestyles, they often lack the depth required for serious health analytics. 

10
0 302
Article Luis Angel Pérez Ramos · Aug 25, 2023 4m read

Taking advantage of the Quiniela ML application and as we indicated in the previous article, we are going to explain how we can perform a JWT authentication between our frontend developed in Angular and our backend developed in InterSystems IRIS.

I remind you of the architecture of our QuinielaML project:

Usually it is a cumbersome process in web applications to develop the administration and management of user access, but in our case InterSystems IRIS simplifies the process by providing us with all the infrastructure we need.

JSON Web Token Authentication

11
2 553
Article Luis Angel Pérez Ramos · Aug 22, 2023 4m read

Welcome dear members of the Community to the presentation and first article of a small project that will demonstrate the capabilities of InterSystems IRIS to provide full backup functionality for a web application developed in Angular. This article will be limited to presenting the concept as well as the InterSystems IRIS functionalities used in a general way, going into more detail in subsequent articles.

Welcome to QuinielaML!

Introduction

0
1 508
Article Maria Nesterenko · Apr 20, 2023 5m read

Many factors affect a person's quality of life, and one of the most important is sleep. The quality of our sleep determines our ability to function during the day and affects our mental and physical health. Good quality sleep is critical to our overall health and well-being. Therefore, by analyzing indicators preceding sleep, we can determine the quality of our sleep. This is precisely the functionality of the Sheep's Galaxy application.

Sheep's Galaxy is a sample application that works with InterSystems' IntegratedML and IRIS Cloud SQL technologies and provides the user with a tool to analyze and improve sleep quality. The analysis of sleep takes into account factors such as noise levels, room lighting, sleep duration, caffeine consumption, and more, allowing the user to reconsider their sleep-related habits and create optimal conditions for sleep in the future.

Presentation video:

https://www.youtube.com/watch?v=eZ9Wak831x4&ab_channel=MariaGladkova

The app is based on the following technologies:

Frontend part:

To build this app we used Angular framework. It helped us to create a simple single page application. We used Angular v15, and all Angular components were implemented as standalones to streamline the authoring experience. We didn’t use Angular modules and it's a good practice to scale an app in the future if it need. We also used Smart Component Architecture – all components in our frontend application are divided into "smart" and "dumb" components. This concepts helps us to separate the business logic code and presentation code between these components. All business logic and requests to server are kept in the isolated services. To process our backend data we use RxJS - a library for composing asynchronous and event-based programs by using observable sequences. To style our app we used Angular Material - it is a User Interface component library which developers can use in their Angular projects to speed up development of elegant and consistent user interfaces. This library offers a lot of reusable and beautiful UI components - we added some of them like Cards, Inputs, Data Tables, Datepickers, and much more. Below we present an overview of typical user workflow. First, user goes through either the registration process, if using it for the first time, or through authorization screen.

image

Using the app, the user enters information about sleep, such as activity level during the day, number of cups of coffee, sleeping comfort, stress level and amount of positive emotions, as well as room light and bedtime.

image

After each data entry, the user will receive a notification of sleep quality. This data is then analyzed using machine learning algorithms to provide users with insights into their sleep patterns.

image

Backend part:

Fastapi is a python framework based on two technologies: Pydantic and Starlette. It has the following features:

  • Is based on open standards: OpenAPI, JSON schema, OAuth2;
  • Automatic API documentation in swagger;
  • Dependencies implementation;
  • Uses features of modern python: type annotation, asyncio;
  • Supports synchronous and asynchronous code;

The project structure consists of routers with endpoints, models for each entity and processing services.

Each endpoint appears in the atomic documentation at /docs and endpoint fields have a relationship to the data models in the database.

image

Pydantic models automatically validate incoming and outgoing data.

image

The process of working with user data is built on the protocol, which allows you to work with data in a secure way.

image

The process of interaction with the database is implemented through IRIS SQL connection using the DB API.

image

IRIS Cloud SQL with IntegratedML:

First, you need to login to InterSystems Cloud Services Portal. Here you need to create a new IRIS Cloud SQL deployment. Be sure to include IntegratedML when you create a new deployment. When it's ready, you can obtain connection parameters to use in docker-compose.yml:

image

By opening 'IntegratedML Tools' menu you have access to create, train, validate your model, and have the ability to generate predictions on a selected field in your model table.

image

In our app, we predict sleep quality based on user data. To do this, we fill in the fields in the Prediction section as follows:

image

In the generated query, the prediction field contains a prediction of the quality of sleep, the probability_quality field contains the probability that the dream will be "qualitative".

Links:

To learn more about our project or use it as a template for your future work: https://openexchange.intersystems.com/package/Sheep%E2%80%99s-Galaxy

Thanks:

Our team would like to thank InterSystems and Banksia Global for an opportunity to work with cutting-edge technology on important issues.

Developers of project:

5
0 355
Article Evgeny Shvarov · Jun 24, 2020 3m read

Hi Developers!

Suppose you have a persistent class with data and you want to have a simple Angular UI for it to view the data and make CRUD operations.

Recently @Alberto Fuentes described how to build Angular UI for your InterSystems IRIS application using RESTForms2. 

In this article, I want to tell you how you can get a simple Angular UI to CRUD and view your InterSystems IRIS class data automatically in less than 5 minutes.

Let's go!

3
4 1309
Article Sergei Sarkisian · Dec 30, 2016 27m read

This article is translation of one from Habrahabr InterSystems blog (Russian).
The original post can be found here: https://habrahabr.ru/company/intersystems/blog/251611/
 

Everyone familiar with InterSystems Ensemble, an integration and application development platform, knows what the Ensemble Workflow subsystem is and how useful it can be for automating human interaction. For those who don’t know Ensemble (and/or Workflow), I will briefly describe its capabilities (others may skip this part and learn how they can use the Workflow interface in Angular.js).

InterSystems Ensemble

6
1 4649