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 Type | Production |
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: Gateway and Gateway Management Application: Gateway Management Application: Remote Integrator: Remote Integrator Queue: Remote Agent Push Update: Remote Updater A Push Update: Remote Updater B Push Update: |
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:
- 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.
- Make an required edits.
- 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 performance | We 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 performance | We have made the HL7 language internals static. This should result in lower memory usage and faster startup/load times for this viewer. |
Status linking | This 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 display | Some minor improvements to improve display on high-dpi monitors. |
Fixes
Type | Ticket | Description |
Task | Remote agent / integrators should remember the last successful connection | |
Defect | Attachments not updated in database | |
Task | Support CNG certificates for the Gateway (Preliminary) | |
Story | Add ability to rewrite HL7 datetimes to have a TimeZoneOffset to HL7 V2 Transform device | |
Suggestion | HL7DateTime.ToDTM - Add an overload that adds/removes the Timezone offset in the string | |
Defect | User has to Delete a remote agent from Remote Integrator Manager twice for it to be successfully deleted | |
Defect | 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 | Channel Lock not Holding / Redo channel locking | |
Defect | HL7 Transform V1, Client Side - StackOverflowException when pasting a message into the inbound message | |
Suggestion | Create a "Move Database" wtihin the config wizard (Mayo installation enhancements) | |
Defect | Should prevent RAs from having a reference to the same package id, but different versions | |
Suggestion | Add command timeout fields to the database polling device | |
Suggestion | Some way of migrating the integrator database folder to another location | |
Defect | HL7 Core Libraries - BHS and FHS segments are not handled correctly | |
Defect | [Encrypted] attribute not getting hit for code files within custom code based devices | |
Suggestion | HL7 Core Library - Functions to Insert/Remove a repeated field | |
Defect | Domain information entered into the domain textbox not included in the login credentials | |
Defect | Some queue alerts/logs don't work when messages are queued via branching | |
Defect | Channel's showing up in random order | |
Task | Icon overlay on the queue device showing where branched messages are coming from (opposite of the branch indicator) | |
Defect | General UI fixup for multiple concurrent users | |
Task | Add the ability to update the server (and possibly catalog) for a queue database | |
Task | Update monitoring framework after feedback with JC and JJ | |
Task | Add a flag to allow a device to be fully loaded within the UI when its owner channel becomes visible | |
Defect | Importing a new device into the UI can cause major memory usage (and can be slow) | |
Task | Deploy snippets in Device Project\CustomCodeV3\Snippets via the installer | |
Defect | Channel Import - Does not function properly when plugins of the same type, but different versions exist in the cxn file | |
Defect | Adding function with no parameters to hl7 tx doesn't clear validation error | |
Task | Add support for installing the .NET 4.6.2 framework on Remote Integrators | |
Task | Integrator Management UI - Should display Operating System Version and .NET version | |
Story | Custom compiled devices should have the ability to either explicitly opt-in or opt-out of parallel message processing | |
Suggestion | Integrator - Add ability to restart the computer hosting the Remote Integrator | |
Suggestion | Integrator - Add ability to kill a process on the Remote Integrator | |
Defect | Saving a package to a remote agent throws an exception during save |