class AllscriptsUnityClient::UnityRequest

Transform a Unity request into a Hash suitable for sending using Savon.

Attributes

appname[RW]
parameters[RW]
raw_dates[RW]
security_token[RW]
timezone[RW]

Public Class Methods

new(parameters, timezone, appname, security_token, raw_dates=false) click to toggle source

Constructor.

parameters

A Hash of Unity parameters. Takes this form:

{
  'Action' => ...,
  'UserID' => ...,
  'Appname' => ...,
  'PatientID' => ...,
  'Token' => ...,
  'Parameter1' => ...,
  'Parameter2' => ...,
  'Parameter3' => ...,
  'Parameter4' => ...,
  'Parameter5' => ...,
  'Parameter6' => ...,
  'data' => ...
}
timezone

An ActiveSupport::TimeZone instance.

appname

The Unity license appname.

security_token

A security token from the Unity GetSecurityToken call.

# File lib/allscripts_unity_client/unity_request.rb, line 29
def initialize(parameters, timezone, appname, security_token, raw_dates=false)
  raise ArgumentError, 'parameters can not be nil' if parameters.nil?
  raise ArgumentError, 'timezone can not be nil' if timezone.nil?
  raise ArgumentError, 'appname can not be nil' if appname.nil?
  raise ArgumentError, 'security_token can not be nil' if security_token.nil?

  @appname = appname
  @security_token = security_token
  @parameters = parameters
  @timezone = timezone
  @raw_dates = raw_dates
end

Public Instance Methods

to_hash() click to toggle source

Convert the parameters to a Hash for Savon with all possible dates converted to the Organization’s localtime.

# File lib/allscripts_unity_client/unity_request.rb, line 44
def to_hash
  action = @parameters[:action]
  userid = @parameters[:userid]
  appname = @parameters[:appname] || @appname
  patientid = @parameters[:patientid]
  token = @parameters[:token] || @security_token
  parameter1 = process_date(@parameters[:parameter1])
  parameter2 = process_date(@parameters[:parameter2])
  parameter3 = process_date(@parameters[:parameter3])
  parameter4 = process_date(@parameters[:parameter4])
  parameter5 = process_date(@parameters[:parameter5])
  parameter6 = process_date(@parameters[:parameter6])
  data = Utilities::encode_data(@parameters[:data])

  {
    'Action' => action,
    'UserID' => userid,
    'Appname' => appname,
    'PatientID' => patientid,
    'Token' => token,
    'Parameter1' => parameter1,
    'Parameter2' => parameter2,
    'Parameter3' => parameter3,
    'Parameter4' => parameter4,
    'Parameter5' => parameter5,
    'Parameter6' => parameter6,
    'data' => data
  }
end

Protected Instance Methods

process_date(value) click to toggle source
# File lib/allscripts_unity_client/unity_request.rb, line 80
def process_date(value)
  if value && (value.is_a?(Time) || value.is_a?(DateTime) || value.is_a?(ActiveSupport::TimeWithZone))
    return value.in_time_zone(@timezone).iso8601
  end

  return value if use_raw_dates?

  date = Utilities::try_to_encode_as_date(ActiveSupport::TimeZone['Etc/UTC'], value)

  if date && date.is_a?(ActiveSupport::TimeWithZone)
    date.in_time_zone(@timezone).iso8601
  elsif date && date.is_a?(Date)
    date.iso8601
  else
    value
  end
end
use_raw_dates?() click to toggle source
# File lib/allscripts_unity_client/unity_request.rb, line 76
def use_raw_dates?
  @raw_dates || false
end