Ensemble Release Note Archive
Ensemble 2014.1
[Home] [Back] [Next]
InterSystems: The power behind what matters   
Class Reference   

New Features in Ensemble 2014.1
Ensemble 2014.1 introduced the following new features and enhancements:
Compatibility Issues for Upgrades to Ensemble 2014.1
The following changes in this release may affect the operation of your existing system. Review these following issues before upgrading a previous instance of Ensemble.
Also review the Caché Release Note and Upgrade Checklist Archive.
HL7 Sequence Manager Automatically Adds Index
The HL7 Sequence Manager, which ensures that HL7 messages are processed in the correct sequence, has added an index to improve efficiency. If your production has a business process that has a class of EnsLib.HL7.SequenceManager or a subclass of it, it automatically creates an index to improve performance when it processes its first message after the upgrade to Ensemble 2014.1.
You can manually create this index after an upgrade to Ensemble 2014.1 before this business process starts processing messages by doing the following:
  1. Ensuring that the Sequence Manager business process is stopped.
  2. Start the Ensemble terminal and set it to the namespace used for the production.
  3. Enter the following command:
    Set tSC=##class(EnsLib.HL7.SM.Version).Upgrade()
  4. Check tSC for an error status to ensure that the command executed correctly.
New Security Resource to Control Exporting Deployment Packages
In this release, the %Ens_DeploymentPkg security resource controls the ability to export a deployment package and the %Ens_Deploy security resource controls the ability to apply a deployment package to a production. In previous releases %Ens_Deploy controlled both of these abilities.
Ensemble HL7 Supports Long Strings
In this release, the Ensemble HL7 framework can take advantage of long strings when they are enabled for a system. See Support for Long String Operations in Caché Programming Orientation Guide for details on enabling long strings. To maintain the existing 32K limit on segment storage even if long strings are enabled, you can set ^Ens.Config("HL7-NoLongStrings") = 1.
GetProductionStatus Returns Improved Status Information
In this release, the GetProductionStatus() method may return localized text providing status information. If you are testing the return value you should use the StatusEnum field, which contains the numeric state value and will be consistent across all locales.
Ens.Settings has New GetSettingRow Method
The Ens.Settings class has a new GetSettingRow() generated method. If you have extended the Ens.Settings class and have previously defined a method with this name in the class, you should update your code. Rename your extension method before recompiling your code to avoid the method name collision.
Ensemble CSP Pages Set UseCookies Property
Ensemble now sets the UseCookies property to “Always” when the system is upgraded or a new CSP page is created.
Viewing EDI Raw Contents Inserts Newlines for Consistency
If you display the raw contents of an EDI message, Ensemble ensures that there is always a newline character between segments. In previous versions, some but not all segments were separated by newline characters. Consequently, if you copy and paste the text in the raw content display, the data from this release may contain newline characters that were not present in the data produced by the previous release.
Improved Handling of Spaces in FTP File Names
The FTP Inbound Adapter assumes that any spaces after the FTP file name are part of the file name and do not delimit other fields. This change allows the FTP Inbound Adapter to handle FTP servers that may include spaces in file names. The FTP Inbound Adapter, consequently, cannot support an FTP server that uses a space to terminate a file name and includes other fields after the file name.
Ensemble Automatically Recompiles VDOC Search Tables During Upgrade
When you upgrade to Ensemble 2014.1, it automatically recompiles all user-defined subclasses of Ens.VDoc.SearchTable in all Ensemble namespaces.
Ensemble Custom Schema Validation Reports Errors at Compile Time
In 2014.1, the validation of HL7 custom schemas has been improved and more errors will be shown when loading or saving a schema. For example, a message structure that was missing a closing } would show no errors when saved under 2013.1 but will give an error “ERROR #5002: Cache error: Mismatched braces '{' and '}' in message structure …” when loaded or saved on 2014.1. If a database containing an invalid message structure is upgraded, there will be no error during upgrade, but any later attempt to save the schema from studio or the schema editor will give an error. The run time behavior of a schema with this type of error is unpredictable and the newly identified error should be corrected. You should consider correcting the error on any prior version that is still running with the schema in question.
Port Declaration Property for TCP adapter Changed
In 2014.1, Port property used by EnsLib.TCP.InboundAdapter is declared as type Ens.DataType.TCPAgentPort, which has its own declaration and extends %String. In previous releases, the Port property was declared in the superclass EnsLib.TCP.Common as type %Integer. If you have developed a custom adapter class that subclasses EnsLib.TCP.InboundAdapter and declares Port as %Integer with MAXVAL and MINVAL qualifiers, compiling the class produces an error. To fix this error, you can declare Port as Ens.DataType.TCPAgentPort and remove any MAXVAL and MINVAL qualifiers.
Change in Handling HL7 Message Header Name Field
Ensemble calculates the HL7 message name based on the value of the MSH:9 field. This change modifies how Ensemble treats the MSH:9.3 subfield.
HL7 messages may use MSH:9.3 subfield in one of two ways: 1) to qualify the message name, typically with a number, or 2) to specify the message structure type. For example, if MSH:9 has the value “ORM^001^5”, MSH:9.3 has the value “5”, which describes a subtype of the ORM_001 message. But if MSH:9 has the value “ADT^A08^ADT_A01”, MSH:9.3 has the value “ADT_A01”, which specifies that the ADT_A08 message has the ADT_A01 structure type.
When Ensemble processes the MSH:9 field it tests whether the MSH:9.3 subfield has a simple value, such as “5”, or a structured value, such as “ADT_A01”, If it has a simple value, Ensemble appends the value to the message name and uses the message name to find the structure in the schema and to set the value of the Name property. If MSH:9.3 has a complex value, Ensemble ignores the value. Since Ensemble uses the schema definition to reliably get the message structure type, it does not need to use this value.
If you set the global ^Ens.Config("HL7NamePropOld")=1, Ensemble uses its original logic in handling MSH:9 and always appends the MSH:9.3 value to the message name, even if it represents a structure type. Set this global in the namespace used for the HL7 production.
Changes in HL7 Schema Representation
Ensemble 2014.1 includes the following enhancements in the HL7 schema definitions:
To implement these changes, we made changes in how the HL7 schema elements are stored internally in globals and minor changes to their XML representation. In most cases, these changes will not cause compatibility problems. However, if you are doing any of the following, you should check for compatibility issues: