A Ruby client for api.covermymeds.com
Clone or download
Latest commit 92b7fc8 Nov 1, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Update version Oct 5, 2018
spec added pharmacy payload spec to indicators Oct 18, 2017
.gitignore Default in an explicit body Oct 18, 2016
.rspec initial commit May 4, 2015
.ruby-version version bump May 2, 2018
.travis.yml Remove ruby-2.0.x from CI Jan 18, 2017
Gemfile added dependency on ffi 1.9.18 in gemspec May 2, 2018
README.md Add travis status Oct 6, 2016
Rakefile initial commit May 4, 2015
cover_my_meds.gemspec Update ffi Oct 5, 2018

README.md

CoverMyMeds API

CoverMyApi is a gem that provides a Ruby client for api.covermymeds.com

Build Status Code Climate

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 app

Getting Started

Default Client

CoverMyMeds.default_client

This 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'
end

This 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'
end

Drug 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 requests

Create 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 page

e.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.