#Business Process (BPL)

4 Followers · 230 Posts

InterSystems Ensemble Business Process Language (BPL) is a language used to describe executable business processes within a standard XML document.

Documentation.

Question Dmitrii Baranov · Nov 12, 2024

To transfer data between production components I actively use messages of type Ens.StreamContainer class and its descendants. In many cases the content of the message content is not visualised (the 'Body' tab contains a table with a list of selected message properties but the 'Contents' tab is empty). Response messages are never visualised, and request messages are visualised with a fifty-fifty probability. What do I need to do to ensure that messages are always visualised?

3
0 193
Question Scott Roth · Oct 28, 2024

Our TEST environment and PROD environment are on two different versions of HealthShare Health Connect.


TEST IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2024.1 (Build 267_2U) Tue Apr 30 2024 16:06:39 EDT [HealthConnect:7.2.0-1.r1]
PROD IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2022.1.4 (Build 812_0_22913U) Thu Dec 7 2023 17:06:30 EST [HealthConnect:3.5.0-1.m1] [HealthConnect:3.5.0-1.
4
0 185
Question Yone Moreno · Oct 18, 2024

Hello,

First of all: thanks for your help, and thank you for your time.

Thanks for your time.

We have the following situation:

We are in a BPL, and we have defined 4 <call> asynchronous as follows:

First one name: "Enviar a Proceso NEGRIN"

The second one, named as: "Enviar a Proceso HUNSC"

The third one, titled: "Enviar a Proceso CHUIMI 02"

 

And the fourth and last one names as: "Enviar a Proceso Fuertev"

Inmediately after the 4 calls, we have a <sync> instruction which should wait for all of them to finish.

9
0 245
Question Scott Roth · Oct 2, 2024

I have been trying to track down an issue we are seeing in our TEST environment with Memory usage.

We have Several BP's for years now that take a HL7 message, parse it apart, and make calls to a Custom EnsLib.SQL.OutboundAdapter to have it execute Insert/Select/Update/Delete stored procedures against a MS SQL Database via JDBC connection. We are using Microsoft's JDBC 12.2 driver to do this.

What we are seeing is that IRIS.WorkQueue globals are being defined for these calls but then the IRIS.WorkQueue is not being cleaned up and taking up large amounts of Memory.

5
0 180
Article Samuel Thomas · Sep 23, 2024 1m read

<> <> # IRIS-API-Template

This is a REST template that can send REST messages to production and control interfaces through Servicer, processes, and operations

How to use it

zpm "install iris-rest-template"

Prerequisites

Make sure you have git and Docker desktop installed.

Installation

1.Clone/git pull the repo into any local directory

git clone https://github.com/samuelxabc/IRIS-API-Template.git

Open the terminal in this directory and run

docker-compose build

Run the IRIS container

docker-compose up -d
3
0 238
Question Thomas Vessiere · Sep 17, 2024

Hello.

I have a business process with an "ASTM" class : 

Inside this process i have a business rule. Inside this rule i want to get a specific field inside the message :

So i will use the same logic for HL7 messages. Here is the "path" to the segment and the field : 

So i will use this inside the routing rule like i did for HL7 messages. 

i have tried MUCH prefix like "ASTM" "X12" "ESI.X12" ..... I only got errors like << PROPERTY DOES NOT EXIST >> 

Can someone tell me what i'm doing wrong ?

Thanks.

Thomas.

1
0 176
Question Michael Wood · Jan 19, 2024

I have this response, which is a FHIR location resource in a bundle. I would like to load the entry(0).resource into a context property defined as HS.FHIR.DTL.vR4.Model.Resource.Location so I can use it as a source in a DTL.  Any help would be greatly appreciated.  Thanks. 

{"entry":[{"fullUrl":"https://dev-api.hosp.org/idkl/fhir/r4/v1/Location/ATH-1375-PRV-a-1375.D…","resource":{"extension":[{"url":"https://api.hosp.org/idkl/extensions/StructureDefinition/is-messaging-e…","valueBoolean":true}],"id":"ATH-1375-PRV-a-1375.

4
0 313
Question Scott Roth · Aug 1, 2024

As I begin our adventure into using an External FHIR Repository, I wanted to see what opinions people have about a design Idea I was working on. 

I want to create a way that my Team has the ability to send a Message Type, and the system knows from that Message Type which FHIR queries to execute and return the Response back to the user, sort of like a FHIR Query Hub. Does this sound reasonable?

0
0 103
Question Will · Jul 15, 2024

In a HL7 Business Rule, I want to create a custom function that works on an HL7 message object (ENSLIB.HL7.Message).  I extended the Ens.Rule.FunctionSet class, and have a class method that accept a ENSLIB.HL7.Message obj -

ClassMethod myfunction(msg As EnsLib.HL7.Message) As %Boolean,  so I can call   myfunction(HL7)  in the rule's condition

The problem is, it seems that I can only use absolute property paths such as msg.GetValueAt("1:9.2") but not a path containing HL7 segment name,  for example as in msg.GetValueAt("MSH:9.2").  This is a huge limitation.

2
0 305
Question Lee Butcher · Jul 15, 2024

Hi

We have a use case whereby very large HL7 MDM messages, which contain many OBX segments, need to be processed by a custom business process. Part of the process is to iterate over each OBX segment and set a value in the same field for each segment.

Testing with a message that is ~500MB and contains over 8000 OBX segments I've encountered <STORE> errors, which surprisingly seems to be due to using SetValueAt. It appears to get through a few thousand segments before it falls over with the memory error, which I assume is because the SetValueAt method keeps in memory each preceding OBX segment?

0
0 150
Question Scott Roth · Jun 27, 2024

IRIS for UNIX (Red Hat Enterprise Linux 8 for x86-64) 2024.1 (Build 267_2U) Tue Apr 30 2024 16:06:39 EDT [HealthConnect:7.2.0-1.r1]

I have a use case where Epic is sending an A60 Allergy transaction is set at the Patient level, but we have a system called VIBE which needs the ADT at an Encounter level instead. Currently we store ADT information in a MS SQL database for years, and we are querying it to get the latest Account Number to insert into the ADT^A60 for VIBE.

This MS SQL Visit Database was built over 20 years ago and is quite cumbersome to keep maintaining.

2
0 251
Question Michael Wood · Jun 6, 2024

I have an API that does not have all the data.  Like it is truncated. Magic number of characters seems to be 163,280

I do an <assign> 

context.RawBundle=##class(%DynamicObject).%FromJSON(context.FHIRResponse.Body)

The error does not happen when the response is < 163,280 chars.  And when < 163,280 chars, it is a complete FHIR Bundle.  Have anyone experienced this?  If so, what is the resolution?

2
0 245
Article Alex Woodhead · Mar 24, 2024 8m read

BPL from 10,000 feet

BPL stands for Business Process Language.
This is an XML format for describing complex information orchestration interactions between systems.
InterSystems Integration engine has for two decades, provided a visual designer to build, configure, and maintain, BPL using a graphical interface.
Think of it like drawing a process flow diagram that can be compiled and deployed.

An example: Make a cup of tea

BPL components are added to Integration productions like any other built-in or custom business component.

4
0 560
Article Otto Medin · Apr 21, 2024 1m read

Hi all,

When making a Business Process reusable, I needed to make the target of a <call> configurable as a business host setting. This can be done through indirection. Here's how:

Property TargetConfigName As Ens.DataType.ConfigName;
Parameter SETTINGS = "TargetConfigName:Basic";
/// BPL Definition
XData BPL [ XMLNamespace = "http://www.intersystems.com/bpl]
{
<process language='objectscript' request='Ens.Request' response='Ens.Response' height='2000' width='2000' >
<sequence xend='200' yend='450' >
<call name='Call configurable target' target='@process.
5
0 390
Question Fahima Ansari · Apr 1, 2024

In The Business Process and the Business Operation, I am using the following code to get the value of TimeCreated and TimeProcessed 

BP:

%Ensemble("Process").%PrimaryRequestHeader.TimeCreated

%Ensemble("Process").%PrimaryRequestHeader.TimeProcessed

 

BO:

..%RequestHeader.TimeCreated

..%RequestHeader.TimeProcessed

But I am trying to use ..%RequestHeader.TimeCreated in Business Service it is not storing any value.

How to get the value of TimeCreated and TimeProcessed in Business Service?

5
0 191
Question Nimisha Joseph · Dec 6, 2023

Hi there,

I'm working on a project where I retrieve RawHL7 message(ORU R01 2.3.1) content from a database in a BPL. I've created a context object of type Enslib.HL7.Message, and I need to populate it with the contents from the RawHL7 message so that I can use this context object as source for my DTL transformation.

Does anyone have suggestions on the best approach to achieve this? I'm looking for guidance on how to efficiently transfer the data from the RawHL7 message to the context object.

Thanks in advance for your help!

3
0 671
Question Kurro Lopez · Feb 1, 2024

Hi community.

I have an API that is deployed in my production (business service) and it calls to a business process to retrieve the information that is requested.

The problem that I have is that the calls are queued and it's creating a bottleneck 

The business process is taking more time than needed.

Is possible to configure the BP to process parallely the requests?

I'm thinking to increase the pool parameter, but I'm not sure if it's a good idea.

Best regards 

4
0 292
Question Scott Roth · Jan 19, 2024

Ran into an issue this morning, that I am having a hard time trying to track down what might have caused the issue. We have a Business Rule that sends HL7 ADT to a Business Process that inserts the data into a MS SQL Server using a Custom Business Operation (SQL Outbound Adapter).

Early yesterday morning the Custom Business Operation reset its connection through the Java Gateway Server to the MS SQL Database, when it reconnected to the Java Gateway/MS SQL Database it stopped processing. So, the Business Rule had over 40,000 queued up to process.

2
0 300
Question Nimisha Joseph · Dec 22, 2023

Hi ,

I'm currently working on a BPL (Business Process Language) in InterSystems Ensemble, and I'm facing an issue when trying to call the SendRequestSync() method within a code activity. My understanding is that SendRequestSync() is part of Ens.BusinessProcess, and since Ens.BusinessProcessBPL extends Ens.BusinessProcess, I believe it should be accessible.

However, during compilation, I'm encountering an error stating that the method doesn't exist in the class.

Am I missing something here? Is there a specific way to access SendRequestSync() in the BPL code activity?

4
0 319
Question Nimisha Joseph · Dec 19, 2023

Hi,

 

I'm currently working on a Business Process Language (BPL) project where I'm using ##Class(%SQL.Statement).%ExecDirect to execute a SQL query. The query returns more than one row, and I'm facing an issue in handling the result set.

I'm setting the result of the query to context.tResult, but the loop through the result set processes only a single row. I need assistance in correctly setting up my context property or any other approach to iterate through all the rows returned by the query.

 

Thank you in advance

4
0 383