Announcement Nicky Zhu · Jul 28, 2025

#InterSystems Demo Games entry


⏯️  IRIS As Healthcare Data Infrastructure

Data, as a new type of production resource, has received increasing attention. The current economic development situation has raised many new demands for how to create usable value from data at scale. In reality, siloed systems, inconsistent data semantics, and difficulties in data deployment have greatly hindered the development of the data economy. InterSystems IRIS, as an integrated data platform, provides many capabilities to help enterprises and healthcare institutions open up data and leverage data value. In this demonstration, we will describe what challenges the data economy poses for data production, and how IRIS addresses these issues using its rich and powerful features.

Presenters:
🗣 @Nicky Zhu, Senior Sales Engineer, InterSystems
🗣 @Qiao Peng, Regional Sales Engineer Manager, InterSystems

0
0 85
Question Nicky Zhu · Nov 8, 2024

Hi guys,

Is it possible to apply business rule on a XML without Schema?

Say, I'm trying to make some business rules on FHIR XML payload. I transferred the XML stream as an EnsLib.EDI.XML.Document in a BPL and passed it to a General Business Rule.

Set context.xmlDocument = ##Class(EnsLib.EDI.XML.Document).ImportFromLibraryStream(##class(HS.SDA3.QuickStream).%OpenId(request.QuickStreamId))

I'm handling following XML document 

With this rule

Then I got stuck at visiting the elements in the XML.

I.e How may I evaluate the profile value?

Thanks。

6
0 208
Question Nicky Zhu · Nov 5, 2024

Hi Guys,

I'm helping a partner to integrate IRIS to their project. They want to integrate Rules in there system.

For testing I built a simple rule as below:

/// Class Test.TestRule Extends Ens.Rule.Definition
{

Parameter RuleAssistClass = "Ens.Rule.GeneralBusinessRuleAssist";

XData RuleDefinition [ XMLNamespace = "http://www.intersystems.com/rule" ]
{
<ruleDefinition alias="" context="EnsLib.HL7.Service.
3
0 185
Article Nicky Zhu · Oct 10, 2024 9m read

This demo program is used to show how a custom FHIR profile can be employed to validate data compliance. The custom FHIR implementation guide was developed based on FHIR Version R4, and in this example implements the Organization resource extension to validating data compliance.

Installation

  1. Download the project via Git clone.
  2. Execute docker-compose up -d to build and start the container, the initial execution will download required container images and executing the script will take another 5 to 10 minutes (depending on the machine).
0
1 437
Question Nicky Zhu · Jun 10, 2022

Hi,guys

My client is using IRIS 2021.1 Interoperability and they want to highlight the sessions with unresolved(without resent and completed operations) errors so their maintenance team can have a list of unresolved sessions to check against.

When I'm working on it, it seems to be it is is difficult to decide whether a session have unresolved errors. For example,

enter image description here

in this session, the entry async request is labelled as error after the following dispatches was resent and completed. So it is not correct to decide with the entry.

2
0 464
Question Nicky Zhu · Apr 25, 2022

Hi guys,

How to find out the number of active connections (including SQL, http, tcp and all remote connections) of an IRIS instance? A core based license is used.

I've checked the document and find %SYS.ProcessQuery.

I'm currently using this sql:

select count(distinct Pid) From %SYS.ProcessQuery
where ClientIPAddress is not null
and ClientIPAddress <> '127.0.0.1'
and ClientIPAddress <> 'localhost'
and IsGhost = '0'

Is it accurate or do we have a better option?

Thanks in advance.

4
0 454
Question Nicky Zhu · Mar 16, 2022

Hi guys, I'm calling a java method as below:

public static byte[] SM4EncryptJson(byte[] arg0) throws Throwable {

String inJson = "";

try {

//logger.info("Payload :" + arg0);

inJson = new String(arg0);

//logger.info("As String :" + inJson);

EncTarget payload = JSON.parseObject(inJson, EncTarget.class);

return SM4Encrypt(payload.getContent().getBytes(),payload.getSecretKey());

}catch (Exception e){

logger.error("Error encrypting : ", e);

logger.error("Content : " + arg0);

logger.error("As String : " + new String(arg0));

//logger.log(Level.SEVERE, e.
4
0 463
Question Nicky Zhu · Nov 3, 2021

Hi guys,

My client has a requirement to add a column of random numbers to the query result.

I wrote a function as below:

Class Utils.SqlUtility Extends %RegisteredObject
{

ClassMethod GetSomeNumber(intInput As %Integer) As %Integer [ SqlName = GetNumber, SqlProc ]
{
    Return $R(intInput)
}

}

But in the returned sql result, every row share the same value, as below,

SELECT Utils.GetNumber('456'),
ID, Citizenship, DOB, FirstName, Gender, IDNumber, LastName, PatientNumber, PhoneNumber
FROM CDR.Patient

How may I refactor the function or sql to make the random value really random on each of the rows?

Thanks.

6
0 1184
Question Nicky Zhu · Jun 3, 2021

Hi guys,

How can we remove a business host from a running production?

I've read and tested how to add it to a production, while when I try to remove it from the production with the following codes:

Set tSC = $$$OK
    Set prodName = "CDRDemo.DemoProduction"
    Set confName = "TEST1"
    Set className = "Demo.LISClient.Operation.PatientOperation"
    #Dim prodConf As Ens.Config.Production = ##class(Ens.Config.Production).%OpenId(prodName)
    Set itemId = ""
    &SQL(Select ID into :itemId from Ens_Config.
1
0 300
Question Nicky Zhu · Mar 17, 2021

Hi guys,

We are connecting to a 3rd party SOAP web service. The wsdl looks like below

Please notice that the portType was defined as /cvpService. 

Then when we are trying to use SOAP Wizard to generate a client for the service, we will encounter the following error which prevented the generation

It seems that '/cvpService'  can not be used as a valid class name (or even method name) thus the generation failed.

Thus I have 2 questions about the failure

1.

3
0 415
Question Nicky Zhu · Jan 7, 2021

Hi guys,

In our clients environment, multiple sources will connect to one DB (all through JDBC connections) and perform various operations. Sometimes they found some data was deleted without  reason.  Thus they want some feature like SQL Server Database Audit Specifications that can log who at what time with which IP deleted data in a specific DB.

I've checked IRIS Audit but I didn't  find feature about  that . How can we audit and log  delete  of a known DB? The deletions might be performed by delete statament or truncate table stattement.

Thanks.

5
0 684
Question Nicky Zhu · Jun 19, 2020

Hi all,

I added an additional shard node to an existing shard by accident.

After the add, it can not be removed and query from the master shard now fails. I did not find any data  from shard master in the shard node.

How to recover it and remove the shard node from the shard master?

Thanks.

2
0 234
Question Nicky Zhu · Jan 4, 2019

Hi guys,

I have a customer trying to extract data from Hive. I've tried to use Data migration to migrate a table into IRIS with JDBC driver. But the migration task always fails as below

Then I tried to create a link table, the task fails too with the following error:

I've tried several ID combinations such as rowkey+userid, userid + datatime, the results are all errors caused by stream property. 

The source table are composed of only Hive string fields.I wonder how may I migrate Hive tables into IRIS. Thanks.

4
0 477
Question Nicky Zhu · Sep 3, 2018

Hi, guys,

I've written a DT for a partner which transfers a csv file into SDA3. 

I', using record map to gather data from a folder storing csv files and using the DT to tranfer the records into sda3 entities.

The followings are the codes of that DT:

Class POC.DT.CSV2SDA3 Extends Ens.DataTransformDTL [ DependsOn = (User.PhysicalExam.Record, POC.SDA.Container) ]

{

Parameter IGNOREMISSINGSOURCE = 1;

Parameter REPORTERRORS = 1;

Parameter TREATEMPTYREPEATINGFIELDASNULL = 0;

XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ]

{

<transform sourceClass='User.PhysicalExam.Record' targetClass='POC.SDA.

1
0 436
Question Nicky Zhu · Jul 1, 2018

Hi guys,

I'm helping our client to pass a Chinese CHIMA FHIR certification, which requires to search  encounter by subject(Patient) name.

I noticed that in FHIR specification, chained parameters were included, as below:

2.21.1.4.13 Chained parameters 

In order to save a client from performing a series of search operations, reference parameters may be "chained" by appending them with a period (.) followed by the name of a search parameter defined for the target resource. This can be done recursively, following a logical path through a graph of related resources, separated by .

2
0 967
Question Nicky Zhu · Jun 22, 2018

Hi folks,

One of my clients want to project a null property of a cache object to an empty XML element. Say, if we have a class:


Class Diabetes.BS.Message.LabReportMessage Extends Ens.Request
{

Property Report As %String;

Property IsRisky As %Boolean;

Property RiskValue As %String ;

}


If the instance of this class has a null RiskValue, after projection, they want the XML as following:

<LabReportMessage>
                <Report>Somestring</Report>
                <IsRisky>1</IsRisky>
                <RiskValue/>
 </LabReportMessage>

Is there any way we can do it? Thanks.

1
0 979
Question Nicky Zhu · May 20, 2018

Hi guys, I'm helping one of our customer to use unattended install to standardize their deployment. I'm using Unattended Installation and Installation Manifest

Although I can use the combination to install HealthConnect and then create namespaces and DBs as they need, there are still several tasks that I did not find the solution yet. As following:

1. Configure mirrors

2. Set the directory to store journals

3. For a given Ensemble name space, configure the period length in purging messages.

4.

7
0 644
Question Nicky Zhu · Oct 24, 2017

Hi guys,

I'm trying to immigrate some of my HealthInsight dashboards and pivot tables to another HS instance.

In some pivot tables, I defined them with a set of calculated dimensions defined in the analyzer, e.g as below:

Then when I exported the cubes and pivot tables in used to my new envirmonment. When I open my pivot tables again, the calculated dimensions are missing and hence my pivot tables no longer work:

Is there any way to export those calculated dimensions so that I can used them else where? 

6
0 528