module FHIR::Sections::Transactions

Attributes

transaction_bundle[RW]

Public Instance Methods

add_batch_request(method, url, resource = nil, if_none_exist = nil) click to toggle source
# File lib/fhir_client/sections/transactions.rb, line 28
def add_batch_request(method, url, resource = nil, if_none_exist = nil)
  request = versioned_resource_class('Bundle::Entry::Request').new
  request.local_method = if versioned_resource_class('Bundle::Entry::Request::METADATA')['method']['valid_codes'].values.first.include?(method.upcase)
                           method.upcase
                         else
                           'POST'
                         end
  request.ifNoneExist = if_none_exist unless if_none_exist.nil?
  if url.nil? && !resource.nil?
    options = {}
    options[:resource] = resource.class
    options[:id] = resource.id if request.local_method != 'POST'
    request.url = resource_url(options)
    request.url = request.url[1..-1] if request.url.starts_with?('/')
  else
    request.url = url
  end

  entry = versioned_resource_class('Bundle::Entry').new
  entry.resource = resource
  entry.request = request

  @transaction_bundle.entry << entry
  entry
end
add_transaction_request(method, url, resource = nil, if_none_exist = nil) click to toggle source

syntactic sugar for add_batch_request @param method one of ['GET','POST','PUT','DELETE'] @param url relative path, such as 'Patient/123'. Do not include the [base] @param resource The resource if a POST or PUT

# File lib/fhir_client/sections/transactions.rb, line 24
def add_transaction_request(method, url, resource = nil, if_none_exist = nil)
  add_batch_request(method, url, resource, if_none_exist)
end
begin_batch() click to toggle source
# File lib/fhir_client/sections/transactions.rb, line 13
def begin_batch
  @transaction_bundle = versioned_resource_class('Bundle').new
  @transaction_bundle.type = 'batch'
  @transaction_bundle.entry ||= []
  @transaction_bundle
end
begin_transaction() click to toggle source
# File lib/fhir_client/sections/transactions.rb, line 6
def begin_transaction
  @transaction_bundle = versioned_resource_class('Bundle').new
  @transaction_bundle.type = 'transaction'
  @transaction_bundle.entry ||= []
  @transaction_bundle
end
end_batch(format = @default_format) click to toggle source

submit the batch/transaction to the server @param format @return FHIR::ClientReply

# File lib/fhir_client/sections/transactions.rb, line 63
def end_batch(format = @default_format)
  headers = {prefer: FHIR::Formats::ReturnPreferences::REPRESENTATION}
  headers[:content_type] =  "#{format}"
  options = { format: format}
  reply = post resource_url(options), @transaction_bundle, fhir_headers(headers)
  begin
    reply.resource = if format.downcase.include?('xml')
                       versioned_resource_class('Xml').from_xml(reply.body)
                     else
                       versioned_resource_class('Json').from_json(reply.body)
                     end
  rescue
    reply.resource = nil
  end
  set_client_on_resource(reply.resource)
  reply.resource_class = reply.resource.class
  reply
end
end_transaction(format = @default_format) click to toggle source

syntactic sugar for end_batch

# File lib/fhir_client/sections/transactions.rb, line 55
def end_transaction(format = @default_format)
  end_batch(format)
end