#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

Article John Murray · Apr 13, 2017 1m read

I only recently noticed the presence of a local database named CACHE alongside the more familiar CACHESYS, CACHELIB, CACHETEMP and CACHEAUDIT.

A bit of digging through the documentation archive led me to conclude that the CACHE database arrived in 2010.2, where the release notes say:

 

Note the lack of an accent on the words I have highlighted.

The above documentation is incorrect when it says "this database is mounted as read-only". In fact it is mounted RW. But the %DB_CACHE security resource that controls access to it only grants R as its public permission. In other words, every process can re

1
0 580
Question Scott Roth · Apr 11, 2017

With help from others here I had developed some code to take a Base64 PDF within a OBX.5 and save it locally to the file structure on the server.

I had to make a change to the code to return me a String so I can pass the Path back into Ensemble to use it in the message. When I made this change I am getting " ERROR #5034: Invalid status code structure ("/ensemble/data/transfer/AncillaryPDF/TMSAUDIO/Apr-11-1/980512729TMSAUDIO1046784936436537800.pdf")"

Here is the code...

ClassMethod DecodeBase64HL7ToFile(base64 As %Stream.GlobalBinary, Ancillary As %String, FileName As %String) As %String{s
3
0 1344
Question Graham Uricchio · Apr 4, 2017

I created a DTL to do HL7 mapping. The test function in the tools works the DTL perfectly but when used by the rule in my business process, the OBX segments are stripped and the MRN is gone. The assigning authority and ID type are added into the PID but the actual patient MRN is blank (3.1 value).

Here is the source code. 

<transform sourceClass='EnsLib.HL7.Message' targetClass='EnsLib.HL7.Message' sourceDocType='2.3:MDM_T02' targetDocType='2.5:MDM_T02' create='new' language='objectscript' >
<code>
<![CDATA[ //MSH SEGMENT]]></code>
<assign value='source.{MSH}' property='target.{MSH}' action='set

8
0 844
Question Paul Riker · Apr 4, 2017

I have an EMR sending double quotes "" as the value. How do I write criteria to find this match in a DTL?

PV1|1|A|||||1111111111^Doctor^MR|||||||||||||||||||||||||||||||||||||20170331|""

source.{PV1:DischargeDateTime()}="""" didn't work

2
0 788
Question Tom McDevitt · Apr 3, 2017

I am working on creating a DTL that can replace OBX segment with a string formatted NTE segment .  There is a class ImportFromString but it looks like that is not replacing the target message with the new formatted NTE. I do see  target.setvalueat class but I wanted the transformer to not be scheme base.  

ClassMethod Transform(source As EnsLib.HL7.Message, target As EnsLib.HL7.Message) As %Status
{
  set target = source.%ConstructClone(1)
  s idx=1
  s pSegCount=target.SegCount
  s pObservationValue=""
  s pObservationIdentifier=""
  s pOBXSegment=""
  FOR idx = pSegCount {
          s seg=target.GetSe

5
0 1038
Question David Reche · Apr 3, 2016

Usually I recommend to set the global buffer (GB) as large as possible in order to maintain in memory more globals as possible. I don't know if this is a standard recommendation, but I want to discuss what should be the best buffer size for a Ensemble instance that only process messages. 

I mean, if the instance only runs productions that pass messages then the 90% of the global access is used for persist the messages. In this situations a customer told me that he prefer to have a short global buffer because in this way the rest of the OS memory is available for use by the rest of the OS proces

6
0 2338
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...

Job Per Connection

 
Allowed IP Addresses
OS Accept Connection Queue Size
Stay Connected
Read Timeout
SSL Configuration

Local Interface

Framing

Pool Size
S





2
0 1998
Question Paul Beckett · Mar 29, 2017

Following on from https://community.intersystems.com/post/custom-business-process-change-sendrequestsync-sendrequestasync we are refactoring a number of business processes to use OnRequest/SendRequestAsync/OnResponse mechanisms.

To prevent overloading some of our datasources we currently implement a simple caching system using locks similar to the code below.

Method OnRequest()
{    
    Set key = ..getKey(request)
    
    Lock +^DataCache(key)
    if ('..cacheValid(key))
    {
        Set status = ..SendRequestSync("DataProcess", dataRequest, .dataResponse)
    
        Set ^Dat
1
1 1129
Question Lionel Marty · Mar 29, 2017

Hello,

I have a problem with an Ensemble instance on Windows to access to a network shared directory. Ensemble service (services.msc) is executed with a user which has access to this network shared directory :

 - When I try to copy or access files from a terminal ==> this is OK : the command w ##class(%SYS.ProcessQuery).%OpenId($Job).OSUserName returns the user defined in Ensemble service logon screen.

 - When I try to copy or access files from a service, process or operation item of the running Production ==> this is KO and the command ##class(%SYS.ProcessQuery).%OpenId($Job).OSUserName returns

6
0 1170
InterSystems Official Steve Brunner · Mar 28, 2017

InterSystems is pleased to announce the simultaneous release of 2017.1.0 of Caché, Ensemble, and HealthShare Health Connect v15.02 

Some notes for Caché and Ensemble, including highlights, are:

  • Enhanced OAuth 2.0 and OpenID Connect
  • FIPS 140-2 Validated Cryptography for database encryption
  • iKnow REST API
  • Improved DocBook Search and efficiency of Ensemble Message Search
  • For complete technical details of what’s changed, review the Caché release notes and the Ensemble release notes.
  • The version number for these kits is 2017.1.0.792.0

This release of HealthShare Health Connect is based on the core technolo

1
0 1165
Question Matt Fuller · Mar 17, 2017

I'm pretty new to Ensemble and Cache, and I ran into an error today that I haven't seen before: "ErrNoResponseClass: No Response Classname is assigned for Request class <<someNumber>>". I haven't found much documentation about this beyond the Ensemble Error Codes document, which is essentially just a duplicate of the information I can see in the error message when this problem occurs. Is there any further information about this error and the conditions that cause it? Or perhaps what the <<someNumber>> value represents?

From what I can tell, the response class is set by the base class of my requ

1
0 302
Question Paul Riker · Mar 24, 2017

GT1|1|1|Test^Test||123 Building^123 Building^Brooklyn^NY^11220^United States^^^Kings|^PRN^PH^^^^^^^^^(111) 111-1111~^PRN^CP^^^^^^^^^(222) 222-2222|||""|IN|DGH^Daughter

I'm trying to clear the phone number completely.

Remove target.{GT1(1):GuarantorPhNumHome()} still gives me _~_

2
0 485
Question Ryan Hulslander · Mar 23, 2017

Goal:

  • Take an HL7 message, parse some data from it
  • Call a web service to get an authorization key, comes back as a simple string
  • Create a request object with data from the HL7 message and send it to the Web Service

The main web method call requires that key I received as a Soap Header element. All I can pass to the SOAP Operation business class is the request object with the data I plucked from the HL7 payload. Nothing in that particular request message has anything in it that tells anything to send the header, too.

So what are my options to pass a message to the SOAP Operation that contains both t

2
0 1297
Question Paul Beckett · Mar 17, 2017

I have a number of Business Process and due to the complexity these were created as "custom code" instead of BPL.

These processes currently invoke other components using SendRequestSync. For a couple of reasons I would like to be able to change these to use SendRequestAsync:

  • a long running BusinessOperation (often over 45s) calling an external system has caused pool sizes to be increased to compensate. This operation is a real time request for the entire health record held for a patient.
  • with the above operation, a different webservice method can be called that allows partial health record to
5
0 2275
Question Don Rozwick · Mar 22, 2017

Ensemble 2014.1.5

Inbound EnsLib.HTTP.GenericMessage

<?xml version="1.0" ?>
<!-- type: EnsLib.HTTP.GenericMessage id: 349 -->
<HTTPMessagexmlns:s="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Stream>
{ "patient": { "identifier": "E23456778", "token": "PQOIWUE)&!@TT$1234706125" } }

</Stream>

<Type>
GC

</Type>

<HTTPHeaders>
<HTTPHeadersItemHTTPHeadersKey="CharEncoding"xsi:nil="true"></HTTPHeadersItem>
<HTTPHeadersItemHTTPHeadersKey="HTTPVersion">
1.1

</HTTPHeadersItem>

<HTTPHeadersItemHTTPHeadersKey="HttpRequest">
POST

</

2
0 859
Question Don Rozwick · Mar 20, 2017

I have an XML I am sending to an operation from a BPL.  This is a query for Patient information from Epic using a web service.  I created the operation using the add-in in Studio.  I setup the BPL to do a Call and send whatever data I receive from the client.  I get a response back from Epic with a list of matching Patients.  In the BPL I am trying to use the Response Builder to pass the response ID, name, DOB, etc. to matching context items to then pass to the client as a response.  I get the following error within the call:

ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zOnResponse1+2 ^F
4
0 1180
Edit
Question Surya Sekhar Yerram · Mar 20, 2017

Hello Greetings-

I am exploring on converting HL7 to FHIR.

1. I saw there are built in DTLs “FHIR.FromSDA” and “FHIR.ToSDA” to convert SDA -> FHIR and FHIR -> SDA. Similarly Do Intersystems have DTLs for HL7 -> FHIR and FHIR -> HL7?

2. The reason why I am asking is, I see in HSLIB namespace HS->GateWay->HL7->HL7toSDA3 and HS->GateWay->SDA3->SDA3toHL7 DTLs. Like-wise I am trying to locate HL7 -> FHIR and FHIR -> HL7. Please help me to locate them

3. If there are no built-in DTLs for converting HL7 -> FHIR and FHIR -> HL7, what is the process to achieve this?

Thanks much in-advance.

Thanks,

Surya

0
0 15
Question Tom Philippi · Mar 18, 2017

I have a Enslib.REST.operation which I want to use to send a JSON message. In Ensemble I am using the request message to the Business operation as an input for ObjectToJsonStream function so I can send it out (this is the way to go right?). However, I am now running into the fact that one of the attributes (template_name) contains an underscore and that I am not allowed to use the underscore to define the property in my ensemble RequestMessage:

Property template_name As %String;

What's the best way to resolve this?

1
0 439
Question Tom Philippi · Mar 15, 2017

I am relatively new to ensemble, but I am trying to build a REST operation using the enslib.Rest.Operation but I can't seem to get it to work at all. I am completely at loss here because the errors I am receiving are very unclear. I have tried a few different variants using PostURL and SendFormDataArray but I got errors on all variants. Suggestions are welcome.

The call I am trying to product is a simple ping message to the Mandrill APIat https://mandrillapp.com/API/1.0/users/ping.json (for more details see: https://mandrillapp.com/api/docs/users.JSON.html#method=ping).

The code for my business


2
0 1109
Question Ravi Akkiraju · Mar 16, 2017

noob here..(moving from JCAPS to Ensemble)

We are wondering where is the best place to tie the schema category for an incoming HL7 message? Should we do this within the service (via the message schema category setting) or receive everything and validate in the process (DTL) level?

We want to capture everything that will be sent to that HL7 listener service and then decide what to do with bad messages at the process layer.

Does anyone have any recommendation regarding this? Appreciate your input and decision thought process.

Thank You,

3
0 405
Article John Murray · Mar 11, 2016 1m read

In this posting I want to raise the profile of a feature that arrived in 2009.1 but is perhaps not very well known.

It is sometimes useful to make certain packages, globals or routines available to all of your namespaces. Of course you can add the necessary mappings whenever you create a new namespace, but here's a simpler way.

First you need a special namespace definition called %ALL. Create it in the same way you'd create any namespace. It doesn't matter which database you set as its default for code and data. I recommend picking CACHETEMP as a reminder that this namespace doesn't actually dea

6
0 1625