Class: AllscriptsApi::Orders::Order

Inherits:
Object
  • Object
show all
Defined in:
lib/allscripts_api/orders/order.rb

Overview

A value object wrapped around a Nokogiri::XML::Builder DSL that builds properly formatted XML for AllscriptsApi::OrderingMethods#save_order

Class Method Summary collapse

Class Method Details

.build_xml(site_id, emr_user_id, order_date, encounter_id = "") ⇒ String

Builder method for returning XML

ordering to current encounter AllscriptsApi::OrderingMethods#save_order

Parameters:

  • site_id (String)

    the id for the Allscripts install site

  • emr_user_id (String)

    the provider’s Allscripts id

  • order_date (DateTime)

    a date for the order (Typically today)

  • encounter_id (String|Nil) (defaults to: "")

    an encounter id, used when

Returns:

  • (String)

    xml formatted for



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/allscripts_api/orders/order.rb', line 18

def self.build_xml(site_id, emr_user_id, order_date, encounter_id = "")
  date = order_date.strftime("%d-%b-%Y")
  builder = Nokogiri::XML::Builder.new
  builder.saveorderxml do
    # a value of 'Y' makes the order visible on the order list
    builder.field("id" => "ordershowonorderlist", "value" => "Y")
    builder.field("id" => "orderlocation", "value" => site_id)
    builder.field("id" => "ordertobedone", "value" => date)
    # default, not important, required
    builder.field("id" => "orderpriority", "value" => "2")
    builder.field("id" => "orderschedulefreetext", "value" => "")
    builder.field("id" => "orderschedulerecurring", "value" => "")
    builder.field("id" => "orderschedulerecurringperiod", "value" => "")
    builder.field("id" => "orderschedulestarting", "value" => date)
    builder.field("id" => "orderscheduleending", "value" => date)
    builder.field("id" => "orderscheduleendingafter", "value" => "")
    builder.field("id" => "orderperformingcomment", "value" => "")
    builder.field("id" => "ordercommunicatedby", "value" => 11) # hard coded
    builder.field("id" => "orderorderedby", "value" => emr_user_id)
    builder.field("id" => "ordermanagedby", "value" => emr_user_id)
    builder.field("id" => "ordersupervisedby", "value" => "")
    builder.field("id" => "orderciteresult", "value" => "")
    builder.field("id" => "orderannotation", "value" => "")
    builder.field("id" => "orderstatus", "value" => "Active")
    builder.field("id" => "orderstatusdate", "value" => date)
    builder.field("id" => "orderdeferralinterval", "value" => 0)
    builder.field("id" => "orderdeferralunit", "value" => "Days")
    builder.field("id" => "orderstatusreason", "value" => "")
    builder.field("id" => "encounter", "value" => encounter_id.to_s)
    builder.field("id" => "orderintorext", "value" => "External/Internal for referral only")
    builder.orderlinkedproblems
    builder.clinicalquestions
  end

  builder.to_xml
end

.build_xml_for_order_workflow(order_id, order_category, problem_id = "", problem_trans_id = "0", order_trans_id = "0") ⇒ String

Builder for get order workflow xml

ordering to current encounter AllscriptsApi::OrderingMethods#save_order

Parameters:

  • order_id (String)

    order dictionary ID

  • order_trans_id (String) (defaults to: "0")

    the provider’s Allscripts id

  • order_category (DateTime)

    determines what order field data to send back.

  • encounter_id (String|Nil)

    an encounter id, used when

Returns:

  • (String)

    xml formatted for



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/allscripts_api/orders/order.rb', line 65

def self.build_xml_for_order_workflow(order_id,
                                      order_category,
                                      problem_id = "",
                                      problem_trans_id = "0",
                                      order_trans_id = "0")
  builder = Nokogiri::XML::Builder.new
  builder.saveorderxml do
    builder.field("id" => "order_id", "value" => order_id)
    builder.field("id" => "order_transid", "value" => order_trans_id)
    builder.field("id" => "order_category", "value" => order_category)
    builder.field("id" => "problem_id", "value" => problem_id)
    builder.field("id" => "problem_transid", "value" => problem_trans_id)
  end

  builder.to_xml
end