#Business Service

4 Followers · 214 Posts

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

Article Slava Rahmatoulin · Nov 5, 2016 9m read

This article will provide tips and tricks on customizing Ensemble business hosts with configurable settings.

Ensemble production Settings are configurable values that control the behavior of a production and its hosts.

The documentation for adding and removing Settings and specifying categories and controls for Settings is provided at the link:

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?

6
4 4938
Article Vicky Li · Nov 14, 2016 14m read

As we all know, Caché is a great database that accomplishes lots of tasks within itself. However, what do you do when you need to access an external database? One way is to use the Caché SQL Gateway via JDBC. In this article, my goal is to answer the following questions to help you familiarize yourself with the technology and debug some common problems.

Outline

2
8 4755
Question Yone Moreno · Jun 24, 2020

Hello,

We wonder how could we send an HL7 message to a service to test it.

For example, we have a service, at localhost port 19111

We have tried to use SoapUI to send a REST POST request as follows:

At the event log we see the following trace:

Then, if we try with POSTMAN as follows:

We observe:

Would it be the only way to test services, pointing a TCP HL7 operation to the service, and send messages using the Test Action?

We mean that we are testing manually sending messages from the operation "ProbarADTs" to "Servicios.TCP.GeneralHospitalADT":

How could we do it from SoapUI or Postman?

3
0 3643
Article Brendan Batchelder · Sep 20, 2016 4m read

Framing refers to the characters that mark the start and end of an HL7 message (or other types of framed messages).  Most HL7 services and operations have a Framing setting that allows the user to define this framing.  The most common choices are available as defaults, but with the AsciiMM/NN setting, components can be configured to recognize any framing characters.

The most common framing error is ErrEndBlock.  Other typical errors include a warning saying "Discarding received non-HL7 data", a warning saying "Returning unused unexpected n-char segment", and "Discarding leftover input ''".

0
2 2817
Question Scott Roth · Mar 31, 2017

One of our Departments are claiming that we are loosing HL7 messages that are sent from their Vendor's system to Ensemble.

I know interfaces 101 if we have no record of the message then we never received it, however they are insisting they are sending it.

I asked them to provide the ACK's if they sent the messages but Ensemble had no corresponding Message Control ID (MSH.10) .

Currently I have the following settings.

2
0 2007
Question Kurro Lopez · Oct 30, 2018

Hi all,

I have a FTP.Inbounding service that read a file and move it to a other folder when it is processed. The problem is that is not working fine in SFTP server.

The code is coppied from How to - Customize Ensemble Settings article.

// begin customization code// get the Filename, attach the time stamp to it and move the file into the Archive directory// the Rename method below is using RNFR and RNTO FTP commands (RFC 959), effectively moving the file into the new directorySet tSource=pInput.Attributes("Filename")Set tArchive=..Adapter.CreateTimestamp(tSource,"%f_%Q")set fullPath =
4
0 1990
Question sansa stark · Jul 17, 2017

Hi ,

     I'm using standard business service not(Customized business service). I'm not able to process the Hl7 data file which contains CRLF characters.It shows warning "Discarding  Received non HL7 data". Actually it discards some segment after CRLF character. Is there any settings to overcome this problem?

Also i tried UTF-8, Ascii,Unicode.. characterset . But it won't work. Please help me .

Urgent!!!

11
0 1946
Question Tom Philippi · Apr 18, 2017

I have built an Ensemble SOAP service (EnsLib.SoapService.Service) as a business service which accepts soap requests from another application. To secure the traffic between the SOAP service and the application i'd like to enable SSL. I see that in the management portal I can upload the certificates, chains and keys and save them as an SSL / TLS configuration. However, it is not clear to me how I apply this SSL / TLS configurtion to the soap service I am running.

2
0 1857
Question Hieu Dien Nguyen · Aug 23, 2018

Hello Everyone,

I have a healthshare web application with production, I try to make a field in basic setting of business service, and I would like to set a string to DISPLAYLIST and VALUELIST of that Property (string maked by query to sql table). I code the same here but it's syntax incorrect in DISPLAYLIST = GetTypeDisplay(), VALUELIST = GetTypeValue(). Someone know a best way to solved my problem? Thanks so much!

Class Demo.RegDataService Extends Ens.BusinessService
{

Property xmlTagName As %String(DISPLAYLIST = ",EDocument", VALUELIST = ",Demo.
8
0 1774
Question Ryan Hulslander · Jun 3, 2016

Problem:

A file-based business service uses a local path on a Linux machine that is actually a mounted CIFS share. The mount is "soft" and is designed to not cache data, etc. There are times however when the remote system offering up the share (it's a Windows machine I believe) gets bounced or otherwise hung up the business service in the Ensemble production just hangs.

Un-mounting the network share doesn't affect it, no process kill command affects it, and even going so far as to "kill -9" the process outside of Cache does nothing, either.

4
0 1751
Question Paul Reesman · May 18, 2016

I am just trying to make a quick hand off HTTP production. I have the class built and compiled onto the server and the production is running as a service. When the production is called (by an inbound job) I can see that the HTTP.InboundAdapter is being used successfully and the stack continues all the up to ProcessInput where OnProcessInput is called in Ens.BusinessService. Instead of using the class that I wrote which has both extended Ens.BusinessService and implemented my own overriden OnProcessInput method, it calls the OnProcessInput within the Ens.

15
0 1569
Article Jenny Ames · Nov 14, 2016 2m read

Business services are powerful components that pull data in from external sources. In most cases, pre-built components do the job, but sometimes you need to code custom business services. There are a few best practices to keep in mind when doing this:

 
  1. Lean and Mean - Business services should be coded to have minimal processing. This is due to the fact that if any errors occur within the business service, no message will be sent, and thus no trace will be created. This makes it very difficult to troubleshoot.
4
0 1554
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 1477
Article Eduard Lebedyuk · Aug 7, 2020 5m read

In this article, I will show how you can easily containerize  .Net/Java Gateways.

For our example, we will develop an Integration with Apache Kafka.

And to interoperate with Java/.Net code we will use PEX .

Architecture

Our solution will run completely in docker and look like this:

Java Gateway

First of all, let's develop Java Operation to send messages into Kafka. The code can be written in your IDE of choice and it can look like this.

In short:

  • To develop new PEX Business Operation we need to implement  abstract com.intersystems.enslib.pex.
7
1 1470
Article Yuri Marx · Aug 25, 2022 8m read

EHR (Electronic Health Record) systems are modeled in a proprietary format/structure and are not based on market models such as FHIR or HL7. Some of these systems can interoperate data in a proprietary format for FHIR and other market models, but others can not. InterSystems has two platforms that can interoperate proprietary formats for market ones: InterSystems HealthShare Connect and InterSystems IRIS for Health.

1
6 1251
Question Bharathsimha Reddy Jakka · Nov 7, 2018

Call Interval

 
 

The minimum interval between invocations of the adapter by the Ensemble framework. For adapters that poll for external events, this is the polling interval. However, most polling adapters will process all inputs immediately if several are detected at one time. This is also the interval at which each Business Service will check for shutdown requests.

Is this interval duration in Milliseconds or Seconds ?

What is the highest or lowest that I can set in the Call Interval ?

1
0 1237
Question Nancy Martínez · Jun 6, 2016

Hello,

Why I don't see the full content of a XML file inside a Ens.StreamContainer Message?

When  I look into the content I only see:

<?xml version="1.0" ?><!-- type: Ens.StreamContainer  id: 5 -->
<StreamContainer><OriginalFilename>C:\Temp\In\aa.xml</OriginalFilename><Stream></Stream><Type>FC</Type></StreamContainer>

How I can see all the content? There is any setting to modify this behavior?

I am using a EnsLib.File.PassthroughService,

Regards

1
0 1209
Article Eduard Lebedyuk · Aug 12, 2020 3m read

Productions often need to receive REST requests.

Here's how to do that.

1. Create proxy Service:

/// Empty BS we would use to send Produciton requests
Class production.ProxyService Extends Ens.BusinessService
{
}

2. Add it to production as RESTService (or any other name).

3. Write your rest broker (docs, more docs)

4. In your handler method create the message and call target BP/BO like this

Include Ensemble
Class test.REST Extends %CSP.REST
{

XData UrlMap [ XMLNamespace = "http://www.intersystems.
8
1 1166
Question Scott Roth · Nov 23, 2016

I have a standard text file that is coming out of a system new line delimited. Each document will have the same field structure each time.

ID: xxxxxxxxx
Name: xxxx,xxxx   Age: xx   Sex: x

OSU Wexner Medical Center Harding Hospital
Treatment at  7/14/2016   10:39:34 AM

% Energy Set                                    50 %
Charge Delivered                             255.4 mC
Current                                       0.91 A
Stimulus Duration                              7.0 Sec
Frequency                                       40 Hz
Pulse Width                                   0.
7
0 1148
Question Manikandasubramani S · Mar 10, 2017

Hi All,
      I need to route a file based on its type in Ensemble Production. But I don't want to write a Business Process code to achieve this. Am using FilePassThroughService to get a file.
     There are two FilePassthrough operations for different type of files. Is there anyway to achieve this using Business Process Rule itself?
      Also how to get the filename in Business Process Rule that comes from FilePassThroughService?

    Thanks in advance.

3
0 1139
Announcement Shane Nowack · Feb 14, 2023

Hello InterSystems HL7 Community,

InterSystems Certification is developing a certification exam for InterSystems HL7 interface specialists and, if you match the exam candidate description given below, we would like you to beta test the exam. The dates the exam will be available for beta testing are March 28 - April 30, 2023. Interested beta testers should sign up now by emailing certification@intersystems.com (see below for more details)

Note: The InterSystems HL7 Interface Specialist certification exam is version 2.

1
0 1125
Question Angelo Bruno Braga · Jul 22, 2016

Hi all,

 I already enabled the IIS configuration for using HTTPS to all requests (using * wildcard) and all my CLS, CSP and ZEN pages are working nice through HTTPS.

 My REST Business Service parameters and Method definition:

Class ocx.bs.rest.Service Extends EnsLib.REST.Service
{
Parameter ADAPTER = "EnsLib.HTTP.InboundAdapter";
Parameter EnsServicePrefix = "/CUSTOMERS";

Method OnProcessInput(pInput As %Stream.Object, Output pOutput As %Stream.Object) As %Status

Thanks a lot,

 Angelo Braga

2
0 1105
Question Kurro Lopez · Sep 4, 2019

Hello everyone,

We have a process that is listening to an FTP service to collect some CSV files and process them. The process works correctly and when it ends it clears the directory waiting for it to enter some other file.

We have been receiving the following error message for a long time:

ERROR <Ens>ErrGeneral: Error in SFTP Dir() ERROR #7500: Error DirEnum SSH '-2146430967': 'SSH Error [80101009]: Would block waiting for status message [80101009] at SFTP.cpp:150,0

This happens when there are no files to process and appears from time to time, maybe every 20 minutes.

4
0 1015