CoverMyMeds API
CoverMyApi is a gem that provides a Ruby client for api.covermymeds.com
Installation
Add this line to your application's Gemfile:
gem 'cover_my_meds'And then execute:
bundle
For general API documentation see: https://developers.covermymeds.com/ehr-api.html
Contributing
Fork the repo, make changes, and submit a pull request.
Usage
You can use the CoverMyApi client to retrieve drugs, forms, pa requests, access tokens and create requests.
require 'cover_my_meds'  # not needed in a rails appGetting Started
Default Client
CoverMyMeds.default_clientThis will set up a new client with a default host of
https://api.covermymeds.com and all the default paths. It will look for an API
key and secret in the CMM_API_ID and CMM_API_SECRET environment variables
respectively.
Rails
In Rails, the default client will also check Rails.application.secrets for a
cmm_api_id and cmm_api_secret before falling back to the environment
variables.
The gem also includes a Railtie to allow simple configuration in
Rails.application.configure blocks typically found in environment files like
config/environments/development.rb etc. Usage is similar to the standard
configuration.
Rails.application.configure do
  config.cover_my_meds.default_host = 'https://master-api.integration.covermymeds.com'
endThis will configure the default client retrieved through
CoverMyMeds.default_client. If you want to pass your own API key and secret,
you can call CoverMyMeds.configured_client(api_id, api_secret) which will use
the same configuration, but the passed ID/secret.
Without Rails
Before anything else, create a new client:
client = CoverMyMeds::Client.new(your_api_id, your_api_secret) do |client|
  client.default_host = 'https://api.covermymeds.com'
endDrug Search
drugs = client.drug_search 'Boniva'
drugs                   # => array of drugs
drug = drugs.first
drug.name               # => 'Boniva'Form Search
forms = client.form_search('Blue Cross', drug.id, 'oh')
forms                   # => array of forms
form = forms.first
form.name               # => 'blue_cross_blue_shield_georgia_general'Get Request(s)
# Get a single request
request = client.get_request('NT5HL9')
request.id  # => 'NT5HL9'
# Get many requests
requests = client.get_requests(['DS2FD3', 'FD6FD1'])
requests   # => array of requestsCreate Request
new_request = client.request_data
request_data.patient.first_name = 'John'
request = client.create_request new_request
request.patient.first_name      # => 'Jonhn'Create access tokens
token = client.create_access_token('DS3SE1')
token.id    # => 'nhe44fu4g22upqqgstea'Get Request Pages
request_page = client.get_request_page('NT5HL9','nhe44fu4g22upqqgstea')
request_page.keys # => values corresponding to a request page
Or to save remote_user attributes to the request audit trail:
request_page = client.get_request_page('NT5HL9','nhe44fu4g22upqqgstea', { remote_user_key: 'remote_user_value' })
request_page.keys # => values corresponding to a request pagee.g ["data", "forms", "actions", "provided_coded_references", "validations"]
Create API Consumer
consumer = client.create_consumer(email: 'consumer@example.com')
consumer # => {"id"=>89517,
               "key"=>"api-key",
               "secret"=>"api-secret",
               "email"=>"consumer@example.com",
               "description"=>nil,
               "callback_url"=>nil,
               "callback_verb"=>"POST",
               "theming"=>nil,
               "created_at"=>"2015-12-22T14:33:25Z",
               "updated_at"=>"2015-12-22T14:33:25Z",
               "deleted_at"=>nil,
               "service_user_id"=>826414,
               "api_type"=>"NONE"}Can optionally send in description, callback_url, callback_verb, theming.