How many times do we find ourselves rebuilding, copy-pasting, adapting, Business Operations that make calls to REST services, and only adapting one or another part of the final code. This is annoying a lot. To resolve this our inconvenience, I present to you Interopway REST, a set of classes (a micro framework) that allows us to just add Business Operation to Production and use it.

1 0
1 80

Who has never been through in the following situation:

I have an application/global configuration that is not and cannot be mapped to a class, but it is necessary to provide a stored procedure so that a report tool using ODBC/JDBC or even using the resultset of IRIS itself, can access the data and generate the report.

In IRIS we have a functionality that allows us to create a query that can be accessed internally and also be exposed as a stored procedure, with our own logic. That functionality is Custom Class Query.

2 0
0 95

You may have already heard that, starting with IRIS and HealthShare HealthConnect 2023.2 versions, the internal Apache Server will be removed from the default installation, so it will be necessary to have an external application server such as Apache Server or NGINX.

In this article I am going to proceed to install a HealthShare HealthConnect 2023.1 so that it works with a pre-installed Apache Server. For this I will use a virtual machine on which I have installed an Ubuntu 22.04.

1 0
1 51

Here we are again with an article related to the Mirror!

In the previous article we saw how we could configure a Mirror between two IRIS instances, one acting as an active node and the other as a passive one. This mirroring system works on the transfer of a journal file that keeps the instance that works as a passive node continuously updated, but what happens if due to some communication failure or permissions of the journal file it is not transferred correctly?

3 0
0 141

InterSystems FAQ rubric

You can use the system routine ^DBSIZE to estimate the backup file size (see also Note 1).

^DBSIZE estimates the file size of full, cumulative, and differential backups of the databases selected in the database backup list.

The database backup list is created from [System Administration] > [Configuration] > [Database Backup] > [Database Backup List] in the Management Portal.

1 0
0 53

A common need for our customers is to configure both HealthShare HealthConnect and IRIS in high availability mode.

It's common for other integration engines on the market to be advertised as having "high availability" configurations, but that's not really true. In general, these solutions work with external databases and therefore, if these are not configured in high availability, when a database crash occurs or the connection to it is lost, the entire integration tool it becomes unusable.

2 4
1 202

We start this new article refreshing what we did in the previous EMPI configuration articles:

  • Installation in Standalone mode the Patient Index on a HealthShare instance.
  • Configuration of basic parameters to start working with the EMPI.
  • Definition of indexes and weights for NICE process.

Very well, we are practically ready to start rolling our EMPI. We only have one detail left, to start the production created by the installation to be able to start working.

0 0
0 69

In the previous article we have reviewed how to install our EMPI in standalone, so we are ready to start the basic configuration of our EMPI.

First of all we have to do an initial basic configuration, we can access to the configuration from the Configuration menu of our Registry.

Selecting that option will allow to us to edit the basic configuration table of the Registry:

3 0
0 146

Hi community! I would like to show you how to install and configure one of the HealthShare products, the Enterprise Master Patient Index or EMPI.

The EMPI provides to any organization a master patient index to identify each patient of the organization univocally. You can find more information about the EMPI in the following URL:

1 0
0 74
· Mar 2 4m read
Tutorial - Streams in Pieces

This tutorial is a follow on to Working with %Query
It was displaying the content of the input stream chopped in fixed-size chunks.
But often those streams are structured and have well-defined separators (e.g HL7)
So as a side subject of this tutorial, this chapter shows how to break a stream into PIECES.

It is exactly the same idea as the $PIECE() function for strings with some add-ons.

12 1
1 178

My previous article introduced you to SQL based Basic Class Query
where a clever wizard created all the required code for you and your essential
contribution was an SQL statement.

Now we enter the real Custom Class Query that provides more freedom but
requires a deeper understanding of the mechanic behind the scene.
The full code example is again on GitHub

8 1
0 146

The title of the contest subject is not quite precise but addresses the %Library.classes involved.
What is meant is officially named Class Query and is dating back to the early days of Caché.
CLASS is used because it is embedded in a COS class.
Though there is a precise description in the official documentation it remains rather abstract.
My tutorial should guide you step-by-step through a simple example in COS to make it tangible to you

8 4
1 364

Schematron is a rule-based validation language for making assertions about the presence or absence of certain patterns in XML documents. A schematron refers to a collection of one or more rules containing tests. Schematrons are written in a form of XML, making them relatively easy for everyone, even non-programmers, to inspect, understand, and write

1 0
0 220

Hello, friends who are developing IRIS. I recently participated in the InterSystems Developer Tools Contest. This time, I made a tool based on the idea described in an article I published earlier as a template for quick query of messages. Currently, you only need to establish entity classes in IRIS, Then record the message corresponding to the entity class in the specified lookup table, and all the key fields generated in the message can be inverted indexed (the concept in ElasticSearch), which is convenient for quick query. The following is the design idea of my program.

1 1
0 97

Because I had no idea how to build an integration solution for HL7 and didn't know where to start, I decided to follow the course Building Basic HL7 Integrations with InterSystems on Learning portal to get at least the idea of where to begin. After I studied all of it, I decided it might be a good idea to share my thoughts and reflections about it with everyone.

8 1
4 385

In the previous article, we talked about the flow of data to request the test and receive the results of the requested test. Now let's talk about one of the most important messages of HL7v2 standard.

Every time a receiving application accepts a message and consumes the message data, it is expected to send an ACKnowledgement (ACK) message back to the sending application. The sending application is expected to keep on sending a message until it has received an ACK message. It is done to inform the sending application that its message was successfully received, that it is (not) valid in accordance with HL7 rules and, if it is compliant, that it will be processed at some point.

3 0
0 399

In the previous article, we've seen the structure of one of the most used types of HL7 message - ADT (Admit, Discharge, Transfer) and an example of ADT^A04 with the description of all its fields. Now let's look at another flow of data having to do with ordering and fulfilling the orders of tests. I'm talking about ORM (as of version 2.5 you should use specific messages to order tests, like OMG, OML, OMD, OMS, OMN, OMI, and OMP), ORL and ORU messages. In a very simplified case, the exchange of data may look like this.

Let's look at these messages in more detail.

3 0
1 866

In the previous article, we've discussed the origin of the standard HL7v2, the structure and the types of messages. Let's now look at one of the most used types of messages and an example of its structure. I'm talking about ADT.

HL7 ADT messages (Admit, Discharge, Transfer) are used to communicate basic patient information, visit information and patient state at a healthcare facility. ADT messages are one of the most widely-used and high volume HL7 message types, as it provides information for many trigger events including patient admissions, registrations, cancellations, updates, discharges, patient data merges, etc.

6 1
4 3,614
· Nov 29, 2022 6m read
What's HL7v2?!

HL7 (Health Level 7) is a set of technical specifications for computerized exchanges of clinical, financial and administrative data between hospital information systems (HIS). These specifications are variously integrated into the corpus of formal American (ANSI) and international (ISO) standards.

The L7 of HL7 indicates that it is a standard that operates at layer 7, in other words at the application layer, of the OSI model. This means that HL7 does not have to take into account exchange security considerations, or those of message transport (this being ensured by lower-level layers such as SSL/TLS for security or TCP for the transport of data for example). To be more precise, layer 7 supports communications for end-user processes and applications and the presentation of data for user-facing software applications. As the highest layer of the OSI model, and the closest to the end user, layer 7 provides application-specific functions such as identifying communication partners and the quality of service between them, determining resource availability, considering privacy and user authentication, and synchronizing communication, as well as connecting the application to the lower levels of the OSI model.

Returning to the HL7 standard, the HL7 version 2 standard (also known as Pipehat) was originally created in 1989 but is still being used and updated regularly, resulting in versions 2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, 2.5.1, 2.6, 2.7, 2.7.1, 2.8, 2.8.1, 2.8.2 and 2.9. The v2.x standards are backward compatible (e.g., a message based on version 2.3 will be understood by an application that supports version 2.6) and in higher versions, you will see some fields are left just for it.

Despite it being more than 30 years old, HL7v2 remains the most widely used healthcare interface standard by a large margin according to the portal that tells that:

12 4
1 616
· Oct 24, 2022 7m read
PerfTools IO Test Suite


This pair of tools (RanRead and RanWrite) is used to generate random read and write events within a database (or pair of databases) to test Input/Output operations per second (IOPS). They can be used either in conjunction or separately to test IO hardware capacity, validate target IOPS, and ensure acceptable disk response times are sustained. Results gathered from the IO tests will vary from configuration to configuration based on the IO sub-system. Before running these tests ensure corresponding operating system and storage level monitoring are configured to capture IO performance metrics for later analysis. The suggested method is by running the System Performance tool that comes bundled within IRIS. Please note that this is an update to a previous release, which can be found here.

5 1
0 360


We often run into connectivity problems with HealthShare (HS) deployments in Microsoft Azure that have multiple HealthShare components (instances or namespaces) installed on the same VM, especially when needing to communicate to other HS components while using the Azure Load Balancer (ILB) to provide mirror VIP functionality. Details on how and why a load balancer is used with database mirroring can be found this community article.

5 0
0 425