allscripts_api 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e06aaddd4e6fec0d855fe6b972ab0687a6e366b1
4
- data.tar.gz: 3e8fd1b4de7d5c16acec8ae157aac9077ce460a3
3
+ metadata.gz: ae946e7adbf4299a037926c915fd33ff7bf57543
4
+ data.tar.gz: a2b9a11e36131641c5c338375a57d0decd12880c
5
5
  SHA512:
6
- metadata.gz: 2e5809bc5ce6969a91e77f4c5c1324e6f82e701ccda52fc120234a4377e8003cad1a5615eebd062e6246af55bccfe1492c66f110dc2d54df134d14722db55949
7
- data.tar.gz: acebaabdb10e84956fef21d943983826f92fc1ccb2c79e801f52f64c5b53c34c262bc6357c538da98ddfdbe0e2704223f1e8efde34b19feb95e5d4cd82fb03bd
6
+ metadata.gz: 24e68dfd0b893788d198956362c1f6c0f26bace7e3bcd18239f59e353595517c25ba09eaf774f48229c7257bc825f6b57abd03fdc53901da5745ef810f99e129
7
+ data.tar.gz: ca99389bd969d11db5bd789e7068dcce5e1a8e363ddf13909998cb7a3a2690ac079b63d114a0ccaca3881c2930f8796f82049726573e18f892221835a14d1613
data/.pryrc CHANGED
@@ -27,16 +27,16 @@ def bc
27
27
  client
28
28
  end
29
29
 
30
- def document_params
30
+ def document_params(pdf)
31
31
  {
32
- bytes_read: "0",
32
+ bytes_read: pdf.bytes.length,
33
33
  b_done_upload: false,
34
34
  document_var: "",
35
35
  patient_id: 19,
36
36
  owner_code: "TW0001",
37
37
  first_name: "Allison",
38
38
  last_name: "Allscripts",
39
- document_type: "sEKG", #document_type_de.entrycode value GetDictionary
39
+ document_type: "gwn_otfm", #document_type_de.entrycode value GetDictionary
40
40
  organization_name: "New World Health"
41
41
  }
42
42
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- allscripts_api (0.6.0)
4
+ allscripts_api (0.7.0)
5
5
  faraday (>= 0.12.2)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  [![Coverage Status](https://coveralls.io/repos/github/Avhana/allscripts_api/badge.svg?branch=master)](https://coveralls.io/github/Avhana/allscripts_api?branch=master)
4
4
  [![Build Status](https://travis-ci.org/Avhana/allscripts_api.svg?branch=master)](https://travis-ci.org/Avhana/allscripts_api)
5
5
  [![Inline docs](http://inch-ci.org/github/Avhana/allscripts_api.svg?branch=master&style=shields)](http://inch-ci.org/github/Avhana/allscripts_api)
6
- [![Dependency Status](https://gemnasium.com/badges/github.com/Avhana/allscripts_api.svg)](https://gemnasium.com/github.com/Avhana/allscripts_api)
7
6
  [![Maintainability](https://api.codeclimate.com/v1/badges/9889f5255914a5fcbeb5/maintainability)](https://codeclimate.com/github/Avhana/allscripts_api/maintainability)
8
7
  [![security](https://hakiri.io/github/Avhana/allscripts_api/master.svg)](https://hakiri.io/github/Avhana/allscripts_api/master)
9
8
 
@@ -5,8 +5,9 @@ require "allscripts_api/configuration"
5
5
  require "allscripts_api/utilities/validator"
6
6
  require "allscripts_api/magic_params"
7
7
  require "allscripts_api/named_magic_methods"
8
- require "allscripts_api/ordering_methods"
9
- require "allscripts_api/order"
8
+ require "allscripts_api/orders"
9
+ require "allscripts_api/patients"
10
+ require "allscripts_api/demographics"
10
11
  require "allscripts_api/documents"
11
12
  require "allscripts_api/client"
12
13
  require "allscripts_api/version"
@@ -6,7 +6,9 @@ module AllscriptsApi
6
6
  # Client serves as an entry point for making calls
7
7
  class Client
8
8
  include AllscriptsApi::NamedMagicMethods
9
- include AllscriptsApi::OrderingMethods
9
+ include AllscriptsApi::Orders::OrderingMethods
10
+ include AllscriptsApi::Patients::PatientMethods
11
+ include AllscriptsApi::Demographics::DemographicsMethods
10
12
  include AllscriptsApi::Documents::DocumentMethods
11
13
  attr_reader :adapter, :unity_url, :app_name, :token
12
14
  attr_writer :sso_token
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "allscripts_api/demographics/demographics_methods"
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AllscriptsApi
4
+ module Demographics
5
+ # A collection convenience methods for ordering that map
6
+ # to Allscripts magic actions related to demographics calls.
7
+ # These methods are included in {AllscriptsApi::Client}
8
+ # and can be accessed from instances of that class.
9
+ module DemographicsMethods
10
+ # a wrapper around SearchPatients
11
+ #
12
+ # @param search_string [String] may be a name, birthdate
13
+ # partial address, or other PHI
14
+ # @return [Array<Hash>, Array, MagicError] a list of found patients,
15
+ # an empty array, or an error
16
+ def search_patients(search_string)
17
+ params =
18
+ MagicParams.format(
19
+ user_id: @allscripts_username,
20
+ parameter1: search_string
21
+ )
22
+ results = magic("SearchPatients", magic_params: params)
23
+ results["searchpatientsinfo"]
24
+ end
25
+
26
+ # gets patient's demographic info, insurance, guarantor, and PCP info
27
+ #
28
+ # @param patient_id [String] patient id
29
+ # @param patient_number [String] PM patient number
30
+ # @return [String, AllscriptsApi::MagicError] patient demographics
31
+ def get_patient(patient_id, patient_number = nil)
32
+ params =
33
+ MagicParams.format(
34
+ user_id: @allscripts_username,
35
+ patient_id: patient_id,
36
+ parameter1: patient_number
37
+ )
38
+ results = magic("GetPatient", magic_params: params)
39
+ results["getpatientinfo"]
40
+ end
41
+
42
+ # gets patient's demographic info, insurance, guarantor, and PCP info
43
+ # Note that this method is litely to return blank data sets
44
+ # for invalid IDs rather than raising an error
45
+ #
46
+ # @param patient_id [String] patient id
47
+ # @param mrn [String|nil] medical record number, if patient id is unknown
48
+ # @param order_id [String|nil] optionally used to get info for a secific
49
+ # patient order
50
+ # @return [String, AllscriptsApi::MagicError] patient demographics
51
+ def get_patient_full(patient_id, mrn = nil, order_id = nil)
52
+ params =
53
+ MagicParams.format(
54
+ user_id: @allscripts_username,
55
+ patient_id: patient_id,
56
+ parameter1: mrn,
57
+ parameter2: order_id
58
+ )
59
+ results = magic("GetPatientFull", magic_params: params)
60
+ results["getpatientfullinfo"]
61
+ end
62
+ end
63
+ end
64
+ end
@@ -18,7 +18,7 @@ module AllscriptsApi
18
18
  # @param command [String] i for insert, e for delete (entered in error), u for update
19
19
  # @param params [Hash] any other params you may wish to pass to the api
20
20
  # params may look like the following, all of which are required:
21
- # @option params [String] :bytes_read number of bytes in the chunk (use 0 for 1 big chunk)
21
+ # @option params [String] :bytes_read number of bytes in the chunk (pdf.bytes.length is nice for this if using one big chunk)
22
22
  # @option params [String] :b_done_upload should be passed in as false,
23
23
  # @option params [String] :document_var should be empty unless you are saving or updating
24
24
  # @option params [String] :patient_id
@@ -29,6 +29,39 @@ module AllscriptsApi
29
29
  results = magic("SaveDocumentImage", magic_params: params)
30
30
  results["savedocumentimageinfo"]
31
31
  end
32
+
33
+ # gets the CCDA documents for the specified patient and encounter
34
+ #
35
+ # @param patient_id [String] patient id
36
+ # @param encounter_id [String] encounter id from which to generate the CCDA
37
+ # @param org_id [String] specifies the organization, by default Unity
38
+ # uses the organization for the specified user
39
+ # @param app_group [String] defaults to "TouchWorks"
40
+ # @param referral_text [String] contents of ReferralText are appended
41
+ # @param site_id [String] site id
42
+ # @param document_type [String] document type defaults to CCDACCD,
43
+ # CCDACCD (Default) - Returns the Continuity of Care Document. This
44
+ # is the default behavior if nothing is passed in.
45
+ # CCDASOC - Returns the Summary of Care Document
46
+ # CCDACS - Returns the Clinical Summary Document (Visit Summary).
47
+ # @return [String, AllscriptsApi::MagicError] ccda for patient
48
+ def get_ccda(patient_id, encounter_id, org_id = nil,
49
+ app_group = nil, referral_text = nil,
50
+ site_id = nil, document_type = "CCDACCD")
51
+ params =
52
+ MagicParams.format(
53
+ user_id: @allscripts_username,
54
+ patient_id: patient_id,
55
+ parameter1: encounter_id,
56
+ parameter2: org_id,
57
+ parameter3: app_group,
58
+ parameter4: referral_text,
59
+ parameter5: site_id,
60
+ parameter6: document_type
61
+ )
62
+ results = magic("GetCCDA", magic_params: params)
63
+ results["getccdainfo"][0]["ccdaxml"]
64
+ end
32
65
  end
33
66
  end
34
67
  end
@@ -5,6 +5,7 @@ module AllscriptsApi
5
5
  # Wraps {AllscriptsApi::Documents::Document.build_xml} and
6
6
  # {AllscriptsApi::Documents::DocumentMethods#save_document_image}
7
7
  # to handle the 2 step document image saving process
8
+ # The DocumentSender is set up to send the document as one big chunk
8
9
  class DocumentSender
9
10
  # rubocop:disable LineLength
10
11
  # The new method sets up eerything needed to run {#send_document}
@@ -12,7 +13,7 @@ module AllscriptsApi
12
13
  # @example Usage Example
13
14
  # document_params =
14
15
  # {
15
- # bytes_read: "0",
16
+ # bytes_read: pdf.bytes.length,
16
17
  # b_done_upload: false,
17
18
  # document_var: "",
18
19
  # patient_id: 19,
@@ -29,7 +30,7 @@ module AllscriptsApi
29
30
  # @param document [String] the string contents of the pdf to be saved
30
31
  # @param file_name [String] the name of the file to be saved, usually ending in .pdf
31
32
  # @param params [Hash] a hash of params for use in saving a document
32
- # @see {AllscriptsApi::Dpcuments::DocumentSender} for details
33
+ # @see {AllscriptsApi::Documents::DocumentSender} for details
33
34
  # @return [AllscriptsApi::Documents::DocumentSender]
34
35
  # rubocop:enable LineLength
35
36
  def initialize(client, document, file_name, params)
@@ -6,22 +6,6 @@ module AllscriptsApi
6
6
  # in `AllscriptsApi::Client` and can be accessed from
7
7
  # instances of that class.
8
8
  module NamedMagicMethods
9
- # a wrapper around SearchPatients
10
- #
11
- # @param search_string [String] may be a name, birthdate
12
- # partial address, or other PHI
13
- # @return [Array<Hash>, Array, MagicError] a list of found patients,
14
- # an empty array, or an error
15
- def search_patients(search_string)
16
- params =
17
- MagicParams.format(
18
- user_id: @allscripts_username,
19
- parameter1: search_string
20
- )
21
- results = magic("SearchPatients", magic_params: params)
22
- results["searchpatientsinfo"]
23
- end
24
-
25
9
  # a wrapper around GetProvider
26
10
  #
27
11
  # @param provider_id [String] optional Allscripts user id
@@ -37,109 +21,6 @@ module AllscriptsApi
37
21
  results["getproviderinfo"]
38
22
  end
39
23
 
40
- # gets the CCDA documents for the specified patient and encounter
41
- #
42
- # @param patient_id [String] patient id
43
- # @param encounter_id [String] encounter id from which to generate the CCDA
44
- # @param org_id [String] specifies the organization, by default Unity
45
- # uses the organization for the specified user
46
- # @param app_group [String] defaults to "TouchWorks"
47
- # @param referral_text [String] contents of ReferralText are appended
48
- # @param site_id [String] site id
49
- # @param document_type [String] document type defaults to CCDACCD,
50
- # CCDACCD (Default) - Returns the Continuity of Care Document. This
51
- # is the default behavior if nothing is passed in.
52
- # CCDASOC - Returns the Summary of Care Document
53
- # CCDACS - Returns the Clinical Summary Document (Visit Summary).
54
- # @return [String, AllscriptsApi::MagicError] ccda for patient
55
- def get_ccda(patient_id,
56
- encounter_id,
57
- org_id = nil,
58
- app_group = nil,
59
- referral_text = nil,
60
- site_id = nil,
61
- document_type = "CCDACCD")
62
- params =
63
- MagicParams.format(
64
- user_id: @allscripts_username,
65
- patient_id: patient_id,
66
- parameter1: encounter_id,
67
- parameter2: org_id,
68
- parameter3: app_group,
69
- parameter4: referral_text,
70
- parameter5: site_id,
71
- parameter6: document_type
72
- )
73
- results = magic("GetCCDA", magic_params: params)
74
- results["getccdainfo"][0]["ccdaxml"]
75
- end
76
-
77
- # gets data elements of a patient's history
78
- #
79
- # @param patient_id [String] patient id
80
- # @param section [String] section
81
- # if no section is specified than all sections wt data are returned
82
- # list multiple sections by using a pipe-delimited list ex. "Vitals|Alerts"
83
- # @param encounter_id [String] internal identifier for the encounter
84
- # the EncounterID can be acquired with GetEncounterList
85
- # @param verbose [String] XMLDetail
86
- # verbose column will be Y or blank, when Y is provided there will be a
87
- # piece of XML data that is specific to that element of the patient's chart
88
- # @return [String, AllscriptsApi::MagicError] clinical summary for patient
89
- def get_clinical_summary(patient_id,
90
- section = nil,
91
- encounter_id = nil,
92
- verbose = nil)
93
- params =
94
- MagicParams.format(
95
- user_id: @allscripts_username,
96
- patient_id: patient_id,
97
- parameter1: section,
98
- parameter2: encounter_id,
99
- parameter3: verbose
100
- )
101
- results = magic("GetClinicalSummary", magic_params: params)
102
- results["getclinicalsummaryinfo"]
103
- end
104
-
105
- # gets patient's demographic info, insurance, guarantor, and PCP info
106
- #
107
- # @param patient_id [String] patient id
108
- # @param patient_number [String] PM patient number
109
- # @return [String, AllscriptsApi::MagicError] patient demographics
110
- def get_patient(patient_id,
111
- patient_number = nil)
112
- params =
113
- MagicParams.format(
114
- user_id: @allscripts_username,
115
- patient_id: patient_id,
116
- parameter1: patient_number
117
- )
118
- results = magic("GetPatient", magic_params: params)
119
- results["getpatientinfo"]
120
- end
121
-
122
- # gets patient's demographic info, insurance, guarantor, and PCP info
123
- # Note that this method is litely to return blank data sets
124
- # for invalid IDs rather than raising an error
125
- #
126
- # @param patient_id [String] patient id
127
- # @param mrn [String|nil] medical record number, if patient id is unknown
128
- # @param order_id [String|nil] optionally used to get info for a secific
129
- # patient order
130
- # @return [String, AllscriptsApi::MagicError] patient demographics
131
- def get_patient_full(patient_id, mrn = nil, order_id = nil)
132
- params =
133
- MagicParams.format(
134
- user_id: @allscripts_username,
135
- patient_id: patient_id,
136
- parameter1: mrn,
137
- parameter2: order_id
138
- )
139
- results = magic("GetPatientFull", magic_params: params)
140
- results["getpatientfullinfo"]
141
- end
142
-
143
24
  # a wrapper around GetPatientProblems
144
25
  #
145
26
  # @param patient_id [String] patient id
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "allscripts_api/orders/ordering_methods"
4
+ require "allscripts_api/orders/order"
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AllscriptsApi
4
+ module Orders
5
+ # A value object wrapped around a Nokogiri::XML::Builder DSL that builds
6
+ # properly formatted XML for {AllscriptsApi::OrderingMethods#save_order}
7
+ # @see https://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/Builder
8
+ class Order
9
+ # Builder method for returning XML
10
+ #
11
+ # @param site_id [String] the id for the Allscripts install site
12
+ # @param emr_user_id [String] the provider's Allscripts id
13
+ # @param order_date [DateTime] a date for the order (Typically today)
14
+ # @param encounter_id [String|Nil] an encounter id, used when
15
+ # ordering to current encounter
16
+ # @return [String] xml formatted for
17
+ # {AllscriptsApi::OrderingMethods#save_order}
18
+ def self.build_xml(site_id, emr_user_id, order_date, encounter_id = "")
19
+ date = order_date.strftime("%d-%b-%Y")
20
+ builder = Nokogiri::XML::Builder.new
21
+ builder.saveorderxml do
22
+ # a value of 'Y' makes the order visible on the order list
23
+ builder.field("id" => "ordershowonorderlist", "value" => "Y")
24
+ builder.field("id" => "orderlocation", "value" => site_id)
25
+ builder.field("id" => "ordertobedone", "value" => date)
26
+ # default, not important, required
27
+ builder.field("id" => "orderpriority", "value" => "2")
28
+ builder.field("id" => "orderschedulefreetext", "value" => "")
29
+ builder.field("id" => "orderschedulerecurring", "value" => "")
30
+ builder.field("id" => "orderschedulerecurringperiod", "value" => "")
31
+ builder.field("id" => "orderschedulestarting", "value" => date)
32
+ builder.field("id" => "orderscheduleending", "value" => date)
33
+ builder.field("id" => "orderscheduleendingafter", "value" => "")
34
+ builder.field("id" => "orderperformingcomment", "value" => "")
35
+ builder.field("id" => "ordercommunicatedby", "value" => 11) # hard coded
36
+ builder.field("id" => "orderorderedby", "value" => emr_user_id)
37
+ builder.field("id" => "ordermanagedby", "value" => emr_user_id)
38
+ builder.field("id" => "ordersupervisedby", "value" => "")
39
+ builder.field("id" => "orderciteresult", "value" => "")
40
+ builder.field("id" => "orderannotation", "value" => "")
41
+ builder.field("id" => "orderstatus", "value" => "Active")
42
+ builder.field("id" => "orderstatusdate", "value" => date)
43
+ builder.field("id" => "orderdeferralinterval", "value" => 0)
44
+ builder.field("id" => "orderdeferralunit", "value" => "Days")
45
+ builder.field("id" => "orderstatusreason", "value" => "")
46
+ builder.field("id" => "encounter", "value" => encounter_id.to_s)
47
+ builder.orderlinkedproblems
48
+ builder.clinicalquestions
49
+ end
50
+
51
+ builder.to_xml
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AllscriptsApi
4
+ module Orders
5
+ # A collection convenience methods for ordering that map
6
+ # to Allscripts magic actions. Some of these methods
7
+ # wrap multiple actions. These methods are included
8
+ # in {AllscriptsApi::Client} and can be accessed from
9
+ # instances of that class.
10
+ module OrderingMethods
11
+ # a wrapper around SaveOrder, which save and order of the
12
+ # sepcified category, among: AdministeredMedication,
13
+ # Immunization, InstructionOrder, ProcedureOrder,
14
+ # Referral, SuppliesOrder.
15
+ #
16
+ # xml can be constructed with {AllscriptsApi::Order.build_xml}
17
+ #
18
+ # @param patient_id [String]
19
+ # @param xml [String] xml containing saveorderxml fields and values
20
+ # @param order_category [String] one of AdministeredMedication,
21
+ # Immunization, InstructionOrder, ProcedureOrder,
22
+ # Referral, SuppliesOrder.
23
+ # @param dictionary_id [String] id of the dictionary from SearchOrder TODO: look into how to doc this better
24
+ # @param problem_id [String|Nil] problem to associate with the order,
25
+ # may be passed in as part of the xml
26
+ # @param trans_id [String|Nil] the original OrderID,
27
+ # necessary when updating a past order
28
+ # @return [Hash|MagicError] order confirmation or error
29
+ def save_order(patient_id, xml, order_category, dictionary_id,
30
+ problem_id = nil, trans_id = nil)
31
+ params = MagicParams.format(
32
+ user_id: @allscripts_username,
33
+ patient_id: patient_id,
34
+ parameter1: xml,
35
+ parameter2: order_category,
36
+ parameter3: dictionary_id,
37
+ parameter4: problem_id,
38
+ parameter5: trans_id
39
+ )
40
+ magic("SaveOrder", magic_params: params)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "allscripts_api/patients/patient_methods"
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AllscriptsApi
4
+ module Patients
5
+ # A collection convenience methods for ordering that map
6
+ # to Allscripts magic actions related to patients.
7
+ # These methods are included in {AllscriptsApi::Client}
8
+ # and can be accessed from instances of that class.
9
+ module PatientMethods
10
+ # gets data elements of a patient's history
11
+ #
12
+ # @param patient_id [String] patient id
13
+ # @param section [String] section
14
+ # if no section is specified than all sections wt data are returned
15
+ # list multiple sections by using a pipe-delimited list ex. "Vitals|Alerts"
16
+ # @param encounter_id [String] internal identifier for the encounter
17
+ # the EncounterID can be acquired with GetEncounterList
18
+ # @param verbose [String] XMLDetail
19
+ # verbose column will be Y or blank, when Y is provided there will be a
20
+ # piece of XML data that is specific to that element of the patient's chart
21
+ # @return [String, AllscriptsApi::MagicError] clinical summary for patient
22
+ def get_clinical_summary(patient_id,
23
+ section = nil,
24
+ encounter_id = nil,
25
+ verbose = nil)
26
+ params =
27
+ MagicParams.format(
28
+ user_id: @allscripts_username,
29
+ patient_id: patient_id,
30
+ parameter1: section,
31
+ parameter2: encounter_id,
32
+ parameter3: verbose
33
+ )
34
+ results = magic("GetClinicalSummary", magic_params: params)
35
+ results["getclinicalsummaryinfo"]
36
+ end
37
+
38
+ # Returns a list of Patient IDs whose information has been
39
+ # modified since a timestamp
40
+ #
41
+ # @param patient_id [String] patient id
42
+ # @param since [DateTime] DateTime indicating how far back to
43
+ # query for changed patients.
44
+ # @param clinical_data_only [String] Indicates whether to
45
+ # look at only changes in clinical data. Y or N
46
+ # @param verbose [String] Do you want to see the specific areas that have changed
47
+ # @param quick_scan [String] Set to Y to enable new change patient scanning functionality.
48
+ # @return [String, AllscriptsApi::MagicError] changed data for patient
49
+ def get_changed_patients(patient_id, since,
50
+ clinical_data_only = "Y",
51
+ verbose = "Y", quick_scan = "N")
52
+ params =
53
+ MagicParams.format(
54
+ user_id: @allscripts_username,
55
+ patient_id: patient_id,
56
+ parameter1: since.strftime("%m/%d/%Y"),
57
+ parameter2: clinical_data_only,
58
+ parameter3: verbose,
59
+ parameter4: quick_scan
60
+ )
61
+
62
+ results = magic("GetChangedPatients", magic_params: params)
63
+ results["getchangedpatientsinfo"]
64
+ end
65
+ end
66
+ end
67
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module AllscriptsApi
4
4
  # gem version declaration
5
- VERSION = "0.6.0".freeze
5
+ VERSION = "0.7.0".freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allscripts_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chase
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-16 00:00:00.000000000 Z
11
+ date: 2018-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -247,14 +247,19 @@ files:
247
247
  - lib/allscripts_api.rb
248
248
  - lib/allscripts_api/client.rb
249
249
  - lib/allscripts_api/configuration.rb
250
+ - lib/allscripts_api/demographics.rb
251
+ - lib/allscripts_api/demographics/demographics_methods.rb
250
252
  - lib/allscripts_api/documents.rb
251
253
  - lib/allscripts_api/documents/document.rb
252
254
  - lib/allscripts_api/documents/document_methods.rb
253
255
  - lib/allscripts_api/documents/document_sender.rb
254
256
  - lib/allscripts_api/magic_params.rb
255
257
  - lib/allscripts_api/named_magic_methods.rb
256
- - lib/allscripts_api/order.rb
257
- - lib/allscripts_api/ordering_methods.rb
258
+ - lib/allscripts_api/orders.rb
259
+ - lib/allscripts_api/orders/order.rb
260
+ - lib/allscripts_api/orders/ordering_methods.rb
261
+ - lib/allscripts_api/patients.rb
262
+ - lib/allscripts_api/patients/patient_methods.rb
258
263
  - lib/allscripts_api/utilities/validator.rb
259
264
  - lib/allscripts_api/version.rb
260
265
  homepage: https://github.com/Avhana/allscripts_api
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module AllscriptsApi
4
- # A value object wrapped around a Nokogiri::XML::Builder DSL that builds
5
- # properly formatted XML for {AllscriptsApi::OrderingMethods#save_order}
6
- # @see https://www.rubydoc.info/github/sparklemotion/nokogiri/Nokogiri/XML/Builder
7
- class Order
8
- # Builder method for returning XML
9
- #
10
- # @param site_id [String] the id for the Allscripts install site
11
- # @param emr_user_id [String] the provider's Allscripts id
12
- # @param order_date [DateTime] a date for the order (Typically today)
13
- # @param encounter_id [String|Nil] an encounter id, used when
14
- # ordering to current encounter
15
- # @return [String] xml formatted for
16
- # {AllscriptsApi::OrderingMethods#save_order}
17
- def self.build_xml(site_id, emr_user_id, order_date, encounter_id = "")
18
- date = order_date.strftime("%d-%b-%Y")
19
- builder = Nokogiri::XML::Builder.new
20
- builder.saveorderxml do
21
- # a value of 'Y' makes the order visible on the order list
22
- builder.field("id" => "ordershowonorderlist", "value" => "Y")
23
- builder.field("id" => "orderlocation", "value" => site_id)
24
- builder.field("id" => "ordertobedone", "value" => date)
25
- # default, not important, required
26
- builder.field("id" => "orderpriority", "value" => "2")
27
- builder.field("id" => "orderschedulefreetext", "value" => "")
28
- builder.field("id" => "orderschedulerecurring", "value" => "")
29
- builder.field("id" => "orderschedulerecurringperiod", "value" => "")
30
- builder.field("id" => "orderschedulestarting", "value" => date)
31
- builder.field("id" => "orderscheduleending", "value" => date)
32
- builder.field("id" => "orderscheduleendingafter", "value" => "")
33
- builder.field("id" => "orderperformingcomment", "value" => "")
34
- builder.field("id" => "ordercommunicatedby", "value" => 11) # hard coded
35
- builder.field("id" => "orderorderedby", "value" => emr_user_id)
36
- builder.field("id" => "ordermanagedby", "value" => emr_user_id)
37
- builder.field("id" => "ordersupervisedby", "value" => "")
38
- builder.field("id" => "orderciteresult", "value" => "")
39
- builder.field("id" => "orderannotation", "value" => "")
40
- builder.field("id" => "orderstatus", "value" => "Active")
41
- builder.field("id" => "orderstatusdate", "value" => date)
42
- builder.field("id" => "orderdeferralinterval", "value" => 0)
43
- builder.field("id" => "orderdeferralunit", "value" => "Days")
44
- builder.field("id" => "orderstatusreason", "value" => "")
45
- builder.field("id" => "encounter", "value" => encounter_id.to_s)
46
- builder.orderlinkedproblems
47
- builder.clinicalquestions
48
- end
49
-
50
- builder.to_xml
51
- end
52
- end
53
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module AllscriptsApi
4
- # A collection convenience methods for ordering that map
5
- # to Allscripts magic actions. Some of these methods
6
- # wrap multiple actions. These methods are included
7
- # in {AllscriptsApi::Client} and can be accessed from
8
- # instances of that class.
9
- module OrderingMethods
10
- # a wrapper around SaveOrder, which save and order of the
11
- # sepcified category, among: AdministeredMedication,
12
- # Immunization, InstructionOrder, ProcedureOrder,
13
- # Referral, SuppliesOrder.
14
- #
15
- # xml can be constructed with {AllscriptsApi::Order.build_xml}
16
- #
17
- # @param patient_id [String]
18
- # @param xml [String] xml containing saveorderxml fields and values
19
- # @param order_category [String] one of AdministeredMedication,
20
- # Immunization, InstructionOrder, ProcedureOrder,
21
- # Referral, SuppliesOrder.
22
- # @param dictionary_id [String] id of the dictionary from SearchOrder TODO: look into how to doc this better
23
- # @param problem_id [String|Nil] problem to associate with the order,
24
- # may be passed in as part of the xml
25
- # @param trans_id [String|Nil] the original OrderID,
26
- # necessary when updating a past order
27
- # @return [Hash|MagicError] order confirmation or error
28
- def save_order(patient_id, xml, order_category, dictionary_id,
29
- problem_id = nil, trans_id = nil)
30
- params = MagicParams.format(
31
- user_id: @allscripts_username,
32
- patient_id: patient_id,
33
- parameter1: xml,
34
- parameter2: order_category,
35
- parameter3: dictionary_id,
36
- parameter4: problem_id,
37
- parameter5: trans_id
38
- )
39
- magic("SaveOrder", magic_params: params)
40
- end
41
- end
42
- end