#Business Service

4 Followers · 218 Posts

A business service is part of InterSystems Ensemble interoperability production which is responsible for accepting requests from external applications.

Question Joe Jones · Mar 13, 2023

Hi Community,

I am receiving a JSON file as input in ensemble and i need to convert the JSON message to HL7 message.

Can anyone share few points how to read a JSON file into Ensemble production by creating a Custom Business service?

I have created a custom business service as below but i am not aware which parameters i need to pass in  OnProcessInput method?

Method OnProcessInput(pInput As Ens.Request, Output pOutput As %RegisteredObject) As %Status

Do i need to Ens.Request or RegisteredObject or  Ens.StreamContainer?

Thanks,

Joe

14
0 1511
Question Scott Roth · Jan 25, 2018

Is there a way to get the list of Business Services from a command line call? We are trying to see if there is a way we can automate bring down our Inbound Business Services during a fail over.

Thanks

Scott Roth

The Ohio State University Wexner Medical Center

12
0 983
Question Scott Roth · Dec 16, 2022

Was wondering if anyone had a simple way of calling  ##class(Ens.Director).EnableConfigItem() within a Business Process or adding code to a Custom Service to start or stop the object?

The use case is that I have a Process that uploads a file into a external SQL table. When it is finished I want it to kick off another Service that does the processing of the data that it just uploaded. Once it is finished the response is sent back to the service and when the service receives the response from the process, I want to stop that service from running.

so.

8
0 455
New
Question Scott Roth · Apr 6

I am trying to built a Task that kicks off a Workflow to pull data into HSPD, and when I try to test the Task

ClassMethod TestTask()
{set tTask = ##class(OSU.Workday.TerminationsTask).%New()set tTask.DaysBack = 1 $$$ThrowOnError(tTask.OnTask())}

I keep getting TestTask+3^OSU.Workday.TerminationsTask.1 *%Exception.StatusException ERROR <Ens>ErrConfigDisabled: Configuration item 'OSU.DataSource.Workday.TermService' is disabled

But within the Namespace the OSU.DataSource.Workday.TermService shows enabled.

Here is my Task that I am using...

Class OSU.Workday.TerminationsTask Extends %SYS.
7
0 69
Question Rodolfo Moreira dos Santos · Aug 21, 2019

Hello, I have a task created in my task manager, calling my Business Service class, and it's working fine.
But I need to know the ID of the task, I searched within the class  %SYS.Task.Definition and found nothing related.

 Class Example.Tasks Extends %SYS.Task.Definition
{

Property BusinessService As %String [ InitialExpression = "Example" ];


Method OnTask() As %Status
{
  SET tSC = $$$OK
  TRY {
  
  SET tSC = ##Class(Ens.Director).CreateBusinessService(..BusinessService,.tBS)
  SET tRequest = ##class(Ens.Request).%New()
  SET tSC = tBS.OnProcessInput(tRequest
7
0 577
Question Matthew Cummings · Jun 6, 2022

Hello all,

I was looking at some code of a business service of which the author is unknown. It's very simple in what it does; it extends from Ens.BusinessService and has a method that performs SendRequestSync() to a business process. However, I noticed that the business service lacks an OnProcessInput() method. Rather, it uses a method called General() which has the same sort of signature/structure that OnProcess input does--pInput as [Custom Message Class], Output pOutput as [Custom Response Class]. 

The method works as observed in a message trace but I am not sure why.

7
0 761
Question Bransen Smith · Apr 23, 2024

I am attempting to configure an inbound service that utilizes the EnsLib.SOAP.GenericService class. This service receives HL7-v3 content wrapped in SOAP requests. Despite reading the documentation on configuring SOAP services, I am still confused.

In my current configuration item "Fr_Centrak_RTLS", I have ‘Enable Standard Requests’ checked, ‘Pool Size’ set to 0, and the port is unspecified.

I have also configured a web application with the following details:

My challenge is determining the correct URL address for sending SOAP traffic to this service.

7
0 535
Question Mary George · Apr 25, 2024

Hi Team, 

Is there any way to disable all operation ( or services) in a production entirely? 

For example when restoring from one HealthShare environment to another we may need to get the configs (IP, port, ssl etc ) updated before staring the operation. We set the production autostart to disabled but still need to disable the operation one by one if we want to start production without operations enabled.  

Thank you for your help. 

6
0 384
Question Scott Roth · Mar 10

How can I create a Task that tells a Ens.BusinessService to execute its SQL query using the EnsLib.SQL.InboundAdapter?

So far I have come up with

Class OSU.Workday.TerminationsTask Extends %SYS.Task.Definition
{

Parameter TaskName As STRING = "OSU - Workday Termination Update";

Method OnTask() As %Status
{
    try{
        // Call BusinessService
        set tSC = ##class(Ens.Director).CreateBusinessService("OSU.DataSource.Workday.TermService",.tService)

        if $IsObject(tService){
            set inputMessage = ##class(Ens.StringContainer).
6
0 80
Question Scott Roth · Jan 27, 2023

I have a system that is sending Line Breaks\Carriage Returns within the text of a field that is breaking the parsing of the message. Does anyone have a way to get around this?

here is what I receive... 

ZPR|29|937952|UH|Physician Assistant - Certified|Primary Privileges:  Physician Assistant|Care of simple fractures including extremity, rib and clavicle; including skeletal
immobilization||

as EnsLib.HL7.Service.

5
0 303
Question Ben Webb · Aug 15, 2022

Hi all, 
I have a requirement to periodically poll a URL to fetch some XML data based on a list of query data, lets say every hour, and map what's returned to HL7 then send downstream, I mostly have everything contained within a business process and DTL but I'm lacking a way of invoking the process every X minutes, 
The client has a prefence for as much as possible to be done via out of the box components in the standard HL7 model of  "Service --> Process/Rule/DTL --> Operation" within the Web UI, 
I'm looking for something to act as the Service part that will trigger the  "Process/Rule/DTL --> Operation" parts, 
In Rhapsody we might use a Timer component to send a blank dummy message periodically that triggers some javascript logic and the rest of the flow etc.

5
1 763
Question Thembelani Mlalazi · Sep 16, 2022

I have a REST Service that I want it to receive a json string request I have set up my URLMap as follows the top URL when populated and requested works fine but I would like my request to be a json string and that is not working I am getting a 500 error am I missing something please advice.

XData UrlMap
{
<Routes>
<Route Url="/:emailAddress/:sendUserEmail/:password" Method="POST" Call="ResetPassword"/>        this works fine
<Route Url="/test" Method="POST" Call="test"/>              I would like this to receive a json formatted string for the above
</Routes>
}

5
0 517
Question Martin Staudigel · Aug 28, 2023

Hello Community,

To get to my problem, I need to elaborate a bit. We use an older fixed length format called HCM to transfer data from our SAP-ISH system to the Intersystems server. The data file is generated on a dedicated server and stored in a directory that is mounted to the communication server.
The synchrnoization is done via a lock file, which is exclusively locked in the adapter.
Now this, let's call it HCM server, is to be replaced. The old server is a CentOS 6.4 (Final) (uname -rv: 2.6.32-358.14.1.el6.x86_64 #1 SMP Tue Jul 16 23:51:20 UTC 2013), the new server is a SLES15.

4
0 280
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 314
Question Robert Hildebrand · Oct 30, 2025

Hello,
I am currently facing the task of retrieving or sending HL7 messages from a web API. Since we only send HL7 messages via internal sockets, web APIs are relatively new to me.
The following is my plan for the new interface:
I have created a new custom business service that periodically sends requests to a business process. In this business process, the HTTP request (HTTP.GenericMessage) is then created from scratch. The special feature is the "Authorisation" header field, where a signature is inserted, which consists of a base64-encoded hash value.

4
0 139
Question Jimmy Christian · Jul 5, 2022

Hello,

We have a scenario where a bad message(With control character in some fields) is coming frequently in our Standard HL7 Business Service.

I do see the process gets shut down because of E=D action code. I also see the service logging an "Warning" about the bad message. But service is not shutting down.

Is there a way to handle this error right at the service to avoid multiple processes going down? Not sure if we can create a task, which audits the service logs every few minutes. But that will involve some coding and checking of time when the errors happens.

4
0 546
Question Eduard Lebedyuk · Jan 11, 2023

In Interoperability productions Inbound Adapters extract and separate retrieval logic from actual payload processing, which is left to a BS.

At a high level, an adapter looks like this:

Class MyAdapter Extends Ens.InboundAdapter {

Method OnTask() As %Status
{
  Set request = ..RetrieveRequest()
  Set sc = ..BusinessHost.ProcessInput(request)
  Set ..BusinessHost.%WaitForNextCallInterval=1
  Quit sc

}
}

However, in many cases, RetrieveRequest retrieves a batch payload, so our adapter looks like this instead:

Class MyAdapter Extends
4
0 452
Question Julian Matthews · Feb 27, 2018

I have a service that uses the EnsLib.SOAP.InboundAdapter, and I seem to be facing an odd problem.

Our clinical document system sent a request which contained a word document in base64, and was presented with the error "ERROR #6253: Datatype validation failed for tag payload (ending at line 1 character 2111). Unexpected tag <ClinicalDocument> found."

I took a look at the word document sent, and found it contained an image which made the document size about 4MB larger than the average document.

3
0 526
Question Kurro Lopez · Sep 5, 2025

Hello community.

I have a request from a client who wants to do the following.
Currently, they have a data upload process via FTP in which they have implemented a RecordMap to store the information of the CSV files that are uploaded to the FTP directory.
Now they want to have another directory so that it is ONLY executed through an external instruction, not when the file is uploaded to the directory.

Is it possible to create a process that reads the FTP directory on demand? That is, ONLY executes the EnsLib.FTP.InboundAdapter service when we tell it to.

3
0 131
Question Kurro Lopez · Feb 12, 2024

Hi all,

As you know, it is very complicated to debug a Business Service Rest API because the object is created when the applications receive a request, so we cannot have the JobId that we can use to debug.

https://docs.intersystems.com/iris20211/csp/docbook/DocBook.UI.Page.cls…

So, I'm trying to get the JobId when the class is being created, write a trace in OnInit() method and write the JobId in a log info

Method OnInit() As %Status
{
	$$$LOGINFO("JobId: "_$JOB)
	hang 20 break
	Quit 
3
0 309
Question Mark OReilly · Aug 30, 2024

As part of fully decoupling code we send a snapshot from a business service (running a SQL statement). 

sql service                         Processor                                File Out

This is picked up by a processer and puts it into a file .txt. 

Issue is if you open it up via the SQL.snapshot message as this is 46,819 rows it'll take too long to respond to opening up the sql.snapshot in the message viewer when viewing the session if looking from the business service 

Is there any way to not have this xml open up in full in the portal? I.e. have a see more?

3
0 223
Question prashanth ponugoti · Dec 22, 2022

Hi Friends ,

I have created inbound DB adapter business service. Now my requirement to trigger this service at 10am daily.

I used scheduler , but I don't know when should i configure for stop. this not suits for my requirement.

Is there any other way , where I need to trigger service only once , in configured times.

Thanks,

Prashanth

3
0 382