Connexion 14.5 R5 (14.5.2255)

.NET Upgrade

Please note this release will install .NET 4.6.2 (Connexion and Gateway Only), and therefore installs/upgrades make take slightly longer.

Released On

January 19, 2017

Release TypeProduction
Release Location

A bug was found which caused the HL7 transform device user interface 'path' column to not update correctly. Please use a newer version, but review the changes outlined here.

Connexion 14.5: Connexion.14.5.2255.exe

Gateway and Gateway Management Application: Connexion.Gateway.14.5.2255.exe

Gateway Management Application: Gateway.ManagementUI.14.5.2255.msi

Remote Integrator: Connexion.Integrator.14.5.2255.exe

Remote Integrator Queue: Connexion.Queue.Mongo.14.5.2255.0.nupkg

Remote Agent Push Update: Connexion.Integrator.RemoteAgent.14.5.2255.msi

Remote Updater A Push Update: Connexion.Integrator.UpdaterA.14.5.2255.msi

Remote Updater B Push Update: Connexion.Integrator.UpdaterB.14.5.2255.msi

Possible Breaking Change

Please note that there was some ambiguous behavior in the message attachments logic. In previous versions, if you made changes to attachments on a message context and called context.Attachments.Save(), then no changes would be persisted to the original message. If you did not call save, then any attachment changes were saved. We have updated the behavior in this build to be agnostic of whether or not Save() has been called. If you want to update the original message attachments, set the context.Attachments.UpdateOriginalMessage = true.

The default behavior is to not update the attachments on the source message. This is a very unusual use-case for this functionality and we are not expecting this to break anyone, but please verify your channels if you are using the attachments functionality.

Notes

This release contains minor fixes to both Connexion and Integrator as well as a few new features.

Connexion Features

  • Low privilege install / configuration:  In order to support deployment at Mayo Clinic, we have added the ability to install and/or configure Connexion without SysAdmin permissions. In this scenario, an empty database is created by the DBA at the target organization. An account with DBO permissions is supplied only at install / configuration time which allows the creation of tables / stored procedures. Standard operation executes under the DBReader/Writer set. Full Details.
  • Channel import filtering: A filter textbox has been added to the channel import dialog to make it easier to find a subset of channels within a channel file containing many channels.
  • Explicit channel locking: We have changed the way channel locking operates to make it more deterministic and reliable. In previous versions, a channel was locked as soon as the configuration became dirty. In this version, the UI is read-only until you explicitly lock the channel. At this point, your UI becomes read-write, and other users cannot edit the channel until you release your lock. The UI has been updated to reflect the importance this change. In order to edit a channel, you must now use the following sequence:
    1. Click the lock icon (in either the channel bar or the device bar). The green background indicates no other use has the channel locked. You may also use the keystroke ctrl + enter to toggle between the lock states.
    2. Make an required edits.
    3. Release the lock (by clicking the lock icon or ctrl + enter).

When another user owns the lock, the channel will display an orange background. When another user has released the lock, but the channel has changed, the background will change to red to signify that your copy is out-of-date. We realize this feature adds an extra step in the typical operation of Connexion, however we feel it's important to harden this logic as more installations are used concurrently. There may be cases where you want certain parts of your custom device UI to remain usable even when a client is in read-only mode (for example, the query button on the queue). We have provided a framework to enable this behavior which we'll detail in a separate document.


  • Multi-threaded queue: The SQL-Server-based queue can now operate in a multi-threaded fashion. There is useful when sending information to a remote system over a slow network (or when the remote system is slow to respond). In order to utilize this functionality, all devices downstream of the queue (up to the end of the channel or the next queue) must be thread-safe and marked with the CanProcessInParallel flag.

    Threadable Device
    [DevicePlugin("My Device", "A thread safe device", DeviceDefinitionFlags.CanProcessInParallel, typeof(object), typeof(object), typeof(MyDeviceConfigurationFactory))]
    public class MyDevice
    {
    }



    The 'Multi-threaded' radio button will be enabled if all downstream devices expose the CanProcessInParallel flag. When 'Multi-threaded' is selected, two additional fields are displayed:

    • Max Concurrency: The maximum number of concurrent operations allowed. Please note that the .NET will determine an optimum number of concurrent operations based on your current system load and system hardware, so the actual throughput may be lower than the number used.

    • Maintain Message Order: Ensures that messages for a patient are grouped together and run synchronously, ensuring the order of messages for a specific patient is maintained. For this to work, the messages you are operating on must expose an MRN keyword (HL7 does natively).


  • Monitoring Framework: A framework for acting on system state and statistics. Within the system settings area, a new tab has been added "Monitoring". This feature exposes a custom code pane with an event which is called each time the system state or statistics change. This allows you to act upon these changes. For example, you may want to update an edge service or write an event to the OS when certain conditions are met. The information provided to you (via the StateChangedEventArgs) contains all the state and statistics for each group, tab, channel, and device. The default behavior is to only send what has changed since the last set of statistics were provided, however you can set the Reset property to true to receive the entire state object.

Integrator Features

  • Move database: In the current version, the message database is installed in the Integrator sandbox (C:\programdata\Connexion.Integrator\Mongo). It's not unusual for the C drive to have very little space (as it's used as an OS drive), and we have had requests for the message database location to be user-configurable. In this version we have added a 'Move Database' feature which allows you to specify a new location for the database, post-install.
  • Display .NET version and OS Version: Columns added to display the OS and .NET version.
  • Remotely upgrade .NET: Add the ability to remotely deploy new versions of the .NET framework. Please note that even though the .NET framework advertises 100% backwards compatibility, we have experience a few cases where upgrading the .NET version breaks other applications.

General Improvements

Item

Description

Ui device upgrade performance

When upgrading many channels containing a custom device, the Ui uses a lot of memory and is somewhat slow. We've refactored the upgrade routine to use a different code path which does not require loading some of the more expensive objects and is therefore much more memory efficient (and faster).

Ui CCD performanceWe have changed the CCD language internals to be static. This should result in lower memory usage when multiple CCD devices are accessed as well as faster startup/load times for CCD-based devices.
Ui HL7 viewer performanceWe have made the HL7 language internals static. This should result in lower memory usage and faster startup/load times for this viewer.
Status linkingThis is a new feature which will allow Connexion endpoints to be queried and mapped. The eventual goal here is to create a visio-like diagram which can show message flow through a Connexion system. The initial implementation only adds one feature which is a new icon overlayed onto a queue icon showing the source of branched messages.
General displaySome minor improvements to improve display on high-dpi monitors.

Fixes

Type

Ticket

Description

Task

CNXN-2864

Remote agent / integrators should remember the last successful connection
Defect

CNXN-2863

Attachments not updated in database
Task

CNXN-2862

Support CNG certificates for the Gateway (Preliminary)
Story

CNXN-2860

Add ability to rewrite HL7 datetimes to have a TimeZoneOffset to HL7 V2 Transform device
Suggestion

CNXN-2853

HL7DateTime.ToDTM - Add an overload that adds/removes the Timezone offset in the string

Defect

CNXN-2526

User has to Delete a remote agent from Remote Integrator Manager twice for it to be successfully deleted

Defect

CNXN-2824

When inserting more than one device in a channel device order changes after save 

Task

CNXN-2648

Add filter box to the channel import dialog

Defect

CNXN-2660

Channel Lock not Holding / Redo channel locking

Defect

CNXN-2793

HL7 Transform V1, Client Side - StackOverflowException when pasting a message into the inbound message

Suggestion

CNXN-2812

Create a "Move Database" wtihin the config wizard (Mayo installation enhancements)

Defect

CNXN-2817

Should prevent RAs from having a reference to the same package id, but different versions

Suggestion

CNXN-2818

Add command timeout fields to the database polling device

Suggestion

CNXN-2819

Some way of migrating the integrator database folder to another location

Defect

CNXN-2822

HL7 Core Libraries - BHS and FHS segments are not handled correctly

Defect

CNXN-2823

[Encrypted] attribute not getting hit for code files within custom code based devices

Suggestion

CNXN-2825

HL7 Core Library - Functions to Insert/Remove a repeated field 

Defect

CNXN-2826

Domain information entered into the domain textbox not included in the login credentials

Defect

CNXN-2832

Some queue alerts/logs don't work when messages are queued via branching

Defect

CNXN-2833

Channel's showing up in random order

Task

CNXN-2834

Icon overlay on the queue device showing where branched messages are coming from (opposite of the branch indicator)

Defect

CNXN-2835

General UI fixup for multiple concurrent users

Task

CNXN-2838

Add the ability to update the server (and possibly catalog) for a queue database 

Task

CNXN-2839

Update monitoring framework after feedback with JC and JJ

Task

CNXN-2840

Add a flag to allow a device to be fully loaded within the UI when its owner channel becomes visible

Defect

CNXN-2841

Importing a new device into the UI can cause major memory usage (and can be slow)

Task

CNXN-2842

Deploy snippets in Device Project\CustomCodeV3\Snippets via the installer

Defect

CNXN-2843

Channel Import - Does not function properly when plugins of the same type, but different versions exist in the cxn file

Defect

CNXN-2844

Adding function with no parameters to hl7 tx doesn't clear validation error

Task

CNXN-2845

Add support for installing the .NET 4.6.2 framework on Remote Integrators

Task

CNXN-2847

Integrator Management UI - Should display Operating System Version and .NET version

Story

CNXN-2848

Custom compiled devices should have the ability to either explicitly opt-in or opt-out of parallel message processing

Suggestion

CNXN-2849

Integrator - Add ability to restart the computer hosting the Remote Integrator

Suggestion

CNXN-2850

Integrator - Add ability to kill a process on the Remote Integrator

Defect

CNXN-2851

Saving a package to a remote agent throws an exception during save