Giter Site home page Giter Site logo

nextgenhealthcare / connect Goto Github PK

View Code? Open in Web Editor NEW
843.0 843.0 257.0 636.98 MB

The swiss army knife of healthcare integration.

License: Other

Java 98.14% HTML 0.14% CSS 0.32% Batchfile 0.01% PLSQL 0.03% JavaScript 1.36%
healthcare hl7 integration interoperability mirth mirth-connect

connect's People

Contributors

brentmoen avatar christopherschultz avatar cturczynskyj avatar gbortis avatar igorazevedo avatar jdonextgen avatar joaryche avatar jonbartels avatar leilanimng avatar lmillergithub avatar mhokanson avatar muhammadc avatar narupley avatar pattersp avatar pladesma avatar tonygermano avatar twest-mirthconnect avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

connect's Issues

Improve searching in MC Events with inclusive and exclusive searching by event type

Searching MC events would be improved with two key changes:

  • being able to select events from a list/dropdown/quicksearch
  • being able to include or exclude those events from a search

Use case #1 - I am an MC admin who is tracking down a stopped channel in MC. I need to be able to quickly find the stop channels event. If I can select this from a list I can SEE the event type I want instead of relying on the current free-text "Name" search field.

Use case #2 - I am an MC admin tracking down an issue in MC. When I view events I see MANY entries for the Data Pruner. I want to be able to EXCLUDE those events from my view so I can see all other events in time-order to triage the issue I want to solve.

"Channel Messages" display do not show sent messages

I have created a channel of type INBOUND with a pattern of type ROUTER.
The status display correctly displays the number of messages received and send
The Destination correctly receives the messages going through that channel.
However the "Channel Messages" window only shows the received messages. I was expecting to see the send messages.

Note that the channel is transforming the messages before sending then to the destination, so being able to see those messages will enable the user to see the result of the transformation from the Mirth Client GUI.

As usual thanks for the help.

Regards

Eric

Imported Issue. Original Details:
Jira Issue Key: MIRTH-3
Reporter: eric
Created: 2006-09-04T01:34:21.000-0700

Transformer mapping step names should reflect the mapping variable

When adding mapping steps in the transformer editor, the name of the step should reflect the name of the variable being mapped. As the variable name is changed it should update in the step listing.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-4
Reporter: chrisl
Created: 2006-09-05T10:00:58.000-0700

Loading external jar

I have an external library that is living in custom_lib/library.jar. In order to load the library, I created a step in the source tab to load it and store it in globalChannelMap('lib').

var su = globalChannelMap.get('su');

try {
  if(su === null) {
    globalChannelMap.put('su', com.domain.package.Utils(channelName));
    su = globalChannelMap.get('su');
    var libInfo =com.domain.package.LibraryInfo();
    logger.info(":::: LOADING LIB :::: " + libInfo.getVersion() + " " + channelName);		
  }
} catch (error) {
  logger.error(channelName + " :::: PACKAGE UTILS :::: " + " Something went wrong loading library " + error);
}

I have no issues utilizing the library on any step on the source, however, when I start working on destinations I need to globalChannelMap.get('su') per destination.

My understanding of globalChannelMap() is that the variable is available global to the channel and across all messages.

How I can load a jar once to be accessible to source and destinations for every msg?

Dynamic jar loading

Quick question about mirth utilizing custom libraries. I'm wondering if I can have a build process in some CI/CD repo that adds a jar to the custom_lib folder and have Mirth read it without bouncing Mirth.

Custom HL7 Message Validation

A nice want to have feature for mirth would be custom validation filtering.

Nowadays (version 1.1.0) Mirth uses no HL7 messages validation.
As you can see in http://svn.sourceforge.net/viewvc/mirth/trunk/server/src/com/webreach/mirth/server/mule/util/ER7Util.java?view=markup

PipeParser pipeParser = new PipeParser();
// disables all message validation
pipeParser.setValidationContext(new NoValidation());

and

XMLParser xmlParser = new DefaultXMLParser();
// disables all message validation
xmlParser.setValidationContext(new NoValidation());

the default HAPI validation mechanism (DefaultValidation - see http://hl7api.cvs.sourceforge.net/hl7api/hapi/ca/uhn/hl7v2/validation/impl/DefaultValidation.java?view=markup) is disabled/overriden with no validation (NoValidation - see http://hl7api.cvs.sourceforge.net/hl7api/hapi/ca/uhn/hl7v2/validation/impl/NoValidation.java?view=markup)

Now we could implement custom validation into Mirth (next to filtering and transforming) for every destination.

Something like right click on a destination -> Edit Validation
Now you could see a screen with a list with 4 columns where you can add your custom rules:
1st column: the hl7 version (* for all the versions)
2nd column: the scope (ex: "NM", "ST", "ID") (select from a list of all the available datatypes)
3th column: the rule name (ex: TrimLeadingWhitespace, SizeRule, RegexPrimitiveRule)
4th column: the rule parameter, this is not for every rule required

Now whenever the message get parsed instead of the NoValidation we can use our own validation!
If the message doesn't pass the validation the message will never get to it's destination and can be logged or stored in an error queue.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-1
Reporter: dabuddhaman
Created: 2006-08-29T12:46:58.000-0700

EDI Message Support

Mirth should be able to process, encode and transform EDI messages.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-17
Reporter: chrisl
Created: 2006-09-08T11:40:44.000-0700

Cannot import channel

3.6.0 gives errors on channel import.
On a 3.5.1 exported file it ended up importing anyway.
On a 3.3.1 exported file it never works.

Channel "HL7 Sickbay ADT Dispatch - Production" is invalid. Original cause:
null
java.lang.AbstractMethodError
at com.mirth.connect.model.converters.MigratableConverter.migrateElement(MigratableConverter.java:147)
at com.mirth.connect.model.converters.MigratableConverter.unmarshal(MigratableConverter.java:89)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.mirth.connect.model.converters.MigratableConverter.unmarshal(MigratableConverter.java:101)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
at com.mirth.connect.model.converters.MigratableConverter.unmarshal(MigratableConverter.java:101)
at com.mirth.connect.model.converters.ChannelConverter.unmarshal(ChannelConverter.java:79)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1185)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1157)
at com.mirth.connect.model.converters.ObjectXMLSerializer.deserialize(ObjectXMLSerializer.java:281)
at com.mirth.connect.client.ui.ChannelPanel.importChannel(ChannelPanel.java:1425)
at com.mirth.connect.client.ui.ChannelPanel.doImportChannel(ChannelPanel.java:1413)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.Trampoline.invoke(Unknown Source)
at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
at java.beans.EventHandler.invokeInternal(Unknown Source)
at java.beans.EventHandler.access$000(Unknown Source)
at java.beans.EventHandler$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.beans.EventHandler.invoke(Unknown Source)
at com.sun.proxy.$Proxy46.actionPerformed(Unknown Source)
at org.jdesktop.swingx.action.BoundAction.actionPerformed(BoundAction.java:231)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at org.jdesktop.swingx.JXHyperlink.fireActionPerformed(JXHyperlink.java:264)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Global Variable checkbox should not appear on HL7 message builder pane

The checkbox "Add as global variable" is not valid for Outgoing messages built using the HL7 Message Builder pane on the outgoing message transformer pane. This needs to be removed.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-22
Reporter: chrisl
Created: 2006-09-11T03:34:53.000-0700

Client prompts for validation even when all fields are completed

When creating a channel with multiple destinations Mirth will prompt that your channel configuration is incomplete when choosing to save the channel. Clicking validate manually shows "valid channel".

Steps to reproduce:

  1. Create Inbound Router
  2. Add file writer destination, fill in all fields
  3. Add another file writer destination, fill in all fields
  4. Create transformer on the first destination
  5. Create Database Writer destination, fill in all fields
  6. Hit "Save Channel"

Imported Issue. Original Details:
Jira Issue Key: MIRTH-7
Reporter: chrisl
Created: 2006-09-05T23:14:03.000-0700

File reader exception message needs to be updated

Whenever the file-reader encounters an error with a file operation it uses the same message: "The file already exists". This needs to be updated to show the actual exception that happened. See below for more information.


Message : Failed to move file "/mnt/hl7data/20060908160921.18968" to "/tmp/hl7testdata3/0edfcdfb-4295-11db-a11b-e267260bf594". The file already exists.
Type : org.mule.MuleException
Code : 11004
JavaDoc : http://mule.codehaus.org/docs/apidocs/org/mule/MuleException.html


Exception stack is:

  1. Failed to move file "/mnt/hl7data/20060908160921.18968" to "/tmp/hl7testdata3/0edfcdfb-4295-11db-a11b-e267260bf594". The file already exists. (org.mule.MuleException)
    org.mule.providers.file.FileMessageReceiver:175 (http://mule.codehaus.org/docs/apidocs/org/mule/MuleException.html)

Root Exception stack trace:
org.mule.MuleException: Failed to move file "/mnt/hl7data/20060908160921.18968" to "/tmp/hl7testdata3/0edfcdfb-4295-11db-a11b-e267260bf594". The file already exists.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-28
Reporter: chrisl
Created: 2006-09-12T11:29:21.000-0700

Channel "Save Prompt" constantly appears

After creating several destinations and transformers, the channel save prompt appears on every action in the UI. The only fix is to restart the client.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-10
Reporter: chrisl
Created: 2006-09-06T03:12:40.000-0700

Multiple destination ordering is not honored in Mule

When creating a Router channel with multiple destinations, only the filters and transformers are fired in order. The actual Mule updates are done in parallel.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-20
Reporter: chrisl
Created: 2006-09-08T13:33:16.000-0700

HL7 Message Builder should not automatically add '.text()[0]' to mappings

When creating mappings in the HL7 message builder (outgoing channels) the mapping field automatically gets '.text()[0]' added. This is the valid syntax for variables from a database call (msg[]), however it breaks access to the globalMap.

The proper behavior would be to add .text()[0] to the dragged database variable (such that the wrapping would be msg['VARNAME'].text()[0]).

Imported Issue. Original Details:
Jira Issue Key: MIRTH-24
Reporter: chrisl
Created: 2006-09-11T04:39:53.000-0700

Patch request unavailable

hi, I try enable appointment with fhir complement, all work fine, but when i try update date via patch request get error, look like option PATCH don't load in appointment.

access control allow methods not show PATCH.

c8f27da3-5373-4211-b12d-45cc3ad669d6

Error.

7d359d9f-a9f9-4a8a-8c89-ea6ae32d2947 (1)

Patch Method enable in channel.

7d4aebba-ff06-47c8-8818-86a991838ae1

whit GET, POST, PUT method work fine, but i need PATCH.

b504361d-a72d-40c9-9078-1ca6bb14b2b0

Question is i do something wrong ?

mccommand export channel excludes pruning settings

When I export a channel using mccommand (3.8.1), the exported file does not contain my pruning-settings.

Exported channel example from mirth connect client (does include pruning settings):

<exportData>
    <metadata>
...
      <pruningSettings>
        <pruneContentDays>90</pruneContentDays>
        <archiveEnabled>true</archiveEnabled>
      </pruningSettings>
    </metadata>
...
    <dependencyIds>
      <string>0c776d8a-870a-440d-b5fd-af1a47143917</string>
    </dependencyIds>
</exportData>

Exported channel example using mccommand (does not include pruning settings):

<exportData>
    <dependencyIds>
      <string>0c776d8a-870a-440d-b5fd-af1a47143917</string>
    </dependencyIds>
</exportData>

Configuration map retrieved from API loses some information

Hello,

For example, this value:

Capture

becomes this (with GET /server/configurationMap):

<entry>
    <string>RALBOL_EMP-RIS_RestApi2File_SRV_FS1_USR</string>
    <com.mirth.connect.util.ConfigurationProperty>
        <value>snecmptMirthCiges</value>
        <comment></comment>
    </com.mirth.connect.util.ConfigurationProperty>
</entry>

Add new protocol option for channel

The channel creation wizard should have a drop-down in the Channel Overview step that allows the user to choose that channel's protocol. For now the only option will be HL7. This should do Channel.setProtocol to Protocol.HL7.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-16
Reporter: geraldb
Created: 2006-09-08T10:22:27.000-0700

Adding properties to JMS messages

Hello,

JMS allows to add properties to messages so that subscribers can filter messages using selectors.
Please, consider adding properties to the JMS messages. In the client JMS connector UI you could add a "properties" table tha allows the user to add property names and values. The values of the properties could come, for example, from the channel map or other variables.

Regards.

Replaced syntax highlighting package

Replace the Ostermiller syntax highlighting package with one that is faster, more lightweight, and doesn't throw a NullPointerException randomly.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-13
Reporter: geraldb
Created: 2006-09-07T11:48:56.000-0700

Drag and drop does not work first time

Dragging and dropping variables from the variable list doesn't work the first time its done, only subsequent times.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-18
Reporter: geraldb
Created: 2006-09-08T12:11:03.000-0700

Starting server with no FS space free leaves it unstartable

Take a look at these lines which are called every time you start the server.

// write the keystore back to the file
FileOutputStream fos = new FileOutputStream(keyStoreFile);
keyStore.store(fos, keyStorePassword);
IOUtils.closeQuietly(fos);

There is some circumstance[1] where those lines will result in a zero byte keystore file on disk. That's worse than the file being missing. The server will create a new file if it is missing, but it will fail to start if the keystore file is zero bytes (corrupted). And as long as that zero-byte keystore file remains there, the server will continue to fail to start, even if all other issues are addressed.

I think that the simplest fix that will prevent the problem I experienced is to treat a zero-byte file the same way you treat a missing file: make a new one.

You'd make that change here:

..Just change that line to something like this:

    if (keyStoreFile.exists() && keyStoreFile.canRead() && keyStoreFile.length() > 0) {

But, please consider reviewing this whole initializeSecuritySettings() method first. Is re-writing that JKS file every server start really what you want to do? (Is this not where you store the self-signed cert? How come my browser doesn't notice if it is regenerated all the time? Is it generated in a deterministic manner? Is that good?) I have not reviewed this method, these are just some questions that come to mind after glancing over it. Ideally each of those concerns turns out to be nothing.

1: Filesystem full (on NTFS, if that matters) while server is starting, possibly including other processes trying to write (claiming any free blocks) at the same time.

Administrator Launcher does not work if we define a http context path

Hi ! Thank you for this impressive work. Unfortunately there is a bug in the administrator launcher (v1.0.0).

If the variable http.contextpath (in mirth.properties) is defined other than root, the administrator launcher fails to connect with the error "Unable to retrieve payload from HTTP request. URI: https://10.33.25.176:9443/webstart".

As can be seen in this message, the context does not appear. So it seems that one step of the connection attempt removes it.

Working with the msg object in external library

Our team wrote/writing a java library to be used within connect. We are running into an issue where I need to pass msg["some..."] as a parameter without the .toString(). Inside the function I want to determine if the msg["some..."] is an xml or json.

From the library I logger.warn(":::: JAVA TYPE :::: " + value.javaClass) // org.mozilla.javascript.xmlimpl.XMLList. Happened that this class comes from a private package.

Screen Shot 2020-03-06 at 8 38 59 AM

Is there a work around or a way to work with the msg object in the external library?
In other words, I want to stringify the XML that I'm passing.

Messaging Object for better message tracking and stats

The server should be augmented to transfer a custom message object that stores the following information:

Status (received, filtered, transformed, sent)
Date Received
Raw Data
Transformed Data
Encoded Data

This message object will be sent across the Mirth bus (through Filters, Transformers, Endpoints) and update it's state with the Message Registry at defined steps.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-15
Reporter: chrisl
Created: 2006-09-08T00:47:12.000-0700

Implement Issue Tracking Links in SVN

Setup SVN to track issues with JIRA

Imported Issue. Original Details:
Jira Issue Key: MIRTH-19
Reporter: chrisl
Created: 2006-09-08T13:22:43.000-0700

Change the wording on the LLP listener character encoding label

The LLP Listener allows the user to input custom LLP characters, as well as choose the encoding. This encoding radio button needs a better label to indicate that it sets the expected encoding of the LLP characters, not of the message.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-5
Reporter: chrisl
Created: 2006-09-05T12:00:18.000-0700

Message browser takes very long time to load.

The message browser takes several seconds to load, even when contacting a server running on the localhost. The load-time increases the longer the server/client is running.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-23
Reporter: chrisl
Created: 2006-09-11T04:25:46.000-0700

There should be a new mapping step that allows globalMap variables

Currently all mapping steps update the 'localMap'. All filters and transformers look for variables in the localMap, however in the case of multiple destinations one would have to duplicate mappings for each endpoint.

There should either be the option to have a Global Mapping in the transformer that adds mappings to the globalMap or another map object called a "channelMap" which holds its state across an entire channel.

In both cases, transformers and endpoints will need to be updated to accept two map objects (and all variable replacements, ie SQL, will need to check both the local, global or channelMaps.).

Imported Issue. Original Details:
Jira Issue Key: MIRTH-2
Reporter: chrisl
Created: 2006-09-01T17:22:35.000-0700

Message board displays html entities

Message board shows html entities (") rather than actual characters. Check security settings.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-21
Reporter: chrisl
Created: 2006-09-08T14:09:06.000-0700

swagger.json schema contains zero required key/value pairs

A POST to /channels requires an associated JSON string in order to create a channel. This JSON string is, itself, a required field. However, the schema does not specify which, if any, key/value pairs in the JSON block are required. All of these settings appear to be optional, because none of them are defined as required:

Channel {
id (string, optional),
nextMetaDataId (integer, optional),
name (string, optional),
description (string, optional),
revision (integer, optional),
sourceConnector (Connector, optional),
destinationConnectors (Array[Connector], optional),
preprocessingScript (string, optional),
postprocessingScript (string, optional),
deployScript (string, optional),
undeployScript (string, optional),
properties (ChannelProperties, optional),
exportData (ChannelExportData, optional),
enabledDestinationConnectors (Array[Connector], optional),
purgedProperties (object, optional)
}

This is the case for all JSON content in swagger.json -- the JSON block is "required", but none of the k/v pairs within the JSON block are marked required, and therefore they are each "optional".

Generate reports for channels

Have the ability to generate reports (PDF, HTML, or just email) for the Mirth server providing statistics for all of the channels (# messages, types of messages, average message size, etc.) This should be configured through the server settings in the UI.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-12
Reporter: geraldb
Created: 2006-09-07T11:47:36.000-0700

Soap actions lost on channel import from 3.4.2 to 3.6.1

After importing a channel in 3.6.1 which has been created in 3.4.2, for some reason, all the SOAP actions are cleared.

Filling in the SOAP action manually is no option, since Connect will not save this field.

Only way to set the soap action is retrieving the operations list and browsing through the list of operations again.

Connection Closed Errors while using Azure Managed SQL Database

When connected to Azure Managed SQL Database, random DB connection errors are popping up. See Stack trace:

ERROR 2019-11-25 15:09:06,727 [ChannelServlet Thread (Create channel) < qtp49212530-32] com.mirth.connect.server.controllers.DefaultConfigurationController: Could not store property: category=core, name=channelMetadata
org.apache.ibatis.exceptions.PersistenceException:
### Error rolling back transaction.  Cause: java.sql.SQLException: Connection is closed
### Cause: java.sql.SQLException: Connection is closed
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.rollback(DefaultSqlSession.java:185)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.rollback(DefaultSqlSession.java:177)
        at org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:286)
        at com.sun.proxy.$Proxy9.insert(Unknown Source)
        at org.apache.ibatis.session.SqlSessionManager.insert(SqlSessionManager.java:195)
        at com.mirth.connect.server.controllers.DefaultConfigurationController.saveProperty(DefaultConfigurationController.java:920)
        at com.mirth.connect.server.controllers.DefaultConfigurationController.setChannelMetadata(DefaultConfigurationController.java:1076)
        at com.mirth.connect.server.controllers.DefaultChannelController.updateChannelMetadata(DefaultChannelController.java:450)
        at com.mirth.connect.server.controllers.DefaultChannelController.updateChannel(DefaultChannelController.java:412)
        at com.mirth.connect.server.api.servlets.ChannelServlet.createChannel(ChannelServlet.java:62)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at com.mirth.connect.server.api.providers.MirthResourceInvocationHandlerProvider$1.invoke(MirthResourceInvocationHandlerProvider.java:219)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161)
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205)            at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
        at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:471)
        at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:425)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:383)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:336)
        at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:223)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:864)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655)
        at com.mirth.connect.server.MethodFilter.doFilter(MethodFilter.java:37)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
        at com.mirth.connect.server.api.providers.ClickjackingFilter.doFilter(ClickjackingFilter.java:44)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
        at com.mirth.connect.server.api.providers.ApiOriginFilter.doFilter(ApiOriginFilter.java:71)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
        at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
        at org.eclipse.jetty.server.Server.handle(Server.java:531)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
        at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:291)
        at org.eclipse.jetty.io.ssl.SslConnection$3.succeeded(SslConnection.java:151)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)
        at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:319)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:175)
        at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:133)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:754)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:672)
        at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Connection is closed
        at com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection$1.invoke(ProxyConnection.java:469)
        at com.sun.proxy.$Proxy10.getAutoCommit(Unknown Source)
        at com.zaxxer.hikari.pool.HikariProxyConnection.getAutoCommit(HikariProxyConnection.java)
        at org.apache.ibatis.transaction.jdbc.JdbcTransaction.rollback(JdbcTransaction.java:73)
        at org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:214)
        at org.apache.ibatis.executor.CachingExecutor.rollback(CachingExecutor.java:120)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.rollback(DefaultSqlSession.java:182)
        ... 72 more

Unable to start mirth-server-launcher

I have downloaded the last version NextGen Connect 3.8.0 for Windows x64, which is a zip. I unzipped it and tried to start the jar mirth-server-launcher.jar as adminstrator. But, I got the following error:

ERROR 2019-08-04 19:52:04,022 [Main Server Thread] com.mirth.connect.server.MirthWebServer: Could not load web app
MultiException[java.io.IOException: Unable to establish loopback connection, java.io.IOException: Unable to establish loopback connection]
        at org.eclipse.jetty.server.Server.doStart(Server.java:383)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at com.mirth.connect.server.MirthWebServer.startup(MirthWebServer.java:350)
        at com.mirth.connect.server.Mirth.startWebServer(Mirth.java:386)
        at com.mirth.connect.server.Mirth.startup(Mirth.java:265)
        at com.mirth.connect.server.Mirth.run(Mirth.java:154)
        Suppressed: java.io.IOException: Unable to establish loopback connection
                at sun.nio.ch.PipeImpl$Initializer.run(Unknown Source)
                at sun.nio.ch.PipeImpl$Initializer.run(Unknown Source)
                at java.security.AccessController.doPrivileged(Native Method)
                at sun.nio.ch.PipeImpl.<init>(Unknown Source)
                at sun.nio.ch.SelectorProviderImpl.openPipe(Unknown Source)
                at java.nio.channels.Pipe.open(Unknown Source)
                at sun.nio.ch.WindowsSelectorImpl.<init>(Unknown Source)
                at sun.nio.ch.WindowsSelectorProvider.openSelector(Unknown Source)
                at java.nio.channels.Selector.open(Unknown Source)
                at org.eclipse.jetty.io.SelectorManager.newSelector(SelectorManager.java:380)
                at org.eclipse.jetty.io.ManagedSelector.doStart(ManagedSelector.java:94)
                at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
                at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
                at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
                at org.eclipse.jetty.io.SelectorManager.doStart(SelectorManager.java:258)
                at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
                at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
                at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
                at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:279)
                at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
                at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
                at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
                at org.eclipse.jetty.server.Server.doStart(Server.java:398)
                ... 5 more
        Caused by: java.net.SocketException: Permission denied: connect
                at sun.nio.ch.Net.connect0(Native Method)
                at sun.nio.ch.Net.connect(Unknown Source)
                at sun.nio.ch.Net.connect(Unknown Source)
                at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
                at java.nio.channels.SocketChannel.open(Unknown Source)
                at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(Unknown Source)
                ... 28 more
Caused by: java.io.IOException: Unable to establish loopback connection
        at sun.nio.ch.PipeImpl$Initializer.run(Unknown Source)
        at sun.nio.ch.PipeImpl$Initializer.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.nio.ch.PipeImpl.<init>(Unknown Source)
        at sun.nio.ch.SelectorProviderImpl.openPipe(Unknown Source)
        at java.nio.channels.Pipe.open(Unknown Source)
        at sun.nio.ch.WindowsSelectorImpl.<init>(Unknown Source)
        at sun.nio.ch.WindowsSelectorProvider.openSelector(Unknown Source)
        at java.nio.channels.Selector.open(Unknown Source)
        at org.eclipse.jetty.io.SelectorManager.newSelector(SelectorManager.java:380)
        at org.eclipse.jetty.io.ManagedSelector.doStart(ManagedSelector.java:94)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117)
        at org.eclipse.jetty.io.SelectorManager.doStart(SelectorManager.java:258)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:138)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:108)
        at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:279)
        at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
        at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.server.Server.doStart(Server.java:398)
        ... 5 more
Caused by: java.net.SocketException: Permission denied: connect
        at sun.nio.ch.Net.connect0(Native Method)
        at sun.nio.ch.Net.connect(Unknown Source)
        at sun.nio.ch.Net.connect(Unknown Source)
        at sun.nio.ch.SocketChannelImpl.connect(Unknown Source)
        at java.nio.channels.SocketChannel.open(Unknown Source)
        at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(Unknown Source)
        ... 28 more
WARN  2019-08-04 19:52:12,559 [Main Server Thread] com.mirth.connect.server.Mirth: Could not start web server

Did I miss something?

Thanks in advance.

Regular expressions break Transformers

Including the following regular expression breaks javascript transformation:

replace(/^\s**|\s**$/g,'');

Imported Issue. Original Details:
Jira Issue Key: MIRTH-25
Reporter: chrisl
Created: 2006-09-11T05:42:58.000-0700

First transformer step disappears

The first transformation step will randomly get deleted from the transformer after switching screens from the transformer pane to the channel editor.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-26
Reporter: chrisl
Created: 2006-09-11T07:31:49.000-0700

processing GET requests as doccuments

GCP sends health checks to our endpoints to make sure they are alive, connect seems to be mistaking these to be documents.

screen shot 2018-11-13 at 09 11 19

screen shot 2018-11-13 at 09 12 12

Is there a better endpoint we could use to perform health checks that would not do this?

Allow option to specify the end-of-segment character in the LLP listener

The HL7 spec expects CR (ascii 13) characters to deliminate segments of an HL7 message, however certain vendors only deliminate thier lines with \n (ascii 10). Mirth should stay compatabile with these vendors by allowing the option to specify the end of segment encoding character.

Imported Issue. Original Details:
Jira Issue Key: MIRTH-29
Reporter: chrisl
Created: 2006-09-12T14:05:54.000-0700

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.