Hello,
We need to convert this structure, where we observe empty component separators "^":
MSH|^~\&|sistemaExterno|anonymized^anonymized|anonymized|anonymized|anonymized||RSP^K22^RSP_K21|anonymized|P|2.
InterSystems Ensemble is a complete and easy-to-use integration platform that enables users to connect people, processes, and applications in record
time.
Hello,
We need to convert this structure, where we observe empty component separators "^":
MSH|^~\&|sistemaExterno|anonymized^anonymized|anonymized|anonymized|anonymized||RSP^K22^RSP_K21|anonymized|P|2.
Hello All,
I am able to transmit a small batch of billing files: B/W 5 and 20 without issue-
Put stream 11@%IO.LibraryStream to /SFTP/unmhsmcsa/OUT/TEST_021920201426.tst
But when the size of the batch increases to over 20 the operation hangs and I receive the error below: The file is created in the SFTP server with 0 data.
ERROR <Ens>ErrFTPPutFailed: FTP: Failed to Put file 'TEST_022020201014.tst'
(msg='Error in SFTP Put('/healthshare/db/mgr/Temp/H8XaLoZgkYFkNQ.sftp','/SFTP/unmhsmcsa/OUT/TEST_022020201014.
Hello.
We have to call a service, and we have to encrypt the request using a public key. We have an example of how to make the call in PHP. Also we have the public key and all the parameters that we need. The example in PHP is this (it uses openssl):
$url = "https://XXXXX/";
$json = '{"api_key":"XXXXX", "id":"1"}';
$jsonEncrypt, = '';
$publicKey = file_get_contents("public.key");
openssl_get_publickey($publicKey);
openssl_public_encrypt($json, $jsonEncrypt, $publicKey);
$jsonEncrypt = base64_encode($jsonEncrypt);
We need to do the same in Ensemble.
Conversion Sequence step 4 (see table below)
Over the last few months, we have made changes to InterSystems IRIS to make it easier for you to move from Caché/Ensemble (C/E) to InterSystems IRIS. The most significant adjustments are the re-introduction of non-Unicode databases and the in-place conversion. InterSystems IRIS now fully supports non-Unicode databases with all the functionally that already exists with Caché. The in-place conversion supports an upgradelike process to install InterSystems IRIS right on top of your existing C/E deployments.
Hi,
I am using a record map and when the less than symbol < is sent the record mapping fails. How can I escape this character so the record map will not fail.
Ensemble beginner here. One of the downstream applications requires to send two A02 messages instead of one A17. We do it easily in Cloverleaf - either in translation or TCL. How do I create 2 target messages out of one source message in DTL?
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.
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.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.
Hi Community!
As you know we launched the InterSystems Open Exchange — the marketplace for solutions and tools on InterSystems Data Platforms!

But how to publish your application on OE?
Before we start, let me answer the few basic questions.
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,.SFT,.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.
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).
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!
*** 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:
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:
The conditions necessary for this defect to be triggered are quite specific. All of the following must apply:
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?
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("clave: "_result.
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.
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?
My Ensemble instance is reporting its status through SNMP in Dutch even though my system language is English. Can I change Ensemble's locale somewhere in the Management Portal?
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?
I'm trying to format a filed, and I need to add leading zeros infront with a length of 4.
Example:
Before: 1
After: 0001
All a sudden, I can't do cut and paste anymore in Studio. Help.
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:
We want to be able to dispatch based on the IP address who connected to a TCP Inbound adapter.
The address is in ..Adapter.%outIPAddr when the connection is made and reported with $$$LOGINFIO() but by the time OnProcessInput() is called the value is blank.
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?
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 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‽
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