NAME
WebService::Mirth - Interact with a Mirth Connect server via REST
VERSION
version 0.131220
SYNOPSIS
my $mirth = WebService::Mirth->new(
server => 'mirth.example.com',
port => 8443,
username => 'admin',
password => 'password',
);
$mirth->export_channels({
to_dir => 'path/to/export/to/'
});
$mirth->export_global_scripts({
to_dir => 'path/to/export/to/'
});
$mirth->export_code_templates({
to_dir => 'path/to/export/to/'
});
DESCRIPTION
Mirth Connect is an open-source Java-powered application used for healthcare integration. Incoming HL7 or XML feeds containing electronic medical records can be parsed and then handled (munged, stored, sent off, etc) by Mirth Connect.
This module provides a pure-Perl means of RESTful interaction with a Mirth Connect server (referred to as "Mirth" going forward). The functionality is similar to what the "Mirth Shell" program provides within a Mirth installation.
Parser code living in Mirth can be exported as XML files locally, for off-site archival.
Mojo::DOM objects in some of the "ATTRIBUTES" could be used for inspecting or altering the channels locally (ie. turn a channel off by changing the "enabled" node from "true" to "false").
The "login" and "logout" methods will automatically be called as needed.
All internal HTTP interactions are performed via Mojo::UserAgent, so the MOJO_USERAGENT_DEBUG
environment variable can be set to 1 to turn on HTTP debugging.
Log::Minimal is used for application logging, so the LM_DEBUG
environment variable can be set to 1 for additional debugging.
ATTRIBUTES
server
A string containing the FQDN (see "CAVEATS") of the Mirth server to connect to.
port
The Jetty port that Mirth is listening on for HTTP.
version
A string containing the version of Mirth that the "server" is hosting. This value is required by Mirth for HTTP interaction.
Defaults to "0.0.0", which should be sufficient.
username
The name of the user to connect with. "admin" is likely a good choice: full administrative privileges are ideal.
password
The corresponding password for the "username" being used.
base_url
A Mojo::URL object that represents the HTTP address of the Mirth server. The RESTful HTTP requests will be made based on this URL.
Mirth uses HTTPS, so it will be constructed into something like https://mirth.example.com:8443
.
code_templates_dom
A Mojo::DOM object of the XML representing the "Code Templates" in Mirth. Used by "get_code_templates" to create a WebService::Mirth::CodeTemplates object.
global_scripts_dom
A Mojo::DOM object of the XML representing the "Global Scripts" in Mirth. Used by "get_global_scripts" to create a WebService::Mirth::GlobalScripts object.
channels_dom
A Mojo::DOM object of the XML representing all of the channels in Mirth. Massaged by "get_channel" to return a WebService::Mirth::Channel object.
Also used in the construction of "channel_list".
channel_list
Contains a hashref representing all of the channels in Mirth. The key is a channel name and the value is the corresponding channel ID.
METHODS
login
$mirth->login;
Login as "username" at the /users
URI, via an HTTP POST. If authentication is successful, starts a session that persists until "logout" is called.
This method is automatically called upon object construction.
get_global_scripts
$global_scripts = $mirth->get_global_scripts;
Returns a WebService::Mirth::GlobalScripts object of the "Global Scripts" in Mirth.
export_global_scripts
$mirth->export_global_scripts({
to_dir => 'path/to/export/to/'
});
Given a path to a directory in the to_dir
parameter, writes an XML file named global_scripts.xml
to the directory.
get_code_templates
$code_templates = $mirth->get_code_templates;
Returns a WebService::Mirth::CodeTemplates object of the "Code Templates" in Mirth.
export_code_templates
$mirth->export_code_templates({
to_dir => 'path/to/export/to/'
});
Given a path to a directory in the to_dir
parameter, writes an XML file named code_templates.xml
to the directory.
get_channel
$channel = $mirth->get_channel('foobar');
print $channel->name, "\n"; # "foobar"
print $channel->id, "\n"; # "a25ea24c-d8f4-439a-9063-62f8a2b6a4b1"
print $channel->enabled, "\n"; # "true"
Given the name of a channel in Mirth, returns a WebService::Mirth::Channel object.
export_channels
$mirth->export_channels({
to_dir => 'path/to/export/to/'
});
Given a path to a directory in the to_dir
parameter, writes XML files (with names like my_channel.xml
) to the directory.
logout
$mirth->logout;
Ends the session initiated by "login".
This method is automatically called upon object destruction.
TODO
CAVEATS
Server specification and session cookies
It seems that an FQDN (fully-qualified domain name) is required for "server" in order for the session started by "login" (involving cookies) to stick.
For example, an IP address for "server" is not sufficient. A workaround could be adding an entry to /etc/hosts
with something like "mirth.localhost" (in which case, see hosts(1)).
SEE ALSO
- http://www.mirthcorp.com/products/mirth-connect
- http://www.mirthcorp.com/community/wiki/display/mirthuserguidev1r8p0/Introduction
- http://www.mirthcorp.com/community/wiki/display/mirthuserguidev1r8p0/Mirth+Shell
- Mojo::DOM
ACKNOWLEDGEMENTS
Thanks to the Informatics Corporation of America (ICA) for sponsoring the development of this module.
AUTHOR
Tommy Stanton <tommystanton@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Tommy Stanton.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.