nextgenhealthcare / connect

The swiss army knife of healthcare integration.
Other
929 stars 280 forks source link

Add support for channel dependencies #2286

Closed rbeckman-nextgen closed 4 years ago

rbeckman-nextgen commented 4 years ago

Certain channels should have the ability to be "dependent" on other channels in order to be deployed/started. This doesn't just include the "Channel Writer sending to not-yet-deployed channel" scenario, but also encompasses a great many complex architecture scenarios, like an inbound ORM order receiver that should wait until an outbound lab result channel has finished starting (and flushed out its queue, etc.). Or maybe it's an outbound database writer that should be dependent on another channel that sets up global map database connections, or refreshes local code value caches, etc.

Basically I see it being not just "dependent" or "not dependent", but also dependent at different levels. For example, one channel could be dependent on another channel being deployed (because perhaps it sets something up in a deploy script), whereas it might also be dependent on another channel being started. You might also have dependencies in which a channel can only be started if another channel is -stopped- (which might introduce interesting possibilities for appliance load balancing, etc.).

The idea could be taken further by allowing dependencies at the group level (MIRTH-1243). So for example you could have all the channels in the group "Inbound ORM Interfaces" dependent on all channels in the group "Outbound ORU/MDM Interfaces", so that upon server start or redeploy all, you can be sure that no messages error out needlessly.

Imported Issue. Original Details: Jira Issue Key: MIRTH-2349 Reporter: narupley Created: 2013-02-05T09:49:12.000-0800

rbeckman-nextgen commented 4 years ago

[http://www.mirthcorp.com/community/forums/showthread.php?p=44862#post44862]

Imported Comment. Original Details: Author: narupley Created: 2015-01-13T07:43:59.000-0800

rbeckman-nextgen commented 4 years ago

Tru dat, dis nids dun!

Imported Comment. Original Details: Author: stickybandit Created: 2015-01-29T09:13:31.000-0800

rbeckman-nextgen commented 4 years ago

Revision 7949: Added the ability for channels to be dependent on other channels for deploy/start tasks.

Dependencies are stored as simply pairs of channel IDs (dependent ID and dependency ID). To calculate dependencies, a directed acyclic graph data structure is constructed from the set of channel ID pairs. From there the sink nodes (that no other node is dependent on) are kept track of, and the graph can be traversed in any direction.

Dependencies are edited in the same Set Dependencies dialog that code template libraries and resources are set. Users can add direct dependencies or dependents to any channel, and can see dependency trees in either direction.

When a deploy/undeploy/start/stop/pause/resume task is performed, any other required channels are calculated, and the user is prompted to ask whether the other channels should be included or not. The user is shown an ordered list of channels and what order they will be handled in.

For the time being dependencies are of a single type (handles both deploy tasks and start/stop tasks) and operate only at the channel level.

Imported Comment. Original Details: Author: narupley Created: 2016-03-21T12:00:04.000-0700

rbeckman-nextgen commented 4 years ago

Testing with mirthconnect-3.4.0.7982.b1941

Observation:

Additional Info:

Imported Comment. Original Details: Author: minht Created: 2016-04-07T16:46:11.000-0700

rbeckman-nextgen commented 4 years ago

Revision 7983: Made a tweak to the warning dialog to make it more clear what the bolded channels mean in the list.

Imported Comment. Original Details: Author: narupley Created: 2016-04-08T11:06:19.000-0700

rbeckman-nextgen commented 4 years ago

Verified the new dialog in mirthconnect-3.4.0.7985.b1944-windows-x64 !Bolded.png!

Imported Comment. Original Details: Author: minht Created: 2016-04-08T14:59:30.000-0700

rbeckman-nextgen commented 4 years ago

successfully verified the new Channel Dependencies setting

Imported Comment. Original Details: Author: minht Created: 2016-04-08T15:00:19.000-0700