#Ensemble

23 Followers · 2.3K Posts

InterSystems Ensemble is a complete and easy-to-use integration platform that enables users to connect people, processes, and applications in record

time.

Learn more

Documentation

Announcement Neerav Verma · Feb 13, 2020

Class Queries in InterSystems IRIS (and Cache, Ensemble, HealthShare) is a useful tool that separates SQL queries from Object Script code. Basically, it works like this: suppose that you want to use the same SQL query with different arguments in several different places.In this case you can avoid code duplication by declaring the query body as a class query and then calling this query by name. 

They are declared as Query items in class definitions (similar to Method or Property) in the following way:

  • Type: %SQLQuery
  • All arguments of your SQL query must be listed in the list of arguments
6
0 782
Question Yone Moreno · Feb 18, 2020

Hello,

We would like to get the XML which is being given by the requested system, directly to our Service output.

We have tried to just output directly the Message Response as follows:

Method findCandidatesXML(mensEntrada As %XML.GlobalCharacterStream(CONTENT="MIXED")) As Mensajes.Response.GestionPacientes.operacionResponse(XMLNAME="mensSalida") [ Final, ProcedureBlock = 1, SoapAction = "http://SCS.Servicios/GestionPacientes/findCandidatesXML", SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{
    set ^tipoMensaje="XML"
    $$$LOGINFO("El mensaje es de tipo: "_^tipoMensaj



2
0 941
Question Mark O'Reilly · Feb 17, 2020

Hi: 

I'm new to Cache and intersystems. 

We have a live production solution that uses a file inbound adapter to collect pdf documents off a fileshare. This fileshare is accessed by many services and access is controlled to the files by AD.

A problem we are seeing is that documents either are attempted to be processed with a filesize of 0kb or more often a file gets processed that in the next buisness process then cannot be moved to a working directory and the file does not appear in the archive from the file inbound adapter. It appears like the same file gets picked up by a later session bu

2
0 334
Question Yone Moreno · Feb 11, 2020

Hello,

We would like some help:

We have found that in the following code:

Class Operaciones.SOAP.Gasometros.GestionPacientes.SeleneHL7Service Extends Ens.BusinessOperation [ ProcedureBlock ]
{

Method operacion(pRequest As Mensajes.Request.GestionPacientes.operacionRequest, Output pResponse As Mensajes.Response.GestionPacientes.operacionResponse) As %Library.Status
{
 Set ..Adapter.WebServiceClientClass = "WSCLIENTE.GestionPacientes.ConsultaCandidatos"
 Set MSH=pRequest.MSH,SFT=pRequest.SFT,QPD=pRequest.QPD,DSC=pRequest.DSC
 Set tSC = ..Adapter.InvokeMethod("operacion",,.MSH,.S

6
0 381
Question Oliver Wilms · Feb 7, 2020

I understand RecordMaps can be used to send delimited files through a production without custom coding. The data segments are delimited by tilde character followed by $Char(10) in Linux/Unix. When I test the same IO data in Windows, I have $Char(13) and $Char(10) instead of just $Char(10). I like to use just tilde character for record delimiter and ignore $Char(13) and $Char(10) between the tilde and the leading data of the next segment / record. Is this good idea or not if someone wants to generate classes will it override code? I believe in X12 schema it ignored leading control characters. W

2
0 1128
Question James Fitzpatrick · Feb 10, 2020

Hello,

I am playing around with an HL7 business rule set and a EnsLib.HL7.MsgRouter.RoutingEngine component. I'm wondering how I can get the routing engine to fire a rule when a response is received from a business operation.

I have a simple "debug" statement in my rule to log the "Source" value when a message is received. This debug statement only seems to fire when the message comes as a request from the business service (trace item #1 below). However, I want to fire a rule when a response is received from a specific business operation (item #6 below) - specifically, I  want to execute a D

6
1 908
Discussion Jeffrey Drumm · Feb 7, 2020

I'm not sure what the purpose of this is, but the Management Console causes the browser to refresh periodically. If you're in a form or an editor such as the DTL or Routing Rule editors, you may lose work unless you save frequently. This did not occur in Caché 2018 and earlier releases.

I've had a couple of incidents where I've created a number of rules in the DTL editor, answered the phone or stepped away for a few minutes, then come back to find any work since the last save erased.

I've noticed this in both 2019 and 2020 releases of IRIS.

Heads up!

4
1 597
InterSystems Official Pete Greskoff · Feb 11, 2020

*** Update 2/11/20 2:15pm ***

*** 2017.2.1 version is NOT affected ***

InterSystems has corrected a defect that can cause the CSP Gateway to forward a response to the wrong web client. This defect is not present in the Web Gateway.

The CSP Gateway is distributed as a component of a full instance installation and also as a standalone installer. Both distributions are affected by the defect. The CSP Gateway installed with the private Apache web server for the Management Portal is also vulnerable. The affected versions of the CSP Gateway are associated with Caché or Ensemble:

  • 2016.1.4 and
0
0 310
InterSystems Official Pete Greskoff · Feb 11, 2020

InterSystems has corrected a defect that can result in skipping a transaction rollback. This can only occur after activation or addition of a mirrored database on a primary mirror member.

This problem exists for:

  • Caché and Ensemble 2018.1.3
  • InterSystems IRIS data platform 2019.1.1, 2019.3, and 2019.4
  • InterSystems IRIS for Health 2019.1.1, 2019.3, and 2019.4
  • HealthShare Health Connect 2019.1.1

The conditions necessary for this defect to be triggered are quite specific. All of the following must apply:

  • A database has been newly activated or added to a mirror on a primary mirror memb
0
0 283
Question Larry Pinsky · Feb 6, 2020

I have two files that I ultimately need to combine.  The first file contains data from a PO.  The second file contains tracking information.  What I thought about doing was create a BS that grabs the first file, loads it into a record map and transfers it to a BPL.  Then, the BPL would open the second file where I would write code to load the file into a second record map and then insert the tracking information to the correct places in the first file based on PO line items.

First, is this the best approach?  Second, how do I open the second file in the BPL?  I assume I would have to open and

3
1 414
Question Yone Moreno · Feb 4, 2020

Hello,

I have created my first table in Ensemble:

And I have added a row using the Production:

We would like to query it, and we would expect to get a row wih all the previous' image data.

I have tried, inside a code block in a Bussiness Process:

  set statement=##class(%SQL.Statement).%New()
 
  set status = statement.%PrepareClassQuery("TablasBBDD.NotificacionesPUSH.RelacionAplicacionNotificacion","seleccionarTodo")
 
  set result = statement.%Execute()
  do result.%Display()
 
  $$$LOGINFO("filas result: "_result.%ROWCOUNT)
 
  $$$LOGINFO("result: "_result)
 
  //$$$LOGINFO(


3
0 376
Question Lucas Bourré · Jan 30, 2020

Hello,

I am working on Ensemble 2017.2.1 .
I need to export my security settings into an extern database, in order to make a report.

I've created a Business Operation with an SQL Adapter into a Namespace, but I don't know how to get every security data from "%SYS" Namespace  ( SQLPrivileges , Resources , Roles , Services , Users ... ).

I dont't want to use the terminal and the ^SECURITY routine, because i don't want to store a XML file on the server.


I tried to create a method where I can use the (Security.System).ExportAll  command  in order to use the stream , but it doesn't work because

2
0 406
Question Sam Clarke · Jan 30, 2020

Cache / Ensemble version 2016.2.2.853.0

I have a need to restrict ODBC access to certain users to prevent unwanted access to our cache database.

We have a limited number of legacy applications that use ODBC to connect to read data and are currently not in a position to have these amended any time soon so in the interim, I am hoping someone will be able to provide me with some assistance.

Any suggestions on where to start?

1
0 509
Question Matthew Martinez · Dec 2, 2019

Hello,

I am reading in an X12 document into my production that needs to be processed and returned as a CSV file.  I have created a record map to support the fields I want to extract with a batch class to store headers.  I have a DTL mapping the data to the appropriate fields in the record map and am sending the record map to a EnsLib.RecordMap.Operation.BatchFileOperation.

None of my components error out and in fact report that the message was processed without any errors but I am not getting an output file in my expected output folder. 

Is this an appropriate use of this operation class? 

2
0 1041
InterSystems Official Pete Greskoff · Jan 22, 2020

Updated 1/30/2020

*** The affected product versions have changed ***

*** The affected versions are Caché and Ensemble beginning with 2016.2.0.  ***

*** Caché and Ensemble 2016.1.0 is not at risk for this defect ***

InterSystems has corrected a defect that can cause database degradation in extremely rare circumstances. Associated problems may include, but are not limited to, incorrect or missing application data and system hangs.

This defect affects:

  • All versions of InterSystems IRIS and IRIS for Health
  • Caché/Ensemble versions beginning with 2016.2.0
  • All HealthShare products base
0
0 485
Question Jens Salecker · Jan 13, 2020

I have to write a DTL with the Data Transformation Builder to convert messages from HL7 ORU R01 v2.1 to HL7 ORU R01 v2.5. The incoming messages contain a text in OBX-5. This text contains LF characters (only LF - Segment separator is CR). Therefore it is not possible to parse the incoming message. While testing the transformation the OBX Segment ends at the first occurence of LF. Is there a way to replace the LF character before parsing?

example:

source:

OBX||FT|ltest1|| first line 

 second line

 …

 last line

||||||F|

target:

now:            OBX||FT|ltest1|| first line

expected:  OBX

3
0 1030
Question Roger Merchberger · Jan 10, 2020

TL;DR: If I set an Ensemble  Production Service based on EnsLib.File.PassthroughService to a Binary charset encoding, it breaks the file handling. Any ideas?

Full long post:

All,

I set up an Ensemble production to transfer files via SFTP, which works fine sending the files to my Linux server. Then I was informed that we needed to save a hash of the file, for comparison with the destination to verify the file arrived unmodified. I looked at the base64 encoded hash on my linux server:

G7QWAP6FcLInFWP8ECRL/EI2NfKdaf6TtrpwYuvSOEc=

and I created a class to extend the StreamContainer to add a h



8
0 491
Question Yone Moreno · Jan 11, 2020

I am trying to create a rule which filters out ADT_A08 messages, when they have an OBX segment and their EVN.4 is "COD" or EVN.4 is "FIN"

The attempt is:

I have sent messages with EVN.4 COD or FIN and they are filtered out correctly

However if I remove EVN.4 and leave just the OBX filled up, the message passes from the Process to the Operation.

How could we express that if the message has OBX, we want it to be filtered out
 

3
0 467
Question Scott Roth · Jan 10, 2020

I am working on a BPL to take data from a MS SQL database and create an HL7 Materials Message for our EMR.  I have done this plenty of times in the past however I am running into an error.

"Remote Gateway Error: JDBC Gateway SP execute(0) error 0: Access to the remote server is denied because no login-mapping exists."

What is confusing is that this BPL doesn't differ from any of my other BPLs in connecting to MS SQL Server. I know I am missing something..

This BPL will execute the 1st Stored Procedure without any issues, the issue is when it comes to executing the second stored procedure.

3
0 851
Question Scott Roth · Dec 20, 2019

I have a case where I have an external table that lives out in MS SQL. Using Ensemble Security functions has anyone created a csp or cls page that acts like a portal to allow users to Update a multidimensional table without knowing SQL? I could clone the EnsPortal.LookupSettings but that was made for LUT which are only 2 columns.

I know its a long shot but trying to see if there was anything off the shelf that I can use to help meet the requirements of this project.

4
0 319
Question Lucas Bourré · Dec 19, 2019

Hello,

I would like to catch an Adapter error in a try/catch. I have a problem with SMTP and SFTP adapter when the connection failed after 15 seconds.

 Here is an example of my code for the SFTP adapter:

Try{
  ... //creating a stream file character
 
 //Trying to get a Status error if the PUTSTREAM doesn't work
 set tSC = ..Adapter.PutStream("file.pdf",streamfile)
 //If any error : throw
 if $$$ISERR(tSC) THROW tSC
}catch Exception{
 set pOutput= ##class(MyResponse).%New()
 set pOutput.errorString = Exception.DisplayString()
}

The problem is that the error isn't catch :  it ends


5
0 525